山西西门子S7-1200PLC模块代理经销商
西门子S7-1200 PLC定时器功能及运行原理分析
研究定时器指令的实现,应首先从定时器的功能、定时器位和定时器值的刷新人手,分析其相关因素,从而得出其实现方法。
西门子的S7-200 PLC定时器按功能分为三种:通电延时定时器、断电延时定时器和保持型通电延时定时器。如图1-71所示,通电延时定时器(TON)的输入端(IN)的输入电路接通时开始定时。当前值大于等于PT端指定的预设值时,定时器位变为“ON”,梯形图中对应定时器的常开触点闭合,常闭触点打开。断电延时则与通电延时功能相反。保持通电延时定时器有记忆功能,输入电路断开时,停止定时器计时,但当前值保持不变,输入电路再次接通,继续计时,以通电延时定时器区分定时器的实现方法。
图1-71 定时器梯形图与指令表语言
S7-200的定时器按分辨率可分为1ms定时、10ms定时器以及100ms定时器。而系统实现时不可能为每个定时器都启动一个单片机的定时器来实现它(单片机定时器非常有限)。所以首先从S7-200系统的定时器当前值刷新方法人手来研究如何使用单片机定时器来提供PLC多个定时器的功能,1ms定时器记录自1ms定时器启用以来1ms定时器间隔的数目。执行定时器指令开始计时,但是,1ms定时器每1ms更新一次(定时器位和定时器当前值),不与扫描周期同步。换言之,在超过1ms的扫描过程中,定时器位和定时器当前值将多次更新(这里的定时器位指的是定时器对应的线圈状态,下同)。对于定时器指令TON、TOF,主要负责打开和重设定时器;TONR则用于关闭定时器。10ms定时器记录自10ms定时器启用以来10ms定时器间隔的数目。执行定时器指令即启动定时器,但是在每次扫描循环的开始更新10ms定时器,其方法是以当前值加上积累的10ms间隔的数目(自前一次扫描开始算起,换言之,在整个扫描过程中,定时器当前值及定时器位保持不变)。
100ms定时器记录自100ms定时器上一次更新以来100ms定时器间隔的数目。这种定时器的更新方法是在执行定时器指令时以当前值加上积累的100ms间隔的数目(自前一次扫描开始算起)。只有在执行定时器指令时才对100ms定时器的当前值进行更新。
从上述分析可以看出,要实现PLC的定时器功能,首先需要一个时钟,其次要对1ms定时器、10ms定时器以及100ms定时器使用不同的处理方法,定时器指令虽然相同,但是指令内部对于三种定时器的处理方法显然不同.按照上述三种定时器值的刷新原理,可以总结为:对于1ms定时器,定时器位和当前值的更新不与扫描周期同步,在一个扫描周期内定时器位和当前值刷新多次;对于10ms定时器,定时器位和当前值的更新与扫描周期同步,定时器位和当前值在每个程序扫描周期的开始刷新(在一个扫描周期过程中为常数,在每个扫描周期的开始会将一个扫描周期内累计的时间间隔加到定时器当前值上);对于100ms定时器,不与扫描周期同步,定时器位和当前值在定时器指令执行时刷新。
输出指令(OUT)与梯形图中的线圈相对应,驱动线圈的触点电路接通时,线圈流过“能流”,指定位对应的映像寄存器为1,反之则为0。输出指令应放在梯形图的Z右边,变量是BIT类型。输出指令的功能是将栈顶值复制到对应的映像寄存器,在扫描周期结束时,才读取输出口映像区内容,改变物理输出端口的状态。
立即输出指令OUTI将栈顶值立即写入指定的物理输出位和对应的输出映像寄存器。梯形图中用线圈符号中的I用来表示立即输出。当立即输出指令执行时,物理输出点立即被置为“能流”值。在C51实现中,立即输出指令的实现是将栈顶的值立即复制到物理输出端口地址内,同时新值会同时被写到物理输出端口的映像区内,这一点与立即触点指令不同,立即触点指令在本扫描周期内不改变映像区内容。
取反指令NOT将它左边电路的逻辑运算结果取反,运算结果若为1则变为0,为0则变为1,该指令没有操作数。“能流”到达该触点时即停止;若“能流”未到达该触点,该触点给右侧供给“能流”。NOT指令将堆栈顶部的值从0改为1,或从1改为0。
三种指令和梯形图的对应关系见表1-4。
表1-4 三种输出指令
立即(immediate)触点指令只能用于输入(I),执行立即触点指令时,立即读人物理输入点的值,根据该值决定触点的接通、断开状态,但是并不立即更新该物理输入点对应的映像寄存器,也就是说,立即触点并不依赖于系统的扫描周期刷新,它会立即刷新。具体在C51实现中,立即触点指令就是要立刻读人物理输入端口的状态值,在本次的扫描周期中不更新I/O映像中的值,而是在下一个扫描周期开始时再读人物理端口的值,更新I/O映像区。在指令表语言中,分别用LDI、AI和OI来表示开始、串联和并联的常开立即触点,用LDNI、ANI和ONI来表示开始、串联和并联的常闭立即触点,和梯形图的对应关系见表1-3。触点符号中间的I和/I表示立即常开和立即常闭,逻辑关系的实现和标准触点指令完全相同。
触点的串、并联指令只能将单个触点与别的触点电路串、并联,要想实现如图1-67所示的梯形图功能,需要将图1-67中由I3.2和T16的触点组成的串联电路与它上面的电路并联,再和后面的电路块串联,然后完成输出。在图1-68中,需要读取中间结果并且产生多个输出时,需要用到逻辑堆栈指令。
西门子PLC S7-200与堆栈有关的指令有六个,它们的实现原理及解释如下。
a.ALD。栈装载与指令,它将堆栈中的层和第二层进行逻辑与操作,结果放入栈顶。执行完栈装载与指令后,堆栈深度减1,如图1-68所示。
b.OLD。栈装载或指令,实现的功能是将堆栈中的层和第二层的值进行逻辑或操作,结果放入栈顶,原理如图1-68所示。执行完栈装载或指令后,堆栈深度减1,如图1-68所示。这样可以看出,将电路块串、并联时,每增加一个用LD或LDN指令开始的电路块的运算结果,堆栈中增加一个数据,堆栈深度加1,
每执行一条ALD或OLD指令,堆栈深度减1。
c.LPS指令。逻辑推入栈指令,复制栈顶内容,并将其压入堆栈的下一层,栈中原来的数据依次向下层推移,栈底值被推出而丢失,如图1-69所示。
d.LRD。逻辑读栈指令,将堆栈中第二层的数据复制到栈顶,第二层的数据不变,但原栈顶值被新的复制值覆盖而丢失,如图1-69所示。
e.LPP。逻辑出栈指令,指令使栈中各层的数据向上移动一层,第二层的数据成为栈顶,原来的栈顶值从栈内消失,见图1-70。
f.LDSn(n=1~9)。装载堆栈指令,复制堆栈内层的值到栈顶,栈中原来的数据依次向下一层推移,栈底值被推出而丢失,见图1-69。
图1-70说明了堆栈指令LPS、LRD、LPP在指令表语言中的作用和使用方法。
山西西门子S7-1200PLC模块代理经销商