S7-300/400进阶笔记6:如何根据电路图或梯形图编写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 位逻辑指令