- 1. 一、概述
- 2. 二、Modbus地址类型说明
- 3. 三、DVP Modbus地址映射表
- 4. 3.1 离散输入区(X输入继电器)→ 1xxxx
- 5. 3.2 线圈区(Y/M/S等)→ 0xxxx
- 6. 3.3 保持寄存器区(D数据寄存器)→ 4xxxx
- 7. 3.4 计数器C → 4xxxx保持寄存器
- 8. 四、PLC主站通信指令
- 9. 4.1 MODRD(读从站数据)
- 10. 4.2 MODWR(写从站数据)
- 11. 五、PLC从站配置步骤
- 12. 5.1 硬件连接
- 13. 5.2 设置通信参数
- 14. 5.3 设置从站地址
- 15. 5.4 通讯协议模式设置
- 16. 六、读取台达变频器示例
- 17. 七、常见问题与排障指南
- 18. 7.1 通讯无响应
- 19. 7.2 读不到数据
- 20. 7.3 数据不对或乱码
- 21. 7.4 偶发通讯失败
- 22. 八、与其他品牌PLC的区别
- 23. 九、总结
- 24. 十、相关链接
一、概述
台达DVP系列PLC(DVP-ES2/EX2/SS2/SA2/SX2/SE等)内建RS-485通讯端口,支持标准Modbus ASCII/RTU通讯协议。本文基于台达官方《DVP-PLC应用技术手册(程序篇)》,详细说明DVP系列PLC的Modbus地址映射规则。
DVP系列PLC支持两种Modbus工作模式:
- Modbus RTU主站(Master):使用MODRD/MODWR指令主动读写从站设备(如变频器、温控器)
- Modbus RTU从站(Slave):被动响应上位机的读写请求
二、Modbus地址类型说明
Modbus协议定义了四种数据区域,每种区域有固定的地址范围和功能码:
| Modbus地址区域 | 功能码 | 读写属性 | 数据类型 | 对应DVP设备 |
|---|---|---|---|---|
| 0xxxx(线圈) | 01(读线圈)/ 05(写单线圈)/ 15(写多线圈) | 读/写 | 位(1 bit) | Y/M/S等位设备 |
| 1xxxx(离散输入) | 02(读离散输入) | 只读 | 位(1 bit) | X输入继电器 |
| 3xxxx(输入寄存器) | 04(读输入寄存器) | 只读 | 字(16 bit) | 特殊寄存器/CR寄存器 |
| 4xxxx(保持寄存器) | 03(读保持寄存器)/ 06(写单寄存器)/ 16(写多寄存器) | 读/写 | 字(16 bit) | D数据寄存器/C计数器 |
重要说明:台达DVP PLC的X/Y设备采用八进制寻址,而D/M设备采用十进制寻址。这是非常重要的区别!
三、DVP Modbus地址映射表
3.1 离散输入区(X输入继电器)→ 1xxxx
DVP的输入继电器X映射到Modbus的1xxxx离散输入区域,只读。
| Modbus地址 | DVP设备 | 说明 |
|---|---|---|
| 10001 | X0 | 输入继电器第0位 |
| 10002 | X1 | 输入继电器第1位 |
| 10003 | X2 | 输入继电器第2位 |
| 10004 | X3 | 输入继电器第3位 |
| 10005 | X4 | 输入继电器第4位 |
| 10006 | X5 | 输入继电器第5位 |
| 10007 | X6 | 输入继电器第6位 |
| 10008 | X7 | 输入继电器第7位 |
| 10009 | X10 | 输入继电器第8位(八进制) |
| 10010 | X11 | 输入继电器第9位(八进制) |
| … | … | 依次类推,X采用八进制寻址 |
计算公式:Modbus地址 = 10000 + X编号(八进制转十进制) + 1
注意:X是八进制寻址,X0-X7是前8点,X10-X17是接下来的8点,没有X8、X9!
3.2 线圈区(Y/M/S等)→ 0xxxx
DVP的输出继电器Y、辅助继电器M、状态S等位设备映射到Modbus的0xxxx线圈区域,读写。
Y输出继电器映射:
| Modbus地址 | DVP设备 | 说明 |
|---|---|---|
| 00001 | Y0 | 输出继电器第0位 |
| 00002 | Y1 | 输出继电器第1位 |
| 00003 | Y2 | 输出继电器第2位 |
| … | … | 依次类推,Y采用八进制寻址 |
M辅助继电器映射:
| Modbus地址范围 | DVP设备 | 数量 | 说明 |
|---|---|---|---|
| 00201-00400 | M0-M199 | 200点 | 辅助继电器M(十进制) |
| 00401-00600 | M200-M399 | 200点 | 保持型辅助继电器 |
| … | … | … | 依次类推 |
计算公式:
- Y线圈地址 = Y编号(八进制转十进制) + 1
- M线圈地址 = 200 + M编号 + 1
3.3 保持寄存器区(D数据寄存器)→ 4xxxx
DVP的数据寄存器D映射到Modbus的4xxxx保持寄存器区域,读写。
| Modbus地址 | DVP设备 | 说明 |
|---|---|---|
| 40001 | D0 | 数据寄存器第0个 |
| 40002 | D1 | 数据寄存器第1个 |
| 40003 | D2 | 数据寄存器第2个 |
| 40004 | D3 | 数据寄存器第3个 |
| 40005 | D4 | 数据寄存器第4个 |
| … | … | 依次类推 |
| 40200 | D199 | 数据寄存器第199个 |
| 40201 | D200 | 数据寄存器第200个 |
| … | … | 依次类推 |
| 41000 | D999 | 数据寄存器第999个 |
| … | … | … |
| 44096+ | D4095+ | 数据寄存器最大地址 |
计算公式:Modbus地址 = 40000 + D编号 + 1
示例:要访问D100,Modbus地址 = 40000 + 100 + 1 = 40101
D寄存器分区说明:
| D寄存器范围 | 点数 | 说明 |
|---|---|---|
| D0-D999 | 1000点 | 通用型 |
| D1000-D1999 | 1000点 | 保持型 |
| D2000-D4999 | 3000点 | 扩展寄存器 |
| D5000-D9999 | 5000点 | 特殊扩展寄存器 |
3.4 计数器C → 4xxxx保持寄存器
计数器C也映射到保持寄存器区域:
| Modbus地址 | DVP设备 | 说明 |
|---|---|---|
| 40001 – 40200 | C0 – C199 | 16位计数器 |
四、PLC主站通信指令
DVP PLC作为Modbus主站时,使用两条专用指令:
4.1 MODRD(读从站数据)
MODRD指令用于读取从站设备的数据:
| 参数 | 说明 | 示例 |
|---|---|---|
| S1 | 从站地址(1-254) | K1 |
| S2 | 寄存器类型+地址 | H100064(读从站D100) |
| D | 数据存储起始地址 | D200 |
| n | 读取寄存器个数 | K10 |
S2寄存器类型代码:
| 从机元件 | 代码(S2高8位) | 示例(读取从站D100) |
|---|---|---|
| X(输入) | H1 | H10064(X64) |
| Y(输出) | H3 | H30064(Y64) |
| M(辅助) | H4 | H40100(M100) |
| D(数据) | H10 | H100100(D100) |
4.2 MODWR(写从站数据)
MODWR指令用于写数据到从站设备:
- 参数格式与MODRD类似
- 可以写单个寄存器或多个寄存器
- 支持功能码06(写单寄存器)和16(写多寄存器)
五、PLC从站配置步骤
5.1 硬件连接
- 使用PLC内置的RS-485端口
- 接线:D+接RS485的A线,D-接RS485的B线
- 如果使用RS-232端口,需要通过转换模块转换为RS-485
5.2 设置通信参数
通过特殊寄存器D1120设置通信格式:
| 波特率 | 数据位 | 校验位 | 停止位 | D1120设置值 |
|---|---|---|---|---|
| 9600bps | 8位 | 偶校验 | 1位 | H0083 |
| 9600bps | 8位 | 无校验 | 1位 | H0080 |
| 19200bps | 8位 | 偶校验 | 1位 | H00C3 |
| 19200bps | 8位 | 无校验 | 1位 | H00C0 |
5.3 设置从站地址
通过特殊寄存器D1121设置Modbus从站地址:
- D1121 = 从站地址(1-254)
- 例如:D1121 = 1,表示从站地址为1
5.4 通讯协议模式设置
通过特殊寄存器D1130设置通讯协议模式:
- D1130 = H0001 → Modbus RTU从站模式
- D1130 = H0002 → Modbus ASCII从站模式
六、读取台达变频器示例
假设DVP PLC作为主站,读取台达变频器的运行频率:
| 监控项目 | 变频器地址 | Modbus地址 | 说明 |
|---|---|---|---|
| 运行指令 | 2000H | 40961 | 启动/停止控制 |
| 频率指令 | 2001H | 40962 | 频率设定值 |
| 输出频率 | 2101H | 41218 | 实际输出频率 |
| 输出电流 | 2102H | 41219 | 电机电流 |
| 输出电压 | 2103H | 41220 | 输出电压 |
通信步骤:
- 使用MODRD指令读取变频器数据
- 指定从站地址(变频器站号)
- 指定要读取的寄存器地址
- 数据存放到PLC的D寄存器
- 程序处理后显示或控制
七、常见问题与排障指南
7.1 通讯无响应
- 检查接线:RS485的D+和D-是否接反
- 检查D1120设置:通信格式是否正确
- 检查D1121设置:从站地址是否正确
- 检查D1130设置:是否启用了Modbus从站模式
- 测量总线电压:D+应高于D-约200mV
7.2 读不到数据
- 检查地址偏移:注意1-based和0-based的区别
- 检查八进制寻址:X/Y设备是八进制,不是十进制
- 检查地址范围:是否超出了设备映射范围
- 检查MODRD指令:S2参数的类型代码是否正确
7.3 数据不对或乱码
- 检查数据格式:16位整数还是32位浮点数
- 检查字节序:大端还是小端,是否一致
- 检查字序:32位数据的高低字顺序
- 检查缩放比例:是否需要乘以倍率(如0.01Hz单位的要除以100)
7.4 偶发通讯失败
- 检查屏蔽线:是否用了屏蔽双绞线
- 检查总线长度:距离是否超出规格
- 检查干扰:通讯线是否与动力线平行
- 检查终端电阻:总线两端是否加了120Ω终端电阻
八、与其他品牌PLC的区别
| 对比项 | 台达DVP | 三菱FX3U | 西门子S7-200 SMART |
|---|---|---|---|
| X/Y寻址方式 | 八进制 | 八进制 | 十进制 |
| D寄存器映射 | 从D0开始 | 从D0开始 | 通过HoldStart配置 |
| 主站指令 | MODRD/MODWR | ADPU/REPU | MBUS_MSG |
| 通信端口 | 内建RS-485 | 需外接适配器 | 板载RS-485 |
| 配置寄存器 | D1120/D1121/D1130 | D8120/D8121 | 库指令参数 |
九、总结
台达DVP系列PLC的Modbus地址映射规则:
- 0xxxx线圈 → Y/M/S等位设备
- 1xxxx离散输入 → X输入继电器(八进制)
- 3xxxx输入寄存器 → 只读,特殊寄存器
- 4xxxx保持寄存器 → D数据寄存器/C计数器
实际应用中,需要特别注意:
- X/Y是八进制寻址,D/M是十进制寻址
- 主站使用MODRD/MODWR指令,S2参数需要编码设备类型和地址
- 从站通过D1120/D1121/D1130三个特殊寄存器配置
建议先用Modbus Poll等调试软件测试,确认地址映射正确后再编写PLC程序。
十、相关链接
- Modbus RTU通讯基础教程
- 台达DVP PLC Modbus通信配置实例
- 台达变频器Modbus控制指南
- RS485总线接线规范
发表回复