MODBUS RTU通信没有master一直不能完成

仪表支持modbus rtu通信,没有modbus rtu 模块,我用的是modbus  主从站的程序,load模块没有问题,但是主站的done一直是0,如果能有大佬能解决的话,麻烦指导我一下。
qq2470071388

问题补充:
plc是1214DC/DC/DC  6ES7  214-1ag31-0XB0
配合CM1241(rs232) 6ES7   241-AH30
和一台智能仪表,支持232的通信
图片是仪表的modbus rtu通信说明
软件是博途V13,modbus模块的版本v2.1
master的data—ptr我定义的是全局数据块Array[0..40] of Word
还有一个问题,博途13没有modbus rtu通信模块吗?怎么添加上去呢?

图片说明: 222222  444  888  9999  222222  
悬赏西币:10
手机用户20180113722714 2018-05-12 14:22:19
最佳答案

1、MB_COMM _LOAD主站初始化指令你如果放在了 OB100 组织块中,像你那样写是可以的;
原因是:“MB_COMM_LOAD”指令输入位“REQ”需使用上升沿触发。由于OB 100只在S7-1200启动时执行一次,因此MB_COMM_LOAD写在OB100 中将“REQ”设为“TRUE”是可以的。
2、从你的贴图,发现MB_MASTER指令的二处错误:
EN脚:不能用组态时钟脉冲的只在第一扫描周期接通的位,因为在第一扫描周期内不能保证初始化指令MB_COMM _LOAD初始化完成,至少要用MB_COMM _LOAD 它的DONE 位激发读指令,
REQ脚:用法不对,要用上升沿;在例程中去看
http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/PTP%20communication/S7-1200%20Modbus%20RTU/S7-1200_as_master.htm
3、左起第二张图,我测试了请求帧,可以确认是 MODBUS RTU 的。但读到的实数要经过处理才能用。不管怎样,先通讯上再说;
4、DB3 要定义成非优化的,也就是与 300/400 兼容的,S7-1200 默认是优化的;
5、CM1241(rs232) 6ES7   241-AH30 是232 接线方式,仪表是什么方式?,要不要转换?先保证接线一定要正确;
6、参考上面的链接,组态的过程、指令的引用。
7、这里有一个例程是 V11 的,不知你V13的可不可以打开
https://support.industry.siemens.com/cs/document/47756141
如何通过Modbus协议实现S7-1200与S7-200通讯, 可以将 S7-200 从站看作你的仪表。
ID:90578932 发布日期 2014年4月4日
https://support.industry.siemens.com/cs/document/90578932
8、其它Modbus RTU 通信的其它资料可以看看
http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/SmartSMS/016.html
接线及串口通讯方面的内容可参考
1200串口通讯
http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/SmartSMS/029.html

大宝朱林森 2018-05-12 17:07:21

提问者对于答案的评价:

谢谢,大佬。我能问一下建立数据块的时候,我的博途13没有块访问的选项,默认是优化的,我在建立之后在属性里关闭优化的快访问,这样可以吗?

点赞 (11)

专家置评

已阅,最佳答案正确

西门子自动化产品支持2018-05-14 10:31:05

最佳答案网友评论
其他答案

master的REQ为1时请求将数据发送到从站,看下帮助就明白了


图片说明:

bobsanling  2018-05-12 21:40:42

×
您收到0封站内信:
×