签到有奖
消息提醒
运维工程师专区
官方商城
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
帖子
精华
被关注
论坛等级:奇侠
注册时间:2009-05-19
钻石 如何晋级?
2062
8
2021-03-12 21:59:02
2019年编程的时候开发了一些设备专用的FB程序块,为了跟上位通讯方便,我将所有HMI需要读写的数据做成UDT数据结构,然后在FB的IN-OUT接口调用,这样就可以把HMI数据整合到几个DB中专门供HMI使用。当年在调试时发现程序跑起来非常吃力,315-2DP(2AG10老型号)循环扫描时间有的达到了100ms以上。后来研究发现是在IN-OUT接口里使用UDT类型数据造成的,每引用一次UDT里的变量,程序就大40字节。猜测是因为IN-OUT接口使用UDT类型时,在FB背景数据只保存变量指针,每次在FB中访问UDT数据接口都会增加FB的数据缓存空间。当年在论坛也讨论过http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1595467&b_id=4&s_id=23&num=8#anch
后来发现如果UDT数据放在IN或OUT接口就没有这个问题,把原来位于IN-OUT接口的UDT数据结构按照上位机读和写的操作分成2个UDT数据结构放到IN和OUT接口区,生成的FB比原来占用的工作存储器小了很多。前几天把2019年做的实际项目程序按照以上的办法优化后再下载,发现效果非常明显,见下图,优化前PLC的存储器和扫描时间如下:
优化后存储器和扫描时间如下:
工作存储器占用是原来的三分之二,循环时间是原来的二分之一,从100多毫秒降到40多毫秒。
从以上例子可以发现UDT数据结构放在IN-OUT接口调用虽然方便,但是也带来了额外的负担,如果一定要在IN-OUT接口里使用UDT数据结构最好在FB程序里尽量减少调用频次。
剩余80%未阅读, 请登录阅读
请填写推广理由:
【春日季 · 黄金3月】拓展你的工控“技能库”,喜提春日宝箱!
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有54030条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录