回复:引用了UDT的数据块DB,在UDT修改之后如何更新DB呢?

刹那之间

  • 帖子

    222
  • 精华

    1
  • 被关注

    4

论坛等级:游侠

注册时间:2011-08-18

普通 普通 如何晋级?

发布于 2011-10-24 21:01:26

19楼

关于DB与UDT问题:
1、当‘只’改变UDT的初值,则在打开DB后,DB中的对应数据的初值会自动更新,此时执行“用初值覆盖实际值”即可;但是,当程序中有受保护的块时,若更改了UDT中的初值,在打开DB时,虽然DB中对应的数据初值自动更新,但是只要一执行“保存”命令就会弹出“存储器溢出”对话框。
2、当‘只’改变UDT中的名称时,结果与上述相同;当有受保护的块时,也会弹出“存储器溢出”对话框。3、当改变UDT的数据结构时,如类型改变,即UDT占用字节空间大小更改,则保存UDT并关闭后,打开DB,则DB中的Struct……END_STRUCT之间又出现了一个Struct……END_STRUCT(不知有何作用)。只
要一点击“保存”就会出错,弹出“类型冲突”对话框,再点击就一直弹出“句柄无效”对话框。之后不保存关闭DB,则再也打不开DB了,双击DB会弹出“类型冲突,无法打开块”。若在修改UDT并保存关闭后,执行“检查块的一致性”,会发现DB有标红,此时编译DB,无错,但DB却打不开了。
对于平常的使用我采用以下做法:
1.在DB中定义UDT类型的数据时,留出一定的地址空间以备用;
2.当UDT改变时,若地址占用空间大小不变,则可删除DB中对应的UDT,再在同一位置定义相同的UDT(当然,不弹出“存储器溢出”就不用删);若UDT占用空间大小改变(对程序有影响),且弹出“存储器溢出”,则我只能删除DB,重新建DB。
关于以上,我用V5.5中文版,程序中有调用受保护的块(不知道如何去除保护,像FC105应该是受保护的块吧); 可能是我电脑问题,或是个人水平问题、或是软件我没有安装好,总之我不会解决,望高手们不吝指点,本人虚心以受。
如果你认为是对的事情,就要勇敢地去尝试;如果不去尝试,又怎么会知道结果呢?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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