[发明专利]一种将PLC梯形图转换成指令表并解释执行的方法有效
申请号: | 201710338944.3 | 申请日: | 2017-05-15 |
公开(公告)号: | CN107193534B | 公开(公告)日: | 2020-05-22 |
发明(设计)人: | 黄道平;何梓扬;刘少君 | 申请(专利权)人: | 华南理工大学 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/34;G05B19/05 |
代理公司: | 广州市华学知识产权代理有限公司 44245 | 代理人: | 李斌 |
地址: | 510640 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 plc 梯形 转换 指令 解释 执行 方法 | ||
1.一种将PLC梯形图转换成指令表并解释执行的方法,其特征在于,包括如下步骤:
S1、遍历梯形图并构造十字链表的所有顶点,根据各顶点的逻辑关系构造十字链表的弧链表,通过所有顶点和弧链表得到十字链表;
S2、利用串并联归并,化简十字链表得到包含指令间逻辑关系的二叉树结构;
S3、遍历二叉树结构得到对应的指令表;
S4、利用堆栈的先进先出原理解释指令表;
所述步骤S1,具体为:
S11、构造StrRung结构体保存梯形图一行的信息,其中包括Element数组,该数组的元素是保存梯形图元件信息的StrElement结构体指针,然后用Rung指针数组保存每一行的StrRung结构体指针;
S12、把除导线以外的其他元件看成有向图的一个顶点,构造顶点结构StrVexNode并遍历Rung指针数组建立所有顶点,顶点结构包括一个指向二叉树节点结构StrBiNode指针;
S13、构造弧节点的数据结构并且根据各顶点的逻辑关系构造弧链表;
S14、通过所有顶点和弧链表得到十字链表;
所述步骤S2,具体为:
S21、利用串联归并,求入度为1的顶点,由该顶点结构的firstin域得到以该顶点为弧头的第一个弧结点,由弧结点得到弧尾顶点,接着计算该弧尾顶点的出度和入度,如果弧尾顶点的出度为1且入度小于等于1,则弧尾和弧头顶点合并为一个顶点;合并时新建一个二叉树节点BiNode,把弧尾顶点所包含的二叉树节点指针赋值为BiNode的左子节点,把弧头顶点所包含的二叉树节点指针赋值为BiNode的右子节点,同时把BiNode的Operator字段赋值为枚举元素AND,然后BiNode的指针赋值给弧尾顶点的二叉树节点指针并且把弧头顶点的firstout指针赋值给弧尾顶点的firstout指针,最后释放弧头顶点的firstin弧节点和弧头顶点;
S22、利用并联归并,依次计算顶点的出度,如果顶点的出度大于1则利用firstout域把以该顶点为弧尾的所有弧结点的弧头顶点保存在temp1数组中,对于temp数组中的顶点都按照以下步骤执行,求该顶点为弧尾的第一个弧结点的弧头顶点,计算该弧头顶点的入度,如果该弧头顶点的入度大于1,则利用firstin域把以该弧头顶点为弧头的所有弧结点的弧尾顶点保存在temp2数组中,然后遍历temp1数组和temp2数组找出两个数组都包含的顶点,把这些顶点合并成一个顶点;其中,合并时:
a)先声明一个指向StrBiNode的指针pBiNode,把第一个顶点的BiNode字段赋值给pBiNode;b)然后取出下一个顶点,分配一个二叉树结构,其指针为NewBiNode,把pBiNode赋值给NewBiNode的left字段,把顶点的BiNode字段赋值给NewBiNode的right字段,赋值NewBiNode的Operator字段为枚举元素OR,把NewBiNode赋值给pNode,最后释放该顶点的firstin和firstout指针所指向内容和该顶点指针所指向内容;c)重复步骤b)直到取出所有顶点;
S23、重复步骤S21、S22,直到十字链表只剩下一个顶点,该顶点的BiNode字段为一颗包含了梯形图逻辑关系的二叉树的根节点。
2.根据权利要求1所述的一种将PLC梯形图转换成指令表并解释执行的方法,其特征在于,所述步骤S4,具体为:
S41、扫描物理输入并存储物理输入状态;
S42、利用堆栈原理逐行解释指令表,直到遇到END指令结束;
S43、把存储的物理输出状态更新到物理输出。
3.根据权利要求2所述的一种将PLC梯形图转换成指令表并解释执行的方法,其特征在于,所述步骤S42的利用堆栈原理逐行解释指令表,利用堆栈先进先出的特点来实现指令表的解释,所述指令表的解释分4种情况,包括:
(1)对于LD或LDI指令,将其操作数压入堆栈;
(2)对于OUT指令,将其操作数从堆栈中取出;
(3)对于AND、ANI、OR、ORI、ANB、ORB指令,将其对象从堆栈中取出,经过逻辑运算后存入堆栈;
(4)对于SET、RST指令,改变其操作数的状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学,未经华南理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710338944.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种生物催化合成2-噻吩乙胺的方法
- 下一篇:一种光纤布线装置