|
4.3 定时器指令 |
在传统继电器-交流接触器控制系统中一般使用延时继电器进行定时,通过调节延时螺钉来设定延时时间的长短。在PLC控制系统中通过内部软延时继电器-定时器来进行定时操作。PLC内部定时器是PLC中最常用的元器件之一,用好、用对定时器对PLC程序设计非常重要。
CP1H系列PLC的定时器用T进行表示,它有一个设定值寄存器SV和一个当前值寄存器PV以及输出触点。定时器是根据时钟脉冲计时的,时钟脉冲有1ms、10ms、100ms三种。当定时器的输入条件为OFF或断电时,定时器复位,此时定时器PV值等于设定值;当定时器输入条件为ON时,定时器开始定时,PV值每隔一个时钟脉冲减1,当PV值等于0时,其输出触点动作。
CP1H系列PLC的定时器分为通用定时器、高速定时器、超高速定时器、累计定时器、长时间定时器、多输出定时器等多种,每一种类型下又细分为十进制定时器(BCD)和十六进制定时器(HEX),它们均有相应的指令,如表4-25所示。
表4-25 定时器指令
从表4-25中可以看出,十六进制类型的定时器的定时时间比十进制类型定时器的定时时间要长。在默认情况下,CX-Programmer编程软件只能输入十进制类型的定时器指令。如果要输入十六进制类型的定时器指令,需在CX-Programmer软件“工程工作区”的“新PLC”上右击鼠标,在弹出的菜单命令中选择“属性”,将弹出如图4-2(a)所示的“PLC属性”对话框。在“PLC属性”对话框中选择“通用”选项卡,并选中“以二进制形式执行定时器/计数器”复选框,将弹出如图4-2(b)所示的确认对话框,点击“确定”按钮,用户即可在CX-Programmer编程软件中输入十六进制类型的定时器指令。
十进制定时器(BCD)和十六进制定时器(HEX)的指令功能相同,但由于十进制定时器指令的定时设定值更为直观,所以本书只讲解十进制类的定时器指令。对于十六进制类的定时器指令的使用方法,用户参照十进制类的定时器指令即可。
图4-2 设置十六进制定时器指令输入方式
通用定时器每隔0.1s将当前值减1,若当前值为0时,则执行相应的定时器动作,其指令格式如表4-26所示。
表4-26 通用定时器指令格式
使用说明
①定时器输入为OFF时,对N所指定编号的定时器进行复位。
②定时器输入由OFF变为ON时,启动定时器,定时器开始对当前值每隔0.1s进行减1计时,当前值减为0时,将时间到时标志置于ON(时间到时)。定时时间范围为0~999.9s。
③时间到时后,保持定时器当前值以及时间到时标志的状态。若要重启定时,需要将定时器输入从OFF变为ON,或者通过指令(如MOV)将定时器当前值变更为除0以外的正整数。
例4-16 使用TIM指令实现延时控制,要求按下按钮SB,指示灯亮,松开按钮,延时5s指示灯自动熄灭。
分析:按钮SB与PLC的0.00连接;指示灯HL与PLC的100.00相连。在程序中可以使用内部辅助继电器W0.00来暂存信息。当SB按下时,W0.00线圈得电并自保;两个W0.00常开触点串联,其中一个驱动100.00线圈,另一个和0.00常闭触点串联以控制T0000定时器延时。当T0000的当前值为0时,T0000常闭触点断开,W0.00线圈失电,使两个W0.00常开触点断开,从而使100.00线圈失电、T0000复位。其程序与时序如表4-27所示。
表4-27 TIM延时控制程序与时序
高速定时器每隔0.01s将当前值减1,若当前值为0,则执行相应的定时器动作;超高速定时器每隔0.001s将当前值减1,若当前值为0,则执行相应的定时器动作。它们的指令格式如表4-28所示。
表4-28 高速定时器及超高定时器指令格式
使用说明
①定时器输入为OFF时,对N所指定编号的定时器进行复位。
②定时器输入由OFF变为ON时,启动定时器,定时器开始对当前值每隔1个时间单位进行减1计时,当前值减为0时,将时间到时标志置于ON(时间到时)。其中高速定时器的时间单位为0.01s,定时时间范围为0~99.99s;超高速定时器的时间单位为0.001s,定时时间范围为0~9.999s。
③时间到时后,保持定时器当前值以及时间到时标志的状态。若要重启定时,需要将定时器输入从OFF变为ON,或者通过指令(如MOV)将定时器当前值变更为除0以外的正整数。
例4-17 使用TIMH和TMHH指令控制100.00输出1个占空比为10%的5Hz方波信号。
分析:利用两个定时器可构成任意占空比周期性方波信号输出,占空比为10%的5Hz方波信号,即1个周期时间为1/5=0.2s,其中高电平的脉宽为0.02s,低电平的脉宽为0.18s。在此使用高速定时器的设定值为18,超高速定时器的设定值为20。若0.00接通时,100.00线圈得电,同时定时器T0000(超高速定时器)开始定时,0.02s后,T0000常开触点接通,常闭触点断开,则100.00线圈失电,同时定时器T0001(高速定时器)开始定时,0.18s后,T0001常闭触点断开,则定时器T0000、T0001被复位,其触点恢复常态,从而使常闭触点T0001重新接通,第二个输出周期开始。其程序与时序如表4-29所示。
表4-29 方波信号输出程序与时序
累计定时器每隔0.1s将当前值加1,若当前值等于设定值时,则执行相应的定时器动作,其指令格式如表4-30所示。该指令有两个输入端,分别称为定时器输入端(A)和复位输入端(B)。当A为ON时,对当前值每隔0.1s进行加1运算;当A为OFF时,停止加1运算,保持当前值。当复位输入端为ON时,定时器的当前值为0。
表4-30 累计定时器指令格式
使用说明
①定时器输入端A为ON时,对N所指定编号的定时器的当前值每隔0.1s进行加1运算。当前值加到设定值时,将时间到时标志置于ON(时间到时),其定时时间范围为0~999.9s。
②定时器输入端A为OFF时,对N所指定编号的定时器的当前值停止加1运算,并保持当前值。
③当复位输入端B为ON时,定时器的当前值为0。
④时间到时后,保持定时器当前值以及时间到时标志的状态。若要重启定时,需要将定时器复位输入端从OFF变为ON,或者通过指令(如MOV)将定时器当前值设置为设定值以下的数值。
例4-18 使用累计定时器指令,实现信号灯点亮时间控制。要求:当HL0信号灯的累计点亮时间超过5s时将其熄灭,HL1信号灯点亮,否则HL1信号灯熄灭。
分析:假设SB与0.00连接,HL0与100.00连接,HL1与100.01连接。当SB处于闭合状态时100.00线圈为1,100.00常开触点闭合,使累计定时器T0000累计定时;松开SB,则100.00线圈为0,100.00常开触点断开,累计定时器T0000暂停累计,并保持当前值。其程序与时序如表4-31所示。
表4-31 信号灯点亮时间控制的程序与时序
长时间定时器每隔0.1s将当前值减1,若当前值为0时,则将定时器状态位通道号置ON,否则该位为OFF,其指令格式如表4-32所示。
使用说明
①定时器输入为OFF时,对定时器进行复位,将SV+1、SV两通道构成的32位定时器设定值送入PV+1、PV通道中作为当前值,时间到时标志N置为OFF。
②定时器输入由OFF变为ON时,启动定时器,定时器开始对SV+1、SV构成的当前值每隔0.1s减1计时,当前值减为0时,将时间到时标志置于ON(时间到时)。
③时间到时后,保持定时器当前值以及时间到时标志的状态。若要重启定时,需要将定时器输入从OFF变为ON,或者通过指令(如MOV)将定时器当前值SV+1、SV变更为除0以外的正整数。
表4-32 长时间定时器指令格式
例4-19 长时间定时器指令的使用如表4-33所示。条0中的0.00常开触点闭合,长时间定时器TIML指令输入为ON,TIML指令执行,将D201、D200中的设定值100000送入当前值存储通道D101、D100中,然后每隔0.1s减1计时。当当前值减为0时,定时器状态位通道W0的00位变为1,即W0.00位变为1,从而使条1中的100.00线圈得电。当TIML指令输入由ON变为OFF时,当前值通道自动重装通道的设定值,同时定时器状态位由1变为0。
表4-33 长时间定时器指令的使用
多输出定时器是一种可以得到8点任意时间到时标志值的累计式定时器,其指令格式如表4-34所示。
使用说明
①MTIM指令采用SV~SV+7共8个通道设置8个定时值,当计时到某个通道的设定值时,该通道对应的定时状态位变为1。
②该指令输入为ON且N通道第9位(累计停止控制位)为0、第8位(复位控制位)由1变为0时,定时器开始工作,PV通道中的当前值由0开始每隔0.1s加1累计。
③当前值增到SV通道设定值时,N通道中第0位(第0定时状态位)变为1且保持。当前值增到SV+ n 通道( n ≤7)设定值时,N通道中第 n 位(第 n 定时状态位)变为1且保持。
④当前值增到最大值9999时,自动返回到0,同时N通道中第0~7位均变为0。
例4-20 多输出定时器指令的使用如表4-35所示,其工作通道控制如图4-3(a)所示,时序如图4-3(b)所示。
当0.00常开触点闭合时,多输出定时器MTIM指令输入端为ON,如果200通道(N)第9位为0、第8位为1时,D100通道(PV)中的当前值被复位,当第8位由1变0时,定时器开始工作,D100通道(PV)中的当前值由0开始每隔0.1s逐增1。
当D100通道(PV)中的当前值增到D200通道(SV)中的设定值80时,200通道(N)中的第1位200.01(第0定时状态位)变为1,并且保持。
表4-34 多输出定时器指令格式
当D100通道(PV)中的当前值增到D201通道(SV+1)中的设定值90时,200通道(N)中的第0位200.00(第1定时状态位)变为1,并且保持。若这时200通道中第9位(累计停止输入)由0变为1,定时器停止计时,当前值保持不变,直到200通道中第9位由1变为0时,定时器在当前值基础上继续逐增1计时。当当前值增到最大值9999时,自动返回到0,同时200通道(N)中第0~7位均变为0。
如果定时器当前值没有增到SV+7通道的设定值时,200.08位(定时器复位)由0变为1,定时器被提前复位,当前值和各定时状态位均被复位。
在200.00位为1时,200.00常开触点闭合,100.01线圈得电;在200.01位为1时,200.01常开触点闭合,100.01线圈得电。
表4-35 多输出定时器指令的使用
图4-3 多输出定时器指令的使用