17838383235
6SL3210-5FE10-8UF0现货西门子代理
西门子: V90
驱动器: 6SL3210-5FE10-8UF0
德国: 400V,0.75KW(PN)
报价: 面议
最小起订: 1
有效期至: 长期有效
发布时间: 2024-05-21 03:19
发布IP: 175.13.200.46
浏览次数: 27
手机号: 17838383235
在线咨询: 点击这里给我发消息
17838383235
详细信息

博图中的定时器你真的会用吗?关于西门子PLC编程软件TIA中使用IEC定时器的陷阱



目录



1 概述

2 编写测试程序

3 测试结果

4 总结


正文



1 概述
在博图中,IEC定时器有多种,分别为TP生成脉冲、TON接通延时、TOF关断延时、TONR时间累加器。编程中,大家常用的是TON接通延时定时器。
很长时间以来,无论是网友还是身边的同事朋友,常常遇到使用定时器时程序没有按照预期运行,又找不到原因,故而认为是指令或PLC存在BUG。虽然博图帮助中对定时器的使用讲解的非常详细,但是仍有一些细节没有清晰的呈现出来。
笔者在编程中,也是经常使用定时器,但从未遇到所谓的BUG。因为,在很久以前,笔者就详读了帮助,并对帮助中的描述也产生了疑惑,但并没有放过拦路虎,而是编程进行了各种各样的探索。
下面针对TON接通延时定时器,列举一些场景,相信对各位会大有帮助。
2 编写测试程序
笔者使用TIA V19和PLCSIM V19,建立S7-1500项目,并用PLCSIM Advanced 6.0进行PLC的仿真。

新建名为TestTimer的FB块,并在Main中调用,并产生其背景数据块InstTimerTest。


打开TestTimer块,在Static区域建立如下静态变量,注意sSetPT的初值为T#30s。


在代码编辑区域,编写如下代码。

























(*    测试IEC定时器TON*)
//调用定时器,P1IF #sIsCall THEN    #instTimer.TON(IN := #sIsEnable,                   PT := #sSetPT);END_IF;
//访问定时器的Q,P2IF # THEN    IF # THEN        RESET_TIMER(#instTimer);    END_IF;END_IF;
//访问定时器的ET,P3IF #sIsReadET THEN    IF #instTimer.ET >= t#20s THEN        RESET_TIMER(#instTimer);    END_IF;END_IF;
3 测试结果

下载程序至仿真PLC并打开InstTimerTest背景数据块,进行在线监测。以下PLC初始运行的状态我们定义为初始状态,以下场景都从初始状态开始。


(1)场景1
初始状态时,先将和sIsReadET至少一个置1,再将sIsCall、sIsEnable分别置1,即调用并启动定时器,程序则按照编写逻辑运行。

  • 若仅置1,则定时器计时30s输出Q,P2中程序复位定时器,定时器重新计时。

  • 若仅sIsReadET置1,则定时器计时20s,P3中程序复位定时器,定时器重新计时。

  • 若和sIsReadET都置1,则定时器计时20s被P3程序复位后重新计时。

  • 当sIsCall为1,sIsEnable由1变0时,定时器复位。

此场景下,定时器正常工作,可以看到ET值一直在刷新变化,按照程序逻辑正常执行。

  

(2)场景2

初始状态时,和sIsReadET都不置1,将sIsCall、sIsEnable分别置1,即调用并启动定时器,此时ET值没有刷新变化,一直保持为0。

  

大约等待10s后,将和sIsReadET至少一个置1,可以看到ET立即刷新为10s左右的计时值。

若等待到30s以后再将和sIsReadET至少一个置1,那么计时器将重新计时,因为程序中的Q和ET立即刷新,Q输出且ET大于30s,计时器被P2(3)程序复位了。
场景2结论:即使未访问Q或ET,只要TON被调用并激活,其内部参数也计时了,只不过外部并没有刷新而已,也就是说P2(3)程序不会执行。一旦Q或ET其中一个被访问,那么Q和ET会立即被刷新为实际值。
(3)场景3

初始状态时,先将和sIsReadET至少一个置1,再将sIsCall、sIsEnable分别置1,即调用并启动定时器。在ET为5s左右时,复位和sIsReadET,发现ET不再刷新,停留在为复位和sIsReadET时的值。

  

等待大约10s以后,再将和sIsReadET至少一个置1,发现ET值为15s左右。

  

场景3验证了场景2得出的结论。
(4)场景4
初始状态时,先将和sIsReadET至少一个置1,再将sIsCall、sIsEnable分别置1,即调用并启动定时器。
在ET为5s左右时,sIsEnable保持为1,将sIsCall复位,发现ET仍然刷新,到达指定时间时,P2(3)会复位定时器。
即使将sIsCall再次置1,也不影响定时器的计时,即ET继续从当前值计时,不会从0开始。

若在sIsCall被复位期间,sIsEnable也被复位,仍不影响定时器的计时,因为在TON指令未被调用时,IN的状态不会再随连接变量的变化而变化,下图IN仍然为sIsCall复位前的状态TRUE。只要在sIsCall再次被置1前将sIsEnable置1都不不影响定时器的计时。

  

场景4结论:当TON指令的IN检测到由1变0时,定时器会复位;当IN检测到由0变1时,定时器开始计时。另外要注意,TON指令未被调用时,IN的状态不会随连接变量的变化而变化,IN的状态会保持在取消调用前的那一刻的状态,直达TON被重新调用,IN才会更新。
4 总结
结论其实和博图帮助中的说明是一致的,只不过博图仅是文字说明,且是英译,并没有举例,所以看起来有点费解。在阅读本文后再重读博图的帮助,你是否有一种豁然开朗的感觉?
END



相关产品
相关西门子产品
联系方式
  • 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
  • 手机:17838383235
  • 联系人:徐嘉泉
产品分类
最新发布
企业新闻
站内搜索