You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 16:15:54