PLC梯形图编译原理

时间:2023-03-20作者:佚名
IL语言非常接近汇编语言,编码后,plc处理器能很容易识别,但是梯形图是图形元素,CPU不容易识别,所以要将梯形图先编译为IL语言。本文提供了一种递归编译的方式,不完善的地方,还请见谅。
转换思路:
将梯形图以网络为单位进行遍历,选择一个网络进行分析,梯形图本质是块和块之间的串联,串联的块中又可能包含了并联关系,但是并联关系中,其实也是串联块的并联。如图1:


PLC梯形图编译原理


在整个梯形图编译的过程中,主要使用2个步骤(或者叫函数),一个步骤分析块之间的串联关系,一个步骤分析块之间的并联关系。

步骤0:先初始化开始行为网络的第一行,开始列为第一列,结束列为最后一列。然后进去步骤1。
步骤1、
(1)建立一个块堆栈BlockStack,输出堆栈OutputStack。
(2)首先将图进行串联块的分析。将分析到的块压入BlockStack,输出块压入OutputStack.
(3)遍历BlockStack,对每一个块进行分析,
1)如果块的行数大于1,表示块中有并联关系,到步骤2分析该块。
如果块不是第一个块,则要在并联关系解释完后,加入ANB指令。
2)如果块的行数等于1,表示块已经是最简串联块,直接输出块的语句。
如果块是第一个块,使用LD加载第一个元素,依次往后使用AND。(至于使用LDI,还是ANI,请判断元素的类型。)
如果块不是第一个块,使用AND加载第一个元素,依次往后使用AND。

(4)遍历输出块。
如果输出块是多行,使用步骤2分析输出块。
如果输出块是单行,则直接输出块中元素:OUT、SET、RST。
步骤2、
(1)首先判断传入的块是输出块还是普通块。如果是输出块,建立一个记录标志。
(2) 建立一个或堆栈.OrBlockStack.
(3) 分析块Blcok中由哪几个串联块并联而成,将块压入OrBlockStack中.
(4) A、遍历OrBlockStack,每一个串联块进行步骤1串联分析。
B、为每一个串联块加上并联关系。
1)如果是输出:如果一共有2个分支,则第一个分支加入MPS,第二个分支加入MPP。
如果分支大于2个,则第一个分支加入MPS,最后一个分支加入MPP,其他分支加入MPR。
2)如果不是输出:如果串联块中横线方向元素个数大于1个,加入ORB,如果只有一个元素,加入OR,进入步骤3检查代码。如果没有元素,就是短路。报错。
步骤3:全部完成后,对指令进行分析,如果有
LD Xn
OR
这样的指令,要合并为:
OR Xn.
举例说明:
梯形图程序如图1,可以划分为3个块:块1,块2,输出块。3个之间是串联的关系。



PLC梯形图编译原理

图1
(现在是在步骤1中)依次将块1,块2,输出块传入步骤2,根据步骤1可知,块2后面需要加入ANB指令。
块1传入步骤2后,可以分析到块1是由2个串联块A、B并联组成的。如图2:

PLC梯形图编译原理


图2
(现在是在步骤2中)依次将A、B传入步骤1,根据步骤2可知,B传入步骤1后,要加上ORB指令。
块A传入步骤1后,可以分析到块A是由3个块a,b,c串联组成的,如图3:

PLC梯形图编译原理



(现在是在步骤1中)然后依次将a,b,c传入到步骤2中进行分析,根据步骤1可知,b进入步骤2后,要加入ANB指令,C进入步骤2后,也要加入ANB指令。
块a可以分析得到是由3个单行的串联a1,a2,a3块并联组成的。

PLC梯形图编译原理



(现在是在步骤2中)再依次把a1,a2,a3传入步骤1进行串联分析,根据步骤2可知,X2传入步骤1后,要加入OR指令,X3传入步骤1后,也要加入OR指令。
a1进入步骤1,可以得到a1只有一行,所以直接输出a1为
LD X1
a2传入步骤1,可以得到
LD X2
OR
a3传入步骤1可以得到
LD X3
OR
最后对指令进行分析,只要有
LD Xn
Or
这样的,都合并为OR Xn.
整理后得到指令为:
LD X1
OR X2
OR X3

