PLC梯形图可视化编辑与语句表的自动生成

摘      要:介绍了PLC梯形图可视化编辑器的设计及由PLC梯形图自动生成语句的算法,详细描述了实现主要数据结构及梯形图向语句表转换的具体算法。


关  键 词:可编程控制器(PLC) 梯形图语句表有向图

原文地址:http://www.sipai.com/hyfw/pdf/050309.pdf

 

0 引言

可编程控制器PLC是一种专门为工业自动控制而开发的通用自动控制装置。它具有可靠性高、编程简单、使用方便、功能完善、通用性好等特点,并具有在线修改功能,给控制系统带来了很好的柔性。它可以灵活地以不同的组态来适应不同控制对象、控制规模和控制功能的要求,是实现“机电一体化”较理想的控制设备。


PLC的主要使用对象是广大工程技术人员。为了适应他们的传统习惯,通常不采用微机的编程语言,而采用面向控制过程、面向问题的“自然语言”编程。这些编程语言有梯形图、语句表、控制系统流程图、逻辑方程式或布尔代数式等,其中梯形图以其形象、直观、简单易用、与电气控制原理图相呼应、易于掌握等特点而成为PLC的主要编程语言。但是,梯形图不能被PLC所识别,无法在PLC中直接运行,把梯形图通
过人工编译的方式转换为语句表又较为复杂,这就限制了它的进一步发展和应用。如果能利用先进的计算机技术实现可视化、规范化的梯形图设计以及PLC指令序列的自动生成,无疑将极大地提高开发效率。我们在充分分析梯形图设计规则和语句表编程规则的基础上,设计了一个梯形图可视化编辑与PLC程序自动生成系统。该系统将梯形图的绘制、识别以及编译过程转移到计算机上,并自动生成PLC可以识别的指令序列。


1 梯形图与语句表


1.1 梯形图
梯形图起源于继电器逻辑和执行线路,它用不同的图符来表示不同的指令,用串、并联等概念组织图符的顺序位置来表述逻辑。梯形图的设计必须遵循以下规则:

①触点应画在水平线上,不能画在垂直分支上,且应遵循自左至右、自上而下的绘制原则;

②不包含触点的分支应放在垂直方向,不可放在水平位置以便于识别触点的组合和对输出线圈的控制路径;

③在有几个串联回路相并联时应将触点最多的那个串联回路放在梯形图的最上面,而在有几个并联回路相串联时应将触点最多的并联回路放在梯形图的最左面;

④不能将触点画在线圈的右边,而只能画在线圈的左边。


1.2 语句表
语句表是若干指令的集合,类似于汇编语言程序,易于PLC识别。每条指令由指令字符串和操作数构成。指令字符串是指令的助记符。操作数是该指令所作用的继电器号、通道号、定时/计数器设定值或某些常数。语句表编程有键入方便、编程灵活的优点,但不如梯形图形象、直观。


2 系统设计

 

2.1 系统的窗体设计
整个系统由6个主要窗体构成。
① 主窗体:显示系统主菜单、工具栏,绘制梯形图所需的基本图符按钮。
② 绘图窗体:用于梯形图的绘制。为了使所绘制的梯形图更加整洁、美观,我们将系统的用户编辑区分隔成若干正方形编辑格,用点标识。具体绘图时,系统还将根据所绘图符的特点调节所占区域的大小。
③ 代码生成窗体:显示由所绘梯形图编译生成的PLC指令代码。
④ 参数输入窗体:为绘制的每个图符设置参数。
⑤ 出错信息窗体:报告梯形图编译成PLC指令时的出错信息。
⑥ 图符信息查看窗口:查看与每个图符对应的指令及其参数。


2.2 梯形图图符函数库和PLC指令索引表的建立本系统是基于OmronCMP1A可编程控制器开发的,该型号的可编程控制器共有88条指令(基本指令15条,功能指令73条),其中多数指令有图符与其对应。为节省存贮空间,我们为每个图符的绘制定义了相应的自定义函数,形成一个梯形图图符函数库。


为便于编辑及编译功能的实现,我们以基本指令优先,并考虑指令的使用频度建立了一张PLC指令索引表。索引表包含以下信息:

2.3 系统的主要数据结构

通过对梯形图及其设计规则的分析,我们发现,用梯形图编制程序的过程实质上是一个用梯形图图符来表示操作指令、用图符的串并联及位置顺序来表示操作指令之间逻辑关系的过程。由此,一个梯形图可以看作是一个由梯形图图符和连接符组合而成的有向图,其中的梯形图图符可抽象为有向图的顶点,连接符可抽象为有向图的弧。为了在程序设计中更合理地描述梯形图,以便于下一步PLC指令的自动生成,我们综合考虑了提高程序执行效率、节省存储空间、便于操作等因素,而采用十字链表数据结构来存储梯形图。


2.3.1 有向图
图是一种数据结构,它的形式化定义为GraphE(V,R)
其中:

VE{x|x∈dataobject}
RE{VR}
VRE{<x,y>|P(x,y)%(x,y∈V)}


图中的数据元素通常称作顶点(vertex),V是顶点的有穷非空集合;VR是两个顶点之间关系的集合。若<x,y>∈VR,则<x,y>表示从x到y的一条弧(arc),且称x为弧尾(tail),称y为弧头(head),此时的图称为有向图(diagraph)。在有向图中,以顶点V为头的弧的数目称为顶点V的入度(indegree),记为ID(V);以顶点V为尾的弧的数目称为顶点V的出度(outdegree),记为OD(V)。


2.3.2 主要数据结构

