![S7-1200 PLC应用教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/807/41309807/b_41309807.jpg)
第3章 S7-1200的指令
3.1 位逻辑指令
本章主要介绍梯形图编程语言中的基本指令和部分扩展指令,其他指令将在后面各章中陆续介绍。
本节的程序在配套资源的项目“位逻辑指令应用”的OB1中。
1.常开触点与常闭触点
常开触点(见表3-1)在指定的位为1状态(TRUE)时闭合,为0状态(FALSE)时断开。常闭触点在指定的位为1状态时断开,为0状态时闭合。两个触点串联将进行“与”运算,两个触点并联将进行“或”运算。
2.取反RLO触点
RLO是逻辑运算结果的简称,图3-1中间有“NOT”的触点为取反RLO触点,它用来转换能流输入的逻辑状态。
如果没有能流流入取反RLO触点,则有能流流出(见图3-1的左图)。如果有能流流入取反RLO触点,则没有能流流出(见图3-1的右图)。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/71_01.jpg?sign=1738886792-GddJNdFfKtynzj3wcgpgwjnetJP8xbVE-0-feba73b030c173bc90f2d4d5f1e41506)
图3-1 取反RLO触点
表3-1 位逻辑指令
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/71_02.jpg?sign=1738886792-TzLSa66FtXxaagIyAXUHADl6C4Z2R2ch-0-b7a283d279b95997b3913819a1ff81c4)
3.赋值与赋值取反指令
梯形图中的线圈对应于赋值指令,该指令将线圈输入端的逻辑运算结果(RLO)的信号状态写入指定的操作数地址,线圈通电(RLO的状态为“1”)时写入1,线圈断电时写入0。可以用Q0.4:P的线圈将位数据值写入过程映像输出Q0.4,同时立即直接写给对应的物理输出点(见图3-2的右图)。
赋值取反线圈中间有“/”符号,如果有能流流过M4.1的赋值取反线圈(见图3-2的左图),则M4.1为0状态,其常开触点断开(见图3-2的右图),反之M4.1为1状态,其常开触点闭合。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/72_01.jpg?sign=1738886792-rrzHgNhxqeD72gerOyG1SaJRouTj79Kr-0-fd59f9b42d912586de00ab58f217a684)
图3-2 取反线圈和立即输出
4.置位、复位输出指令
S(Set,置位输出)指令将指定的位操作数置位(变为1状态并保持)。R(Reset,复位输出)指令将指定的位操作数复位(变为0状态并保持)。如果同一操作数的S线圈和R线圈同时断电(线圈输入端的RLO为“0”),则指定操作数的信号状态保持不变。
置位输出指令与复位输出指令最主要的特点是有记忆和保持功能。如果图3-3中I0.4的常开触点闭合,Q0.5变为1状态并保持该状态。即使I0.4的常开触点断开,Q0.5也仍然保持1状态(见图3-3中的波形图)。I0.5的常开触点闭合时,Q0.5变为0状态并保持该状态,即使I0.5的常开触点断开,Q0.5也仍然保持为0状态。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/72_02.jpg?sign=1738886792-nA4NJXFKTaXyxbZiR6qyNjCr6l3fwr8h-0-3d93943c35fd16ac6be8a2e3aadff942)
图3-3 置位输出与复位输出指令
在程序状态中,用Q0.5的S和R线圈连续的绿色圆弧和线圈中绿色的字母表示Q0.5为1状态,用间断的蓝色圆弧和蓝色的字母表示0状态。图3-3中Q0.5为1状态。
视频“位逻辑指令应用(A)”可通过扫描二维码3-1播放。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/72_03.jpg?sign=1738886792-B2wdtl4rURVO6UANqeM9LO8a3nOfp2On-0-d9c1fadd7a7aae7ec3db5f05e6974732)
二维码3-1
5.置位位域指令与复位位域指令
“置位位域”指令SET_BF将指定的地址开始的连续的若干个位地址置位(变为1状态并保持)。在图3-4的I0.6的上升沿(从0状态变为1状态),从M5.0开始的4个连续的位被置位为1状态并保持该状态不变。
“复位位域”指令RESET_BF将指定的地址开始的连续的若干个位地址复位(变为0状态并保持)。在图3-4的M4.4的下降沿(从1状态变为0状态),从M5.4开始的3个连续的位被复位为0状态并保持该状态不变。
6.置位/复位触发器与复位/置位触发器
图3-5中的SR方框是置位/复位(复位优先)触发器,其输入/输出关系见表3-2,两种触发器的区别仅在于表的最下面一行。在置位(S)和复位(R1)信号同时为1时,图3-5的SR方框上面的输出位M7.2被复位为0。M7.2的当前信号状态被传送到输出Q。
RS方框是复位/置位(置位优先)触发器(其功能见表3-2)。在置位(S1)和复位(R)信号同时为1时,方框上面的M7.6被置位为1。M7.6的当前信号状态被传送到输出Q。
7.扫描操作数信号边沿的指令
图3-4中间有P的触点指令的名称为“扫描操作数的信号上升沿”,如果该触点上面的输入信号I0.6由0状态变为1状态(即输入信号I0.6的上升沿),则该触点接通一个扫描周期。在其他任何情况下,该触点均断开。边沿检测触点不能放在电路结束处。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/73_01.jpg?sign=1738886792-4BwQNCmBziAapiPUbD4HutC7XZB6YrCG-0-408b1fdbf34ca3b48dd6413332d3034f)
图3-4 边沿检测触点与置位/复位位域指令
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/73_02.jpg?sign=1738886792-7D1lrFi9X86rmchEazYfSG1i9sugGq6A-0-3508a172a786d60127cd5b34830676d8)
图3-5 SR触发器与RS触发器
表3-2 SR与RS触发器的功能
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/73_03.jpg?sign=1738886792-GbdmSJUfWSt6lPwCzaiBCsFD6jCRliZ7-0-61366a826f409c284e56946a4c98e2a0)
P触点下面的M4.3为边沿存储位,用来存储上一次扫描循环时I0.6的状态。通过比较I0.6的当前状态和上一次循环的状态,来检测信号的边沿。边沿存储位的地址只能在程序中使用一次,它的状态不能在其他地方被改写。只能用M、DB和FB的静态局部变量(Static)来作边沿存储位,不能用块的临时局部数据或I/O变量来作边沿存储位。
图3-4中间有N的触点指令的名称为“扫描操作数的信号下降沿”,如果该触点上面的输入信号M4.4由1状态变为0状态(即M4.4的下降沿),RESET_BF的线圈“通电”一个扫描周期。该触点下面的M4.5为边沿存储位。
8.在信号边沿置位操作数的指令
图3-6中间有P的线圈是“在信号上升沿置位操作数”指令,仅在流进该线圈的能流(即RLO)的上升沿(线圈由断电变为通电),该指令的输出位M6.1为1状态。其他情况下M6.1均为0状态,M6.2为保存P线圈输入端的RLO的边沿存储位。
图3-6中间有N的线圈是“在信号下降沿置位操作数”指令,仅在流进该线圈的能流(即RLO)的下降沿(线圈由通电变为断电),该指令的输出位M6.3为1状态。其他情况下M6.3均为0状态,M6.4为边沿存储位。
上述两条线圈格式的指令不会影响逻辑运算结果RLO,它们对能流是畅通无阻的,其输入端的逻辑运算结果被立即送给它的输出端。这两条指令可以放置在程序段的中间或程序段的最右边。
在运行时用外接的小开关使I0.7和I0.3的串联电路由断开变为接通,RLO由0状态变为1状态,在I0.7的上升沿M6.1的常开触点闭合一个扫描周期,使M6.6置位。在上述串联电路由接通变为断开时,RLO由1状态变为0状态,M6.3的常开触点闭合一个扫描周期,使M6.6复位。
9.扫描RLO的信号边沿指令
在流进“扫描RLO的信号上升沿”指令(P_TRIG指令)的CLK输入端(见图3-7)的能流(即RLO)的上升沿(能流刚流进),Q端输出脉冲宽度为一个扫描周期的能流,使M8.1置位。指令方框下面的M8.0是脉冲存储位。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/74_01.jpg?sign=1738886792-D7adKivFBQM2YgpzrvqeYVyzDbpfNdD3-0-6bc2634b65af19287666d37d172f83ee)
图3-6 在RLO边沿置位操作数指令
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/74_02.jpg?sign=1738886792-TSisIBZJyNTjZXgLSqYuF9mqlAvl1zba-0-8bde8858a94adf54e4e03daa4313900f)
图3-7 扫描RLO的信号边沿指令
在流进“扫描RLO的信号下降沿”指令(N_TRIG指令)的CLK输入端的能流的下降沿(能流刚消失),Q端输出脉冲宽度为一个扫描周期的能流,使Q0.6复位。指令方框下面的M8.2是脉冲存储器位。P_TRIG指令与N_TRIG指令不能放在电路的开始处和结束处。
10.检测信号边沿指令
图3-8中的R_TRIG是“检测信号上升沿”指令,F_TRIG是“检测信号下降沿”指令。它们是函数块,在调用时应为它们指定背景数据块。这两条指令将输入CLK的当前状态与背景数据块中的边沿存储位保存的上一个扫描周期的CLK的状态进行比较,如果指令检测到CLK的上升沿或下降沿,将会通过Q端输出一个扫描周期的脉冲,将M2.2置位或复位。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/74_03.jpg?sign=1738886792-mfkwl9QwYk4LkqgDDOByWZ34bZTFxyJ5-0-b9fc40233aefd7f831e3d5a4c2837cfa)
图3-8 R_TRIG指令和F_TRIG指令
在生成CLK输入端的电路时,首先选中左侧的垂直“电源”线,双击收藏夹中的“打开分支”按钮,生成一个带双箭头的分支。双击收藏夹中的按钮,生成一个常开触点和常闭触点的串联电路。将鼠标的光标放到串联电路右端的双箭头上,按住鼠标左键不放,移动鼠标。光标放到CLK端绿色的小方块上时,出现一根连接双箭头和小方块的浅色折线(见图3-9)。松开鼠标左键,串联电路被连接到CLK端(见图3-8)。
11.边沿检测指令的比较
以上升沿检测为例,下面比较前面介绍的这4种边沿检测指令的功能。
在触点上面的地址的上升沿,该触点接通一个扫描周期。因此P触点用于检测触点上面的地址的上升沿,并且直接输出上升沿脉冲。其他3种指令都是用来检测RLO(流入它们的能流)的上升沿。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/74_06.jpg?sign=1738886792-tHKg8rYd1UsdeAqjcSjq0dbJoc2wGqzQ-0-e156fcec0861bcd1af205a08b8d9ae49)
图3-9 R_TRIG指令
在流过线圈的能流的上升沿,线圈上面的地址在一个扫描周期为1状态。因此P线圈用于检测能流的上升沿,并用线圈上面的地址来输出上升沿脉冲。其他3种指令都是直接输出检测结果的。
R_TRIG指令与P_TRIG指令都是用于检测流入它们的CLK端的能流的上升沿,并直接输出检测结果。其区别在于R_TRIG指令用背景数据块保存上一次扫描循环CLK端信号的状态,而P_TRIG指令用边沿存储位来保存它。如果P_TRIG指令与R_TRIG指令的CLK电路只有某地址的常开触点,可以用该地址的触点来代替它的常开触点和这两条指令之一的串联电路。例如图3-10中的两个程序段的功能是等效的。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/75_03.jpg?sign=1738886792-oBJ6yLJpHf7ysxcjJ7qg6vynvxzQ0PIU-0-23a0cff5c3c1bf56899e21b5e2cee643)
图3-10 两个等效的上升沿检测电路
12.故障显示电路
【例3-1】 设计故障信息显示电路,从故障信号I0.0的上升沿开始,Q0.7控制的指示灯以1Hz的频率闪烁。操作人员按复位按钮I0.1后,如果故障已经消失,则指示灯熄灭。如果没有消失,则指示灯转为常亮,直至故障消失。
信号波形图和故障信息显示电路如图3-11和图3-12所示。在设置CPU的属性时,令MB0为时钟存储器字节(见图1-17),其中的M0.5提供周期为1s的时钟脉冲。出现故障时,将I0.0提供的故障信号用M2.1锁存起来,M2.1和M0.5的常开触点组成的串联电路使Q0.7控制的指示灯以1Hz的频率闪烁。按下复位按钮I0.1,故障锁存标志M2.1被复位为0状态。如果这时故障已经消失,则指示灯熄灭。如果没有消失,则M2.1的常闭触点与I0.0的常开触点组成的串联电路使指示灯转为常亮,直至I0.0变为0状态,故障消失,指示灯熄灭。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/75_04.jpg?sign=1738886792-uSIXK2S2rGf4LtxYtpM5uRPlKjy4EQno-0-d6cd19336f77a68d7dafa2c38078fb1b)
图3-11 故障显示电路波形图
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/75_05.jpg?sign=1738886792-ZZNH4zCrYP8en9dLYyqlmRLOfrET1f5c-0-e9943c645158b4d22f4a9a2cacea4468)
图3-12 故障显示电路
如果将程序中的触点改为I0.0的常开触点,在故障没有消失的时候按复位按钮I0.1,松手后M2.1又会被置位,指示灯不会由闪烁变为常亮,仍然继续闪动。
视频“位逻辑指令应用(B)”可通过扫描二维码3-2播放。
![](https://epubservercos.yuewen.com/C499DC/21511156301514206/epubprivate/OEBPS/Images/75_07.jpg?sign=1738886792-J46JmMqjl348hPPkuNpaIB3a1Mxkzege-0-03551a0df3040a54be46f1f306dac9b3)
二维码3-2