当前位置: 主页 > PLC控制

西门子200自由口MODBUS

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

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

图片说明:

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

最佳答案

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

图片说明:

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

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

专家置评

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

  • 关注微信

猜你喜欢

微信公众号