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

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

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