找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
我需要以RS485接口与一个流量计通讯,读取流量。
我也需要以RS232接口与两个MFC通讯,读取流量,发送流量设定值。
通过查找手册初步了解了如何写Modbus_Comm_Load, Modbus_Master, Modbus_Slave等指令。
但是在阅读仪表手册时,还是不理解如何把通讯给落地。
附件为仪表的手册,一个是读MFC的流量,一个是写MFC的流量。
想请教各位,如何把这个读写流量真的编程完整。希望能有人帮助我,不论是文字还是编程实例。实例当然最好了!
谢谢!
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
1、硬件网络
RS232 只能点对点通讯,你有几个是要用 RS232转RS485转换器的。都转成RS485的电气接口
奢侈一点可以用多个串口通讯模块。
2、通讯线路上的通讯参数设成一样的,如第二张图,波特率 9600、8位数据位、无校验位、1位停止位。Modbus_Comm_Load指令就是用这些参数来定义串口模块的通讯口的。
所有流量计都是从站,站地址一定要设成不一样的。
3、图中贴出的MODBUS RTU数据帧,是不需要你写的,只要写Modbus_Master相应的管脚则自动产生主站请求帧,发向从站。
比如读取?时流量的那个,01 03 00 10 00 02 后面两字节是 CRC校验码,则Modbus_Master主要管脚如下:
REQ:必须用沿触发
“MB_ADDR”:1 //对应请求帧第一个字节,访问的从站地址;
“MODE”:0; //读功能,与“DATA_ADDR”参数一起决定 Modbus 功能码为 03
“DATA_ADDR”:40017 //Modbus 地址寄存器起始地址,请求帧的第3、4字节---00 10,是十六进制的,一定要转换成十进制再加1就是17,再转成保持寄存器地址,则在最前面加上保持寄存器标志“4”,这样就构成了 40017。
“DATA_LEN”:2 //数据长度为 2 个字,也就是瞬时流量是浮点数,应该是两个字。
“DATA_PTR”:该参数可以通过拖拽的方式,将创建的标准 DB 内的浮点数变量拖拽到这。
CRC 检验码由指令产生。
总之对照说明书,填写相应管脚就以了
4、主要参考资料
S7-1500 Modbus RTU使用快速入门(更新版)
https://support.industry.siemens.com/cs/document/109477716
S7-1500 CPU 使用"Modbus_Master", "Modbus_Slave" 和 "Modbus_Comm_Load"指 令的注意事项
https://support.industry.siemens.com/cs/cn/zh/view/107248379
5、多主站指令一定要做成轮循的,可先做成单指令,读到数据后再做成轮循的。轮循是利用"Modbus_Master" 指令的 DONE 位来做的,这方面可以参考 1200 的实例。
http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/11-Comm/03-Serial/02-Modbus/02-Modbus_RTU.htm
轮询实例:如何使用 STEP 7 ( TIA Portal ) 为 SIMATIC S7-1200 建立 MODBUS - RTU通信?(英文)
http://support.automation.siemens.com/CN/view/zh/47756141
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城
2、不管是什么进制,在PLC中都是二进制;
怎么转换,这要看流量数据是实数还是双整数。如果看到的值不正确,深度高低字交换,字节交换,这个是要看流量计说明书的。