西门子200自由口MODBUS

根据以下信息怎么使用200自由口读取温度,我编写的程序如下图
一、主要参数
1、采用传感器:NTC 10K B=3950
2、通信接口:RS485
3、通信协议:MODBUS-RTU
4、通信格式: 9600,n,8,1
5、工作电压:9V--24V
▲通讯命令
命令字列表
命令字(16进制)功能描述
03 读寄存器状态
06 写寄存器
功能03:读寄存器状态
主机命令从机地址+命令字+欲读寄存器地址+欲读字个数+校验  (CRC16)
1 byte + 1 byte + 2 bytes + 2 bytes + 2 bytes
从机回送从机地址+命令字+读到字长度+寄存器内容+校验  (CRC16)
1 byte + 1 byte + 1byte + n bytes + 2 bytes
例:读取温度
主机命令: 
01          03       00    01            00    01        D5    CA
从机地址 命令字  欲读寄存器首地址     欲读字个数     校验  (CRC16)
从机响应:
01                   03              02               00  22          61    E7
从机地址    命令字  读到数据长度    实时 温度       校验  (CRC16)

问题补充:
改程序后出现错误  “6”如下程序段

图片说明:

西门子200自由口MODBUS    西门子200自由口MODBUS   

最佳答案

1)你先算一下这个校验码结果数据是否出错,主、从都需要重新核实。
2)根据报警信息是接收超过了timeout时间,但这个是范围广的报警信息,具体有主、从站硬件的连接,软件的程序和从站的响应、从站参数如从站地址的设置等。
3)不建议你使用定时器的理由是定时器工作机制是与扫描周期无关的,使用只能用标志位,一般采用前一个网络段的done位触发是比较合理的一个办法。
补充问题回复:
当报警6#,说明你同时调用了多个MBUS_MSG 指令,一次只能调用系统中唯一的一个。
根据你2次的提问,我感觉你应该检查硬件连接的可靠性及触发管脚first的循环机制。

图片说明:

西门子200自由口MODBUS  

提问者对于答案的评价:
谢谢

专家置评

modbus RTU通信可以使用modbus rtu指令库进行编程
多个msg需要进行轮训,使用done位做逻辑
参考
http://www.ad.siemens.com.cn/service/article/S7-200/S7-200modbus/Default.aspx

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc179931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月24日 下午6:37
下一篇 2017年6月24日

相关推荐