1.3.3 定时器T和计数器C
在编程软元件中,定时器和计数器是身兼位元件和字元件双重身份的软元件,其常开、常闭触点是位元件,定时时间设定值和计数预置设定值是字元件,当前值也是字元件。
1.定时器T
1)编址与分类
三菱FX3系列定时器编址见表1-12。
三菱FX系列PLC的内部定时器分为通用型定时器和累计型定时器。
(1)通用型定时器
通用型定时器又叫非积算型定时器或常规定时器。根据计数时钟脉冲不同又分为100ms定时器、10ms定时器和1ms定时器。其区分由定时器编址来决定,如表1-12所示。100ms、10ms和1ms均为定时器计数时钟脉冲周期,也叫时基。
表1-12 定时器编址
注:①FX3S,FX3G,FX3GC的累计型定时器是通过EEPROM存储器进行停电保持的。
②不适用于FX3S-30M□/E□-2AD。
③仅FX3G支持。
④FX3U,FX3UC累计型定时器是通过电池进行停电保持的。
⑤FX3S的T32-T62可以通过设置M8028=ON更改为10ms定时器。
通用型定时器的启动和复位都是由驱动信号决定的,当驱动信号接通时,定时器被启动;当驱动信号断开时,定时器也立即复位。在定时器被启动后,如果计时时间未达到设定值时,定时器被复位,则该次计时无效,定时器当前值清零。当计时时间到达设定值后,当前值不再变化,相应定时器触点发生动作。其梯形图程序和时序图如图1-21所示。
图1-21 通用型定时器梯形图及时序图
(2)累计型定时器
累计型定时器又叫累加型定时器、积算型定时器、断电保持型定时器,它和通用型定时器的区别在于累计型定时器在定时的过程中,如果驱动条件不成立或停电引起计时停止时,累计型定时器能保持计时当前值,等到驱动条件成立或复电后,计时会在原计时基础上继续进行,当累加时间到达设定值时,定时器触点动作。
累计型定时器根据计数时钟脉冲不同又分为100ms定时器和1ms定时器。其区分由定时器编址来决定,如表1-12所示。
累计型定时器不因驱动信号断开或停电而复位,因此三菱FX系列PLC规定了累计型定时器复位只能用RST指令进行强制复位。图1-22为累计型定时器梯形图及时序图。
图1-22 累计型定时器梯形图及时序图
2)定时器性质
(1)定时器是PLC中的一个较为特殊的软元件。它的当前值和设定值是数据寄存器结构,因此,它是一个字元件,而它的线圈和输出触点却是一个位元件。触点可以作为驱动条件控制电路的通断,线圈是定时器的输出表示。
(2)定时器是通过对时钟脉冲计数来进行时间设定的,因此,定时器的定时时间是由时钟脉冲的周期T和时钟脉冲个数(由设定值K决定)的乘积来决定的,即:
定时时间=T×K
定时器的定时精度与时间脉冲的周期T有关,周期T越小,定时的精度越高。
(3)定时器输出触点是内部元件映像寄存器状态,和普通的位元件一样,可以对其常开、常闭触点无限次取用。
(4)定时器只有通电延时触点,没有瞬时和断电延时触点。
(5)在PLC控制中,定时器是按照位元件线圈来处理的,它需要驱动,驱动后到达设定时间后,如不进行复位,则不能被反复使用。
(6)在程序中,定时器的线圈和输出触点的动作是按照扫描方式顺序动作的(串行方式),而时间继电器的线圈和触点是同时动作的(并行方式)。
3)定时器使用
在三菱FX系列PLC中,定时器的符号表示如图1-23所示。图中,T为定时器符号,10为编址;K20为定时器的设定值,注意,不是定时时间设定。
图1-23 定时器符号图示
定时器的编号是按照十进制来编址的,编址同时也表示了定时器的时钟脉冲周期T,即计时时间单位。例如,T0~T199为100ms定时器,编址在这个范围里的定时器其计时单位均为100ms。
每个定时器有一个设定定时时间的寄存器(16位),一个对时钟脉冲进行计数的当前值寄存器(16位)和一个用来存储其输出触点的映像寄存器(1位)。这三个量使用同一地址编号的定时器符号。而在PLC的梯形图程序中,它们出现在不同的位置则表示不同的含义。以T10为例,当T10为(T10 K20)时,是作为定时器线圈处理的,如图1-24(a)所示,而定时器的启动和复位均是对该线圈而言。当T10作为一个操作数出现在功能指令中时,T10是作为定时器的当前值处理的,这时T10的值是变化的,定时器启动后,当前值便在不断变化,最大为其设定值,如图1-24(b)所示。当T10为常开、常闭触点的符号时,触点按照定时器的输出触点处理,当定时器计时时间到达设定时间后,触点发生动作,并随其线圈复位而复位,如图1-24(c)所示。
图1-24 定时器符号在梯形图中的含义
对定时器,重点关心的是它的启动、触点动作和复位方式,我们把称之为定时器的三要素。启动是指定时器线圈开始工作的时刻,触点动作时间则是指定时器触点动作的时序,复位则是指定时器使当前值为0和触点恢复原态的动作。掌握定时器三要素对分析时序控制是很有帮助的。
4)定时器控制功能
定时器在程序中主要使用两种控制功能。一是定时控制功能,定时器从定时开始计时,到其设定值时,相应的定时器触点动作;二是定时器当前值比较控制功能,定时器在计时过程中,其当前值是在不断变化的,结合触点比较指令,把当前值当作其中一个比较字元件,当时间到达比较值时,触点动作。这种功能在某些控制中可以用一个定时器代替多个定时器工作。
2.计数器C
1)编址与分类
计数器C和继电控制系统中的计数器类似,它也是位元件和字元件的组合,其触点为位元件,其预置计数值和当前值为字元件。
三菱FX系列PLC内部计数器分为内部信号计数器和高速计数器两大类,内部信号计数器是在执行扫描操作时对内部编程元件X,Y,M,S,T,C的信号进行计数,其接通和断开的时间应长过PLC的扫描周期。内部信号计数器又分为16位增计数器和32位增/减计数器两种。高速计数器专门对外部输入的高速脉冲信号(从X0~X5输入)进行计数,高速计数器是以中断方式工作的,脉冲信号的周期可以小于扫描周期。这里不对高速计数器作详尽讲解,读者如需了解请参看本书相关章节。
三菱FX3系列内部信号计数器编址如表1-13所示。
表1-13 内部信号计数器编址
注:①非停电保持的区域,根据设定的参数,可以更改为停电保持区域。
②停电保持区域,根据设定的参数,可以更改为非停电保持区域。
(1)16位增计数器(加计数器)C0~C199。
16位增计数器又叫16位加计数器。它又分为一般型(通用型)和断电保持型两种。
图1-25为16位增计数器的程序及触点动作时序图。在梯形图中,X011为计数脉冲输入,其每通断一次为一个脉冲输入,当输入脉冲的个数使计数器当前值变化至等于预置计数值时,其触点C0就动作,常开为闭合,驱动Y0输出,此后,X011仍然有计数脉冲输入,计数器的当前值不再变化。X010为计数器的复位信号,当X010闭合时,计数器的当前值复归为0,其相应触点也复归原态。
在计数器工作过程中,通用型计数器会因断电而自动复位,断电前所记数值会全部丢失。
断电保持型计数器和断电保持型定时器类似,它们能够在断电后保持已经记下来的数值,再次通电后,只要复位信号没有对计数器进行过复位,计数器就在原来的基础上继续计数。断电保持型计数器的其他特性和通用型计数器相同。
由PLC扫描工作原理可知,PLC是批量进行输入状态刷新的,一个扫描周期仅刷新一次,刷新后的输入状态被置于映像存储区,供程序执行时取用。
图1-25 16位增计数器的程序及触点动作时序图
计数器输入脉冲信号的频率不能过高,如果在一个扫描周期内,输入的脉冲信号多过1个,其余的脉冲信号就不会被计数器计数,这样会产生计数不准确的问题。因此,对计数器输入脉冲的频率是有一定要求的。一般要求脉冲信号的周期要大于两倍的扫描周期,这就能满足大部分实际工程的需要。
(2)32位增/减计数器(双向计数器)C200~C234。
32位增/减计数器又叫双向计数器。所谓双向计数器就是它可以由0开始增1环形计数到预置值,也可以由0开始减1环形计数到预置值。32位增/减计数器也分为一般型和断电保持型两种。
32位计数器的预置值可由常数K表示,也可以通过数据寄存器D来间接表示。如果用寄存器表示,其预置值为两个元件号相连的寄存器内容。例如,C200 D0预置值存放在D1、D0两个寄存器中,且D1为高位,D0为低位。
那么双向计数器的方向是如何确定的呢?双向计数器的计数脉冲只能有一个,其计数方向是由特殊辅助继电器M82××来定义的。M82××中的××与计数器C2××相对应,如C200由M8200定义,C210由M8210定义等。双向定义规定M82××为ON,则C2××为减计数;M82××为OFF,则C2××为增计数,如表1-14所示。由于M82××的初始状态是断开的,因此默认的C2××都是增计数。只有当M82××闭合时,C2××才变为减计数。
表1-14 32位增/减计数器计数方向确定
双向计数器与增计数器在性能上有很大的差别,主要表现在计数方式和触点动作上。
(1)计数方式不同。
增计数器当脉冲输入计数值达到预置值后,即使继续有计数脉冲输入,计数器的当前值仍然为预置值。而双向计数器是一个环形计数器,其当前值变化可用图1-26来说明。
双向计数器在计数方向确定后,其当前值会随脉冲不断地输入而发生变化。当当前值等于预置值后,如果继续有脉冲变化,其当前值仍然发生变化。在增计数方向下,会一直增加到最大值2147483647。这时,如果再增加一次脉冲,当前值马上就会变为-2147483648。如果继续有脉冲输入,当前值则会由-2147483648变化至-1,0,1,又继续变化至2147483647,如此循环不断,如图1-26(a)所示。而在减计数方向下,当前值会沿如图1-26(b)所示方向进行循环变化。
如果在变化的过程中,计数方向发生变化,则当前值马上按新的方向变化。
图1-26 双向计数器循环计数示意图
(2)触点动作不同。
增量计数器的当前值增加到预置值后,其触点动作,动作后直到对计数器断电或复位,其触点才恢复常态,这是典型的计数功能。其预置值就是要求计数的脉冲个数(在实际控制中,代表被计数物体的数量)。
而双向计数器则不同,它是一个环形计数器,其预置值可以为正值,也可以为负值。因此,这个预置值仅是当前值在输入脉冲发生变化时的比较值,而计数器触点的动作与这个比较结果有关。在双向计数过程中,只要当前值等于预置值时,其触点就动作一次。
当预置值为正值时,当前值会在增计数方式和减计数方式下分别等于预置值,在这两种情况下,计数器的触点都会动作,如图1-27所示。图中,双向计数器C200的预置值为K3,由时序图可以看出,开始计数后,当当前值等于预置值时,C200常开触点动合,当计数到K5时,改变计数方向,当前值由K5以减计数方式变化,变化至K3时,其C200常开触点动断,恢复原态。注意,这个C200常开触点复位并不是RST指令所致,而是在计数过程中发生的,应用时要特别注意。
图1-27 双向计数器程序和触点动作时序图(预置值为正值)
同样,当预置值为负值时,当前值也会在减计数方式和增计数方式下两次等于预置值,这两种情况,计数器的触点都会动作,如图1-28所示。图中,当计数器C200在减计数方式下等于K-5时,其触点动作,恢复原态(OFF),见图中c点。而C200在增计数方式下等于K-5时,触点动合(ON),见图中b点。图中a点是减计数方式等于K-5时,因为C200触点此时就处于原态(OFF)中,所以Y1仍然维持原态。
由上面两个例子可以得出以下结论:双向计数器的当前值在增计数到达其预置值时,其常开触点动作为ON;当前值在减计数到达其预置值时,其常开触点动作为OFF。
不论是在增计数方式还是在减计数方式,如果给双向计数器发出RST信号,计数器的当前值马上复归为0,其触点也恢复原态。
图1-28 双向计数器程序和触点动作时序图(预置值为负值)
2)计数器性质
(1)内部计数器是PLC中的一个较为特殊的软元件,它的当前值和预置计数值是数据寄存器结构,因此,它是一个字元件。而它的输出触点却是一个位元件,可以作为驱动条件控制电路的通断。
(2)内部计数器输出触点是内部元件映像寄存器状态,和普通的位元件一样,可以对其常开、常闭触点无限次取用。
(3)在PLC控制中,内部计数器是按照位元件线圈来处理的,它需要驱动,驱动后当前值到达预置计数值后,其输出触点动作。计数器的复位必须用RST指令完成。
(4)在程序中,内部计数器的线圈和输出触点的动作是按照扫描方式顺序动作的(串行方式)。
3)计数器使用
在三菱FX系列PLC中,内部计数器的符号表示如图1-29所示。图中,C为内部计数器符号,10为编址,而C10则表示某个内部计数器的编号,K20为内部计数器的预置计数值。
图1-29 内部计数器符号图示
内部计数器的编号是按照十进制来编址的,编址同时也表示了内部计数器的分类,不同编号的计数器其应用会有很大的差别。
每个内部计数器有一个设定预置计数值的寄存器(16位或32位),一个对计数脉冲进行计数的当前值寄存器(16位或32位)和一个用来存储其输出触点的映像寄存器(1位)。这三个量使用同一地址编号的计数器符号。而在PLC的程序中,它们出现在不同的位置则表示不同的含义。以C10为例,当C10为(C10 K20)时,是作为计数器线圈处理的,如图1-30(a),计数器的启动和复位均对该线圈而言。当C10作为一个操作数出现在功能指令中时,C10是作为计数器的当前值处理的,这时C10的值是变化的,计数器启动后,当前值便在不断变化,如图1-30(b)。当C10为常开、常闭触点的符号时,触点按照计数器的输出触点处理,当计数器当前值达到设定预置计数值后,输出触点动作,如图1-30(c)。
图1-30 定时器符号处理梯形图表示
4)计数器预置计数值、触点动作时序和复位
和定时器不一样,计数器重点关心的是它的预置计数值、触点动作时序和复位,我们把它们称作计数器的三要素。启动是指计数器线圈在接收到第一个脉冲上升沿开始计数的时刻,亦即计数开始,此后,随着计数脉冲的不断输入,计数器当前值也跟着变化,当其当前值变化到等于预置计数值时,计数器的触点动作。具体动作过程与计数器类别有关,如果在当前值等于预置计数值后,仍然有计数脉冲输入,则当前值会继续变化,直至变化至最大值或进行环形计数。计数器的复位是指在脉冲输入过程中,用RST指令进行复位,这时,计数器的当前值会复归为0,其触点也恢复原态。计数器在应用时,要求在计数前都要先清零,因为如不清零,其残留计数值不会自动去除,会影响到下面的计数。
5)内部计数器应用
在计数器计数过程中,如果通过指令改变了计数器的当前值,则会对计数过程产生一定的影响。
如图1-31所示,当X002启动计数器C1后,如果在计数的过程中,利用X0改变了其当前值,若当前值小于其预置值,则当前值马上变为更改后的当前值,并继续计数下去,直到等于预置值并且触点动作为止。若当前值等于或大于预置值,则当前值马上变化为预置值,且触点也马上动作。
图1-31 计数当前值变化影响梯形图程序
上面讨论的是增量计数器情况,对于双向计数器来说,在增计数方式下,即使当前值改变大于预置值,则当前值会在更改后的当前值基础上继续计数下去,但其触点不会动作,触点动作的时间仍按其原有的规定执行。
3.定时器和计数器的设定
定时器的定时时间设定存在很多设定方法,有直接设定、间接设定、外部设备设定等。现以定时器为例进行说明,下面的方法也都适用于计数器的预置数设定。
1)定时时间的直接设定
定时器定时时间的直接设定就是指其定时时间软元件直接用十进制常数指定(不可以用十六进制数指定,也不可以用小数指定)。梯形图程序如图1-32所示。
图1-29 定时时间的直接设定
直接指定的优点是简洁明白,一看就知道定时时间是多少。缺点是如果定时时间是不确定的,需要改变定时值则必须修改程序才能完成。这对于某些对定时值需要根据控制条件而变化的动态控制程序来说,就不能满足其随时修改的要求。这时,就要用到定时值的间接设定。
2)定时时间的间接设定
定时器的定时时间间接设定是指把定时时间元件指定为一个数据存储单元(D或R数据寄存器),而该数据存储单元所存储的二进制数据值便为定时器的定时设定值。那么只要变化数据存储单元的存储内容,就改变了定时器的定时设定值。梯形图程序如图1-33所示。
图1-33 定时时间的间接设定
【例6】试说明定时器T0 D0的定时时间设定值。(D0)=K200。
解:T0为100ms时钟脉冲定时器,则定时值=100ms×200=20000ms=20s。
间接指定只能是D或R寄存器,不能为S、V、Z或ER寄存器,也不可以为组合位元件。寄存器的数据是按BIN数来处理的,如果是负数,则定时器设定值自动为0;如为32位寄存器数,则定时器设定值按指定数据低16位处理。
【例7】试说明下面梯形图中定时器T的定时时间设定值。
解:(1)如图1-34梯形图中T2的定时时间设定值,(D0)=H0FF03,按照BIN数约定,这是一个负数,所以T2的定时值为0。
图1-34 例7(1)梯形图
(2)如图1-35梯形图中,(D1,D0)是按照双字输入的,但对T0来说,它只认D1的值,(D1)=H0032=K50,而T10只认D0的值,(D0)=H000A=K10,所以T0的定时设定值为5秒,而T10为1秒。
图1-35 例7(2)梯形图
间接指定也可以用变址方式指定,如图1-36所示。这时,定时时间设定值由变址后的寄存器数据内容所确定。
【例8】试说明图1-36中各个定时器的定时时间设定值。
图1-36 定时时间变址方式指定
解:(1)假设(V0)=K-10。这是一个立即数变址,其变址后的数值为K100+(V0)=K100-K10=K90,T10的定时设定值为9秒。
(2)假设(Z0)=K20,(D0)=K100,(D20)=K50。这是一个典型的变址寻址,变址后的寄存器地址是0+K20=K20,即D20。D20的内存值为K50,所以T20的定时设定值为5秒。
2)定时时间的外部设定
定时时间的间接设定,可以在程序中改变寄存器的值来完成。更多情况下是通过PLC的外部设备进行人机对话来修正间接设定寄存器的值。
(1)外接开关
当触摸屏没有普及时,早期的PLC是通过外部开关的组态来间接指定定时器的定时时间值。现在当控制设备比较简单,设定时间精度要求不高时,T13会采用这种方法。
● 外接按钮输入
在PLC的三个输入端口X000、X001、X002分别接上三个按钮,设计如图1-37的梯形图程序,可通过按钮来间接设定定时器的定时时间值。
图1-37 按钮输入梯形图程序
按钮X002为定时时间间接设定寄存器D0的清零按钮,每次设定时,都必须先按清零按钮,以保证定时时间设定从0开始。按钮X000为加按钮,每按一次,定时时间增加0.1秒。按钮X001为减按钮,每按一次定时时间减少0.1秒。这样,通过这两个按钮的动作次数可以基本上估计定时时间的多少。程序中,ADD为加法指令,SUB为减法指令。如果要按一次增加1秒或减少1秒,把这两个指令中的K1改成K10即可。以上说明是针对100ms定时器T0~T199而言。
这种通过按钮输入来改变定时时间的方式非常简单实用,定时时间可以随机设定;缺点是改变一个定时器的定时时间需要三个输入端口。在一些简易的设备上经常采用这种方法。
利用功能指令TTMR,可以使用一个按钮很方便地对多个定时器的定时时间进行修改。详细讲述请参看示教定时器指令TTMR的内容。
● 外接开关输入
在PLC的输入端口X0、X1接上两个开关,这时,X0、X1可以形成四种不同的组态,如图1-38所示。这四种组态可以对应四个定时时间设定值。这样,操作人员只要控制开关的组态,就间接指定了定时时间设定值。
图1-38 外接开关接线图
这种方式简单可靠,成本低廉,在一些简易的PLC控制设备上常被采用,其缺点是:如果时间设定较多,则需增加输入端口,而且时间设定也是固定的,不能任意设定。
● 外接拨码开关输入
拨码开关是一组独立的开关,如图1-39(a)所示,把它们与输入端口顺序连接,如图1-39(b)所示,可以组成一组N位二进制数(N为开关的个数),PLC利用MOV指令将该N位二进制数通过组合位元件方式读入到内存中,二进制数的值由开关的通断状态组合确定。这是PLC早期人机对话的方式。
图1-39 拨码开关输入
这种方式与外接开关输入方式相比优点是程序设计简单,可以进行动态设定;缺点是占用较多的输入端口,人机对话功能极差,不经过计算根本看不出输入端口的开关组态代表什么数值。
上述两种利用开关的组态改变定时器的时间设定值的方法,几乎适用于所有品牌的PLC。在早期PLC的简单控制设备中,得到了比较广泛的应用。
● 外接数字开关
数字开关是一个4位拨码开关组合,占用4个输入端口。图1-40(a)为数字开关外形图,图1-40(b)为一个二位数字开关接线图,拨动开关会显示一个十进制数(0~9),通过功能指令BIN把数字开关这个十进制数用8421BCD编码的状态组合送入PLC。
图1-40 数字开关输入
这种方式最大的特点是人机对话非常清晰,数字开关所显示的是人们非常熟悉的十进制数。
● 外接按键输入
外接按键输入是指在PLC的输入端口接入11个按键开关(带复位)和1个开关,它们组成了一个小型的键盘,定时器定时时间的设定和修改操作均通过这个小型的键盘进行,如图1-41所示。
图1-41 外接按键输入
这种输入方式是通过三菱FX系列PLC的功能指令TKY来实现的。TKY为10键输入指令,注意,这个指令仅三菱FX2N PLC及FX3系列PLC才有,FX1S/FX1N/FX1NC系列PLC都没有这个功能指令。
(2)外接模拟电位器
三菱电机为模仿数字式时间继电器的定时时间调节开发了FX2N-8AV-BD模拟电位器功能扩展板,如图1-42(a)所示,使用时直接安装在PLC的基本单元的数据线接口上。板上有8个小型电位器VR0~R7,位置编号如图1-42(b)所示,转动电位器旋钮,就好像调节数字式时间继电器的电位器一样,可以控制PLC的内部定时器的定时时间。
图1-42 外接模拟电位器
模拟电位器VR0~VR7的数值由PLC通过指令VRRD和VRSC读取到数据寄存器D中。外置模拟电位器仅适用于FX1S/FX1N/FX2N系列PLC,不适用于FX3系列PLC。
(3)外接文本显示器和触摸屏
文本显示器和触摸屏是目前最常用的设定定时器定时时间的方式。
文本显示器,又名终端显示器、显示模块,是一种单纯以文字呈现的人机互动系统。触摸屏又称人机界面(HMI),是进行人机对话的极其重要的元件,是工业控制系统极其重要的组成部分,工控人员可以通过触摸屏和PLC之间进行各种信息的传递和交换。