S7-300400的STL语言入门:位逻辑指令及其编程方法
本文包含以下内容,高手绕行:
1、STL下的部分位逻辑指令
2、如何根据电路图或梯形图编写STL程序
3、逻辑运算的规则::先"与"(串联)后"或"并联
一、触点与线圈
触点分为常开触点和常闭触点,其在梯形图中表示如图1所示。
图1 梯形图中的触点与线圈
触点、线圈与RLO的关系如下:
· 常开触点,为0时,表示能流未流过该触点,RLO=0;为1时,表示有能流流过该触点,RLO=1;
· 常闭触点,与常开触点相反,0时RLO=1;状态为1时,RLO=0;
· 线圈或输出指令"="将RLO写入相应的地址位,即线圈的状态与当前RLO相同。
二、基本位逻辑指令
由不同触点经过串联、并联或者更复杂的电气连接,可实现很多简单却实用的逻辑控制功能。
1、串联逻辑
图2 触点串联(LAD)
如图2所示,为一个常开触点和常闭触点的串联逻辑梯形图。在STL中,用"A"(即AND,"与")表示常开点的串联;用"AN"(即AND NOT,"与非")表示常闭点的串联。因此,图2的逻辑,用STL描述如下:
图2.1 触点串联(STL)
2、并联逻辑
图3 触点并联(LAD)
如图3所示,为一个常开触点和常闭触点的并联逻辑梯形图。在STL中,用"O"(即OR,"或")表示常开点的并联;用"ON"(即OR NOT,"或非")表示常闭点的并联。因此,图3的逻辑,用STL描述如下:
图3.1 触点并联(STL)
三、位逻辑指令的嵌套
所谓"位逻辑指令的嵌套"是指由基本位逻辑指令"A"、"O"、"AN"、"ON"等,和嵌套指令"(" 及 ")"组合而成的指令,用以编程描述由基本的串、并联组成的复杂的混联逻辑指令。
复杂的逻辑运算采用的规则是:先"与"(串联)后"或"并联 。在初学STL时,可以通过假设中间逻辑,将复杂的逻辑拆分为简单的串联或并联逻辑,以方便编程。下面举几个简单的例子加以说明。
为方便说明,在逻辑表达式中"&"表示"与"、"&N"表示"与非"、"|"表示"或"、"|N"表示"或非"。
1、先"并联"、再"串联"
图4 混联逻辑1:先"并联"后"串联"(LAD)
图4的混联逻辑,由两个并联组件(红框和蓝框)再经由串联后,将逻辑结果赋值给Q3.0。我们可以令:
则:
将(1)、(2)代入(3)得:
因为,逻辑运算的规则是"先与后或" ,因此,(4)不可继续化简。根据(4)即可写出与图4相应的STL逻辑,如图4.1所示。
图4.1 混联逻辑1:先"并联"后"串联"(STL)
2、先"串联"、再"并联"
图5 混联逻辑2:先"串联"后"并联"(LAD)
图5的混联逻辑,由两个串联组件(红框和蓝框)再经由并联后,将逻辑结果赋值给Q4.0。我们可以令:
则:
将(1)、(2)代入(3)得:
因为,逻辑运算的规则是"先与后或" ,因此,(4)中的"括号"是不必须的,即(4)的逻辑运算结果等价于:
由表达式(4)、(4.1)写出的STL如图5.1所示。
图5.1 混联逻辑2:先"串联"后"并联"(STL)
由图5.1可见,通过表达式(4.1)写出的STL语句更为简洁、精炼。因为,我们在编程中,要时刻牢记逻辑运算的铁则:先"与"(串联)后"或"并联 。
3、更为复杂的逻辑
图6 混联逻辑3
在实际应用中,我们可能遇到更为复杂的逻辑运算,比如如图6所示。利用"化繁为简" 的方法,找出其"线圈"与"触点"之间的逻辑关系后,自然可以写出其对应的STL程序。
图6对应的STL语句这里就不给出了,有兴趣的小伙伴不妨可以试着分析一波。
附录:(介绍几个文中提到的概念)
1、能流的概念
"能流"是梯形图中,为方便理解和描述一段程序而提出的一个虚拟概念。左右母线看做是一个直流电源的正负极,左母线是正极,右母线是负极。电流沿着梯形图,从左母线流到右母线,形成一条回路,这里所谓的"电流"就是"能流"。如图1,绿色部分为能流的走向。
附图1 "能流"及其概念
2、状态字寄存器
S7系列PLC中,维护着一个16位的状态字寄存器(如图2所示),用于存储CPU执行指令时的状态。状态字中的某些位用于决定某些指令是否执行以及以什么样的方式执行,同时,指令在执行时可能改变状态字中的某些位。本文,主要用到"RLO"位。
附图2 状态字寄存器
RLO,(Result of Logic Operation),即:逻辑运算结果位。用来存储位逻辑指令、比较指令的执行结果,可以用RLO触发跳转指令。
3、位逻辑指令一览
附图3 位逻辑指令
三菱PLC ST语言编程合并类指令函数的用法解析
前面我们说到三菱PLC ST语言编程的触点类函数的一些简单的用法,现在我们来分享一下合并指令函数的一些用法。三菱ST语言合并类函数一共有六条指令,分别是INV 、MEF、 MEP 、 MPP 、MPS 、 MRD。 我们先看前三条具体的含义和操作数怎么填?INV 是逻辑取反指令,现在借用一下西门子喜欢用“能流”这个词,INV就是对它之前都能流取反,前面能流是通电,那结果是没有输出,前面能流没有接通,结果反而有输出。相当于梯形图的这个功能,
它的表达方式是INV(?BOOL_EN?),很明显括号里面填的是一个布尔量,就是取反之前的条件。例如,Y0:=INV(X0 AND X1);X0和X1两个不接通的时候,Y0有输出,X0和X1都接通时反而没有输出。 MEP(?BOOL_EN?):能量流的上升沿检测,相当于梯形图的这个功能。
MEF(?BOOL_EN?):,能流的下降沿检测,相当于梯形图的这个功能。
这两条指令放在一起来说,他们在ST语言中的意思是对能流的上升沿或下降沿进行检测,接通一个扫描周期,触点类的指令中的LDP和LDF很像,很多时候都可以通用。MEP(?BOOL_EN?)括号里面填的是单个触点,或者是多个触点的逻辑关系,它的作用就是对它括号里面逻辑关系导通时接通一个扫描周期,MEF(?BOOL_EN?)也是同样的道理,只不过它是括号里面的逻辑关系不导通时接通一个扫描周期。三菱PLC ST 语言编程中,合并类函数除了前面说到的三个,还有后面的三个函数,他们分别是;MPS(?BOOL_EN?);MRD(?BOOL_EN?);MPP(?BOOL_EN?); 这三个函数主要用于多重输出,MPS进栈,MRD是读栈,MPP是出栈,遵循先入后出的逻辑原则,把信号压入栈堆,最多可以储存11个。这样表述起来就有点繁杂,不符合电气人的理解习惯,换句话说。MPS就是储存中间运算的结果,相当于西门子S7-300的中间输出指令,而MRD就是读取这个运算结果,如果为TRUE表示接通,反之亦然。MPP就是对中间运算结果复位,就是出栈了。下面举个例子来说明他的用法。 Y0:=MPS(x0) AND NOT X1;Y1:=MRD(TRUE) AND X2;Y2:=MRD (TRUE)AND X4;Y3:=MPP(TRUE)AND X5 AND NOT X6;
梯形图编程
这就是ST语言编程的合并输出,前面有多少个条件,那么MPS括号里面就要写多少条件,你们了解了吗?
相关问答
西门子plc梯形图中括号内啥意思?thanks
[回答]常闭开关网友(127.255.255.*)2018-10-12
西门子梯形图(p)是什么意思?
P就是上升沿的意思,UP(上升),就是前面触点一动作,然后如果后面接个P的话.那就是动作触发一下,然后关闭,不管你前面触点是一直闭合还是闭合一下.P就是上升沿的...
对于西门子PLC中嵌套指令的说明-盖德问答-化工人互助问答社区
jin-s-这个好理解,就像我们数学里的四则运算中的括号一样,先算括号里面的,再算外面的我就是不明白,什么时候用a(什么时候用o(开头这个好理解,就...
西门子plc矩阵用法?
西门子PLC数组的使用方法是:新建一个DB块,建块时选择"sharedDB",并在DB_VAR变量的INT中直接修改变量的属性即可。具体的数组使用例子如下:在ARRAY变量类型...
求PLC中漏型和源型的区别?
PLC输入外部电路的形式PLC输入外部电路的外部节点形式共分为以下三种:1、无源节点输入,即:开关节点输入。2、NPN和PNP节点输入3、二极管输入下面,就这三...
组态王报表要变量记录吗-业百科
与PLC建立通信;编辑画面,插入报表控件,在趋势图中组态相应的数据变量;在右边历史报表控件中,设置最大值、最小值、平均值,插入函数,括号中选择要计算的函数。
西门子s7-300,按下I0.0?
如果没有程序执行了将输出强制复位的话,Q0.0应该是双线圈了。PLC的程序里尽量避免双线圈的出现,尤其对PLC程序执行不够深入了解时,不要随便使用双线圈。PLC从...
欧姆龙PLC运行时忽然断电,再送电时候怎么恢复断电瞬间的状态...
长到再运行一次也不行么,如果你执意这样做,我给你个思路,首先断电保持寄存器是一定要用的,你每段自动运行的程序后面都加上一个mov指令,第一行程序就movR9001...
三菱欧蓝德出现POSSIBLFIGYROS是什么意思?
PLC的应用指令,是双字(32位)相乘的意思。指令用法如下:DMULD10D20D30意思是:(D11,D10)双字32位里面的数据与(D21,D20)双字32位里面的数据相乘...DMUL是三...
英语一些简单的题.1.写出与所给单词的划线字母含有相同读音的...
(12)c,w,h,h,i_____(which)(13)i,r,n,e,d,f_____(friend)