摘要:本文以 ZLinear DABL-G511 数据采集卡为例,系统讲解 Modbus-RTU 通过 RS485 组网和 Modbus-TCP 通过以太网通信的完整开发流程,涵盖硬件连接、参数配置、功能码详解、寄存器映射表、通信报文实例以及 PLC 集成要点。
一、Modbus 通信架构总览
DABL-G511 支持两种 Modbus 通信模式,覆盖工业现场总线到以太网两种典型场景 word_21:
| 模式 | 物理接口 | 协议 | 典型应用 |
|---|---|---|---|
| Modbus-RTU | RS485(非隔离) | 标准Modbus从机 | PLC组网、触摸屏连接 |
| Modbus-TCP | 以太网(LAN8720, 10/100Mbps) | TCP/IP协议栈 | 物联网接入、远程监控 |
采集卡在两种模式下均作为Modbus从机(Slave),上位机或PLC作为主机(Master)发起读写请求 word_20。
二、Modbus-RTU:RS485组网实战
2.1 硬件连接
RS485接口采用插拔式接线端子(3.81mm间距),引脚定义如下 word_21:
| 端子 | 定义 |
|---|---|
| 485A | 差分信号正极 |
| 485B | 差分信号负极 |
| G | 参考基准地 |
上位机需要使用 USB转RS485 模块才能与采集卡通信。ZLinear 推荐使用自带工业级防护(短接保护、浪涌防护、ESD保护、TVS瞬态抑制)的 CH340 芯片转换器 word_21。
2.2 RS485 总线接线规范
RS485 组网需严格遵循以下规范,否则容易出现通信不稳定 word_21:
| 规范项 | 要求 |
|---|---|
| 线缆类型 | 双绞屏蔽电缆 |
| 终端电阻 | 总线两端酌情配置 |
| 节点数量 | 同一总线允许32个节点并联 |
| 总线长度 | ≤1200m |
| 最大波特率 | ≤115200bps |
| 屏蔽层接地 | 单点接大地,避免环路干扰 |
| 布线间距 | 远离强电线路,间距≥30cm |
2.3 参数配置
Modbus-RTU 的从机地址和波特率通过 USB 上位机软件 zlTool 的参数设置页面配置 word_21:
- 从机地址:范围1-255,其中0为预留不可使用
- 波特率:预设常见值,不支持自定义;可选 9600 / 19200 / 115200 / 187500 等
- 如需其他波特率,可联系官方技术支持进行固件升级
配置流程:USB连接采集卡 → 打开zlTool → 进入参数设置 → 设置485地址和波特率 → 点击"设置"按钮写入 word_21。
三、Modbus 功能码与指令格式
3.1 指令帧结构
所有 Modbus-RTU 指令遵循统一格式 word_20:
| 字节位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 含义 | 从机地址 | 功能码 | 寄存器地址高位 | 寄存器地址低位 | 寄存器数量高位 | 寄存器数量低位 | CRC高位 | CRC低位 |
3.2 四大功能码详解
功能码 0x01 --- 读取线圈状态(Coils)
PLC起始地址:00001,对应采集卡的 DO 功能 word_20。
用途:读取DO输出状态和PWM使能状态。
功能码 0x02 --- 读取输入离散量(Discrete Inputs)
PLC起始地址:10001,对应采集卡的 DI 功能 word_20。
用途:读取6路数字输入通道状态。
功能码 0x03 --- 读取/写保持寄存器(Holding Registers)
PLC起始地址:40001,对应采集卡的 DAC 和 PWM 控制功能 word_20。
用途:控制4通道DAC波形输出和6路PWM参数。
功能码 0x04 --- 读取输入寄存器(Input Registers)
PLC起始地址:30001,对应采集卡的 ADC 功能 word_20。
用途:读取8通道ADC电压值和原始值。
四、寄存器映射表
4.1 线圈寄存器(功能码01,每个地址1 bit)
| 地址 | 说明 | 备注 |
|---|---|---|
| 0-3 | DO通道1~4 | 数字输出控制 |
| 4-7 | PWM使能通道1~4 | 开启/关断PWM |
| 8-15 | ADC通道使能1~8 | 开启/关断ADC通道 |
| 16 | ADC量程 | 为1时±10V,为0时±5V word_20 |
4.2 输入寄存器(功能码04,每个地址2字节)
| 地址 | 说明 | 单位 |
|---|---|---|
| 0-7 | 通道1~8电压值 | 1mV |
| 8-9 | ADC原始值通道1(低位/高位) | 无量纲 |
| 10-11 | ADC原始值通道2 | 无量纲 |
| 12-13 | ADC原始值通道3 | 无量纲 |
| 14-15 | ADC原始值通道4 | 无量纲 |
| 16-17 | ADC原始值通道5 | 无量纲 |
| 18-19 | ADC原始值通道6 | 无量纲 |
| 20-21 | ADC原始值通道7 | 无量纲 |
ADC原始值量程映射关系 word_20:
| 原始值 | ±5V量程 | ±10V量程 |
|---|---|---|
| 0x00000000 | -5V | -10V |
| 0x00800000 | 0V | 0V |
| 0x00FFFFFF | +5V | +10V |
4.3 保持寄存器(功能码03,每个地址2字节)
DAC波形控制(每通道6个寄存器)
以通道1为例(地址0~5),通道2从地址6开始,以此类推 word_20:
| 偏移 | 说明 | 单位 | 有效模式 |
|---|---|---|---|
| +0 | 波形输出类型 | 枚举值 | 所有模式 |
| +1 | 输出电压值 | mV | 除任意波外 |
| +2 | 输出频率 | Hz | 正弦/三角/方波 |
| +3 | 占空比 | 0.01% | 仅方波 |
| +4 | 偏置电压 | mV | 所有模式 |
| +5 | 增益 | 1% | 仅任意波 |
波形类型枚举值 word_20:
c
_ddsDacWorkMode_Stop = 0x00, // 停止
_ddsDacWorkMode_Dc = 0x01, // 直流
_ddsDacWorkMode_Sin = 0x02, // 正弦波
_ddsDacWorkMode_Triangle = 0x03, // 三角波
_ddsDacWorkMode_Square = 0x04, // 方波
_ddsDacWorkMode_Dds = 0x05, // 任意波
_ddsDacWorkMode_Calib = 0xFF, // 标定模式
PWM控制寄存器(每通道4个寄存器)
| 偏移 | 说明 | 单位 | 备注 |
|---|---|---|---|
| +0 | 频率 | Hz | 范围1Hz~5KHz |
| +1 | 占空比 | 1% | 0~100% |
| +2 | 脉冲数 | --- | 0=持续输出 |
| +3 | 加速率 | --- | 每0.1秒频率增加值 |
⚠️ 重要:PWM启用后ADC允许最大速率减半 word_20。
五、Modbus-TCP:以太网通信配置
5.1 网络拓扑
上位机(客户端) ←→ 交换机 ←→ 采集卡(服务器)
192.168.100.xxx 192.168.100.100:502
采集卡作为 TCP Server,默认配置如下 word_21:
| 参数 | 默认值 |
|---|---|
| IP地址 | 192.168.100.100 |
| 端口号 | 502(可修改) |
5.2 网络配置步骤
- 修改电脑网卡IP:将连接采集卡的网卡设置为同一网段(前三位IP相同,即192.168.100.xxx)
- 读取/修改采集卡IP:通过USB连接采集卡,在zlTool参数设置页面读取或修改服务器地址和端口号
- 物理连接确认:RJ45接口绿色LED常亮表示物理连接正常,黄色LED闪烁表示通信进行中 word_21
5.3 以太网性能极限
实测数据(测试环境:14代i9处理器、百兆网口)word_21:
| 接口 | 在线记录仪最大极限速率 |
|---|---|
| USB | 25K采样率 |
| 以太网 | 35K采样率 |
六、通信报文实例
6.1 读取8通道ADC电压值(功能码04)
请求帧:
01 04 00 00 00 08 CRC_H CRC_L
| 字节 | 含义 |
|---|---|
| 01 | 从机地址 |
| 04 | 功能码(读输入寄存器) |
| 00 00 | 起始地址0(通道1电压值) |
| 00 08 | 读取8个寄存器 |
| CRC_H CRC_L | CRC16校验 |
响应帧:
01 04 10 [CH1_H] [CH1_L] [CH2_H] [CH2_L] ... [CH8_H] [CH8_L] CRC_H CRC_L
每个通道返回2字节电压值,单位为mV。例如返回 0B B8 表示 3000mV = 3.000V word_20。
6.2 设置DAC通道1输出3V直流(功能码03)
请求帧:
01 03 00 00 00 02 00 01 0B B8 CRC_H CRC_L
| 字节 | 含义 |
|---|---|
| 01 | 从机地址 |
| 03 | 功能码(写保持寄存器) |
| 00 00 | 起始地址0(通道1波形类型) |
| 00 01 | 写入值1 = 直流模式 |
| 00 01 | 起始地址1(通道1电压值) |
| 0B B8 | 写入值3000 = 3000mV = 3V |
注:实际Modbus写多个寄存器应使用功能码0x10(写多个保持寄存器),单寄存器写入使用功能码0x06。
6.3 控制DO通道1输出(功能码05/0x01)
使用功能码0x05(写单个线圈)控制DO word_20:
01 05 00 00 FF 00 CRC_H CRC_L → DO通道1 ON
01 05 00 00 00 00 CRC_H CRC_L → DO通道1 OFF
6.4 使能PWM通道1(功能码05)
01 05 00 04 FF 00 CRC_H CRC_L → PWM通道1使能
地址4对应线圈寄存器中的"PWM使能通道1" word_20。
七、PLC集成要点
7.1 西门子PLC配置
- 在TIA Portal中添加Modbus TCP客户端指令(MB_CLIENT)
- 配置连接参数:IP=192.168.100.100,端口=502
- 映射PLC地址到Modbus寄存器:
- %IW30001 → ADC通道1电压值
- %QW40001 → DAC通道1波形类型
- %Q00001 → DO通道1
7.2 触摸屏集成
RS485模式下可直接连接支持Modbus-RTU的触摸屏 word_21:
- 在触摸屏工程中添加Modbus RTU设备
- 设置从机地址与采集卡一致
- 配置波特率与采集卡一致
- 建立变量映射到对应PLC地址
7.3 多卡组网
RS485总线上可并联最多32台采集卡,每台设置不同的从机地址(1~255)word_21:
PLC/主机 ←→ [卡1:地址01] ←→ [卡2:地址02] ←→ [卡3:地址03] ←→ ... ←→ [卡N:地址N]
八、常见通信问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 通信无响应 | 从机地址不匹配 | 检查上位机地址与采集卡设置一致 |
| 通信无响应 | 波特率不匹配 | 通过USB重新配置波特率 |
| 通信偶发断开 | 总线干扰 | 检查屏蔽层接地,远离强电线路 |
| CRC校验错误 | 线路干扰或终端电阻缺失 | 总线两端加装120Ω终端电阻 |
| TCP连接失败 | 网段不一致 | 确保上位机与采集卡前三位IP相同 |
| 数据跳动大 | ADC通道未使能 | 通过线圈寄存器地址8~15使能对应通道 |
| ADC速率异常低 | PWM已启用 | PWM启用后ADC最大速率减半,关闭PWM恢复 |
九、总结
Modbus 协议是工业自动化领域最通用的通信标准,DABL-G511 完整支持 Modbus-RTU 和 Modbus-TCP 两种模式,寄存器映射清晰、功能码覆盖全面,能够无缝接入 PLC、触摸屏和上位机系统。开发要点回顾:
- RTU组网:遵循RS485规范(双绞屏蔽线、终端电阻、32节点、1200m限制)
- TCP配置:确保同网段,默认192.168.100.100:502
- 寄存器映射:线圈=DO/PWM使能/ADC使能,输入寄存器=ADC数据,保持寄存器=DAC/PWM控制
- CRC校验:每帧必须附带CRC16校验码
- PWM限制:启用PWM后ADC速率减半
标签 :
#Modbus#Modbus-RTU#Modbus-TCP#RS485#PLC集成#数据采集卡#DABL-G511#ZLinear#工业通信#寄存器映射