签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
如果我使用标志位轮询,通讯无**询,改成时间触发轮询就可以。新手望指点。
新建 DOC 文档 (4).doc
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1816590&b_id=64&s_id=0&num=15
楼主,直接上传程序啊,你上传这么一点点是看不出来什么的,另外你最好按官方的例程来编程,这样基本不会出问题。
标志位,置位复位指令的轮询,用1200试也不行,定时器和计数的都可轮询
把程序截图上传看看。
大家可以帮看看,标志位轮询就不行,时间轮询通讯就可以
通讯.zip
不管你明不明白。我照说。
因为msg指令的en端接通之后但是first端未接通的这一个周期(以及以后的n个周期)。Done端并未输出有效成分。但是Done总要在这个周期输出一个值到端口。根据子程序内L值传递的原理,所有子程序都未有first信号,所有子程序都Done输出同一个状态。(包括你的error端也是相同的状态。)
另外。只有Done上升沿这个周期error才是有效成分。没有双线圈的情况下有效期是一个扫描周期。
你行的那个程序显然没有这种状态,所以没发现所谓的异常。
所以必定要en端和first端要同时接通。除非此期间你放弃使用Done端和error端的任何状态。
也就是说没叫它first之前你当它傻的就可以了。
帮你改了一下,你试试,其实可以再简化。
1111.smart.zip
谢谢,我查看了一下程序,你调换了一下初始化使能位的位置,是不是和PLC扫描机制有关。
引用7楼详细内容:
这是其中一个问题。
我猜你用一个计时器去延时一点时间,是不是因为你检测不到ctrl指令的Done的上升沿?但是又不知道什么事情,所以用了没办法的办法。
引用8楼详细内容:
季工,是的,标志位轮询不下去,一开始的时候是可以的,过段时间就不行了,复位重来也不行,不得已选用通讯效率差的时间加计数器轮询。不知为何,
是不是通电第一次就可以,然后stop过就不行了?
报的出错是3还是5啊?如果确实是3,那么我还没想到为什么。
季工是的,所以查了半天没有其他办法,才用了时间加计数器轮询,有没有好的思路可以查到原因。
EN端最好常使能保证OUT类型每次扫描结果是确定的0或1
出现3的话都是协议问题。通讯不上而且偿试了3次。应该是逐一出现3的。你现在是同时出3还是每隔一点时间挨个出3?
对,全部都出现了3.
楼主,就这么一个简单的modbus rtu通信难成这样吗?要不要我给你做个简单的例程?
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录