ESP32 和威纶通触摸屏通讯

ESP32 与威纶通触摸屏通讯——只需记住一句话: “把 ESP32 做成 Modbus-RTU 从站,用 RS-485 总线连到威纶通 HMI,屏做主站轮询即可。”

一、硬件接线(最常用 RS-485)

ESP32(UART2) 说明 威纶通 COM2
GPIO16 (RX2) RS-485 A (D+)
GPIO17 (TX2) RS-485 B (D-)
GND GND
5 V 或 3.3 V 485 终端电阻 120 Ω 视距离决定

距离 < 3 m 也可直接用 TTL-RS232,但抗干扰差,推荐 485。

二、协议参数

项目 建议值
协议 Modbus RTU
波特率 9600
数据位 8
校验 无 (None)
停止位 1
从站地址 1(可改)

三、ESP32 侧代码(Arduino 框架)

#include <ModbusRTU.h>
#include <HardwareSerial.h>

ModbusRTU mb;
const uint8_t SLAVE_ID = 1;

// 映射到寄存器
uint16_t hReg0 = 0;     // 威纶通写过来
uint16_t hReg1 = 1234;  // 威纶通读过去

void setup() {
  Serial2.begin(9600, SERIAL_8N1, 16, 17); // UART2
  mb.begin(&Serial2);
  mb.slave(SLAVE_ID);
  mb.addHreg(0, hReg0);  // 地址 0
  mb.addHreg(1, hReg1);  // 地址 1
}

void loop() {
  mb.task();
  // 把 hReg0 的值做 LED 控制示例
  digitalWrite(LED_BUILTIN, hReg0 ? HIGH : LOW);
}

四、威纶通屏配置(EasyBuilder Pro)

1 系统参数 → 设备 → 新增设备

设备类型:Modbus RTU Zero-based Addressing

2 接口:COM2 (RS-485 2W)

站号 = 1,波特率 9600,8 N 1

3 地址映射

按钮 → 0x0000(保持寄存器 0,写单寄存器)

数值显示器 → 4x0001(保持寄存器 1,只读)

4 测试

屏上按钮置 1/0 → ESP32 LED 亮/灭

ESP32 把 hReg1 改成 5678 → 屏上数值刷新。

五、常见坑 & 排查

现象 排查要点
Device No Response 检查 RS-485 线序 A/B、终端电阻、站号、波特率、CRC 校验
地址错位 威纶通默认“0-based”,若用“1-based”寄存器需+1
距离远丢包 降低波特率、加 120 Ω 终端、双绞屏蔽线

ESP32 做 Modbus-RTU 从机,威纶通屏做主站轮询寄存器——接线、协议、代码、屏配置全部对齐后,就像“USB 插 U 盘”一样即插即用

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2025年8月6日 11:17