指针编程,本来要依次循环28组阀门,现在却是28组阀门同时动作,困惑。

正在利用指针来编一部分程序,要求按时间顺序依次动作28组阀门,第一组阀门执行完成后全部复位,开始执行第二组阀门,28组阀门全部执行完成后再重新从第一组开始循环,每组有三个阀门,在默认状态下所有阀门都是复位状态,开始动作其中一组阀门,F1.F2.F3,首先F1F2先置位,经过一定时间后F3置位,一定时间后F3复位,一定时间后F2复位,一定时间后F1复位,然后再执行一遍,第一组阀门执行完毕,开始执行第二组,程序中没有用到定时器,在ob35中做了一个脉冲计数,来计算时间,如下程序中,没有按照设想一组一组顺序执行,而是所有阀门同时执行,不知道错在哪,劳烦指点一下。谢谢各位了。
    OPN   "xin_QH"
      L     P#0.0
      LAR1  
      L     P#32.0
      LAR2  
      L     2
net1: T     MW    22
      A(    
      L     DBW [AR2,P#0.0]
      L     0
      ==I   
      )     
      S     Q [AR1,P#0.0]
      S     Q [AR1,P#0.1]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    42
      ==I   
      )     
      S     Q [AR1,P#0.2]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    44
      ==I   
      )     
      R     Q [AR1,P#0.2]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    46
      ==I   
      )     
      R     Q [AR1,P#0.1]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    48
      ==I   
      )     
      R     Q [AR1,P#0.0]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    50
      ==I   
      )     
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    52
      ==I   
      )     
      S     Q [AR1,P#0.0]
      S     Q [AR1,P#0.1]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    54
      ==I   
      )     
      S     Q [AR1,P#0.2]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    56
      ==I   
      )     
      R     Q [AR1,P#0.2]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    58
      ==I   
      )     
      R     Q [AR1,P#0.1]
      A(    
      L     DBW [AR2,P#0.0]
      L     MW    60
      ==I   
      )     
      R     Q [AR1,P#0.0]
      +AR1  P#0.3
      +AR2  P#2.0
      L     MW    22
      LOOP  net1
      JU    net2
net2: NOP   0
f005: NOP   0

程序中mw存储器中是不同阶段累计时间计数,是固定的,在HMI中设定的。

问题补充:
搞混了DBW才是脉冲计数,MW中就是设定值,与DBW中进行比较,循环设置值应该是28,不是2,2是自己刚才测试的。DBW中的计数值在进行完一组阀门后就清零。

最佳答案

你搞错了,loop和计时执行后面的程序根本不是一回事,loop是在在一个扫描周期内多次循环知道满足跳出条件,实际你要的应该是多个扫描周期后执行开后面的阀。这根本用不到指针操作。
      你可以编一个程序块:在默认状态下所有阀门都是复位状态,开始动作其中一组阀门,F1.F2.F3,首先F1F2先置位,经过一定时间后F3置位,一定时间后F3复位,一定时间后F2复位,一定时间后F1复位,然后再执行一遍。
       这个块包含启动结束标志位,如果启动为1则开始执行你的程序最后置位结束标志位。然后多次调用这个块,启动标志就是前一个块的结束;再最后一次调用的结束标志为1后,复位所有的结束标志位,置位第一次调用的启动标志。

提问者对于答案的评价:
谢谢两位的回答,如何设置一个块的启动和完成标志?

最佳答案作者回复:
启动标志是输入信号呀!是外部给的,完成标志是输出信号。你用一个形参start,程序中判断start为1则启动,外部给start赋值,连接上一个功能块的完成标志位。第一个功能块手动自动,最后一个功能块完成后复位所有完成位,置位第一个功能块的启动位,这样就实现了循环。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc232034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午5:32
下一篇 2018年12月1日 上午5:32

相关推荐