我用一个200与一块温湿度变送器进行
modbus方式通讯,我用的是网上下的标准的主站程序,但在使用时连接不上,用串口调试程序检测,发现PLC发送的数据为7E 7E FF FF EF 75 23 或者 F9 F9 FF FF FE EF 75 23两种,明显不对,ERROR错误码为3,从机无反应,而变送器要求的正确数据应为01 04 00 00 00 02 71 CB,用串口调试程序正常,肯定是哪个地方错了,请大侠们不要笑话我,不吝赐教;(注:后面两个读写输入命令无用,我仅用到了第一个读寄存器即可),谢谢
modbus 主站读写程序
Network 1
// 第一扫秒周期, 复位各标志位和起始位
LD SM0.1
R M2.0, 8
R M4.0, 8
R M0.0, 2
Network 2
//
modbus 主站初始化完成后, 启动读写指令
LD M0.0
EU
S M0.1, 1
Network 3 // 网络标题
//
// 网络注释 初始化
modbus 主站通信,
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL SBR1, L63.7, 9600, 0, 1000, M0.0, MB1
Network 4
//
// 读取从站保持寄存器的数据
LD M0.1
O M2.3
= L60.0
LD M0.1
EU
LD M2.3
EU
OLD
= L63.7
LD L60.0
CALL SBR2, L63.7, 1, 0, 40001, 8, &VB1000, M2.1, MB3
Network 5
// 读取从站保持寄存器的数据完成,复位请求
LD M2.1
R M2.3, 1
R M0.1, 1
Network 6
// 读取从站输入点
LD M2.1
= L60.0
LD M2.1
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 0, 10001, 8, &VB2000, M2.2, MB4
Network 7
// 读取从站输入点完成,复位请求
LD M2.2
R M2.1, 1
Network 8
// 写从站实际输出值
LD M2.2
= L60.0
LD M2.2
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 1, 1, 8, &VB3000, M2.3, MB5
Network 9
// 写从站实际输出值完成,复位请求
LD M2.3
R M2.2, 1
Network 10