这是我的第一个问题。我正试着用阿迪诺打开/关闭我的暖气。首先,我必须弄清楚如何与它沟通。我的恒温器有4根电线( 3V,GND,A+,B-),这是典型的2线RS-485 +3V电源来给恒温器供电。我已经将RS-485连接到以太网转换器上,以监视协议,并找出我的实际恒温器所使用的命令,以便将它们复制到arduino (并自动执行一些任务)。我从modbus监视器(串行口监视器)开始,有些数据包有OK检查,有些数据包有错误的签入。我不知道端口的配置,所以我尝试了大约9600 8位没有奇偶校验,9600 8位偶数奇偶校验,9600 8位奇偶奇偶校验,结果是一样的。包似乎有时符合modbus结构,但并非总是如此。我可以假设通信协议是modbus吗?为什么有些数据包或多或少有30%有OK检查,70%有错误检查?
19:57:51
Modbus响应(COM4)
地址:7
功能: 15 (0x0f) -写多个线圈
Starting Address: 1 Quantity: 4 校验和:1454(确定)
19:57:52
Modbus响应(COM4)
地址:7
功能:1 (0x01) -读取线圈字节数:0
Values: 校验和:32174(确定)
19:57:52
Modbus响应(COM4)
地址:7
功能:1 (0x01) -读取线圈字节数:1
Values: 00 Coils 0-7: 00000000 校验和:20736(确定)
19:57:52
Modbus响应(COM4)
地址:7
功能: 15 (0x0f) -写多个线圈
Starting Address: 1 Quantity: 4 校验和:33660(确定)
19:57:52
Modbus响应(COM4)
地址:7
功能: 15 (0x0f) -写多个线圈
校验和:1(坏)
19:57:52
Modbus响应(COM4)
地址:0
功能:4 (0x04) -读取输入寄存器
校验和:1454(坏)
2011年10月23日19:57:53
Modbus响应(COM4)
地址:7
功能:1 (0x01) -读线圈
校验和:0(坏)
2011年10月23日19:57:53
Modbus响应(COM4)
地址:0
功能:7 (0x07) -读取异常状态
校验和:32174(坏)
2011年10月23日19:57:53
Modbus响应(COM4)
地址:7
功能:1 (0x01) -读线圈
校验和:256(坏)
2011年10月23日19:57:53
Modbus响应(COM4)
地址:7
功能: 15 (0x0f) -写多个线圈
Starting Address: 1 Quantity: 4 校验和:256(坏)
您认为modbus是正在使用的协议,还是应该尝试其他协议?如何确保端口通信设置(9600,8位,甚至奇偶)是安全的?
谢谢你们!
发布于 2019-11-06 12:18:25
我解决了这个问题。问题是我正在使用RS485到以太网设备来读取总线。该设备一直在缓冲帧,直到缓冲区达到1024字节,然后将数据打包到UDP数据包中并发送到我的PC。打破了modbus的框架。modbus帧由符号的3,5倍的静音周期分隔。我将缓冲区配置为0字节,因此设备立即将数据发送到我的PC,所有的CRCs现在都正常,数据是有意义的。现在我要反向工程modbus发送的数据,但这是另一个主题。谢谢!
https://stackoverflow.com/questions/58536394
复制相似问题