恭喜,你发布的帖子
发布于 2022-11-20 20:50:10
11楼
我认为没必要分开。
反而更应该尽量混在一起,即对于传送到HMI的数据,都可以统一作为INOUT来对待。 哪怕是OUTPUT。
而最终如果HMI选择只读, 那它在PLC侧就完全相当于OUTPUT。
为每一个设备接口设计2个UDT甚至3个, 是不可接受的。
楼主说的是:
来自HMI的各变量做成一个UDT数据类型(其中包括HMI的“按钮”之类的输入项)放在一个全局数据块DB10中,通过INOUT 接口传送到FB中。
这里会发生一个问题:
因为HMI的操作与FB在程序中的执行是异步的。在FB执行期间,发生了HMI对DB10中UDT中的置位。而FB的INOUT接口是复制到背景数据块中的操作。完成之后,通过INOUT又复制给DB10的UDT(覆盖)了。造成HMI对那几个置位的“丢失”!
(当INOUT接口使用的是指针时,将直接操作DB10的UDT,而不是复制。不同的PLC还不一样。)
请填写推广理由:
分享
只看
楼主