回复:1500 FB 优化访问块,然后DB块是非优化访问块。大量使用IN/OUT接口、通过HMI赋值,经常出现赋值失败的现象

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23139
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-11-20 20:50:10

11楼

展开查看
以下是引用万泉河在2022-11-20 19:00:14的发言 >10楼

我认为没必要分开。 

反而更应该尽量混在一起,即对于传送到HMI的数据,都可以统一作为INOUT来对待。 哪怕是OUTPUT。


而最终如果HMI选择只读, 那它在PLC侧就完全相当于OUTPUT。


为每一个设备接口设计2个UDT甚至3个, 是不可接受的。 


以下是引用宝冬在2022-11-20 13:43:06的发言 >8楼:PLC与任何上位UI...

引用8楼详细内容:

PLC与任何上位UI或第三方节点交流,都要读写变量分开设计。

读变量是单向的。写变量是双向的,PLC可以向所有的UI刷新,任意UI可以向PLC写入。

所以关于写变量,要给PLC侧和UI侧各保留一个缓冲区。任何一侧有变化,都要把对侧一并覆盖。如果不想给任意UI的第三方设计添加额外约束,需要给每个上位节点保留一个UI侧缓冲区。这是可选项。

比如:PLC侧写缓冲区(简称P)只能有一个,而上位侧写缓冲区有10个(简称U1到U10,因为总共有10个触摸屏或上位机或云或其它节点)。P发生变化要把U1到U10全部刷新,U1的变化要把P和U2到U10全部刷新。一般来说,U侧在同一时间,只能有一个具有写入权。

这和优化存储无关。但如果要和任意第三方节点交互(非西门子上位UI,云等),就得用标准兼容存储。

以上意味着:所有的PLC内外交流,都要经特定的DB往来,类似PLC与外部接口的意思。




楼主说的是:

来自HMI的各变量做成一个UDT数据类型(其中包括HMI的“按钮”之类的输入项)放在一个全局数据块DB10中,通过INOUT 接口传送到FB中。

这里会发生一个问题:

因为HMI的操作与FB在程序中的执行是异步的。在FB执行期间,发生了HMI对DB10中UDT中的置位。而FB的INOUT接口是复制到背景数据块中的操作。完成之后,通过INOUT又复制给DB10的UDT(覆盖)了。造成HMI对那几个置位的“丢失”!

(当INOUT接口使用的是指针时,将直接操作DB10的UDT,而不是复制。不同的PLC还不一样。)

学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10569条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。