① 图符(顶点)结构:保存梯形图中各个图符的基本信息。
type                                    //图符(顶点)结构
nodeptrE%node;
nodeEpackedrecord
inst:string;                      //与该图符对应的指令
x,y:integer;                   //图符所在区域的左上角坐标
index:integer;                 //图符的索引号,它是图符的唯一标识
par1,par2,par3:string;//3个参数(梯形图的图符最多含3个操作数)
indegree:integer;           //入度
outdegree:integer;        //出度
firstin:arclink;                 //指向以该顶点(图符)为弧头的第一个弧结点
firstout:arclink;              //指向以该顶点(图符)为弧尾的第一个弧结点
LeftIn:integer;               //左汇合数,初值为0
RightOut:integer;          //右分支数,初值为0
end;

② 连接符(弧)结构:描述图符间的串并联关系。
type                                 //连接符(弧)结构
arclinkE%arctype;
arctypeEpackedrecord
tailvex:nodeptr;           //指向弧尾顶点(图符)在图中的位置
headvex:nodeptr;        //指向弧头顶点(图符)在图中的位置
hlink:arclink;                //指向弧头相同的下一条弧
tlink:arclink;                 //指向弧尾相同的下一条弧
end;


2.4 系统编辑功能的实现
PLC梯形图的设计过程实质上是有向图的生成过程,也是对应的十字链表的建立过程。在设计中,我们注意到母线上的有效引出点实际上可看成有向图中的一个顶点,其入度(ID)为0,出度(OD)为1。为了与其它顶点相区别,令其对应结点的索引号(index)为0。


为便于下一步的PLC指令生成,我们规定:
① 每个图符结点创建时都按其特点初始化其入度和出度,如END、ILC、JME等指令的ID(V)E0,OD(V)E0;OUT及部分功能指令的ID(V)E1,OD(V)E0。
② 在梯形图设计过程中,若某一图符增加一个左汇合,则相应地其入度增1;若某一图符减少一个左汇合,则相应地其入度减1;若某一图符增加一个右分支,则相应地其出度增1;若某一图符减少一个右分支,则相应地其出度减1。
③ 若某一图符顶点的出度大于等于2,则在其后引入一个虚顶点(以便今后进行并联及分支处理),并令其索引号(index)为-1。


2.5 梯形图到语句表的转换
为了实现梯形图到语句表的自动转换,在设计中必须正确处理多路并联和有多个输出分支这两个核心问题。为此,在设计前我们对大量电气系统的梯形图进行了分析,并注意到如下事实:在多种并联的情况下,母线上的有效引出点可等效为同一点;若梯形图中存在多路并联的情况,则其对应的有向图中必存在入度(ID)大于1的顶点;若梯形图中存在有输出分支或并联分支(且分支点均不在母线上),则其对应的有向
图中必存在出度(OD)大于1的顶点。

 

梯形图到语句表的转换算法顺序如下:
① 根据自左至右、自上而下的原则扫描梯形图,并检验各图符参数的正确性和串并联关系的合法性;
② 从左至右、从上到下扫描梯形图,寻找入度为零的顶点;
③ 若当前顶点的出度为零,则转⑧执行;若当前顶点的出度不为零,则将其出度减1、RightOut标志加1、当前顶点的直接后继顶点的入度减1、LeftIn标志加1;
④ 若当前顶点为多分支点,且并联点队列为空,图符队列非空,则图符队列中的所有元素出列,按规则生成代码,并删除处理过的图符顶点及以其为弧尾的弧结点;
⑤ 若当前顶点为虚顶点则进并联点队列及图符队列,若当前顶点为母线上的点则进并联点队列,若当前顶点为图符顶点,则进图符队列;
⑥ 若当前顶点的直接后继顶点的LeftIn标志值大于等于2,则并联点队列和图符队列中的所有元素出列,按规则生成相应代码,并删除处理过的图符顶点及以其为弧尾的弧结点。对于虚顶点,若其出度为零,则删除它及所有以其为弧尾的弧结点,否则,令虚顶点的RightOut标志减1;
⑦ 若当前顶点的直接后继顶点的入度为-1,且对应图符的指令助记符为END则图符队列和并联点队列中的所有元素出列,按规则生成相应代码,并删除所有的顶点及弧结点,程序结束,否则,当前顶点进入图符队列,转②继续执行;⑧ 若当前顶点的出度为零则判断其RightOut标志是否大于零,若是则转②,否则,当前顶点进入图符队列,转②继续执行。


3 实验结果
系统设计完成后对其进行测试,图1和图2分别为复杂的串并联关系和多个输出情况下的PLC梯形图及自动生成的代码。实验表明,本系统能正确处理串并联关系及有多个输出等复杂的梯形图,自动生成的代码准确无误。

1

2

 

4 结束语
可编程控制器应用程序的编写是可编程控制器应用中的核心任务。我们设计的系统,可根据用户设计的电气结构直接绘制PLC梯形图并自动生成语句表,实现软件设计的自动化,这将大大推动PLC在电气、轻工、机械工程中的应用。


参考文献
1 徐世许.可编程序控制器原理应用网络.中国科学技术大学出版社,2002.8
2 王兆义.可编程控制器教程.机械工业出版社,1993.7
3 OMRONSYSMACCPM1A可编程控制器操作手册.1997
4 张威,卢庆龄.Delphi编程与技巧.科学出版社,1999.7


收稿日期: 2003-09-26
第一作者吕俊白,女,1969年生,1991年毕业于华侨大学,获学士学位,1997年毕业于天津大学,获硕士学位,副教授;主要研究方向:数字图像处理、多媒体技术、过程控制等,在多种核心期刊上发表论文18篇。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值