目标:我想用wincc 作为上位机通过modbus-rtu向下位机读数;下位机和wincc之间有一个485转以太网的模块。
出现的问题:wincc上位机读取是设备ID 号为1;寄存器地址为00 00 ;寄存器个数为00 05 ,得到CRC为 85 C9.
这样wincc发送的数据就为01 03 00 00 00 05 85 C9。我用了modbus slave 模拟下位机软件,这时候下位机的数据能够传到wincc,没错。
然后下一步我接上了我的下位机,里面的一段代码是匹配01 03 00 00 00 05 85 C9,按理说也能够返回数据了,但是上位机没有反应。然后我在线调试后发现,下位机收到的数据不是上面这些而是 01 03 1A 81 00 01 D3 3A。为了确定我又用串口调试助手接wincc发来的数据,发现也是01 03 1A 81 00 01 D3 3A。
最后就感觉好晕啊。1、为什么模拟下位机modbus slave 返回数据,真实的下位机就不可以。
2、为什么wincc发送的数据变化了,不是期待的01 03 00 00 05 85 C9
最佳答案
问题出在了wincc编程这边了,先把wincc的脚本编辑好了,能够正确发送数据了。
可以简化一下wincc,创建一个按钮,固定发送01 03 00 00 00 05 85 C9,看看数据是否正常发送出去了;
wincc发送的数据变化了,说明wincc内部的变量或者脚本出错了,有重复赋值之类的情况,或者变量引用错误。
问题肯定出在了wincc编程这边了,需要一步步调试wincc。
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc133065.html