fczxjh
级别: 家园常客
精华主题: 0
发帖数量: 372 个
工控威望: 777 点
下载积分: 2538 分
在线时间: 179(小时)
注册时间: 2019-07-15
最后登录: 2025-04-08
查看fczxjh的 主题 / 回贴
楼主  发表于: 昨天
如题。在FB1中写动作,FB2多重调用FB1,用DB2作为FB2的多重背景数据块,OB1调用FB2时,

是否应该像博图一样创建一个新的数据块,但好像依旧用DB2也没有报错

章先生
级别: 探索解密
精华主题: 0
发帖数量: 106 个
工控威望: 141 点
下载积分: 1696 分
在线时间: 75(小时)
注册时间: 2024-11-22
最后登录: 2025-04-07
查看章先生的 主题 / 回贴
1楼  发表于: 昨天
正常来说肯定是要新建数据块的,2个FB的数据存储在一个DB块,那你读取的是哪个FB的数据,
这个就和双线圈是一样的,你可以写,也许没有报错,不一定可以正常使用
本帖最近评分记录:
  • 下载积分:+1(fczxjh) 真诚感谢!
    sunzengli
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 747 个
    工控威望: 1128 点
    下载积分: 1685 分
    在线时间: 245(小时)
    注册时间: 2021-07-09
    最后登录: 2025-04-08
    查看sunzengli的 主题 / 回贴
    2楼  发表于: 昨天
    可以是可以,但没必要。
    数据冲突问题:由于两个功能块共用一个背景数据块,若在编程时不小心,可能会出现数据覆盖或冲突的情况。例如,FB1和FB2都对背景数据块中的同一个变量进行写操作,就可能导致数据不一致。因此,在设计功能块和分配背景数据块的存储区域时,要确保每个功能块使用独立的变量区域。
    程序可读性和维护性:共用背景数据块会使程序的逻辑变得复杂,降低程序的可读性和维护性。在后期维护和调试时,可能难以分清每个功能块对背景数据块的操作。所以,在实际应用中,除非有特殊需求,一般建议为每个功能块单独创建背景数据块。
    本帖最近评分记录:
  • 下载积分:+1(fczxjh) 真诚感谢!
    fczxjh
    级别: 家园常客
    精华主题: 0
    发帖数量: 372 个
    工控威望: 777 点
    下载积分: 2538 分
    在线时间: 179(小时)
    注册时间: 2019-07-15
    最后登录: 2025-04-08
    查看fczxjh的 主题 / 回贴
    3楼  发表于: 昨天
    后面又测试了下,实际上使用还是新建一个DB块为好。

    如果FB2不用新的标签,DB3块(OB1调用FB2时新建)和DB2(FB2的多重背景数据块)的内容是一样的,

    但是当FB2新增了标签,如加了一个引脚,那这个标签会寄存在DB3内,而DB2内没有。

    也就是说如果FB2作为FC使用,则不需要建立数据块,如果FB2作为FB使用自身是没有背景数据块的,

    多重背景数据块只存放FB2内重复使用的FB的背景数据块。

    如果把OB1的FB2调用回DB2,那DB2会加入FB2所添加的引脚

    虽然看起来结果一样,但多个FB用一个数据块还是有未可知的风险,初次用还是像博图一样新建好了,不会出问题
    [ 此帖被fczxjh在2025-04-07 17:58重新编辑 ]