签到有奖
消息提醒
运维工程师专区
官方商城
最近创作
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
帖子
精华
被关注
论坛等级:侠士
注册时间:2015-12-17
钻石 如何晋级?
1528
5
2021-12-13 16:08:05
最近做个小项目,1200带10个变频器,采用MODBUS通信方式,由于每个变频器除控制起停以外,还要读取,电压、电流、状态等参数,因此数据量也不小,而MODBUS通信只能做轮询,所以写参数的时候会有延迟,轮询时间超过1S估计客户很难接受,所以考虑尽可能缩短轮询时间,从网上查了一些资料,总结一下思路吧。
采用类似于步进的方式,用MB_COMM_LOAD的done引脚作为开始步进标志位,利用MB_COMM_MASTER的done和error引脚做步进标志。
在第1条轮询的基础上,采用读或写连续地址,减少master功能块的数量,此种方法受功能码的限制,以本次项目为例说明,本项目控制的变频器,写报文为06H功能码,读为03H功能码(据了解设备厂家很少支持所有的功能码,可能跟芯片价格有关,再者编程工作量也比较大),06H功能码数据长度为1个WORD不能写到连续多个地址,03H可以读多个连续地址,写的不可避免要增加工作量。
利用FB多重背景和间接寻址来做,将MB通信块放入FB选择多重背景,LOAD功能块可以建立常量,MASTER功能块引脚MB_ADDR、MODE、DATA_ADDR、DATA_LEN、DATA_PTR分别建立到STRUCT数组里面,利用数组索引,给这些参数赋不同的值,从而读或写MB数据,本次项目中DATA_PTR长度不同,STRUCT数组是统一的数据长度,定义接收数据长度时,我按我需要的最长4个WORD定义的,由于写只能是1WORD所以可能会有问题,后来实测我只写到第一个WORD即可写过去,不知道这样做会不会有问题,目前运行正常。
利用串口服务器或者类似设备转为TCP通信,串口服务器据说可以自动轮询,效果无法用数据表达,数据量大有条件可以使用。
剩余80%未阅读, 请登录阅读
请填写推广理由:
AI 小西智伴登场,7×24 小时权威支援,让技术支持告别等待!
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有3364条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!