PLC与变频器Modbus通信的地址映射表
Modbus通信是工业自动化领域最常用的设备互联方式。实现PLC(主站)对变频器(从站)的控制,核心在于准确掌握“地址映射”。只有正确对应PLC内部寄存器与变频器参数地址,才能实现启停控制、频率给定及状态监视。
1. 物理连接与基础设置
确认 接线方式。使用屏蔽双绞线,将PLC的通讯口与变频器的485端口相连。通常采用 连接 A端子接A端子,B端子接B端子。如果通讯不稳定,可尝试在末端 接入 120欧姆的终端电阻。
设置 变频器通讯参数。在变频器面板上 修改 以下关键参数(以通用变频器为例):
- 设置 站号。例如设定为
1。 - 设置 波特率。通常选择
9600bps。 - 设置 数据格式。例如
8-N-1(8位数据位,无校验,1位停止位)。 - 设置 控制源。选择 “通讯控制”或“Modbus控制”,确保变频器接收来自通讯口的指令而非端子排或面板。
配置 PLC通讯模块。在PLC编程软件的硬件组态界面,填入 与变频器一致的波特率、数据格式。添加 Modbus RTU主站功能块,指定通讯口。
2. 通讯地址映射原理
Modbus协议主要使用功能码 03(读保持寄存器)和 06 或 10(写单个/多个寄存器)。地址映射的核心在于“公式转换”。
大多数变频器的参数地址遵循以下映射关系:PLC发送的通讯地址 = 变频器参数号 + 偏移量。不同品牌的偏移量不同,常见的偏移量规则如下:
- 功能码参数(如基本运行参数):地址通常为
参数号 + 某一固定值(如2000或4000)。 - 监控参数(如输出频率、电流):通常映射在特定连续区域。
- 通讯地址通常从
0或1开始计数,需 注意 协议地址与显示地址的区别(如PLC寄存器40001对应协议地址0000)。
3. 常用控制地址映射表
以下映射表展示了PLC如何通过特定的寄存器地址访问变频器的核心功能。此处以通用标准映射为例(不同品牌变频器请查阅具体手册,此表为逻辑参考)。
表 1:PLC写入控制区(功能码:写寄存器)
| 功能描述 | PLC寄存器地址示例 | 变频器映射地址(十六进制) | 数据含义/指令值 | 备注 |
|---|---|---|---|---|
| 运行控制命令 | 40001 |
0000H |
1=正转, 2=反转, 3=停止 |
控制启停核心地址 |
| 频率设定值 | 40002 |
0001H |
0-10000 (对应0.00-100.00Hz) |
需注意分辨率单位 |
| 加速时间 | 40003 |
0002H |
单位通常为 0.1秒 |
例如 100 代表10秒 |
| 减速时间 | 40004 |
0003H |
单位通常为 0.1秒 |
例如 50 代表5秒 |
| 运行模式切换 | 40005 |
0004H |
0=面板控制, 1=端子控制, 2=通讯控制 |
用于程序切换控制权 |
表 2:PLC读取状态区(功能码:读寄存器)
| 功能描述 | PLC寄存器地址示例 | 变频器映射地址(十六进制) | 数据范围 | 备注 |
|---|---|---|---|---|
| 运行状态字 | 40010 |
000AH |
位状态解析 | 包含运行、故障、方向等信息 |
| 输出频率 | 40011 |
000BH |
0-10000 |
实际运行频率 |
| 输出电流 | 40012 |
000CH |
0-65535 |
单位通常为 0.01A |
| 输出电压 | 40013 |
000DH |
0-65535 |
单位通常为 1V |
| 故障代码 | 40014 |
000EH |
具体故障码 | 用于故障诊断逻辑 |
4. 数据交互逻辑流程
通过流程图可以清晰理解PLC如何完成一次完整的控制与监视循环。
graph TD
A["PLC程序开始"] --> B["发送读取指令 (功能码 03)"]
B --> C{"变频器响应?"}
C -- "超时/错误" --> D["触发报警逻辑"]
C -- "正常" --> E["解析状态数据 (频率/电流/状态)"]
E --> F["逻辑运算 (PID或比较指令)"]
F --> G["打包控制数据 (频率/启停指令)"]
G --> H["发送写入指令 (功能码 06 或 10)"]
H --> I{"写入成功?"}
I -- "失败" --> J["重发机制"]
I -- "成功" --> A
J --> A
D --> A
5. 编程实操步骤
在PLC编程软件中,调用 Modbus通信指令库。以下以类ST语言逻辑为例(不同PLC语法略有不同,逻辑通用):
- 定义 变量。创建
Modbus_Run(触发位)、Slave_ID(从站号,设为1)、Start_Addr(起始地址,设为0)、Data_Len(读取长度)。 - 编写 读取逻辑。使用 功能码
03。- 配置
Slave为1。 - 配置
Addr为4096(对应十六进制0x0400,假设此地址存运行频率)。 - 配置
Count为1。 - 触发 通信请求,将返回值 传送 至
PLC_Freq_Read变量。
- 配置
- 编写 写入逻辑。使用 功能码
06(写单个)或16(写多个)。- 赋值 目标频率
Target_Freq(例如5000代表50.00Hz)。 - 配置
Addr为1(对应十六进制0x0001,频率给定地址)。 - 执行 写入指令,将
Target_Freq发送 给变频器。
- 赋值 目标频率
处理 数据转换。变频器通讯数据通常为整数。
- 频率转换:若变频器分辨率为
0.01Hz,需 执行 运算:实际频率 = 通讯数值 × 0.01。或直接在PLC内部使用整数运算避免浮点数开销。 - 状态字解析:使用 逻辑与指令(
AND)提取特定位。例如,判断 第0位是否为1以确认变频器是否运行。
6. 常见故障排查
当通信建立失败时,检查 以下关键点:
- 核对 站号唯一性。确认总线上没有重复的从站地址。
- 确认 地址偏移量。部分PLC协议地址从
0开始,部分从1开始。若读取数据错位,尝试将地址 减 1 或 加 1。 - 检查 接线极性。A、B线反接会导致通讯灯闪烁但无法读取数据。
- 监控 通讯超时。调整 超时时间参数,建议设置为
500ms至1000ms。

暂无评论,快来抢沙发吧!