签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
如图所示,PLC进行写操作时BUSY一直为“1”读操作就正常,但是此MODBUS设备用串口调试助手可以正常进行读写操作。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1743599&b_id=50&s_id=0&num=2
这个表示plc口被占用了,和从站没关系,从站当然可以写
你这个是ModBus TCP。写法与总线形式的MB_RTU完全不同。
你的MB TCP写法有好几个问题。
1、EN不需要前面的比较。这个功能块是“自动”的。(建立连接,传送等等)不用你管。
2、REQ只需要在PLC完成启动循环后,给出一个上升沿(0 -> 1)即可;(之后一直保持1都行。除非变更远程地址。)
(好好看看 状态字 7000,7001,7002...都是什么意思?)这个功能块建立连接的过程是自动的!哪怕你把网线扯断,再重新连接上,都不需要REQ!是自动再次连接,恢复通讯的!
3、那个指针需要指出缓冲区长度。
4、注意:如果是固定与对方通讯,读和写要使用不同的连接ID,同时己方和对方也需要分别使用不同的端口!
例如:客户端使用连接ID=1和端口502:读远程IP端口502;客户端使用连接ID=2和端口503:写远程服务器的端口503.
每一个IP都有65536个端口!除了一些默认定义的端口外,都可以用。
最后一点:什么时候才会用到Disconnect?
只有一种情况:我的1200的连接资源不够用了!
这时,就需要用一个连接ID去访问好多个MB_TCP服务器。
用法:当完成一个服务器IP访问后(Done),转存缓冲区数据,断开连接=1,直到状态字为已断开、REQ=0、断开连接=0;下个扫描周期,改变远程IP,下一个扫描周期REQ=1(开始新的连接)这称为 动态连接!
断开连接过程,绝对不是一个扫描周期就能完成的!是需要远程服务器响应的!
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录