当前位置: 主页 > PLC控制

如何同时将多个不连续的类似DB1.DBX0.0,DB4.DBX1.2…中的值送给外部数字输出地址

如何同时将多个不连续类似DB1.DBX0.0,DB4.DBX1.2…中的值送给外部数字输出地址,如何读取外部地址中的值送给类似DB1.DBX0.0,DB4.DBX1.2中
现在的发送指令类似于ADB1.DBX0.0,
=Q16.0;ADB4.DBX1.2,=Q16.1…(8条A和=),读取指令是AI21.0,=DB9.DBX4.2,这样对吗?

问题补充:
同时在多个网络用到ADB1.DBX0.0,ADB4.DBX1.2…这样做,会不会使得数据都堆积到了A指令以后的累加器当中,如果使用LDB1.DBX0.0,TQ16.0代替ADB1.DBX0.0,=Q16.0,A和=指令与L和T指令在这里有什么区别吗?A以后数据去哪了,L以后数据去哪了?

最佳答案

由于地址不连续,不适合集中传送
你写的这样比较合适。

补充你新的问题:
A指令等位指令执行的结果是影响RLO。=指令,你可以理解为把RLO的结果赋值给线圈。
而L指令是将值装载进累加器,L指令是不允许装载位的,所以LDB1.DBX0.0是不被允许的。
同一时刻,也只存在一个RLO和累加器1,它们的值被改变,但没有额外存储,所以不存在堆积的问题。
注意的是,L指令的含义是:“在将累加器1的原有内容保存到累加器2中,并将累加器1复位到“0”后,L<地址>会将被寻址的字节、字或双字装载到累加器1中。”

提问者对于答案的评价:
谢谢!我同时写了8条A和=,这8条指令负责传递DB中的一位到外部输出地址,他们会同时执行的吗?

最佳答案作者回复:
程序是从上往下执行。由于程序执行结束才将输出过程映像区输出到模块,对于外部输出而言,相当于同时输出。

  • 关注微信

猜你喜欢

微信公众号