技术论坛

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

作者 主题
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
主题:我也来说说MODBUS MASTER指令的错误代码6
精华帖精华帖星级3级 推荐帖


只看楼主 只看精华 楼主 2018-12-27 10:53:39

由于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指令多次调用,调用时序不合理




 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1532554&b_id=64&s_id=0&num=9

至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 楼主 1楼 2018-12-27 11:15:55

通讯属于异步指令,和其他的指令是不一样的,其他指令,比如一条ADD MW0 MW2的指令,执行到这条指令,执行完成之后,MW2 = MW0 + MW2,事情就完了。但是一条异步指令呢,比如

XMT    VB0, 0

这条指令呢?执行到的时候只是告诉PLC,你可以把VB0开始的数据通过端口0发送出去,然后CPU就去执行下一条指令了,并不是等到数据发送完成了才会执行下一条指令。在执行之后的指令时,数据发送还在进行,等到数据发送完成,会触发一个中断事件,同时也有特殊寄存器指示通讯端口的状态。

我们可以大致计算一下XMT指令执行完成需要多少时间,按9600波特率,8个数据位,一个起始位,一个停止位,无奇偶校验,一个字节10个数据位,大约需要1ms的时间进行发送。

以MODBUS的03功能码来说,主站指令8个字节,从站响应根读取的据寄存器数量n,有n*2+5个字节的通讯数据量,不考虑所有其他延迟,读取10个寄存器的数据,一个通讯循环至少需要 8+ 10*2 +5 = 33ms的时间,假设PLC循环时间是3ms,需要至少11个扫描周期才能完成一个通讯循环。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 18914
发帖数: 2108
精华帖: 0
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 2楼 2018-12-27 11:23:10

嗯,看你们分析!,感觉很好


 
以下网友喜欢您的帖子:

  
至圣

经验值: 16421
发帖数: 2400
精华帖: 0
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 3楼 2018-12-27 11:26:17

在探讨中不断提升!


开心每一天,懂得包容、感恩!
以下网友喜欢您的帖子:

  
奇侠

经验值: 9619
发帖数: 1550
精华帖: 14
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 4楼 2018-12-27 11:26:51

Shine 侠所说的情况应该是主站导致报错误代码6的情况。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 5楼 2018-12-27 20:48:37

楼主说明得很准确。

我补充一下,可能这么说对理解会有一定扶正。

在Done等于1的这个周期,在本Done下方的MSG指令在此周期受触发,不属于违反6。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 10685
发帖数: 1561
精华帖: 33
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 6楼 2018-12-28 11:00:25

把MODBUS库切开看看错误代码6是怎么做出来的,呵呵


工控爱好者
以下网友喜欢您的帖子:

  
游民

经验值: 95
发帖数: 6
精华帖: 0
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 7楼 2019-02-21 19:56:08

楼主,有个贴子看到你遇到斑马打印机与PLC通讯的事,请问现在搞好了吗?我也遇到这个问题,能与你私聊吗?176540555@QQ.COM.


 
以下网友喜欢您的帖子:

  
游民

经验值: 95
发帖数: 6
精华帖: 0
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 8楼 2019-02-25 11:39:29

楼主,看到你每天 都来,有问题想请教,能留下联系方式吗?或加我的扣扣:17654055,麻烦了。真心的


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:我也来说说MODBUS MASTER指令的错误代码6


只看楼主 只看精华 9楼 2019-02-26 07:21:51
以下是引用夏天的雪在2019-02-25 11:39:29的发言 >8楼

楼主,看到你每天 都来,有问题想请教,能留下联系方式吗?或加我的扣扣:17654055,麻烦了。真心的

问题发到论坛里不是更好吗?


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
我也来说说MODBUS MASTER指令的错误代码6
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。