依次往后遍历,最后能得到所有的指令为:
LD X1
OR X2
OR X3
LD X4
OR X5
ANB
LD X6
OR X7
ANB
LD X9
OR X10
LD X11
LD X12
ANB
ORB
LD X13
OR X14
LD X15
OR X16
ANB
OR X17
ANB
OUT Y1
在这个算法中,将梯形图元素分块,是最关键的,所以要处理好梯形图元素的分块,至于怎么分块,就需要自己想了哟~

相关阅读

电气线路超负荷火灾原因及预防措施

一、线路超负荷火灾原因 电气 线路中通过电流时,由于导体自身电阻存在会产生一定热量,其大小为Q=I2RT。导线选定后,负荷越多,电流I功率越大,导线中产生的热量越多。如电流...
2023-03-21

「用电小常识」家用电器很多都是220V,为什么380V的电器很少用

家用电器很多都是220V,为什么380V的电器很少用呢? 220v的电压是一根相线与一根零线之间的电压差,一般用在照明、小型用电器上。380v的电压是两根相线之间的电压,一般用在动力需...
2023-06-11
「用电小常识」家用电器很多都是220V,为什么380V的电器很少用

有线电视线路的安装方法

   同轴电缆   有线电视采用同轴电缆 作为信号传输线路,同轴电缆的外形与结构如图14-4所示。同轴电缆屏蔽层除了起屏蔽作用外,还相当于一个导线,以构成信号回路。一条正常...
2023-06-27
有线电视线路的安装方法

带RL负载的单相半桥逆变电路图 单相负载半桥逆变器的工作原理

今天给大家分享的是:单相半桥逆变器。 在上一篇文章给大家分享了单相全桥逆变器。 一、单相半桥逆变器 单相半桥逆变器的结构非常简单,由 2 个晶闸管 T1 和 T2 和 2 个反馈二极管...
2023-08-29
带RL负载的单相半桥逆变电路图 单相负载半桥逆变器的工作原理

能看懂这种接法的电工,一定是个老电工,并且现场经验十足!

能够理解这种接线方式的电工,必然拥有丰富的一线实践经验。这种接法巧妙地连接了一端的插头与另一端的临时用电机,其中主线选用了6平方和10平方的粗线,以承载较大的电流需求。...
2024-08-12
能看懂这种接法的电工,一定是个老电工,并且现场经验十足!

热销商品

连发瓦斯枪通用瓦斯射钉钢钉枪瓦斯气体高强度瓦斯射钉枪165气罐

连发瓦斯枪是一款专为高强度瓦斯射钉设计的工具,其特点在于能够连续发射瓦斯气体,适用于多种需要快速穿透和固定材料的场景。这款瓦斯枪配备了165气罐,容量足够满足...
4.5

黄铜镀镍金属电缆防水接头EWM密封格兰头HSM电线固定填料函M20M16

黄铜镀镍金属电缆防水接头EWM密封格兰头(HSM型)是一款高性能电线固定与密封装置,适用于M16和M20螺纹规格。采用优质黄铜材质并表面镀镍处理,具备优异的防腐蚀性、机械...
1.14

消防配件二氧化碳灭火器2 3 5 7KG弯头喷管24Kg干冰CO2外喷头喷嘴

二氧化碳灭火器配件中的2357KG弯头喷管与24Kg干冰CO₂外喷头喷嘴,是专业消防设备的重要组成部分。该弯头喷管采用高强度耐腐蚀材料制造,连接灵活,适用于高压CO₂灭火...
4.5

雷士照明led筒灯孔灯客厅吊顶天花灯嵌入式过道筒灯射灯桶灯家用

雷士照明LED筒灯是一款专为现代家居设计的嵌入式照明产品,适用于客厅、吊顶、过道、卧室等空间。采用高品质LED光源,光线柔和均匀,显色指数高,有效还原真实色彩,营造舒...
5.78

雷士照明嵌入式防眩筒灯射灯窄边过道灯深杯客厅无主灯天花灯米雪

雷士照明嵌入式防眩筒灯射灯——“米雪”系列,专为现代无主灯设计打造。采用窄边深杯结构,有效控制杂散光,实现精准防眩,营造舒适柔和的光环境。适用于客厅、过道、天...
25.67

网站栏目