回复:关于UDT和FB的优缺点

已锁定

xiatianyun

  • 帖子

    850
  • 精华

    10
  • 被关注

    25

论坛等级:奇侠

注册时间:2020-05-09

钻石 钻石 如何晋级?

发布于 2023-08-31 15:51:46

20楼

一切界面交互都从IO走,这个确实是最正确的做法。

不过,从IO走不也需要一个变量或DB支持嘛。换个想法,IDB也是DB,干嘛费劲另外设计个通讯DB呢?

当然,从静态数据直接通讯会有些问题,就是通讯如果是背景通讯,会在扫描程序中间更新通讯数据,这样交互的数据就不能保持在整个扫描阶段不变了,这个会带来逻辑处理的一些问题。

我是这么处理的,底层模块FB1完全采用传统方式,没有涉及任何通讯之类的东西,完全只是实现控制逻辑,所有需要传递的数据从FB1的IO来。FB2作为上层模块静态有个FB1实例,FB2的IO传递外界的现场信号之类,FB2的静态设计和HMI交互的通讯数据,然后组装调用FB1实例。

好像西门子的LBP也是通讯从静态数据走。只不过LBP底层模块就乱七八糟的包括了所有东西。

和HMI通讯时,HMI的数据格式就是:FB2实例.HMI数据.具体数据。

这个目前来看也比较简洁。

当然,博途支持IO不用建立实参的调用方式,在所有交互走IO的情况下也可以不另外设计接口DB。

---------------------

另外,宝冬说的IDB中为什么Temp无法访问,那是因为IDB中根本就没有Temp。

高级语言中的Static和博途FB中的Static不是一回事,反而和Codesys的Static是一回事。

CodeSys的FB的Static指的是所有该类型FB实例的公共静态数据,只在第一次调用FB创建并为所有该类型实例共享。而博途FB的Static在CodeSys中对应的是VAR变量,私有数据区。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15112条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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