一种plc编程语言的编译方法

文档序号:6621157阅读:999来源:国知局
一种plc编程语言的编译方法
【专利摘要】本发明涉及工业控制领域,尤其涉及一种PLC编程语言的编译方法,包括指令表转换、指令分析、中间代码生成和目标代码生成。本发明利用梯形图语言与指令表语言之间的一一对应关系,将指令表语言作为中介,对梯形图语言程序转换为指令表源程序,再对指令表进一步处理、编译、解释成目标代码,语言逻辑关系清晰,书写格式简单,代码利用率高,编译效果好。本发明有助于提出一个适用于多种硬件平台的软PLC控制方案,开发一个对多种运行系统硬件平台均适用的开发系统,当用户在使用不同厂商的硬件平台作为软PLC的运行系统时,使用该开发工具,无需重新学习新硬件平台的编程,省去了重新学习编程耗费的大量时间,对PLC的发展具有十分重要的现实意义。
【专利说明】一种PLC编程语言的编译方法

【技术领域】
[0001]本发明涉及工业控制领域,尤其涉及一种PLC编程语言的编译方法。

【背景技术】
[0002]长期以来,计算机控制和传统PLC控制一直是工业控制领域的两种主要控制方法。PLC自1969年问世以来,以其功能强、可靠性高、使用方便、体积小等优点在工业自动化领域得到迅速推广,成为工业自动化领域中极具竞争力的控制工具。伴随着计算机技术的迅速发展和广泛应用,人们逐渐认识到硬件PLC的种种弊端。首先由于生产厂商众多,各种机型互不兼容,没有统一的标准,在编程元件的种类、数目、编程语言等方面各不相同;其次,产品的功能实现依赖于硬件,数据结构相对封闭,用户难以自由改变或增添PLC的功能;第三,现行的PLC产品,其编程方式要求使用者对PLC的硬件结构、PLC的电气原理、编程指令均要有相当的了解,这就不利于PLC的进一步推广和使用;第四,当PLC出现故障时,需由专业人员用专用工具检测硬件,再维修,可维护性差;同时,其昂贵的价格也严重制约其发展。
[0003]软PLC是一种基于PC机的软逻辑控制软件,它具有硬PLC在功能、可靠性、速度、故障查找等方面的特点,利用软件技术可以将标准的工业PC转换成全功能的PLC过程控制器。软件PLC综合了计算机和PLC的开关量控制、模拟量控制、数学运算、数值处理、网络通信、PID调节等功能,通过一个多任务控制内核,提供强大的指令集、快速而准确的扫描周期、可靠的操作和可连接各种I/O系统及网络的开放式结构。它遵循IEC61131-3标准,支持多语言编程,所以,软件PLC提供了与硬PLC同样的功能,同时又提供了 PC环境如PC机容量大、处理速度快、网络互联方便等PLC不具备的优点,是PC技术和PLC技术的结晶。研究软PLC技术可以消除硬PLC本身具有的诸多不足之处,提高产品开发效率,使PLC性价比提高。应用于实际工程中后,将会极大提升企业的自动化水平和生产效率。基于PC的软PLC,既有良好的人机交互功能,又有极快的数据处理能力和强大的网络功能。研究基于PC的软PLC控制系统,对降低成本、加强系统的开放性和推广软PLC在工业中的应用等具有很大的经济意义。
[0004]如果能够提出一个可以适用于多种硬件平台的软PLC控制方案,开发一个能够对多种运行系统硬件平台均适用的开发系统,这样当用户在使用不同厂商的硬件平台作为软PLC的运行系统时,使用该开发工具,则无需重新学习新硬件平台的编程,省去了重新学习编程耗费的大量时间,因此具有十分重要的现实意义。而其中的问题,就在于如何将PLC程序编译为软PLC运行系统可以识别执行的代码。


【发明内容】

