定时器指令是在PLC程序设计中非常常见的一种指令,S7-1200系列PLC的定时器的指令格式及使用方式都不同于S7-200系列PLC。
S7-1200系列PLC的采用的是IEC标准的定时器指令,用户程序中可以使用的定时器数仅受CPU存储器容量限制,每个定时器均使用16个字节的 IEC_TIMER 数据类型的DB结构来存储功能框或线圈指令顶部指定的定时器数据,如下图所示。
1、脉冲型定时器(TP)
脉冲型定时器的指令标识为TP,该指令用于可生存具有预设宽度时间的脉冲,定时器指令的IN管脚用于启用定时器,PT管脚表示定时器的设定值,Q表示定时器的输出状态,ET表示定时器的当前值,如下图所示为脉冲型定时器指令的指令格式及定时器指令执行时的时序图。
使用TP指令,可以将输出 Q 置位为预设的一段时间,当定时器的使能端的状态从OFF变为ON时,可启动该定时器指令,定时器开始计时。 无论后续使能端的状态如何变化,都将输出 Q 置位由 PT 指定的一段时间。 若定时器正在计时,即使检测到使能端的的信号在此从OFF变为ON的状态,输出Q的信号状态也不会受到影响。
脉冲型定时器的时序图分析出如下程序执行过程。
当I0.5接通为ON时,Q0.4的状态为ON,5S后,Q0.4的状态变为OFF,在这5S时间内,不管I0.5的状态如何变化,Q0.4的状态始终保持为ON。
2、接通延时定时器(TON)
接通延时定时器的指令标识符为TON,接通延时定时器输出端Q在预设的延时时间过后,输出状态为ON,指令中管脚定义与TP定时器指令管脚定义一致。如下程序所示,描述的接通延时定时器的指令格式及执行时序图。
当定时器的使能端为1时启动该指令。 定时器指令启动后开始计时。在定时器的当前值ET与设定值PT相等于时,输出端Q输出为ON。 只要使能端的状态仍为ON,输出端Q就保持输出为ON。 若使能端的信号状态变为OFF,则将复位输出端Q为OFF。 在使能端再次变为ON时,该定时器功能将再次启动。
根据接通延时定时器的执行时序图分析如下图所示程序的意思及执行过程。
该段程序主要完成的是启动输出后,延时一段时间后自动断开的程序:当I0.5接通为ON时,执行复位优先指令中的置位功能,使得Q0.4输出为ON,当Q0.4输出为ON时,启动接通延时定时器TON,使该定时器工作进行延时,延时10S后,定时器的输出端Q输出为ON状态,此时复位优先指令中的复位端信号为ON,所以执行复位功能,所以Q0.4输出为ON。
3、断开延时定时器(TOF)
断开延时定时器的指令标识符为TOF,断开延时定时器输出Q在预设的延时时间过后,重置为OFF。指令中管脚定义与TP/TON定时器指令管脚定义一致。如下程序所示,描述的断开延时定时器的指令格式及执行时序图
当定时器的使能端为ON时,将输出端Q置位为ON。 当使能端的状态变回OFF时,定时器开始计时。 只要ET的值小于PT的值时,则输出端Q就保持置位。当ET的值等于PT的时,则将复位输出端Q。 如果输使能端的信号状态在ET的值小于PT值时变为ON,则复位定时器。 输出 Q 的信号状态仍将为ON。
根据断开延时定时器的时序图分析如下图所示的程序所描述的意思。
根据对TOF定时器的执行过程的分析,可以看出该程序表示的是一个断开延时的过程,当I0.5为ON时,Q0.4输出为ON,当I0.5变为OFF时,Q0.4保持输出10S后自动断开为OFF。
4、保持性接通延时定时器(TONR)
保持性接通延时定时器的标识符为TONR,保持性接通延时定时器的功能与接通延时定时器的功能基本一致,区别在于保持型接通延时定时器,在定时器的输入端的状态变为OFF时,定时器的当前值不清零,而接通延时定时器,在定时器的输入端的状态变为OFF时,定时器的当前值会自动清零,如下图所示,描述的是保持性接通延时定时器的指令格式及指令执行时的时序图。
当定时去使能端为ON时,启动定时器。 只要定时器的使能端保持为ON,则记录运行时间。 如果使能端变为OFF,则指令暂停计时。 如果使能端变回为ON,则继续记录运行时间。 如果定时器的当前值ET等于设定值PT时,并且指令的使能端为ON,则定时器的输出端的状态为1.若定时器的复位端为ON时,则定时器的当前值清零,输出端的状态变为OFF。
根据保持性接通延时定时器的时序图分析如下图所示的程序所描述的意思。
当I0.5接通为ON时,定时器TONR开始执行延时功能,若在定时器的延时时间未到达10S时,I0.5变为OFF,则定时器的当前值保持不变,当I0.5再次变为ON时,定时器在原基础上行继续往上计时。当定时器的延时时间到达10S时,Q0.4输出为ON,在任何时候,只要I1.1的状态为ON,则该定时器的当前值都会被清零,输出Q0.4复位。
【应用】
S7-1200系列PLC的定时器采用的是IEC格式的定时器,每个定时器就是一个FB块,因此每个定时器在使用时都需要分配相应的背景DB块来存储定时器的相应的数据。如果在程序中使用的定时器比较多,每个定时器都需要分配一个背景DB,则将会生成大量的数据块“碎片”。
为了解决该问题,我们可以通过以下两种方式来实现:
1、在全局DB块中建立IEC_TIMER数据类型的变量,然后通过这个变量来代替定时器中的背景DB。
当在程序的OB块中或是FC块中需要使用到定时器时,可以先在全局DB块中建立相应的IEC_TIMER始数据类型的变量,当在调用定时器指令时,提示分配DB块时,可以点击取消,然后在定时器的输入背景数据块处,选择输入在全局DB块中建立的IEC_TIMER的数据类型的变量。如下图所示,在数据块中分别建立了“启动延时”和“断开延时”两个变量,变量的类型都为IEC_TIMER的变量。
变量建立完成后,在编写程序时调用的定时器时分配背景块就可以分配相应的变量过去即可,如下所示:
2、在FB块接口区中的静态变量中建立数据类型为IEC_TIMER的变量,然后分配给定时器。
在程序的设计过程中,定时器可能还会用于FB块中,因FB块在调用时需要给其分配背景DB,若在FB块中需要使用定时器,则可以在FB块的接口区中静态变量中建立IEC_TIMER数据类型的变量,如下图所示,接口区的静态变量中建立了“启动延时定时器”和“断开延时定时器”两个数据类型为IEC_TIMER的变量
建立完FB块中的静态变量后,可编写PLC的程序,如下所示:
(1) FB块中的程序:
(2) 建立完FB块的程序后,需要在OB1中调用该FB块,调用是系统会自动提示为该FB块生成背景数据块。
https://www.siemensplc.com/rumen/12018.html