回复:不使用UDT的设备FB封装---ModbusRTU通信的温控器的例子

已锁定

Zane

版主 西门子1847工业学习平台

  • 帖子

    21456
  • 精华

    403
  • 被关注

    1507

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2020-07-23 00:26:14

16楼

      本来想专门写篇文章来说明UDT的使用,因为发展到现在,对IO的直接访问也可以使用UDT了,我想今后的博途版本还会赋予UDT更多的灵活性与应用场景的,今天先简单的说一下。


主要的依据是出自于手册《 Programming Styleguide for S7-1200/1500 》 的第3.6.4节与第3.6.5节


在编程中使用结构化数据已然成为博途编程的一种大的趋势,这一点是毋庸置疑的。


结构化数据在博途中存在两种形式,一种是STRUCT(结构变量),另一种是UDT(PLC数据类型),显然后者的层面要远高于前者。STRUCT是无法全局存在的,但UDT可以,基于此两者之间的应用就产生了很大的差别。


首先,STRUCT每一个FB/FC/DB中的使用都是新建,虽然可以拷贝,但仍旧属于新建范畴,而UDT是直接的引用;

其次,如果多个FB/FC/DB使用了相同定义的STRUCT,一旦发生修改的需求,就需要逐一到调用的FB/FC/DB中去修改,大项目中调用众多,容易发生遗漏;而UDT则是集中更改,全局自动更新。


结构化数据的使用,一定会涉及到数据的传递,既然是数据传递,就一定有数据传递的双方,也即是说同样的结构数据一定会被使用两次以上;如果是STRUCT则使用多少次,我就要定义多少次,同样发生修改的话,就需要修改多少次;而 UDT则只要定义一次,多次的引用即可,修改也是只要修改一次,自动全部更新。


第三,UDT可以添加到全局库中,实现项目间的重复使用,STRUCT则无法实现;当然,有人会说FB/FC/DB都是可以添加到全局库的,STRUCT在这些块里面,就不用再去操心了,但这只是应用的一个方面而已,实际应用还存在很多其他的可能性,比如功能完全不同的多个块,共同需要使用同一个结构数据。

所以我说,UDT解决的是一个结构变量的重复定义的问题,同时也解决了重复修改的问题,其使用效率要远高于STRUCT




Zane 注册自动化系统工程师 Always save before download
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15641条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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