当前位置: 首页 > 专利查询>中南大学专利>正文

梯形图程序转换成指令表程序及其编译的方法与系统技术方案

技术编号:10891125 阅读:161 留言:0更新日期:2015-01-08 19:57
本发明专利技术公开一种将梯形图程序转换为指令表程序,并对指令表程序编译解释执行的方法与系统,该梯形图转换方法根据梯形图编辑以及执行的特点,引入能流阶级和辅助节点,为每个图顶点设置阶级和附加一个辅助节点,根据元件所在阶级和辅助节点的出度和入度判断串并联关系。将梯形图转换为指令表后,采用编译与解释相结合的PLC即时编译的方法和分治法思想,独立设计编译前端和解释后端,结合GCC后端构造,生成针对特定机型的PLC编译系统。本发明专利技术的特点是针对逻辑结构复杂的梯形图程序,能准确、快速的转换为指令表程序,同时在转换的过程中,能对程序进行语法查错,排除断路、短路、桥路等常见错误,确保生成的指令表程序的正确性。

【技术实现步骤摘要】
【专利摘要】本专利技术公开一种将梯形图程序转换为指令表程序,并对指令表程序编译解释执行的方法与系统,该梯形图转换方法根据梯形图编辑以及执行的特点,引入能流阶级和辅助节点,为每个图顶点设置阶级和附加一个辅助节点,根据元件所在阶级和辅助节点的出度和入度判断串并联关系。将梯形图转换为指令表后,采用编译与解释相结合的PLC即时编译的方法和分治法思想,独立设计编译前端和解释后端,结合GCC后端构造,生成针对特定机型的PLC编译系统。本专利技术的特点是针对逻辑结构复杂的梯形图程序,能准确、快速的转换为指令表程序,同时在转换的过程中,能对程序进行语法查错,排除断路、短路、桥路等常见错误,确保生成的指令表程序的正确性。【专利说明】梯形图程序转换成指令表程序及其编译的方法与系统
本专利技术涉及PLC控制系统领域,尤其涉及PLC梯形图程序转换成指令表程序及其 编译执行的方法。
技术介绍
梯形图和指令表都是嵌入式软PLC常用的编程语言。梯形图编程语言是在电气控 制系统中常用的接触器、继电器控制原理的基础上发展演变而来的,由于它与电气操作控 制电路图十分的相似,具有直观性和对应性,易学易懂易掌握,为广大电气工程师所熟悉和 喜爱。指令表编程语言是一种用与汇编语言类似的采用助记符进行编程的编程语言,由操 作码和操作数组成,他用一系列操作指令组成的助记符号来描述控制系统的控制顺序和逻 辑关系,具有容易记忆,便于掌握和操作的特点。 梯形图是一种图形化的语言,它由梯形图图形元件通过水平连接线以及垂直连接 线连接组合成一定的逻辑关系来实现控制功能,计算机和嵌入式PLC都无法识别此种图形 语言;指令表程序是一种类似与汇编的文本语言,指令格式更接近于嵌入式芯片的指令集, 因此更容易被编译为目标代码或更容易被解释执行,为了梯形图程序能被嵌入式PLC识 另IJ,将梯形图转换为指令表是十分必要的。 梯形图指令元件众多,逻辑关系十分的复杂,梯形图程序并没有直接存储元件之 间的关系,梯形图转换一直是编程环境中的重点和难点,现有的转换方法,如拓扑排序,二 叉树转换,都只适用于一定的结构,对于串并联结构复杂的程序,转换过程容易出现误判。 将梯形图转换为指令表后,需要将其编译转换为底层控制器能够运行或解释执行 的数据结构。当前,PLC语言主流编译系统主要有解释型和编译型两种。近来也有很多研 究关于PLC语言转换成C语言,再通过C语言编译器的形式实现编译系统。 传统编译型PLC整个工作量都压缩到上位机部分,整体系统设计和开发的工作量 非常大,特别是编译系统的后端构造。一旦针对特定机型的目标机设计完成一个编译系统, 该系统就只能用于同类体系结构的目标机,而不能用于其他体系结构的目标机,可移植性 几乎等于没有,灵活度不高,通用性极差。如果想要应用于其他机型的目标机必须得重新开 发编译系统,开发难度高,开发工作量大,开发周期长。 传统解释型PLC在底层目标机中运行PLC的语义特性,特别是PLC的堆栈特性,无 疑消耗目标机的大量资源,这对目标机执行的稳定性是一个严峻的考验。源程序的每一步 代码都需要解释执行,对于PLC扫描周期特性而言,这无疑是很大的时间开销,特别是长时 间工作的工控PLC。底层目标机可能没有操作系统,对于解释器能否正常调用执行等还是一 个很大的考验,用户程序能不能正确识别也是一个问题,这极大降低了整个编译系统的可 靠性。最关键的是用户开发的程序不具有试错性。在上位机编程的用户最大关心的是自己 的程序有没有错误。而底层解释器通常需要借助在线调试才能报告错误,这对上位机开发 人员来说很不方便。 PLC语目转换成C语目型PLC容易造成语义流失和不等价问题。因为总体上看PLC 语目和C语g是有很大区别的,PLC语g是一种过程式语目,而C语g是一种函数式语目。 PLC更接近汇编的风格,丰富的指令集,单一的格式来实现编程效果。C语言构造多种语法 形式,少量关键字来实现复杂多变的功能,这一点PLC与C语言是不一致的,两种语言风格 大幅相异,不宜做转换。同时此类系统依赖性较强,比较容易受其他因素影响,比如C编译 器。后期维护升级难,功能扩展不方便,需要对转换过程重新构造,很容易造成新的问题。
技术实现思路
为了解决上述存在的问题,本专利技术提供一种将梯形图转换为指令表的方法,其能 准确的完成串并联结构复杂的梯形图程序向指令表的转换。本专利技术还提供一种编译与解释 相结合的PLC即时编译的方法,解决了传统编译系统在上位机和下位机资源消耗和运行速 度之间的矛盾,达到适合工控需求和软件研发的有效平衡。 本专利技术采用的技术方案为: 一种梯形图程序转换成指令表程序的方法,包括如下步骤: (1)将梯形图程序转化为有向图,根据水平连接线和垂直连接线判断图形元件的 直接后继兀件,添加到对应邻接链表中,建立梯形图的邻接链表表不; (2)引入能流阶级,给梯形图中每个顶点设置一个阶级; (3)引入辅助节点,梯形图中每个图顶点添加一个辅助节点,辅助节点保存该节点 与下一阶级中相连的顶点; (4)插入虚顶点,在阶级不连续地方插入虚顶点; (5)合并辅助节点,根据辅助节点的出度和入度进行合并; (6)并串联归并,根据元件阶级和辅助节点的出度和入度进行并串联归并。 优选地,所述步骤(2)中根据梯形图类似于一种能量的流动的特性,给每一个图 顶点设置能流阶级,设置输出元件的阶级为〇,对梯形图的邻接链表进行搜索,根据生成的 广义优先最小生成树,设置图中每个顶点的阶级。 优选地,所述步骤(4)中根据步骤(2)中所设置的阶级,对梯形图进行扫描,扫描 过程中根据前后两个图顶点的阶级差,插入虚顶点,同样,虚顶点包含一个辅助节点。 优选地,所述步骤(5)中对于同一阶级中的多个辅助节点可能包含完全相同的图 顶点集,将这些辅助节点合并为一个辅助节点,即同一阶级中的多个图顶点包含同一辅助 节点。 优选地,所述步骤(5)中搜索所有阶级,如果有错则停止转换,报告错误。 优选地,所述步骤(6)中根据步骤(2)和步骤(3)中引入和阶级和辅助节点进行 图顶点的串并联,并进行语法检查,从最高阶级开始逐步扫描,根据辅助节点的出度和入度 判定对应元件的串并联关系,并进行转换。 -种根据前述方法转换成指令表程序后的编译方法,包括如下步骤: (1)设计scan函数,针对PLC源语言程序文件进行字符串扫描,过滤多余的空格、 换行、制表符或注释等字符,构成词法分析器前端; (2)词法分析预先构造存储结构,存储PLC语言的所有指令,再对字符串进行逐 个读取,遇到,单词终止符号,即截取该段字符串,构成单词,然后根据存储结构识别出关键 字、常量、数字或变量,辨别单词是否存在,如果匹配不到,则提示程序编写出错,停止后续 读取处理; (3)词法分析阶段产生的单词序列输入到语法分析前端,进行相关语法检查,判断 整个输入字符串是否符合PLC语法规则; (4)检查输入源程序的语义是否正确; (5)中间代码生成:根据输入源程序的语义生成语义等价中间表示形式; (6)堆栈操作:首先获得编译前端传递的中间代码结构体数据,逐句扫描每本文档来自技高网
...

【技术保护点】
一种梯形图程序转换成指令表程序的方法,其特征在于:包括如下步骤:(1)将梯形图程序转化为有向图,根据水平连接线和垂直连接线判断图形元件的直接后继元件,添加到对应邻接链表中,建立梯形图的邻接链表表示;(2)引入能流阶级,给梯形图中每个顶点设置一个阶级;(3)引入辅助节点,梯形图中每个图顶点添加一个辅助节点,辅助节点保存该节点与下一阶级中相连的顶点;(4)插入虚顶点,在阶级不连续地方插入虚顶点;(5)合并辅助节点,根据辅助节点的出度和入度进行合并;(6)并串联归并,根据元件阶级和辅助节点的出度和入度进行并串联归并。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈晓方阳春华桂卫华刘正黄江波秦晨
申请(专利权)人:中南大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1