登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:CASE指令里面不能用定时器?真相了。

点击:3154 回复:6

    在西家论坛里闲逛,看到一个帖子,小白问:我在CASE指令里面用了
    定时器,定时器不运行,也不能下一步。
    然后就有大神说:CASE里面不能用定时器,因为不扫描。
    还有大神说:你把定时器放在CASE外面,CASE里面使能定时器,把
    定时器的Q输出再传进CASE里面。。(我觉得这个方法不错)
    这引起了我的好奇心,干脆来验证一下。
    先建立个DB块,多来几个定时器:如图
   
附件 01.jpg
    然后写了个CASE,时间到,传送步号,结果。。。。不是定时器不工作,
    而是只要一旦使能定时器,定时器全部为“TRUE”就算断开定时器的“IN”
    也是一样,查看定时器DB,如图:
   
附件 03.jpg
    各种折腾,直接说结果:要复位定时器!如图:
   
附件 022.jpg
    由于是实验,我只写两步:第一步,本体输出Q0亮一秒,
                        第二部,本体输出Q1亮一秒,重复。
    加了复位定时器之后,在查看定时器DB,到哪一步哪个定时器计时。如图:
   
附件 04.jpg
    最后打个招呼 :本论坛有大仙说;好的程序不应该有T,M。我还没到那种你境界。
                 如果本帖子污了你的眼,自己滴眼药水,在此先说声抱歉。
最后修改:2020/2/20 8:14:13
20-02-19 12:52
自己实践了,才是自己的经验。我也是在CASE里用定时器,好好的步进控制。那些说不能的,可能是自己的跳转没有控制好。表情
20-02-19 13:41
  不是不可以用,用当然可以用!
   只是我们在做程序时,各种方法都可以的时候,就要考虑哪种方法更好,更防错。
   你这程序中只是两步,只是两个定时器。一旦步数多了,各种定时器多了,各种不同的步之间跳的复杂性多了,就很难保证不出错。
   只要解决了当跳出当前步,那么 当前步所用的定时器能够复位,那么就可以用。如果没有把握,就把它拿出来放在步外面,也是可以的。
20-02-19 17:02
自己的问题啊。。。
IEC_TIMER不要用在CASE 或者IF里面!!!
然后问题就解决了
20-02-20 14:52
不用定时器肯定不行,实际设备动作与动作之间需要有时间间隔的.
24-05-23 14:46
之前也想过调试过,包括汇川的EASY,ST下面用CASE
汇川EASY试过,定时器的Q输出和R端关联,下次再次循环到这里的时候就会先复位这个定时器。
~~~~~~~~~~~~
其实,后来我琢磨了一下,可以这样搞,、、
程序开头调用FB_TIMER();
(我感觉可以自己写一个FB,官方那个不知道行不行)
CASE下面
1
2
3
4
1的时候FB_TIMER.IN:=TRUE PT:=XXX
2的时候,FB_TIMER.IN:=FALSE;
以此类推,感觉是可以的。但是实际上没用过表情
24-05-24 21:34
分析的很棒,明确了知识的正确性。楼主的这种对知识的探索精神,值得学习。
这个分析纠正了我、并让我收益匪浅
24-06-03 14:37

工控新闻

更多新闻资讯