#PLC程序中定时器和计数器的配合应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PLC程序中定时器和计数器的配合应用实际应用中,定时器和计数器,常常有“强强联合”形式的搭配性应用。
一、定时器
1、定时器是位/字复合元件,可以有三个属性:
1)有线圈/触点元件,当满足线圈的驱动(时间)条件时,触点动作;
2)具有时间控制条件,当线圈被驱动时,触点并不是实时做出动作反应,而是当线圈被驱动时间达到预置时间后,触点才做出动作;
3)具有数值/数据处理功能,同时又是“字元件”。
2、可以用两种方法对定时时间进行设置:
1)直接用数字指定。
FX编程器用10进制数据指定,如K50,对于100ms 定时器来讲,延时5秒动作。
为5秒定时器。
对LS编程器,可用10制数或16进制数设定,如50(或h32),对于100ms定时器来讲,延时5秒动作;
2)以数据寄存器D设定定时时间,即定时器的动作时间为D内的寄存数值。
3、由定时器构成的时间控制程序电路:
LS编程器中的定时器有多种类型,但FX编程器中的定时器只有“得电延时输出”定时器一种,可以通过编写相应程序电路来实现“另一类型”的定时功能。
图1程序电路中,利用M0和T1配合,实现了单稳态输出——断开延时定时器功能,X1接通后,Y0输出;X1断开后,Y0延时10秒才断开;T2、T3、Y2电路则构成了双延时定时器,X4接通时,Y2延时2秒输出;X4断开时,Y2延时3秒断开;Y3延时输出的定时时间,是由T4定时器决定的,T4的定时时间是同D1数据寄存器间接指定的。
当X2接通时,T4定时值被设定为10秒;当X3接通时,T4定时值则被设定为20秒。
XO提供定时值的清零/复位操作。
单个定时器的定时值由最大设定值所限定(0.1∽3276.7s),换言之,其延时动作时间不能超过1小时。
如欲延长定时时间,可以如常规继电控制线路一样,将多只定时器“级联”,总定时值系多只定时器的定时值相加,以扩展定时时间。
更好的办法,是常将定时器与计数器配合应用,其定时时间,即变为定时器的定时器与计数器的计数值相乘,更大大拓展了定时范围,甚至可以以月或年为单位进行定时控制。
需要说明的是:各种品牌的PLC ,一般都有“时钟继电器”——属于特殊辅助继电器的类别,FX 系列编程器有M8011-M8014的10ms 、100ms 、1s 、1min 时钟继电器四种,相当于“方便定时器”了。
其线圈是被系统驱动的,我们只要根据控制要求,取其触点信号应用就是了。
可以方便编写年、月、日、时、分、秒的设备运行时间累计、指示灯烁报警信号输出等程序。
X1将10秒设定值传入D1T1
M0单稳态电器/断开延时定时器:M0T1
T1M0Y1X1从OFF-ON-OFF 时,
Y1从OFF-ON,延时10秒后Y1断开.
X2MOV K100 D1X3MOV K200 D1
T4X0RST D1
D1M10Y3
T4
将20秒设定值传入D1T4的设定值为D1间接指定T4设定值清零T4延时到,Y3输出
K100
X4T2K20Y2X4
T3K30
T2T3Y2Y2
定时值的更改:
双延时定时器:X4接通时,Y2延时2秒输出;X4断开时,Y2延时3秒断开;
图1 FX 编程器定时器应用电路
二、计数器
1、计数器是位/字复合元件,可以有三个属性:
1)有线圈/触点元件,当满足线圈的驱动(计数)条件时,触点动作; 2)具有数值控制条件,当线圈被驱动时,触点并不是实时做出动作反应,而是当计数输入的当前值与设定值相等时,触点才做出动作。
3)具有数值/数据处理功能,是“字元件”,也可作为数据寄存器使用。
2、可以用两种方法对计数值进行设置:
1)直接用数字指定。
FX 编程器用10进制数据指定,如K50,当计数输入到达50时,触点动作,是计数值为50的计数器。
对LS 编程器,可用10制数或
16进制数设定,如50(或h32),当计数输入到达50时,触点动作。
2)以数据寄存器D 设定计数值,又称为计数值间接指定。
3、计数器的应用程序电路(以FX 编程器的计数器为例)
计数器C1的设定值为间接指定。
当计数器中设定值大于32767时,须采用32位数据传送方式,占用D0、D1两个数据寄存器——D0一旦被占用,相邻其后D1即被“同时占用”,在其它程序电路中,不得再应用D0、D1!
T4与C4二者配合,构成了长延时时间电路,T4在延时时间到后,自行切断了输入回路,可以看出T4的触点接通时间只一个扫描周期。
T4每动作一次,即为C4输入一个计数信号。
延时时间为二者设定值之积,Y 在X3接通4000秒后,才产生接通输出动作。
M8002产生一个上电初始脉冲,在PLC 上电时,将C4的计数值清零。
X0
20秒定时
C0
用数值直接指定设定值
43210写入D0(D1)
Y3延时4000秒输出
T4设定值清零X4
上电时对C4复位
设定值间接指定
C1计数到,M100输出
定时器/计数器配合应用:
K100DMOV K43210 D0
Y2C1 D0X3T4
T4 K200M8002RST C4T4C4 K200
C4
Y3
C1
M100
图2 FX 计数器应用程序电路示例
三、定时器与计数器应用程序电路
1、定时器与计数器应用程序电路之一——供水压力自动控制程序
某生产单位的生产车间用水,用三台水泵上水,使水网管线压力维持在一定值内。
基本控制程序如下:1#水泵功率最大,为主泵,2#泵和3#泵为辅助泵。
三台泵根据压力接点表的输入信号,实行自动运行与投切。
压力偏低时,1#泵投入运行,
运行一段时间压力仍低,2#辅助泵投入运行;运行一段时间,压力仍低,启动3#泵运行。
当压力到达上限时,停止3#泵运行,压力还在上限,再切掉2#泵。
三台泵的切换方式为:最后启动运行的,先对其实施停机控制。
起动与停机的次序是相逆的。
在生产中经常用到相似的控制流程,如引风机和鼓风机的控制流程是:先开引风机,再开鼓风机;停机次序是,先停鼓风机,再停引风机。
起/停次序相逆。
如将1#泵改为变频器拖动,其转速根据压力仪表传输模拟信号自行调节,有了压力的细调这一环节,则该装置便成为简单的自动恒压供水装置。
C0M P0
P1
CO M P41KA 1压
力下限
压力上限
2#
泵起
/
停
P40P42
KA 2KA 3
220V
1#
泵
起
/
停
LS PLC
24+24G 3#
泵起
/
停
压力表接点
图3 供水压力自动控制接线图
据此控制要求,编写的控制程序电路如图4。
程序特点:利用(线圈)脉冲输出指令和定时器的巧妙配合,根据输入的压力上限和压力下限信号,完成对三台水泵的自动投切控制。
如果采用经验编程法,用压力下限信号控制三台泵的顺序起动。
过程如下:压力下限信号输入,延时与检测,启动1#泵;延时与检测,启动2#泵;延时与检测,启动3#泵,程序电路中则需要三只定时器。
本程序电路将三个延时检测环节“提纯”,泵与泵之间的起动间歇时间,都是由定时器T0来控制的。
另外,需要启动哪台泵,是根据P40、P41、P42触点相与的电路来判断的,因而这种电路又可以称为“水泵状态检测(采样)”,运用了电路的逻辑判断功能,保证了压
力下限信号输入时,依次启动1、2、3#泵的固定次序。
同样,在压力上限信号输入时,依3、2、1#的次序来停止水泵的运行。
下面看一下压力下限信号输入的启动次序(为便于分析,将程序电路左侧步号暂且作为程序行号):压力下限信号输入时,(第14行)P0触点闭合,经T0常闭触点,接通T0定时器回路。
T0经30秒延时,若在此时间内,压力下限信号消失,1#泵又处于等待启动状态,若经30秒延时后,压力下限信号仍旧输入,则T0动作;(第0行)此时M1回路具备接通条件,M2、M3不具备接通条件,M1得电输出;(第36行)P40得电并自保,1#泵起动运行。
P01#启动信号
压力下限T0
压力下限P0
延时启动T0TON T0 300
P42P41延时启动3#泵运转P40
2#泵运转1#泵运转M1
2#启动信号
P42
P41
3#泵运转P40
M2
2#泵运转1#泵运转M1
1#启动信号
M111#停机信号
P401#泵运转
P401#泵运转
3#启动信号
P42
P41
3#泵运转P40
M3
2#泵运转1#泵运转延时启动
P1
延时停机
3#停机信号
压力上限P1
压力上限T1
延时停机T1
TON T1 200
P40
P41
延时停机1#泵运转P42
2#泵运转3#泵运转M13
2#停机信号
P42
P40
3#泵运转P41
M12
1#泵运转2#泵运转1#停机信号
P42
P41
3#泵运转P40
M11
2#泵运转1#泵运转END
14
18
32
36
40
44
48
1#泵起动条件/状态采样启动延时控制
2#泵起动条件/状态采样
3#泵起动条件/状态采样
M2
2#启动信号
M122#停机信号
P422#泵运转
P412#泵运转
M3
3#启动信号
M133#停机信号
P423#泵运转
P423#泵运转
1#泵停机条件/状态采样2#泵停机条件/状态采样
3#泵停机条件/状态采样
停机延时控制
1#泵起/停控制
2#泵起/停控制
3#泵起/停控制
程序结束
图4 供水压力自动控制程序电路
在M1得电的同时,T0也因输入回路开断(T1常闭点动作),T0的当前计时值被清零,触点复位,M1也随即失电。
可能看出,T0、M0的触点,都只是接通了一个扫描周期。
TO 输入回路串接的T0常闭触点,实现了自清零/复位作用。
电路由此又恢复为原始状态,T0重新进行延时,第2#泵处于等待启动状态下。
如果压力下限信号继续存在,则依序起动2#泵、3#泵。
每一泵的起动,都经过了T0的延时处理。
读者可以自行分析,当压力下限信号输入时,则经延时处理,会依3#、2#、1#泵的停机次序进行自动停机控制。
在程序电路中,将M1、M2,M3提取出来,作为启动信号,将M11、M12、M13提取出来,作为停机信号。
采用辅助继电器,比起直接驱动P 输出端子,有更大的灵活性。
辅助继电器的输出触点信号,除了用作驱动P 输出继电器外,还可以用作其它用途,如泵的运行状态,运行/停止指令等。
这种将定时触点和启/停信号、及输出控制“集中处理”的方法,使得电路思路清晰,层次分明,也广为编程人员所应用。
2、定时器与计数器应用程序电路之二——两泵交替补水和自动巡检控制程序
C0M P0
P1CO M P41KA 1
压力下限
压力上限
2#泵起/
停
P40P42KA 2
220V
1#泵起/
停
LS PLC
24+24G 压力表接点
P2P42P3
P42
自动巡检
手动巡检
图5 两泵交替补水和自动巡检控制电路接线图
某生产单位有一消防压力水罐,用两台补水泵,进行随机性补水,以维持罐
内的水压,以备不时之需。
控制要求如下:
1)自动补水,压力下限信号输入时,补水泵运转,压力上限信号输入时,补水泵停机;
2)两泵交替运行模式,以延长使用寿命。
第一次压力下限信号输入,1#泵运行;第二次压力下限信号输入时,则2#泵运行;
3)可以自动巡检运行。
因为随机性补水,水泵不是处于连续运行状态下,
数天或更久不运行时,容易因锈蚀造成堵转等故障,故设定自动巡检功能,巡检周期为一个星期,每台泵的自动巡检运行时间为1分钟;
4)手动巡检,操作手动巡检按钮时,即时巡检开始,便于工作人员随时对水泵的运行状况进行检查。
根据这四条控制要求,编写了如下的控制程序电路。
见图6。
P0运行开始D M0压力下限M2
C0
运行次数P0
P1
M3
补水运行压力上限2#运行信号
03
将连续输入信号转化为脉冲输入信号
M0运行开始M3
2#运行信号U CTU C0R <S> 2
C0为计数器编号/计数输入"2"为计数设置/复位输入8
1#运行信号
M21#运行信号
M3
C0
运行次数P0
P1
M2
补水运行压力上限1#运行信号
14
2#运行信号
M32#运行信号
P2
短接时巡检有效T0定时清零
20
运行开始TON T0 6048
T0
巡检定时124
U CTU C1R <S> 1000
C1为计数器编号"1000"为计数设置
M5
1#巡检信号
28
P3手动巡检P41T12#泵运行
1#巡检时间
M5
1#巡检信号
C0自动巡检1#巡检信号
M51#巡检时间
TON T1 600M5
M2
1#运行信号43
1#泵运行
P401#巡检信号M6
M3
2#运行信号472#泵运行
P412#巡检信号
36
T11#巡检时间P40T21#泵运行
2#巡检时间
M62#巡检信号
2#巡检信号
M62#巡检时间
TON T2 600END
50
1#泵运行信号输出
2#泵运行信号输出
巡检定时1巡检定时2
1#泵巡检信号输出
1#泵巡检运行时间
2#泵巡检信号输出
2#泵巡检运行时间1#泵运行/巡检控制
2#泵运行/巡检控制
图6 两泵轮流补水和自动巡检控制程序
程序的主要特点:
1)采用了计数器C0(计数设定值2),对压力下限信号的输入次数进行计数,以计数次数进行逻辑判断,控制两台补水泵交替运行。
C0的常闭触点串入1#泵的运行信号回路,常开触点串入2#泵的运行信号回路。
当输入计数值为1时,1#泵运行信号回路接通;输入计数值为2时,C0触点动作,2#泵运行信号回路接通,同时对C0实施复位使之开始重新计数。
做到了根据压力下限信号的输入,使两泵交替运行的目的;
2)采用了计数器C1与定时器相配合,对巡检周期进行设定。
可以算出,一个星期累计秒=604800,起出定时器的最大设定范围。
采用计数器与定时器配合,二者设定值的乘积,即巡检周期=100ms×6048×1000=604800秒=星期。
3)巡检运行中泵的运行的时间,为T1、T2的设定值所决定,两泵各运行1分钟。
自动巡检时间到达后,巡检次序为1#泵运行1分钟,停机;2#泵运行1分钟,停机。
C1、T0又开始从零计数,如此循环往复。
手动巡检信号(P3)与C0(常开触点)自动巡检信号并联在一起,接通P3,可以实现即时巡检。
4)控制程序实际上是存在逻辑漏洞的。
其一:巡检与上、下限压力信号有“逻辑竞争”现象。
当上限信号输入时,应该停机时,自动(手动)巡检信号的产生,有可能使补水泵继续运行;
其二:独立的自动补水运行或独立的巡检运行,两泵都是交替运行的,不会出现同时运行的局面。
假定压力下限信号输入,2#泵是根据压力下限信号运行,而1#泵则有可能会根据巡检信号的控制,而投入运行,出现两泵“同时运行”的现象。
以上两个方面,都是在控制中,不希望出现的现象。
询问现场工作人员,有没有发现运行缺陷,他们的回答是:自动补水和自动巡检,运行得都很好啊。
手动巡检也很好用啊。
这是因为:补水泵不是处于连续运行中,这就使补水和巡检的竞争程度大为降低,再者,两泵的功率较小,都为2.2kW,同时运行也未看出有何异常;压力到达上限时,自动巡检信号产生,补它一分钟的水,也不会有什么问题的。
但此程序若运用于大功率电机或其它场合,其逻辑漏洞必然暴露无遗。
解决这个问题,可采用“MC、MCR主触点指令”或“CALL调用子程序指令”,指定补水或巡检的“优先权”,则二者就不会存在逻辑竞争了。
计数器应用中需注意的一个问题:
图6两泵轮流补水和自动巡检控制程序中,计数器的输入电路,采用了D M0的脉冲输出触点和T0接通一个扫描周期的触点,来完成对计数信号的输入,那么对连续执行型触点信号,是不是也可以胜任对计数信号的输入控制呢?
答案是:若采用连续执行型触点,来控制计数信号的输入,可能会造成计数误差。
看下图7计数电路的输入回路示例(以FX编程器为例)。
程序电路中C0计数器的计数值有可能会形成较大的误差。
假定整个程序电路的扫描时间为2ms,而X0接通时间为100ms(若手动按钮输入计数,X0接触时间有可能超过100ms或X0接通时间长短不一),则X0接通一次,C0计数中出现了50个计数输入值——在50个扫描周期内,进行了50次计数输入!当X0的接通时间不好掌握时,X0每接通一次,出现的计数值会各不相等,造成计数无效!
C1计数器中的计数值却是准确的。
当X1由OFF-ON变化时,产生一个上升沿脉冲输入,C1计数一次。
X1只对OFF-ON的瞬态信号输入做出接通反应,对常态的OFF或ON信号置之不理,外部输入信号每接通一次,X1只在第一个扫描周期内产生一个脉冲信号,此信号与外部信号输入时间的长短无关。
相类似的脉冲输入/输出信号和“只接通一个扫描周期的触点”信号,均会起到同样的作用,使C1的计数值变得准确。
X0
连续输入
C0计数值不确定X5
T1C0 K10上升沿输入
C1计数值准确C1 K10X1
X2
X3
连续输入
上升沿微分输出PLS M0X4
连续输入
下降沿微分输出PLF Y10M0
脉冲触点1
Y10
脉冲触点2
T1 K10T1
接通一个扫描周期
X6M10M10M10
接通一个扫描周期
输入电路宜采用:1、上升沿/下降沿脉冲触点;2、上升沿/下降沿微分输出触点;3、只接通一个扫描周期的触点。
将连续输入转化为上升沿脉冲触点;将连续输入转化为下降沿脉冲触点;将连续输出转化为只接通一个扫描周期的输出触点信号
下降沿输入
图7 计数电路的输入回路示例
而连续输入触点信号均可以通过LDP 、LDF 、PLS 、PLF 等“脉冲化指令”转化成脉冲型输入/输出触点,下图T1、M10的线圈驱动回路,其输入电路也可以用自身常闭触点串接,而形成“只接通一个扫描周期”的触点信号输出。
计数准确的实质在于:将输入信号变为“只在一个扫描周期内输入”!这也就是为什么要将连续执行型触点要转化成脉冲型触点来应用的原因。
在后文中数据寄存器的对数据的处理,及一些功能指令的处理,也牵扯到此类问题,也经常需用到连续/脉冲触点的转化电路。
这也说明,相对于远远低于扫描周期变化的低速输入信号,PLC 对输入信号的执行速度又显得太快了,有可能会将一次性的输入信号变为了多次输入信号。