利用PLC定时器和计数器,实现长时间计时的方法
作者通过典型案例分析,探讨了利用定时器、计数器级联的方式实现长时间计时的原理,给出了编程思路和梯形图程序。在很多工程应用中,根据控制功能要求,需要对系统进行24小时监控,在经过某一特定时间或遇到紧急情况后给出提醒或预警。为了减少人为因素造成的影响,我们希望系统能自动进行。PLC中的定时器便具有这个功能。
但是,定时器的计数值在PLC的内部使用二进制,一个16位二进制字除去一个符号位后,能表示的最大整数是32767,它将对应定时器的最大定时时间。以100ms定时器为例,32767对应最大定时时间为32767×0.1=3276.7(s),时间不足1小时。这使得在使用单个定时器编制长时间计时程序受到很大制约。
由于定时器的计时时间有限,利用单个定时器达不到长时间计时的目的,要解决问题需要利用软件编程来实现长时间计时。下面以S7-200 PLC为例,通过案例来探讨利用定时器和计数器扩展的方式进行长时间计时,供使用者参考。
1 定时器、计数器的应用
1.1 定时器基本应用S7-200 PLC有三种类型的定时器,接通延时定时器(TON)、断开延时定时器(TOF)、记忆接通延时定时器(TONR)。以常用的延时接通定时器(TON)为例讨论定时器的基本应用。
图1 定时器基本应用
工作原理:当输入端闭合,即I0.0为“ON”时,定时器T37接通并开始计时,10秒后,定时器T37常开触点接通并保持,输出继电器Q0.0输出。I0.0断开,定时器复位,Q0.0断开。
1.2 计数器基本应用
S7-200 PLC有三种类型的计数器,增计数器(CTU)、减计数器(CTD)、增/减计数器(CTUD)[2]。以常用的增计数器(CTU)为例讨论计数器的基本应用。
图2 计数器的基本应用
工作原理:首先,使I0.1输入端通、断一次,计数器C0复位,即当前值回“0”。然后,每通、断一次I0.0,计数器C0记录1个数,即C0当前值加1,当C0当前值达到10后,计数器C0常开触点接通并保持,输出继电器Q0.0输出,直到I0.1再次闭合,计数器复位,Q0.0断开。
1.3 定时器级联扩展延时
对于分辨率为100ms的延时接通定时器(TON)来讲,其设定值最大为32767,延时时间最长为3276.7秒。当超过该时间,单个定时器则无法完成计时功能。这种情况下,可以利用定时器级联的方式实现延时时间的扩展。
案例1:利用两个定时器级联实现延时1小时
图3 定时器延时1小时
总的延时时间T=T37+T38=1800秒+1800秒=3600秒=1小时。这是单个定时器无法完成的定时时间。
还可以用同样的方法实现三个、四个定时器级联延时。这种扩展方法的计时时间是各个定时器计时时间的总和。
1.4 利用计数器延时
案例2:利用两个计数器实现延时10小时
图4 计数器延时10小时
总的延时时间为:1秒×(6000×6)=36000秒÷3600秒=10小时。
这种扩展延时方法的关键是:(1)在网络1中,首先,利用特殊功能寄存器SM0.5(周期为1秒,占空比为1:1),作为计数器C0的计数输入脉冲,在计数的同时实现计时;第二,将C0的输出作为自身的复位,实现记录6000个脉冲后重新开始。(2)在网络2中,将C0的输出作为C1的输入,实现每记录6000个脉冲触发C1计数1次。
3 案例分析
3.1控制要求
某住宅小区需要24小时昼夜定时报警,早上6:30,电铃每秒响一次,6次后自动停止;9:00-17:00,启动住宅报警系统;晚上18:00打开小区内照明系统;晚上22:00关闭小区内照明系统。
3.2 I/0口分配
表1 I/O 分配表
3.3 接线图
图5 接线图
3.4 梯形图程序
程序说明:
(1) 网络1、网络2 中,I0.0为系统启动开关;I0.1 为快速调整开关; I0.2为系统实验用开关;SM0.1用于上电时系统复位;C0 、C1两个计数器级联,C0形成900秒的计时周期,C1记录96个900秒,共计900×96=86400秒,即24个小时;
(2)网络3用于实现早晨6:30启动电铃,电铃每隔1秒响1次,6次后停止;
(3)网络4用于实现晚上18:00开启小区内照明系统;网络4用于实现晚上22:00关闭小区内照明系统;
(4)网络5用于实现9:00到17:00开启小区内报警系统;
(5)网络7、网络8,形成0.1秒钟震荡信号,用于快速调整系统使用。
图6 梯形图程序
4 结束语
定时器指令和计数器指令是PLC编程的重要指令,掌握好它们的使用方法,使设计格式规范化,可以优化设计程序,对编程水平的提高有十分重要的意义,利用编程实现长时的方法还有很多,案例也不胜枚举,同时,灵活利用定时器和计数器组合进行长时间计时,PLC的编程功能,既可减少硬件设备资源,降低生产成本,又使系统运行灵活可靠。
本文编自《电气技术》,标题为“关于利用PLC定时器和计数器进行长计时功能的探讨”,作者为侯肖霞。
第4章 PLC编程中的定时器精讲
定时器是常用和通用的功能之一。
4.1 计数器指令
如图4.1所示,A为生成脉冲指令,与(a启动脉冲定时器)功能相同;B为接通延时指令与(b启动接通延时定时器)功能相同;C为关断延时指令与(c启动关断延时定时器)功能相同;D为时间累加器指令与(d时间累加器)功能相同;e为复位定时器指令,f为加载持续时间指令。
回顾上一章讲的计数器,就会发现计数器和定时器具有以下相同点:都具有复位功能【图4.1中e】,都具备加载功能【图4.1中f】。(计数器有计数器复位清零,计数器也有装载PV值)
图4.1 定时器指令
4.1.1 断开延时
如图4.2所示,断开延时(关断延时)的定时器的简单应用。
M1.2为CPU运行的信号,即只要CPU运行,该点就会接通。增加该点的目的是为了增加横向的分支,一个程序段可以写两行。这种编程方式沿用了西门子200samrt或者STEP7软件的编程方式,或者说其品牌的PLC编程也是需要这样实现一个分支操作。
但是博图软件对这样的问题做了优化,就是在同一个程序段,可以存在多行支路的程序。如图4.2所示为一个主干线分成2个横向支路。实际上可以允许写成多行主干线,如图4.3所示。两种编程方式对比,显然图4.3的方式更为简洁,清爽一些。但是介于之前的编程习惯,以及其他品牌的PLC的编程习惯,本人依然采用图4.2的编写方式。原因如下:为了保持解读程序的统一性,如果一个项目的程序中,有的程序段采用的一个主干线,有的采用的是多干线,在分析和查找程序时,容易按照之前的习惯,忽略下边的程序。说的直白一点,就是不习惯,也不允许自己养成新的习惯。因为其他PLC编程软件,对这种行为的定义是非法的,编译不成功的。如果看到图4.3的编程方式,在博图软件中是正确的,其他的软件中未必是正确的。
图4.2 断开延时1
图4.3 断开延时2
大致工作原理
当M21.0接通时,T[32].Q接通,M120.0接通。
当M21.0断开时,T[32].Q延时10秒断开,M120.0接通和断开情况跟随T[32].Q。
这段程序如何理解呢?当按下(电磁炉开启)按钮时,让(开始初始化运行2 M120.0)的线圈接通10秒。实际工作中就是,按下电磁炉开启按钮,需要电磁炉的风扇运行10秒后停止。这是一个初始化运行状态。这种情很常见,如开启笔记本电脑后,散热风扇先运转一段时间后停止,然后再根据电脑的温度来自动运转;在比如锅炉控制系统中,开启锅炉前,风机要进行一定时间的吹扫,吹扫完成后,才能进行后续工作。
此功能还适用于停止后的延时运转,比如变频器停止后,散热风扇会继续运转一段时间;再比如锅炉控制系统中,锅炉停止后,风机还要继续进行一端时间的吹扫;锅炉停止后,循环泵也要在继续运行一端时间;还有家用电磁炉停机后,散热风扇继续运转一段时间等等。总的来说,这个功能使用场景很多。
T[32].Q等同于图4.4中的T32常开触点,两者是在不同软件中表达方式不一样,功能和效果是一样的。
总结一下,在使用梯形图编程时,定时器接通的表现形式,目前见过的也就是这两种。其他各类品牌的PLC的定时器触点的接通也无法是这两种形式,如果你找到第三种了,可以跟大家共享一下。
图4.4 200SMART编程软件中的定时器
断开延时定时器的作用就是,当定时器的接通条件断开时,延时一定的时间再断开。延时的时间根据需要填写就好,本案例中设置的是T#10S,就是10秒。如果想设置成200MS,那么输入T#200MS。【在定时器的时间输入时,可以按照定时器的格式输入,也可以直接输入数值,比如直接输入200,就是200MS;输入10000就是10S。】
与计数器一样,定时器也需要分配背景空间。如图4.5所示,我们建立了T数组,一共是建立了1000个数据类型为IEC_TIMER的编号从0-999的定时器背景数据区。这样就将定时器的背景数据区放到了一起,避免了使用定时器自动生成很多DB块了。
图4.5 定时器数组
如图4.6所示,直接将上述功能实现了。功能与图4.2和图4.3一样,就是延时时间不一样,这里为15秒。大家会想,能用图4.6实现,何必使用上边的实现呢。有了一种既生瑜何生亮的感觉。实际上了,博图软件就是这样提供指令和功能的,大家根据需要和习惯使用就好,重点不是表现形式,重要的是功能和逻辑的实现。
举个例子,不能因为自己开车上班就嘲笑那些骑电车或者挤公交上班的,凡是存在的都是合理的。重要的是开好自己的车,上好自己的班。也不能说,我就会用博图编程,其他的编程软件都不会啊。做PLC编程的老手,不研究个五六七八种品牌的PLC编程,那就证明他们公司的业务还不够丰富。你能要求编程软件按照你的思路来吗?不可以的,咱们就是使用者,使用软件把程序编写好就行了。
图4.6 断开延时3
4.1.2 生成脉冲
如图4.7所示,为生成脉冲的定时器指令。PT的输入引脚为MD300,可用于设定延时值。当M21.0接通时,M110.2就会接通,接通时间为MD300的设定时间,设定数值以MS为单位。如MD300设定值为600,那么就是M110.2延时600Ms停止。
如果M21.0接通时间时10秒,MD300的设定时间是600,那么M110.2依然接通600Ms。总结一下就是:不管M21.0的接通时间,只要M21.0接通一次,M110.2就会运行600Ms。
如果MD300设定为10000,那么功能又跟上述功能一样了:电磁炉开启后,风扇初始化运行10秒后停止。
所以说同样的功能,同样的现象,程序呢是千奇百怪,五花八门。自己捋捋吧!
图4.7 生成脉冲
4.1.3 生成脉冲
如图4.8所示,为接通的定时器指令。是使用频次最高的定时器。也是最常用的定时器。状态1:
当(电磁炉开启M21.0)接通时,T[25]和T[26]都开始计时,当计时大于等于10秒后,M110.3接通,M110.4也会接通。如果M21.0继续保持接通,计时器会继续计时,一直到计时器的最大值。
状态2:
如果定时器都是清零状态,当(电磁炉开启M21.0)接通2秒时,T[25]和T[26]都开始计时,由于计时时间未到,M110.3和M110.4都不会接通。此时M21.0断开,T[25]的计时时间清零,T[26]的计时时间保持。这也是2个定时器的区别,一个是触发条件断开,计时器清零;一个是触发条件断开计数器不清零,具备累加功能。累加计时器想清零就得用到复位定时器指令RT指令。当然了,复位定时器指令RT指令也可以给T[25]清零。
状态3:
在状态2的基础上,当(电磁炉开启M21.0)再接通8秒时,T[25]和T[26]都开始计时,M110.3不会接通,但是M110.4会接通,因为T[26]的累计运行时间到达了10秒。
如果M21.0继续接通,直到接通10秒以后,T[25]也会接通。
注意凡是文中描述到定时器的接通,都是指定时器的Q点接通。
图4.8 生成脉冲
4.1.4 复位定时器
如图4.9所示,为复位定时器指令。当M21.2接通时,复位T[26]定时器,目的就是将定时器计时清零。当M21.2一直接通时,T[26]定时器将无法正常工作,计时持续为0,所以定时器清零的操作应该使用脉冲信号,清零后M21.2就应该断开。
图4.9 复位定时器
4.1.4 加载持续时间
如图4.10所示,为加载持续时间指令。当M21.3接通时,将T[26]定时器的PT值设置为20S,下一个周期的定时器就会以20S的计时周期来动作。
如果程序中已经有了PT值,那么覆盖原有的PT值,以最新的PT值为准。就是不管前边PT值给的多少,使用了图4.10的指令,下一个定时周期就会按照该指令执行。
图4.10 加载持续时间
4.2 问题思考
1、定时器脉冲如何制作?
2、500Ms接通一次、500Ms断开一次。与接通500Ms后再断开500Ms一样吗?
还在犹豫什么,抓紧时间实操一下吧,或者仿真操作也可以的!
喜欢的请收藏和转发!希望能帮到更多的朋友!
相关问答
三菱PLC怎样编写计时指令?
方法/步骤1:我们以X0输入端作为计时开始信号,当PLC内部接收到计时信号时,位软元件X1接通。在左母线处直接输入“ldx0”即可在梯形图中输入。方法/步骤2:我...
西门子plc时钟指令编程实例?
西门子PLC时钟指令编程实例可以通过SFC14指令来实现。在程序中定义一个时间变量,然后使用SFC14指令读取系统时间,并将其存储到定义的变量中。可以通过这个变量...
plc定时器到达扫描周期执行过程?
在PLC编程中,定时器的到达扫描周期执行过程可以通过以下步骤实现:1.配置定时器参数:设置定时器的周期、预置值和使能等参数。这些参数决定了定时器的触发条件...
plc定时器公式?
定时器有一个给定值寄存器、一个当前值寄存器,还有无数个触点。每一个定时器此三个量用同一个名称T。在电脑中,定时器原理;t=TxK。t是定时时长,K是计数值,T...定...
三菱PLC计时器如何编程?
1.三菱PLC计时器的编程是相对简单的。2.首先,需要在PLC编程软件中创建一个计时器变量,并设置计时器的初始值和时间单位。然后,通过逻辑控制指令,比如LD(逻...
三菱plc怎样做一个计时程序呢?
要实现一个计时程序,首先需要使用三菱PLC的编程软件(如GXWorks2)创建一个新的程序。在程序中创建一个计时器(timer)变量,并设置初始值为0。然后,在主程...
台达PLC计时器怎样以秒计时啊,我要用人机好控制啊?
在plc里面做个乘法程序,如果计时器是100ms的就乘10,就能得到秒的单位了。在plc里面做个乘法程序,如果计时器是100ms的就乘10,就能得到秒的单位了。
plc200程序里的定时器的用法?
在PLC200程序中,定时器通常用于控制程序的时间间隔或延时操作。以下是PLC200程序中定时器的常见用法:1.延迟操作:使用定时器来实现延迟操作,例如在某个事件...
三菱PLC如何编计时器?
用T指令,格式是(TnKX)举例:ldx0OUTT0K100意思就是当x0接通后计时10秒,T0接通。后续用T0去处罚需要的输出点就可以达到控制延时计时的目的。用T指令,...
plc怎么写定时器?
在电脑中,定时器原理;t=TxK。t是定时时长,K是计数值,T是计数周期。其中T一般有100ms、10ms、1ms这三种。当输入端接通,定时器开始计时,若当前值与设定值...t...