跟我一起看1200手册之基本指令(定时器指令)的应用讲解
前面文章中跟大家介绍了基本指令中的位逻辑指令的使用,在本文中将继续跟大家分享关于1200的定时器指令的使用,定时器在PLC编程中是最多被用的基本指令,博途中定时器不同于step7中的定时器,在博途中没有S5定时器,而只有IEC定时器,就意味着要用到定时器的背景数据块,每调用一次定时器就会产生一个背景数据块,非常占用系统资源,那么怎么做才能减少背景数据块呢?下面会跟大家具体分享。
一、指令的位置
二、指令讲解
在1200PLC中有四种定时器:
接通延时定时器TON、关断延时定时器TOF、保持型接通延时定时器TONR、脉冲定时器。下面我们就分别进行介绍:
1、接通延时定时器
定时器采用存储在数据块中的结构来保存定时器数据,在使用定时器时要为定时器分配背景数据块。
接通延时定时器TON的时序图:
当使能端IN接通时,定时器开始定时,当前值ET递增,当前值等于预设值PT时,定时器的输出Q置位,定时器停止计数,并保持当前计数值。
当使能端IN断开时,定时器的当前值和输出状态复位。
若使能端断开时,定时器的当前值小于预设值,定时器的当前值也复位为0.
通过一个小例子来看看指令怎么用?
当按下I0.7按钮,延时5s后Q0.3接通
生成的背景数据块位于系统块中,如下图所示:
编写程序如下:
将程序下载到仿真器中,并进行仿真(前面文章中已经讲过仿真器的使用,这里就不过多赘述了)
2、关断延时定时器TOF
定时器采用存储在数据块中的结构来保存定时器数据,在使用定时器时要为定时器分配背景数据块。
时序图:
当使能端IN接通时,启动定时器,定时器当前值ET复位,定时器输出Q置位。
当使能IN断开时,当前值ET递增,当前值等于预设值PT时,定时器的输出Q复位,定时器停止计数,并保持当前计数值。
若使能端断开时,定时器的当前值小于预设值,定时器的当前值保持置位。
通过一个小例子来看看指令怎么用?
当I0.7按下,Q0.3接通,断开I0.7后5s,Q0.3断开。
下载程序并开始仿真:
(1)当I0.7接通,Q0.3接通
(2)当I0.7断开,延时5s Q0.3断开。
3、保持型接通延时定时器TONR
时序图如下:
当使能端IN接通时,定时器开始定时,当前值ET递增,当使能端IN断开时,定时器停止定时,并保持当前值,当使能端IN重新接通时,定时器继续加计时,当前值ET继续增加;当当前值ET等于预设值PT时,定时器输出置位,定时器停止计数并保持当前计数值。当定时器复位R接通时,定时器的当前值和输出状态复位。
通过一个小例子来看看指令怎么用?
当I0.7多次接通,累计接通时间达到15s,Q0.3接通,当按下I1.0时,Q0.0断开
下载程序并进行仿真:
(1)当I0.7接通时,定时器开始计时。
(2)当I0.7断开时,定时器停止计时,定时器当前值保持不变
(3)当累计定时时间达到预设值PT 15s时,定时器输出置位Q0.3接通。
(4)当I1.0接通时,定时复位,Q0.3断开。
4、脉冲定时器
时序图:
当使能端IN有上升沿时,定时器开始定时,当前值ET递增,定时器输出置位,当当前值ET等于预设值PT时,定时器输出复位,若此时使能端IN为高电平,则保持当前计数值,若使能端IN变为低电平,则定时器当前值ET清零。
在定时器运行中,新来的使能信号IN对定时器不起作用。
通过一个小例子来看看指令怎么用?
当按下I0.7,Q0.3接通5S后断开
下载程序并仿真:
(1)当I0.7接通,Q0.3接通
(2)当定时时间达到预设值5s,Q0.3断开,Q0.3共接通5s(也就是5s脉冲)
(3)当I0.7断开,则定时器清零。
S7-1200 定时器创建
S7-1200定时器创建有以下几种方法:
1. 功能框指令直接拖入块中,自动生成定时器的背景数据块,该块位于“系统块>程序资源”中,参见图2。
图2 自动生成定时器的背景数据块
2. 功能框指令直接拖入FB块中,生成多重背景,参见图3。
图3 多重背景
3. 功能框指令直接拖入FB、FC块中,生成参数实例,从TIA博途V14开始,参见图4。
图4 参数实例
4. 在DB块、FB的静态变量、FC和FB的INOUT变量中新建IEC_TIMER、TP_TIME、TON_TIME、TOF_TIME、TONR_TIME(后面四个从TIA博途V11开始)类型变量,在程序中将功能框定时器指令拖入块中时,在弹出的“调用选项”页面点击“取消”按钮,之后将该建好的变量填入指定位置。对于线圈型指令,这是首选方法。
(1) DB块中新建IEC_TIMER等类型变量(LAD/FBD),如果是IEC_TIMER等类型变量的数组,S7-1200从V2.0版本开始支持,参见图5~图7。
图5 DB块中的定义
图6 功能框定时器使用
图7 线圈型定时器使用
(2) FB的静态变量中新建IEC_TIMER等类型变量(LAD/FBD)
图8 静态变量中定义
(3) FC和FB的INOUT变量中新建IEC_TIMER等类型变量(LAD/FBD),
图9 INOUT中定义
(4) 以上三种方法的SCL版本,从TIA博途V14开始支持,参见图10。
图10 SCL中使用
从以上4个示例可以看出,IEC_TIMER、TP_TIME、TON_TIME、TOF_TIME、TONR_TIME五种数据类型没有本质的区别,可以互换使用,为使得程序明确,建议只使用定时器对应名字的数据类型。
5. 在插入DB时,选择IEC_TIMER类型的数据块,将该数据块填在指令上方。此种方法生成的数据块等同于第一种的背景数据块,位于“系统块>程序资源”中,从TIA博途V11开始,线圈型指令同样适用,参见图11。
图11 新建IEC_TIMER类型DB
S7-1200 定时器常见问题
1. 为什么定时器不计时?
答:可能原因如下:
(1)定时器的输入位需要有电平信号的跳变,定时器才会开始计时。如果保持不变的信号作为输入位是不会开始计时的。TP、TON、TONR需要IN从“0”变为“1”启动,TOF需要IN从“1”变为“0”启动。
(2)定时器的背景数据块重复使用。
(3)只有在定时器功能框的Q点或ET连接变量,或者在程序中使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET,定时器才会开始计时,并且更新定时时间。参见下图
2. 如何编程自复位定时器并产生脉冲?
答:正确答案参考下图,同时附上2种常见错误编程方式。
原因:S7-1200的定时器的时间更新发生在定时器功能框的Q点或ET连接变量时,或者在程序中使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET时。即如果程序中多次使用同一背景DB的Q点,或者既使用定时器功能框的Q点或ET连接变量,又使用背景DB的Q点,以上两种情况都会造成定时器在一个扫描周期内的多次更新,可能造成定时器不能正常使用的情况。
正确方法的流程,将程序根据指令分为两部分,如图12所示:
图12 分解正确指令
阶段1.初始"DB2".脉冲=False,于是"DB2".脉冲取反为True,触发计时器开始计时,输出的"DB2".脉冲=False,状态不变;定时时间不到,则始终在阶段1;
阶段2.当定时时间到发生在①所处的位置,在TON处定时器更新,Q输出True,因此输出的"DB2".脉冲=True,等到下周期时"DB2".脉冲取反为False,导致输出的"DB2".脉冲=False,等再到下周期时就回到了阶段1;
阶段3.当定时时间到发生在②所处的位置,不影响定时器的更新,需要到下一周期才会改变输出,就回到了阶段2。
从上可知,定时器实现了自复位,并且"DB2".脉冲=True只保持一个周期,形成了脉冲。
以第一个错误方法解释一下为什么这种方法不能实现自复位定时器并产生脉冲,如图13所示,将程序根据指令分为三部分:
图13 分解错误指令
阶段1.初始第一行"IEC_Timer_0_DB".Q=False,触发计时器开始计时,第二行,当定时时间不到,"IEC_Timer_0_DB".Q=False保持不变,输出的"DB2".脉冲=False;定时时间不到,则始终在阶段1;
阶段2.当定时时间到发生在①所处的位置,在第一行的"IEC_Timer_0_DB".Q处定时器更新,更新后,"IEC_Timer_0_DB".Q=True,取反为False,此时作为TON的输入,使得定时器复位,第二行的"IEC_Timer_0_DB".Q=False,输出的"DB2".脉冲=False,到下周期时就回到了阶段1;
阶段3.当定时时间到发生在②所处的位置,在第二行的"IEC_Timer_0_DB".Q处定时器更新,更新后,"IEC_Timer_0_DB".Q=True,输出的"DB2".脉冲=True,等到下周期时,"IEC_Timer_0_DB".Q=True,取反为False,此时作为TON的输入,使得定时器复位,第二行的"IEC_Timer_0_DB".Q=False,输出的"DB2".脉冲=False,等再到下周期时就回到了阶段1;
阶段4.当定时时间到发生在③所处的位置,不影响定时器的更新,需要到下一周期才会改变输出,就回到了阶段2。
从上可知无论定时器时间到发生在哪个点,定时器都可以实现自复位,但是只有当定时时间到发生在②所处的位置时,"DB2".脉冲=True只保持一个周期,形成了脉冲,而在①和③时"DB2".脉冲始终为False无法形成脉冲。在正常程序中②的执行时间在整个扫描周期中占比很小,因此只有很低的概率可以实现脉冲。所以不能使用此种方法,第二个错误方法与之类似。
3. 如何使用定时器实现精确定时?
答:不能做到。
举例来说,定时1s的接通延时定时器,当程序扫描到定时器功能框的Q点或ET时或者扫描到背景DB(或IEC_TIMER类型的变量)中的Q点或者ET时,如果时间为997ms,只会继续定时等下一次扫描,而下一次扫描到可能就是1003ms,此时定时器接通。也就是说几乎不可能正好1s接通,如果再配合计数器实现更长时间的定时,误差只会越来越大。
所以精确定时还是推荐使用循环中断(OB30)配合计数器来实现。
4. 定时器指令中,功能框和线圈型的区别?
答:原理上是完全一样的,细微区别:
(1) 功能框定时器上可以定义Q点或ET,在程序中可以不必出现背景DB(或IEC_TIMER类型的变量)中的Q点或者ET;而线圈型定时器必须使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET;
(2) 功能框定时器在使用时可以自动提示生成背景块,或者选择不生成;而线圈型定时器只能通过手动方式建立背景块;
(3) 线圈型定时器如果出现在网络段中间时不影响RLO的变化,如图14所示,"DB46".Static_1和I1.0同步变化。
图14 线圈型定时器示例
都说是电气高手,这9个PLC编程都能看明白吗?
一、小车往返运动
用S7-200实现小车往返的自动控制 ,控制过程为按下启动按钮 ,小车从左边往右边(右边往左边运动) 当运动到右边(左边)碰到右边(左边)的行程开关后 小车自动做返回运动,当碰到另一边的行程开关后又做返回运动 。如此的往返运动,直到当按下停车按钮后小车停止运动。
▲电气接线图
I/O分配表
梯形图程序
PLC接线图
程序调试及结果分析
▲控制平台操作面板
当按下SB2即i0.0(鼠标点击i0.0f)接通后,Q0.0接通,小车右行(即指示 灯 Q0.0 亮)。当小车运行碰到右限位开关SQ2即i0.4(用鼠标点击i0.4f,模拟SQ2被压下)接通,此时小车左行(指示灯Q0.0灭,指示灯Q0.1亮),当运行到左边碰到左限位SQ1即i0.3(鼠标点击i0.3f)接通,此时小车又往右运行(指示灯Q0.1灭,指示灯Q0.0 亮)。如此往返运动下去直到按下SB1即i0.2(鼠标点i0.2f)接通,小车停止运行。
附:
二、闪光电路
当按下启动按钮后,要求在两秒钟内有一秒亮有一秒灭,如此反复,灯一闪一闪 发光。
I/O分配表
梯形图程序
PLC接线图
程序调试及结果分析
把编写好的程序下载到西门子s7-200PLC中进行调试。观察运行结果和实验要求 是否相同。通过在线控制面板进行调试,当按下在线控制面板上的I0.0f(即 I0.0 接通)此时Q0.0有输出,Q0.0所接负载灯就亮,同时启动定时器T37开始计时, 当计时一秒后因T37动作,其常闭触点断开,所以Q0.0无输出,所接负载灯灭。灯灭的同时启动定时器 T38,T38 计时一秒后,把串联在定时器T37的常闭触点 断开,所以T37复位,T37常闭触点恢复常闭。此时Q0.0 又有输出, 所接负载灯又亮。这样,输出Q0.0上所接的负载灯以接通一秒,断开一秒频率不停地闪烁,直到按下在线控制面板上的 I0.1f(即I0.1接通),闪光电路不再继续工作。若想改变灯闪烁的频率只要改变定时器的时间就能够达到改变要求。
三、星三角降压启动
利用西门子S7-200的PLC实现星三角接法的降压启动。
星三角降压启动的电路图与控制图
流程框架图如下
I/O分配表
梯形图程序
PLC接线图
程序调试及结果分析
把编写好的程序下载都西门子S7-200的PLC中进行调试,下载好后我们打开在线控制面板进行调试,看运行结果是否符合要求。首先把控制面板上的i0.2f置位为按钮按下去,即i0.2 接通,表示断路器QF合上。按下启动按钮i0.0f(SB2)即i0.0接通此时电动机星形启动,Q0.0和Q0.1有输出,实验接线图中表示这两个的灯L1和L2都亮同时驱动时间计数器,当计时器计到10S时切换为三角型启动,此时Q0.1无输出,Q0.2有输出,则此时Q0.0和Q0.2 有输出,电机三角星运行。接线面板上的L 1和L3灯亮。按下在线面板上的i0.1f后(i0.1接通)此时电动机停止运行。所以的输出点都无输出。
四、彩灯控制
利用PLC的Q0.0到Q0.7八个输出端控制八个彩灯,使其每隔一秒亮一个并循环。当接通I0.0后所有的灯都熄灭。当接通I0.1后又重新从Q0.0开始循环。
I/O分配表
梯形图程序
PLC接线图
程序调试及结果分析
把编写好的程序下载都PLC中进行调试,下载好后我们打开在线控制面板进行调试,看运行结果是否符合要求。
PLC一上电后sm0.0一直保持接通。所以t37进行延时计时,延时到后启动t38计时,t38计时到后t38常闭触点断开所以t37断开计时,t37常开触点恢复为常开所以t38也断开计时。此时t38的常闭触点恢复为常闭所以t37又重新计时,同时计数器C0开始计数一次。如此的反复计数。当计数为1时,Q0.0接通。计数器计数为2时Q0.1接通……如此下去当计数器计数到8时Q0.7接通。当计数器计到9时计数器C0清零。当按下在线控制面板上的I0.0f(即I0.0)接通,此时计数器,和Q0.0~Q0.7都清零,即没有一个灯亮。当按下在线控制面板上的I0.1f(即I0.1接通)此时计数器开始重新计数,灯又从Q0.0开始重新一个接一个地往下亮。
五、比较指令
对进出仓库的货物进行记录。仓库最多可放6000箱货物,货物多于1000箱灯L1亮,多于 5000箱时灯L2亮。
I/O分配表
梯形图程序
PLC接线图
程序调试及结果分析
把程序下载到S7-200的PLC中进行调试。在下载的之前我们先把程序中的数字进行缩小处理,以便在实验中我们能够更好的更快的观看到实验结果。我们把L1的灯亮的时候设置为5。把L 2灯亮我们设置为10。这样我们就能够更快的看到实验结果。
当按下在线控制面板上的I0.0f的时候即I0.0接通,表示有货物进去。当我们点击在线控制面板上的I0.0f五次后,此时计时器中的计数值为5,(即表示仓库中已经有1000箱物品了)则灯L1要亮,即Q0.0有输出。当继续点击I0.0f后点 击有十次后此时计数器的计数值位10(即表示仓库中有5000个物品),此时灯L2也亮即Q0.1有输出当继续点击在线控制面板上的I0.0f。计数器中的计数值就继续往上增加。当按下在线控制面板上的I0.1f后计数器就开始往下减。点击一次,计数器中的计数值就减少一次。当计数器中的值小于10时即表示仓库中的物品少有5000箱,此时灯L2灭(即Q0.1没有输出)当继续点击I0.1f时计数器 中的计数值继续减少,当减少到小于5次时。表示仓库中的物品少于1000,此时灯L1灭。Q0.0就没有输出。当按下在线控制面板上的I0.2f时计数器清零。L1和L2都不亮,(即Q0.和Q0.1都没有输出)。
六、8个彩灯移位控制
用IO导线控制接在Q0.0到Q0.7上的八个彩灯循环移位,用t37定时,每0.5S移位一位,首次扫描时给Q0.0到Q0.7置初值,让Q0.0和Q0.2先有输出。用I0.1来控制彩灯位移的方向。
I/O分配表
梯形图编程
PLC接线图
程序调试及结果分析
把程序下载到西门子S7—200的PLC中进行调试,PLC一上电Q0.0和 Q0.2 就有输出,则Q0.0和Q0.2亮。当把在线面板上的I 0.0f(表示 I0.0 有输入)置位开关按下后定时器T37开始计时每0.5秒后彩灯以Q0.0和Q0.2作为基础向右每次移移位。当按下在线控制面板上的I0.1f(表示I0.1有输入)使其置位时彩灯以同样的方式向左移动。
七、跳转指令
利用跳转指令控制两个灯L1和L2,分别接于Q0.0和Q0.1,切换开关位I0.0,两个灯的控制开关位I0.1和 I0.2.。手动时分别用两个灯的控制开关来控制。自动时,两个灯每隔一秒交替亮。
I/O分配表
梯形图编程
程序调试及结果分析
把编写好的程序下载到s7-200的PLC中进行调试。当I0.0为OF时,PLC运行手动程序按下在线控制面板上的置位按钮I0.1f和I0.2f 即表示(I 0.1和I0.2闭合)灯L1和L2亮,Q0.0 和Q0.1有输出。当我们按下在线控制面板上的I0.0f时,此时I0.0为ON,此时程序跳转到自动程序运行。两个灯每隔一秒循环亮。先L1亮一秒后L2亮。当在按下在线控制面板上的 I0.0f后即此时I0.0为OFF程序跳转到手动程序运行。
八、鼓风机和引风机的顺序启动控制
I/O分配表
梯形图编程
PLC接线图
▲PLC上电时的程序监控图,蓝色表示接通
程序调试及结果分析
Sm0.1的特点在扫描的第一个周期接通,以后不接通。当按下在线控制面板上的i0.0f时即 i0.0接通,此时Q0.0接通输出,(即指示灯Q0.0亮)引风机启动,同时定时器T37接通并开始计时,当定时器计数到50即(即指示灯Q0.1亮)鼓风机启动。此时两台风机都运行。当按下在线控制面板上的I0.1f时,即接通I0.1此时鼓风机停止运行,(即指示灯Q0.1灭)同时定时器T38接通并开始计时,定时5s后引风机停止运行。(即指示灯Q0.0灭)。
九、液体混合
用S7-200实现液体混合的自动控制。当按下启动按钮后,液体阀A 打开,液体A流入搅拌机里面。当液位达到中限位时阀A关闭,同时打开液体阀B,液体B流入搅拌机里面。当液位达到上限位时,阀B关闭,此时启动电动机进行搅拌。搅拌一分钟后电动机停止同时阀门C打开,混合液体流出。当液位到达下限位时再过5S容器放空,关闭阀门C。同时打开阀门A,注入液体A。如此周期性的循环。若按下停止按钮后必须要等一个周期循环完后才停止。
I/O分配表
梯形图编程
PLC接线图
程序调试及结果分析
当按下在线控制面板上的I0.03f 即(I0.3闭合)阀A打开(即Q0.0亮),当按下在线控制面板上I0.0f(即I0.0中限位闭合)阀A关闭,阀B打开(即Q0.0灭,Q0.1 亮)当按下在线控制面板上I0.1f(即上限位I0.1闭合)此时阀B关闭,电动机启动开始进行搅拌,(即Q0.1灭,Q0.2亮)同时定时器T37开始定时一分钟,一分钟后搅拌机停止搅拌,阀C打开(即Q0.2灭,Q0.3亮)当液位到达下限位后阀C继续打开(即Q0.3亮)同时定时器T38开始定时。5s后阀C关闭。阀A打开,(即Q0.3灭,Q0.0亮),进入下一个循环周期。按下在线控制面板上的I0.4f(即表示停止的I0.4闭合)此时系统不会立即停止,而是当运行完一个周期后才停止。
相关问答
PLC控制里的定时器指令TOF和TON怎么转换?
AB的吗?TON是延时导通计时器,TOF是延时断开计时器。如果你要改得话双击就可以了。或者右键点击ChangeInstructionType用法一样的你还可以改DN。AB的吗?TON...
西门子1500plc编程指令?
西门子1500PLC编程指令包括但不限于以下几种:LD指令用于加载数据,AND指令用于逻辑与运算,OR指令用于逻辑或运算,XOR指令用于逻辑异或运算,MOV指令用于数据...
三菱plc说明书?
三菱PLC提供了多种定时器指令,包括TON和TOF。以下是这两个指令的详细说明:TON指令:TON指令常用于模拟定时器,如果在指定的时间内输入ON,指令输出ON。如果...
plclong如何转换浮点数?
在PLC编程中,如果需要将一个长整型数(Long)转换为浮点数(Float),可以使用相应的转换函数。不同的PLC编程语言和平台可能具有不同的函数名称和语法,以下是...
三菱时间指令编程方法?
三菱时间指令是指三菱PLC(可编程逻辑控制器)中的一种指令,用于实现定时器、计数器等功能。下面是三菱时间指令的编程方法:1.确定定时器或计数器的类型:...
ton指令如何定时?
要让ton指令定时执行,可以使用操作系统提供的定时器功能,或者使用编程语言中的定时器库。在定时器回调函数中调用需要执行的ton指令即可。定时器的设置可以根...
plc定时器定义?
PLC定时器是程序可编程控制器中的一个功能模块,用于控制某个事件或操作在特定时间间隔内执行或停止。它一般包含计时器值、设定值、当前时间等参数。PLC定时器...
西门子plc定时器的三种类型分别是什么?
西门子200系列的PLC定时器有三种,分别是:1、TON,延时接通定时器。2、TONR,掉电保护延时接通定时器。3、TOF,断开延时定时器。定时器是对时间间隔计数。...
plc定时器T37和T38是特殊情况?
定时器类型分辨率最大值定时器号码TONR1毫秒32.767秒T0,T6410毫...定时器类型分辨率最大值...
样品跑UPLC有色谱峰但是对应的总离子流图却没有峰-盖德问答-...
样品极性是否容易离子化?样品的性质适合正谱还是负谱?tryagain1、是否离子化2、全扫的话,浓度是否足够多谢各位老师回复,样品正负离子模式都做过...