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