如何用Controllino Maxi读取RS485风向传感器数据并输出角度至Arduino IDE
解决SEN0482风向传感器+Controllino Maxi读取角度输出的问题(错误码226)
问题背景
使用Controllino Maxi通过Modbus RS485读取SEN0482风向传感器,目标是获取角度单位的输出,但当前运行代码时仅返回"Fail 226"提示,无法正常读取数据。
错误码226解析
在ModbusMaster库中,错误码226对应ku8MBInvalidSlaveID,核心原因要么是主站指定的从站ID与传感器实际ID不匹配,要么是RS485通信链路存在硬件故障。
排查与解决方案
1. 硬件连接检查
- 核对RS485接线:确保传感器的A端子接Controllino RS485模块的A端,B端子接B端,两者GND共地;同时确认传感器供电符合规格(SEN0482支持5V/12V供电)。
- 确认RE/DE引脚:代码中使用的68、69号引脚,需对照Controllino Maxi的引脚定义,确保这两个引脚为输出模式,且正确连接到RS485模块的RE和DE控制端。
- 终端电阻:若RS485总线长度超过10米,需在总线两端(传感器端和Controllino端)添加120Ω终端电阻,减少信号反射。
2. Modbus参数匹配修正
- 从站ID:SEN0482默认从站ID为1,当前代码中
modbus.begin(2, Serial1)指定的是ID2,需改为1。 - 寄存器地址:SEN0482的风向角度寄存器为
0x0001(0x0000是16档位的原始值),若要直接读取角度,需修改读取寄存器的地址。 - 波特率与格式:传感器默认波特率9600,数据格式为8N1(8位数据位、1位停止位、无校验),代码中
Serial1.begin(9600)符合要求,无需修改。
3. 修正后的代码
#include <Controllino.h> #include "ModbusMaster.h" // RS485控制引脚 const int rs485_re = 68; // Receiver Enable const int rs485_de = 69; // Driver Enable ModbusMaster modbus; void preTransmission() { digitalWrite(rs485_re, LOW); digitalWrite(rs485_de, HIGH); } void postTransmission() { digitalWrite(rs485_re, HIGH); digitalWrite(rs485_de, LOW); } void setup() { pinMode(rs485_re, OUTPUT); pinMode(rs485_de, OUTPUT); // 初始化为接收模式 digitalWrite(rs485_re, HIGH); digitalWrite(rs485_de, LOW); // 启动RS485串口 Serial1.begin(9600); // 修正从站ID为1 modbus.begin(1, Serial1); modbus.preTransmission(preTransmission); modbus.postTransmission(postTransmission); // 调试串口 Serial.begin(9600); } void loop() { uint8_t result; uint16_t windData[1]; // 读取角度寄存器(0x0001) result = modbus.readHoldingRegisters(0x0001, 1); if (result == modbus.ku8MBSuccess) { windData[0] = modbus.getResponseBuffer(0); // SEN0482部分版本返回的是整数*10(如225代表22.5度),需根据手册调整 float windAngle = windData[0] / 10.0; Serial.print("风向角度: "); Serial.print(windAngle); Serial.println("°"); } else { Serial.print("读取失败,错误码: "); Serial.println(result); } delay(1000); }
4. 额外说明
- 若传感器返回的角度是整数形式(如22代表22°),则去掉
/10.0的转换;若返回的是原始16档位值(0-15),则角度计算公式为角度 = 原始值 * 22.5。 - 若仍无法读取,可使用Modbus调试工具直接测试传感器,确认传感器本身是否正常。
内容的提问来源于stack exchange,提问作者Morten
相关产品推荐
相关产品推荐

