1.S7—1200指令全集
1.1移动操作指令
1.1.1移动值指令
- 移动值指令简介
(1) 移动值指令MOVE是当EN为真时,实现相同数据类型(不包括位、字符串、Variant)变量间的传送。MOVE指令允许有多个输出,单击“OUT1”前面的圆圈,将会增加一个OUT2输出,以后增加的输出的编号按顺序排列。
(2)如果输入IN数据类型的位长度超出输出OUT数据类型的位长度,则源值的高位会丢失;如果输入IN数据类型的位长度低于输出OUT数据类型的位长度,则目标值的高位会被改写为0。REAL传送至DWORD时按位传送,不是取整,如要取整,可使用CONVERT_REAL_TO_DINT、ROUND等指令。
1.1.2块移动指令和块填充指令
- 块移动指令的简介
(1)块移动指令MOVE_BLK是当EN条件满足时,将一个存储区(源范围)的数据移动到另一个存储区(目标范围)中。使用输入COUNT可以指定移动到目标范围中的元素个数。仅当源范围和目标范围的数据类型相同时,才能执行该指令。IN和OUT是待复制的源区域和目标区域中的首个元素(并不要求是数组中的第一个元素)
(2)IN是源数组中传送的起始元素,OUT是目的数组中接收的起始元素。COUNT是传输个数,可以是正整数的常数,如果是变量,数据类型支持USInt、UInt、UDInt。如果目的数组接收区域小于源数组的传送区域,则只传送目的数组可接收区域的数据
- 块填充指令的简介
(1)块填充指令FILL_BLK是当EN条件满足时,实现用输入变量批量填充输出区域的功能。输入参数IN设置的值填充到输出参数OUT指定起始地址的目标数据区,如图7-23所示。COUNT为填充的数据元素个数,源区域和目标区域的数据类型应相同
1.1.3交换指令
- 交换指令的概念
(1)使用交换指令可以改变每个字节之间的排列顺序,交换指令支持WORD和DWORD两种数据类型
1.2字逻辑运算指令
1.2.1基本字运算逻辑指令
- 基本字运算逻辑指令的基本概念
(1)S7-1200PLC的字逻辑运算指令。字逻辑运算指令对两个输入IN1和IN2按位进行逻辑运算,运算结果在输出OUT指定的地址中,可以增加输入的个数。“
(2)”与”运算指令AND的两个操作数的同一位如果均为1,运算结果的对应位为1,否则为0;
(3)“或”运算指令OR的两个操作数的同一位如果均为0,运算结果的对应位为0,否则为1;
(4)“异或”运算指令XOR的两个操作数的同一位如果不相同,运算结果的对应位为1,否则为0。以上指令的操作数IN1、IN2和OUT的数据类型为位字符串Byte、Word或DWord。
(5)求反码指令INVERT将输入IN中的二进制整数按位取反,即各位二进制数由0变1,由1变0,运算结果存放在输出OUT指定的地址。
1.3移位和循环移位指令
1.3.1右移/左移指令
- 简介
(1)右移指令SHR将输入IN中操作数的内容按位向右移位,并在输出OUT中查询结果,参数N用于指定移位的位数。无符号数(如UInt、Word)移位时,用0填充操作数左侧区域中空出的位。有符号数(如Int)移位时,则用符号位的信号状态填充空出的位。
(2)左移指令SHL将输入IN中操作数的内容按位向左移位,并在输出OUT中查询结果,参数N用于指定移位的位数,用0填充操作数右侧部分因移位空出的位。
(3)循环右移指令ROR将输入IN中操作数的内容按位向右循环移位,并在输出OUT中查询结果,参数N用于指定循环移位的位数,用移出的位填充因循环移位而空出的位。
(4)循环左移指令ROL将输入IN中操作数的内容按位向左循环移位,并在输出OUT中查询结果,参数N用于指定循环移位的位数,用移出的位填充因循环移位而空出的位
(5)参数N的值为0时,输入IN的值将复制到输出OUT的操作数中。可以从指令框的“???”下拉列表框中选择该指令的数据类型。
1.4定时器操作指令
1.4.1基本概念
- 基本简介
(1)S7-1200 PLC的定时器操作指令。其定时器为IEC定时器,调用时需要指定相应的背景数据块,定时器指令的数据保存在背景数据块中。使用定时器时需要使用背景数据块或者数据类型为IEC_TIMER的DB变量。
(2)S7-1200 PLC的IEC定时器没有定时器号,可以用背景数据块的名称如“T1”来做定时器的标识符。定时器的输入IN为启动输入端,PT(Preset Time)为预设时间值,ET(Elapsed Time)为定时开始后经过的时间,称为当前时间值,它们的数据类型为32位的Time。Q为定时器的位输出。
1.4.2生成脉冲指令
- 基本概念
(1) 生成脉冲指令TP用于将输出Q置位为PT预设的一段时间。IN从0变为1,定时器启动,Q立即输出1,开始输出脉冲。定时开始后,ET从0ms开始不断增大,达到PT预设的时间时,Q输出变为0状态。当ET=PT时,如果IN输入信号为1状态,则ET保持不变;如果IN输入信号为0状态,则ET回到0。当ET<PT时,IN的改变不影响Q的输出和ET的计时。
(2)启动脉冲定时器指令-(TP)-线圈的功能和生成脉冲指令功能相同
1.4.3接通延时指令
- 简介
(1)接通延时指令TON,当IN从0变为1时,定时器启动;当ET=PT时,Q立即输出1,ET立即停止计时并保持;在任意时刻,只要IN变为0,ET立即停止计时并回到0,Q输出0
(2)启动接通延时定时器指令-(TON)-线圈的功能和接通延时指令功能相同
1.4.4关断延时指令
- 简介
(1) 关断延时指令TOF,只要IN为1时,Q输出为1。IN从1变为0,定时器启动;当ET=PT时,Q立即输出0,ET立即停止计时并保持。在任意时刻,只要IN变为1,ET立即停止计时并回到0
(2)启动关断延时定时器指令-(TOF)-线圈的功能和关断延时指令功能相同
1.4.5时间累加器指令
-
简介
(1) 时间累加器指令TONR,IN从0变为1,定时器启动;当ET<PT时,IN为1时,则ET保持计时,IN为0时,ET立即停止计时并保持。当ET=PT时,Q立即输出1,ET立即停止计时并保持。在任意时刻,只要R为1时,Q输出0,ET立即停止计时并回到0。R从1变为0时,如果此时IN为1,定时器启动。时间累加器指令程序运行
(2)时间累加器指令-(TONR)-线圈的功能和时间累加器指令TONR功能相同,程序运行状态如图7-46所示。注意,这里累加型定时器的复位,必须通过复位定时器指令-(RT)-线圈来复位。
1.5S7-1200 PLC定时器创建
(1)定时器功能框指令直接拖入块中,自动生成定时器的背景数据块,该背景数据块位于“系统块→程序资源”中
(2)在FB的Static静态变量中,定义IEC_TIMER类型变量,生成多重背景
1.6计数器操作指令
1.6.1基本概念
- 简介
(1)S7-1200 PLC的计数器为IEC计数器,用户程序中可以使用的计数器数量仅受CPU的存储器容量限制。这里所说的是软件计数器,最大计数速率受所在OB的执行速率限制。S7-1200 PLC调用计数器时需要指定相应的背景数据块,计数器指令的数据保存在背景数据块中。使用计数器时需要使用背景数据块或者数据类型为IEC_COUNTER的DB变量。S7-1200 PLC的IEC计数器没有计数器号,可以用背景数据块的名称如“C1”来做计数器的标识符。计数器的CU和CD分别是加计数输入和减计数输入,CU或CD由0状态变为1状态时(信号的上升沿),当前计数器值CV被加1或减1。PV为预设计数值,Q为布尔输出。R为复位输入,CU、CD、R和Q均为Bool变量。LD用于减计数中将CV设置为PV。
1.6.2加计数指令
- 基本概念
(1)加计数指令CTU,当CU从0变为1时,CV增加1;当CV=PV时,Q输出1,此后每当CU从0变为1时,Q保持输出1,CV继续增加1直到达到计数器指定的整数类型的最大值。在任意时刻,只要R为1,Q输出0,CV立即停止计数并回到0。加计数指令程序运行状态
(2) 实际应用中,常用ADD指令配合触点比较指令来代替加计数指令。可以通过修改ADD指令中IN2参数的值来改变每次增加的量,如将IN2的值由1改成2,使用更加灵活。
1.6.3减计数指令
- 简介
(1)减计数指令CTD,当CD从0变为1时,CV减少1;当CV=0时,Q输出1,此后每当CD从0变为1时,Q保持输出1,CV继续减少1直到达到计数器指定的整数类型的最小值。在任意时刻,只要LD为1,Q输出0,CV立即停止计数并回到PV值。减计数指令程序运行
1.6.4加减计数指令
- 简介
(1)加减计数指令CTUD是加计数和减计数两个指令的综合。当CU从0变为1时,CV增加1,当CD从0变为1时,CV减少1;当CV>=PV时,QU输出1,当CV<PV时,QU输出0;当CV<=0时,QD输出1,当CV>0时,QD输出0;CV的上下限取决于计数器指定的整数类型的最大值与最小值。在任意时刻,只要R为1时,QU输出0,CV立即停止计数并回到0;只要LD为1时,QD输出0,CV立即停止计数并回到PV值