我也来说说MODBUS MASTER指令的错误代码6

已锁定

shine

  • 帖子

    8944
  • 精华

    39
  • 被关注

    153

论坛等级:至圣

注册时间:2003-06-06

普通 普通 如何晋级?

我也来说说MODBUS MASTER指令的错误代码6

2283

9

2018-12-27 10:53:39

star star star

由于RS485接口的半双工特性,以及MODBUS RTU协议属于主从通讯,决定了在 MODBUS 通讯的网络段内,同一时刻最多只能有一个设备是发送状态。

主站控制着整个网络的通讯状态,通讯只能由主站发起,从站处于接收状态。主站发出指令,只有当收到地址码和其一致的指令时,才能做出响应。校验指令,如果指令没有错误,则根据指令的功能码,按协议返回相应的数据。当地址码和其本身不一致,或者校验错误,则忽略该指令。主站接收到从站返回的数据,如果校验没有错误,将数据相应处理后一个通讯循环结束,如果在设定时间没有收到从站返回的数据,或者返回的数据校验错误、格式错误,则重发次数加1后重发指令,直到并重复以上过程,直到收到正确响应或者达到设定重发次数。

那么,200/200smart中的MODBUS库指令是怎么做的呢?首先,通过MBUS_CRTL设置通讯端口,激活或关闭自由口(modbus通讯属于自由口通讯),然后,剩下的事情就交由MBUS_MSG处理了。

MBUS_MSG指令的EN端,当然在一个通讯循环中需要一直保持为1。First端就是一个通讯循环的开始,直到一个通讯循环结束,First端不应该再有1的信号。

引用在线帮助:有新请求要发送时,将参数 First 设置为接通,并仅保持一个扫描周期。First 输入以脉冲方式通过边沿检测元素(例如,上升沿),这将导致程序发送请求一次。 MBUS_CTRL指令并不是检测FIRST的上升沿,而是需要用户程序给First端一个只接通一个扫描周期的信号。有在线帮助为证: EN 输入和 First 输入同时接通时,MBUS_MSG/MB_MSG2 指令会向 Modbus 从站发起主站请求。

发送请求、等待响应和处理响应通常需要多个 PLC 扫描时间

也就是说,该指令的激活时间也是需要多个PLC扫描周期的

重点在这,看我下面画的图


如果连接First的不是一个只接通一个扫描周期的指令,或者在MBUS_MSG指令的Done位还没有重新为1前(就是 扫描周期 N+ X 前 )又再次为1了,那么恭喜你,错误代码6出现了。

什么时候会出现这种情况呢?

1、First信号不是一个单周期信号,会持续多个扫描周期

2、First信号虽然是一个单周期信号,但是在一个通讯循环中多次出现。比如通过SM0.5的上升沿定时执行MBUS_MSG指令,正常情况下一个通讯循环不需要1s的时间,但是如果出现通讯干扰,线路故障,从站故障等,从站没有及时响应,主站需要重发,根据默认设置,3次重发,1s的超时设定,最多需要3s多的时间才能完成一个通讯循环,这时就会报6号错误。

3、MBUS_CTRL指令多次调用,调用时序不合理



我也来说说MODBUS MASTER指令的错误代码6 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7542条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。