[0005]本发明的目的在于提供一种PLC编程语言的编译方法,解决【背景技术】提到的将PLC程序编译为软PLC目标代码的问题。
[0006]为了实现上述的目的,采用如下的技术方案。一种PLC编程语言的编译方法,包括指令表转换、指令分析、中间代码生成和目标代码生成,所述指令表转换是将PLC编程语言转换成指令表源程序,所述指令分析是对指令表源程序进行词法分析、语法分析和语义分析的综合,它分析指令表源程序中某条指令是否正确,包括分析指令的操作码是否存在,操作数代码是否符合操作码的要求和操作数是否超过操作数代码的允许范围,所述中间代码生成是将指令表源程序翻译成中间代码,所述目标代码生成是把中间代码变换为特定机器上的绝对指令代码或可以重定位的指令代码。
[0007]上述方案中,所述词法分析是读入指令表源程序,对构成指令表源程序的字符串进行扫描和分解,识别出指令表语言源程序中任何合法的单词。所述词法分析还可以完成预处理工作,所述预处理工作包括删除注释。
[0008]上述方案中,所述语法分析是在词法分析的基础上根据指令表源程序的语法规贝1J,把单词符号串分解成各类语法单位。所述语法单位包括程序、字句、语句、程序段、表达式。
[0009]上述方案中,所述语义分析审查指令表源程序中有无语义错误,为代码生成阶段收集类型信息。
[0010]上述方案中,还包括代码优化,所述代码优化是对中间代码进行变换或改造,使生成的目标代码更为高效。
[0011]上述方案中,还包括表格管理,所述表格管理用来建立变量、常量和过程标识符的说明与引用之间的信息联系。
[0012]上述方案中,还包括出错处理,所述出错处理用来对指令分析遇到的错误给出在指令表源程序中出错的位置和错误性质。
[0013]上述方案中,所述目标代码生成是在指令表源程序和目标代码之间建立一个指令和地址的目标代码查询表,逐行扫描编写的指令表源程序,查表将指令表源程序中的指令翻译成其对应的代码,并将代码按照规律组合起来形成可执行的目标代码。
[0014]与现有技术相比,本发明利用梯形图语言与指令表语言之间的一一对应关系,将指令表语言作为中介,对梯形图语言程序转换为指令表源程序,再对指令表进一步处理、编译、解释成目标代码,语言逻辑关系清晰,书写格式简单,代码利用率高,编译效果好。本发明有助于提出一个适用于多种硬件平台的软PLC控制方案,开发一个对多种运行系统硬件平台均适用的开发系统,当用户在使用不同厂商的硬件平台作为软PLC的运行系统时,使用该开发工具,无需重新学习新硬件平台的编程,省去了重新学习编程耗费的大量时间,对PLC的发展具有十分重要的现实意义。

