我正在开发一个GUI来监视Schneider Electric EM6436电表的负载。 Arduino(主)从电表(从站)请求功率读数。正在使用Modbus RTU协议。。
作为模拟的一部分,IAM使用Modbus从属软件充当Schneider仪表。我已经使用RS485到USB连接器从EM获取数据。 RS485的引脚借助MAX485连接到arduino。以下是从地址0x40001读取值的代码(arduino uno)。该库是arduino Modbus Master库。
#include <ModbusMaster.h> //Library for using ModbusMaster #define MAX485_DE 3 #define MAX485_RE_NEG 2 ModbusMaster node; //object node for class ModbusMaster void preTransmission() //Function for setting stste of Pins DE & RE of RS-485 { digitalWrite(MAX485_RE_NEG, 1); digitalWrite(MAX485_DE, 1); } void postTransmission() { digitalWrite(MAX485_RE_NEG, 0); digitalWrite(MAX485_DE, 0); } void setup() { pinMode(MAX485_RE_NEG, OUTPUT); pinMode(MAX485_DE, OUTPUT); digitalWrite(MAX485_RE_NEG, 0); digitalWrite(MAX485_DE, 0); Serial.begin(9600); node.begin(1, Serial); //Slave ID as 1 node.preTransmission(preTransmission); //Callback for configuring RS-485 Transreceiver correctly node.postTransmission(postTransmission); } void loop() { int data; int result=node.readHoldingRegisters(0x40001,2); if(result==node.ku8MBSuccess) { for(int i=0;i<2;i++) { data=node.getResponseBuffer(i); Serial.println(data); } } }
这些值正在传输并在串行监视器上打印,但是与第一个值一起,正在打印一些乱码。Iam在下面附加结果图像。值是该地址中的读数。
谁能告诉我为什么要打印出来。
我正在开发一个GUI来监视Schneider Electric EM6436电表的负载。 Arduino(主)从电表(从站)请求功率读数。正在使用Modbus RTU协议。作为...
您得到解决方案了吗?我也有类似的问题。