签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
我一直采用轮询方式进行的modbus RTU 的通信,但偶然还是会发现出现通信阻塞的情况,很是奇怪。我现在提供源程序,请大家指点一二!
谢谢!
2034 常规-41300-SR30.rar
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1764099&b_id=64&s_id=0&num=8
对于出现 通信阻塞应该是同时调用了二次 MBUS_MSG指令,但我看了一下程序,只有一个令牌在轮询呀
程序没看,有没有情况是正在msg通讯中期间改变过DataPtr所指的地方的所有值。如果通讯期间它发现你改过这个区域的值,也会报6。起码你知道plc在发送,你不可以去改人家正在用的东西吧。
如果不是这个问题,那么你可以加程序让plc自我监视出事时候的一些有关值是多少。阻塞的意思是停留在一个状态过不去,还是全部没有了状态?
没有打开楼主的程序,是打不开。凡是这个网站回帖所带的压缩文件都打不开,不知道什么原因。
不过还是建议你使用9600波特率,不要片面追求高波特率,原因有二。
1. 大量的仪表或者设备,为了降低成本,使用便宜的通讯IC,支持的波特率上限名义上可以支持19200波特率,但那是理想化。你的通讯设施完全符合规定了吗?使用高波特率,你在实施过程稍微有一点“大路--不严格”,就给你好看。
2. 这种性价比高的PLC,应对高波特率的能力有限,当然应对19200还是可以。它处处提醒你通讯要求,你没有领会到什么?你完全按要求做了吗?
不要片面追求波特率。
"阻塞"就意味着整个通信网络都停顿了,需要人为干涉!
关键这样,出现几率很小,不容易重复出现,我只好在程序中加以检测,出现这样情况就中断通信10s后重新启用。
你现在是要检测为什么停。而不是让他再次起动。是吧?
难道下次也让他再次起动了事?
我想问的是什么原因不能继续通讯。是……这么说吧,是灯烧了还是开关不通,所以灯没亮。我现在是看见灯没亮。我也知道你通讯停了。
看程序是可以得到答案,但是这程序也不少东西,能有个方向,看起来比较快。现在是外部原因还是内部原因还未知。
我还是建议CPU主板做一个LED通讯指示灯。施耐德的就很直观。看灯的闪烁状态就知道通讯的好坏。
所谓的阻塞,应该是仪表的反应不及时,连续读的太块了,你加个延时上去。
modbus是轮巡令牌式通讯,应该是有设备延时或冲突了导致错误。CPU编程最好不要用sm0.0
半年前的帖子被你捞出来了,楼主都不会回复他自己的帖子了
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录