2.2 位逻辑、定时器与计数器
1.位逻辑指令
PLC最初的设计是为了替代继电器,因此,类似于继电器—接触器控制电路的位逻辑指令是最基本的、最常见的,图2-12所示为S7-200最常见的5种位逻辑。
(1)常开与常闭触点
在S7-200控制程序中,使用I/O地址来访问实际连接到CPU输入/输出端子的实际器件。也就是说,对于常开和常闭触点,以S7-200PLC实际获得的信号为准,而不是以继电器的常开或常闭符号为准,这个必须引起足够的重视。
(2)置位与复位
置位(S)和复位(R)指令设置(打开)或复原指定的点数(N),从指定的地址(位)开始,用户可以置位和复位1~255个点,如图2-13所示为RS指令。
图2-12 S7-200最常见的5种位逻辑
图2-13 RS指令
图2-14所示为RS指令的主程序范例。
根据上述程序,可以进行波形描述,RS程序的波形如图2-15所示。
图2-14 RS指令的主程序范例
2.定时器
S7-200指令集提供三种不同类型的定时器:接通延时定时器(TON),用于单间隔计时;保留性接通延时定时器(TONR),用于累计一定数量的定时间隔;断开延时定时器(TOF),用于延长时间以超过关闭(或假条件),例如电动机关闭后使电动机冷却。
定时器操作逻辑见表2-2。
表2-2 定时器操作逻辑
(续)
图2-15 RS程序的波形
(1)定时器的分辨率
定时器的分辨率见表2-3,每一个当前值都是时间基准的倍数。例如,10ms定时器中的数值50表示500ms。
表2-3 定时器的分辨率
(2)接通时间延时TON
TON定时器如图2-16所示,接通延时定时器(TON)指令在启用输入为“打开”时,开始计时。当前值(Txxx)大于或等于预设时间(PT)时,定时器位为“打开”。启用输入为“关闭”时,接通延时定时器当前值被清除。达到预设值后,定时器仍继续计时,达到最大值32767时,停止计时。
图2-16 TON定时器
图2-17 定时器范例程序
1)定时器的启动、停止与复位。
可用“复原”(R)指令复原任何定时器。“复原”指令执行下列操作:
定时器位=关闭,定时器当前值=0
图2-17所示的定时器范例程序中,网络1∥在(10)100ms或1s之后,100ms定时器T37超时∥I0.0打开=T37被启用,I0.0关闭=禁止和复原T37。
其时序图如图2-18所示。
图2-18 时序图
图2-19 定时器的另外一个范例程序
2)定时器的启动、停止与复位。
可用“复原”(R)指令复原任何定时器。“复原”指令执行下列操作:
定时器位=关闭,定时器当前值=0。
图2-19所示为定时器的另外一个范例程序。
其时序图如图2-20所示。
(3)指示灯程序编制(TON应用案例)
1)按图2-21所示进行接线,确保接线无误。
2)根据要求编制不同的程序,并下载运行测试是否正确。
①选择开关ON后延时5s,指示灯才亮;选择开关OFF后,指示灯灭。
TON应用案例如图2-22所示。
②选择开关ON后,指示灯亮;选择开关OFF后,指示灯延时5s才灭。
参考程序(略),只需要将T101的TON功能改为TOF即可。
③选择开关ON后延时5s,指示灯才亮;选择开关OFF后,指示灯也延时5s才灭。
图2-20 定时器时序图
TON应用案例二如图2-23所示。
(4)TOF和TONR指令
断开延时定时器(TOF)用于在输入关闭后,延迟固定的一段时间再关闭输出。启用输入打开时,定时器立即打开,当前值被设为0。输入关闭时,定时器继续计时,直到消逝的时间达到预设时间。达到预设值后,定时器关闭,当前值停止计时。如果输入关闭的时间短于预设数值,则定时器仍保持在打开状态。TOF指令必须遇到从“打开”至“关闭”的转换才开始计时。如果TOF定时器于SCR区域内部,而且SCR区域处于非现用状态,则当前值被设为0,计时器位被关闭,而且当前值不计时。
掉电保护性接通延时定时器(TONR)指令在启用输入为“打开”时,开始计时。当前值(Txxx)大于或等于预设时间(PT)时,计时位为“打开”。当输入为“关闭”时,保持保留性延迟定时器当前值。可使用保留性接通延时定时器为多个输入“打开”阶段累计时间。使用“复原”指令(R)清除保留性延迟定时器的当前值。达到预设值后,定时器继续计时,达到最大值32767时,停止计时。
图2-21 指示灯程序的硬件接线
3.计数器
S7-200 PLC共提供了256个计数器,计数器可以作为以下3个类型使用:
◆CTU:增计数器;
◆CTD:减计数器;
◆CTUD:增/减计数器。
(1)CTU增计数器
CTU增计数器如图2-24所示。每次向上计数输入CU从关闭向打开转换时,向上计数(CTU)指令从当前值向上计数。当前值(Cxxx)大于或等于预设值(PV)时,计数器位(Cxxx)打开。复原(R)输入打开或执行“复原”指令时,计数器被复原。达到最大值(32767)时,计数器停止计数。
CTU计数器指令的操作数类型见表2-4。
图2-22 TON应用案例一
图2-23 TON应用案例二
(2)CTD减计数器
CTD减计数器如图2-25所示。每次向下计数输入CD从关闭向打开转换时,向下计数(CTD)指令从当前值向下计数。当前值Cxxx等于0时,计数器位(Cxxx)打开。输入(LD)打开时,计数器复原计数器位(Cxxx)并用预设值(PV)载入当前值。达到零时,向下计数器停止计数,计数器位Cxxx打开。减计数器的范围也是从C0~C255。
图2-24 CTU增计数器
表2-4 CTU计数器指令的操作数类型
CTD减计数器指令的操作数类型与CTU类似,即CU与CD、R与LD类似。
如图2-26为一啤酒包装线,原设定每三瓶要执行一个小分装动作,因此编写主程序如图2-27所示。
图2-25 CTD减计数器
图2-26 啤酒包装线
图2-27 啤酒包装线主程序
与啤酒瓶灌装线相对应的波形如图2-28所示。
图2-28 啤酒包装线波形图
(3)CTUD增/减计数器
CTUD增/减计数器如图2-29所示。每次向上计数输入CU从关闭向打开转换时,向上/向下计时(CTUD)指令向上计数,每次向下计数输入CD从关闭向打开转换时,向下计数。计数器的当前值Cxx保持当前计数。每次执行计数器指令时,预设值PV与当前值进行比较。达到最大值(32767),位于向上计数输入位置的下一个上升沿使当前值返转为最小值(-32768)。在达到最小值(-32768)时,位于向下计数输入位置的下一个上升沿使当前计数返转为最大值(32767)。当当前值Cxx大于或等于预设值PV时,计数器位Cxx打开。否则,计数器位关闭。当“复原”(R)输入打开或执行“复原”指令时,计数器被复原。达到PV时,CTUD计数器停止计数。
如图2-30所示是CTUD指令的一个程序例子。
对应的波形图如图2-31所示。
图2-29 CTUD增/减计数器
图2-30 CTUD指令的一个程序例子
4.特殊存储器标志位SMB0
特殊内存字节0(SM0.0~SM0.7)提供8个位,在每次扫描周期结尾处由S7-200 CPU更新。程序可以读取这些位的状态,然后根据位值作出决定。特殊存储器标志位SMB0的具体含义见表2-5,它在实际编程中非常有用。
图2-31 对应的波形图
表2-5 特殊存储器标志位SMB0的具体含义
关于其他特殊寄存器SM的含义可以参考西门子S7-200编程手册。