【具体实施方式】
[0015]下面对本发明作进一步的描述。
[0016]本发明的目的是要将PLC编程语言转换为PLC硬件能够识别执行的目标代码。由于PLC编程语言采用的梯形图语言作为一种“图形”语言,要直接对其编译是比较困难的,考虑到梯形图语言与指令表语言之间的一一对应关系,可以先将梯形图语言转换为指令表语言。另外,指令表语言逻辑关系清晰,书写格式简单,也提高了代码的利用率。因此,本发明选择将指令表语言作为中介语言,对于梯形图语言程序,先将其转换为指令表源程序,再对指令表进一步处理,编译,解释成目标代码。本发明主要包括指令表转换、词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,其中词法分析、语法分析和语义分析综合起来称为指令分析。此外,还包括表格管理和出错处理。
[0017]第一步,指令表转换,利用梯形图语言与指令表语言之间的一一对应关系,将PLC编程语言转换成指令表源程序。
[0018]第二步,词法分析,从左到右一个字符一个字符地读入指令表源程序,指令表源程序可以简单的被看成一个多行的字符串,对构成指令表源程序的字符串进行扫描和分解,识别出指令表源程序中任何合法的单词。把单词作为源程序的最小单位,等待语法分析。此外,还可以完成如删除注释等的预处理工作。
[0019]第三步,语法分析,在词法分析的基础上根据指令表语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“程序”、“字句”、“语句”、“程序段”、“表达式”等。在语法分析中,如果源程序存在语法错误,给出相应的出错信息,当没有语法错误后,就可以正确的画出其分析树或其他中间表示。
[0020]第四步,语义分析,审查指令表源程序中有无语义错误,为代码生成阶段收集类型信息。语义分析要的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。只有语法、语义正确的指令表源程序才能被翻译成正确的目标代码。
[0021]第五步,中间代码生成,在进行上述的语法分析和语义分析之后,将指令表源程序翻译成一种内部表示形式,这种内部表示形式叫做中间代码。中间代码是一种结构简单、含义明确的记号系统,它有两个特点:一是容易生成,另一个则是容易被翻译为目标代码。
[0022]第六步,代码优化,对前面生成的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效。
[0023]第七步,目标代码生成,把中间代码变换为特定机器上的绝对指令代码或可以重定位的指令代码,目标代码的生成与硬件结构和指令含义有关,涉及到硬件系统功能部件的运用,及其指令的选择,各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度。
[0024]在上述的各个步骤中,表格管理用来建立变量、常量和过程标识符的说明与引用之间的信息联系,出错处理程序则用来对指令分析遇到的错误给出在源程序中出错的位置和错误性质。
[0025]目标代码生成是一个把指令转化成目标代码的过程,指令和目标代码之间是一一对应的关系。因此,在指令和目标代码之间建立一个指令和地址的目标代码查询表,逐行扫描编写的指令表源程序,查表将指令表源程序中的指令翻译成其对应的代码,并将代码按照规律组合起来形成可执行的目标代码。目标代码查询表是预先建好的静态数据文件,供编译程序查询数据,其目的是将程序与数据文件分离,便于系统扩展。
【权利要求】
1.一种PLC编程语言的编译方法,其特征在于,包括指令表转换、指令分析、中间代码生成和目标代码生成, 所述指令表转换是将PLC编程语言转换成指令表源程序, 所述指令分析是对指令表源程序进行词法分析、语法分析和语义分析的综合,它分析指令表源程序中某条指令是否正确,包括分析指令的操作码是否存在,操作数代码是否符合操作码的要求和操作数是否超过操作数代码的允许范围, 所述中间代码生成是将指令表源程序翻译成中间代码, 所述目标代码生成是把中间代码变换为特定机器上的绝对指令代码或可以重定位的指令代码。
2.根据权利要求1所述的方法,其特征在于,所述词法分析是读入指令表源程序,对构成指令表源程序的字符串进行扫描和分解,识别出指令表语言源程序中任何合法的单词。
3.根据权利要求2所述的方法,其特征在于,所述词法分析还可以完成预处理工作,所述预处理工作包括删除注释。
4.根据权利要求1所述的方法,其特征在于,所述语法分析是在词法分析的基础上根据指令表源程序的语法规则,把单词符号串分解成各类语法单位。
5.根据权利要求4所述的方法,其特征在于,所述语法单位包括程序、字句、语句、程序段、表达式。
6.根据权利要求1所述的方法,其特征在于,所述语义分析审查指令表源程序中有无语义错误,为代码生成阶段收集类型信息。
7.根据权利要求1所述的方法,其特征在于,还包括代码优化,所述代码优化是对中间代码进行变换或改造,使生成的目标代码更为高效。
8.根据权利要求1所述的方法,其特征在于,还包括表格管理,所述表格管理用来建立变量、常量和过程标识符的说明与引用之间的信息联系。
9.根据权利要求1所述的方法,其特征在于,还包括出错处理,所述出错处理用来对指令分析遇到的错误给出在指令表源程序中出错的位置和错误性质。
10.根据权利要求1所述的方法,其特征在于,所述目标代码生成是在指令表源程序和目标代码之间建立一个指令和地址的目标代码查询表,逐行扫描编写的指令表源程序,查表将指令表源程序中的指令翻译成其对应的代码,并将代码按照规律组合起来形成可执行的目标代码。
【文档编号】G06F9/45GK104239115SQ201410354614
【公开日】2014年12月24日 申请日期:2014年7月24日 优先权日:2014年7月24日
【发明者】叶生红, 赵永杰 申请人:汕头大学, 汕头轻工装备研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1