找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
1 、S7-200、S7-200 SMART指令库支持的MODBUS RTU协议必须是8位数据位、1位停止位,这两个参数是不可更改的,它是由其通讯芯片决定。
2、按你的描述,与MODSCAN32通讯正常了,说明仪表地址、通信参数、通讯线路连接没有问题。
3、主站的初始化指令MBUS_CTRL的Parity取值范围为(0、1、2), 0=无校验1=奇较验,2=偶较验),我认为是Parity应为1;
4、分配的库存储区要保证不要与程序中用到的V区有任何重叠,包括库存储区V区的位引用、字节引用、字引用及双字引用,这一点非常重要。
5、上电运行后,把PLC的模式小开关,拔到STOP位后,CPU通讯口变为了PPI口,这时退出所有占用通讯口的程序,比如MODSCAN32,将编程序软件在线,用状态表看看MBU_MSG指令的DONE位及Error,对应你的程序是M0.1、MB12的值,在程序中加一个网络,捕捉MBU_MSG指令的DONE位的上升沿,其上升沿触发记录MB12的错误代码并将DONE位为1的状态记录下来。比如将ERROR记录在你的程序没有用到的M区或V区的存储字节。
DONE:=0时,正常
Error:只有在 Done 位为1时,错误代码才有效
=0,时无错误
=1,1 = 响应校验错误
2 = 未用
3 = 接收超时(从站无响应)
4 = 请求参数错误(slave address, Modbus address, count, RW)
5 = Modbus/自由口未使能
6 = Modbus正在忙于其它请求
7 = 响应错误(响应不是请求的操作)
8 = 响应CRC校验和错误
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误
常见的错误:
如果多个 MBUS_MSG 指令同时使能会造成 6 号错误
从站 delay 参数设的时间过长会造成主站 3 号错误
从站掉电或不运行,网络故障都会造成主站 3 号错误
参见下面链接的Modbus RTU 主站部分
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/communication/modbus/modbus%20master/Modbus%20master.htm
补充回复:
看到论坛里有人说MSG指令的EN和FIRST不能用SM0.0来做,这个说法是对的。
MSG指令一般是利用CTRL指令的DONE位来做轮询。轮询的实列在我上面发的链接中去找。
就你现有的附图程序的基础上,你就将MSG指令的EN也改在SM0.5,其它参数不动。前提是只有这一个MSG指令。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!