关于在OB40中用PQB快速输出

在其他问题中看到阿鸣工程师写的
L 2#0000 0001
T PQB0
就可以实现快速输出。但是如何保存原来已输出的位,我试了很多,就是不行

问题补充:
NW1: 
     A     L      8.0
      JNB   _001
      L     QB     0
      T     MB    10
_001: NOP   0
      A     L      8.0
      X     M     10.0
      =     M     10.0
NW2:
      A     L      8.0
      JNB   _002
      L     MB    10
      T     PQB    0
_002: NOP   0

此程序写在OB40里,L8.0为读取的I0.0的中断点,用于I0.0输入时,切换输出Q0.0。我做简单的程序的时候可以输出PQB0
但是这样写程序时 无法切换 Q0.0

程序只是试验性的。目的只是在进入中断后,切换Q0.0这个输出点,而保持Q0.1-Q0.7原来的状态

最佳答案

但是如何保存原来已输出的位?
1、PQxx是过程通道,在不断的更新,所以不能保存在某个时刻的值,为了如何保存原来已输出的位需要建立一个中间单元来保存。例如下述的MB10。
2、建立一个中间单元来保存,程序可以这样写:
L 2#0000 0001
T PQB0
T MB10
2、问题补充:
我做简单的程序的时候可以输出PQB0 。但是这样写程序时 无法切换 Q0.0程序只是试验性的。目的只是在进入中断后,切换Q0.0这个输出点,而保持Q0.1-Q0.7原来的状态......?
、注意,PQB0与Q0.1-Q0.7不是一回事!!!
、PQB0是过程通道,其不在内存映像区,而QB0是在内存映像区。Q0.1-Q0.7与QB0是一回事!!!
、在程序中对于PQB0写入必须以字节为单位,不能以位写入!
、建议楼主弄清PQB0与QB0的区别!

提问者对于答案的评价:
A     L      8.2
      JNB   _001
      L     QB     0
      T     MB    10
      A     L      8.2
      X     M     10.2
      =     M     10.2
      L     MB    10
      T     PQB    0
_001: NOP   0
这段程序可以实现我所说的功能。可以通过I0.0的切换Q0.2的输出转换。其他位本森就需要输出印象区的状态就够了。
多问一句,对于PQB的直接输出,这些输出点在CPU本体上,和在DO模块上,功能一样,速度一样吗?

最佳答案作者回复:
PQB是直接输出不受扫描周期的限制,一般用于模拟量信号的输出。QB0输出的更新受扫描周期的限制,即每个扫描周期输出映像区刷新一次。

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

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

相关推荐