工业现场总线通信是自动化控制系统的核心环节,台达PLC作为主流控制器,其Modbus通信功能广泛应用于与变频器、仪表、触摸屏及第三方设备的互联。本文将以台达DVP系列PLC(主站)与一台通用Modbus从站设备(如变频器或传感器)为例,详细解析硬件接线、参数设置、程序编写及调试的全流程。
一、 硬件接线与物理连接
Modbus RTU通信通常基于RS-485物理层,采用屏蔽双绞线连接。正确的接线是通信成功的第一步。
1. 端口定义确认
台达DVP系列PLC通常配备RS-485通信口(部分型号需加装扩展模块)。需确认PLC通信口的定义,通常位于机身左侧或扩展模块前端。
| PLC端子标识 | 功能定义 | 连接目标 (从站设备) |
|---|---|---|
D+ / B |
数据正极 | 连接从站 D+ 或 B |
D- / A |
数据负极 | 连接从站 D- 或 A |
SG / GND |
信号地 | 连接从站 GND (建议接地) |
2. 接线步骤
- 断开 设备电源,确保在断电状态下进行接线操作。
- 使用屏蔽双绞线,剥开 线皮,露出铜芯。
- 将PLC的
D+端子与从站设备的D+(或标示为B、+)端子 连接。 - 将PLC的
D-端子与从站设备的D-(或标示为A、-)端子 连接。 - 检查 线路是否虚接或短路,确认无误后 紧固 端子螺丝。
- 如果通信距离较长或干扰严重,需将屏蔽层 单端接地(通常在PLC侧接地)。
二、 通信参数配置
通信双方必须保持一致的通信参数,包括波特率、数据位、校验位和停止位。假设设定参数为:波特率9600bps,8个数据位,偶校验,1个停止位(即标准格式 8-N-1 或 8-E-1)。
1. 从站设备参数设置
根据从站设备说明书,通过面板按键或硬件拨码开关,将从站参数 设置 如下:
- 通信地址:
1(假设从站地址为1)。 - 波特率:
9600。 - 数据位:
8。 - 校验位:
Even(偶校验)。 - 停止位:
1。
2. PLC主站参数设置
台达PLC内部通过特殊寄存器设置通信协议。对于DVP-ES2/SA2/SX2系列,主要涉及 D1120 寄存器。
-
计算 协议设定值。台达PLC的通信格式字由一个十六进制数表示。
- 设定内容:9600bps、8数据位、偶校验、1停止位。
- 对应二进制值:
1000 0010 0110 0000。 - 转换为十六进制:
H8260。
常用设定对照表如下:
设定值 (十六进制) 波特率 数据位 校验位 停止位 H82609600 8 偶校验 1 H82619600 8 奇校验 1 H82639600 8 无校验 1 H836019200 8 偶校验 1 -
在编程软件(WPLSoft或ISPSoft)中,使用
MOV指令 写入 设定值。- 梯形图逻辑:
MOV H8260 D1120 - 含义:将通信口2(或口1,视机型而定)初始化为Modbus RTU模式。
- 梯形图逻辑:
-
设定 通信超时时间。
- 写入
K50到D1123(超时判定时间,单位10ms,即500ms)。若从站响应时间超过此值,PLC将判定通信错误。
- 写入
三、 主站通信程序编写
台达PLC提供了专用的Modbus通信指令,无需用户手动拼装报文,极大地简化了编程难度。核心指令为 MODBUS。
1. 指令格式解析
MODBUS 指令的基本语法结构如下:
MODBUS S1 S2 S3 S4 D
各操作数含义如下:
| 操作数 | 参数名称 | 功能说明 |
|---|---|---|
S1 |
从站地址 | 目标设备的站号 (1 ~ 247) |
S2 |
功能码 | 指定读写操作类型 |
S3 |
从站寄存器地址 | 要访问的从站内部地址 |
S4 |
读写长度 | 读取或写入的数据点数 |
D |
主站寄存器 | PLC内部存储数据的起始寄存器 |
常用 功能码 (S2) 定义:
| 功能码 (十进制) | 功能名称 | 适用场景 |
|---|---|---|
03 |
读取保持寄存器 | 读取参数(如频率、电压) |
06 |
写单个保持寄存器 | 写入单条控制参数 |
16 |
写多个保持寄存器 | 写入多条参数(如多段速设定) |
2. 编写读取程序 (功能码 03)
假设需要读取从站地址为 1 的变频器运行频率(假设地址为 4096),将数据存入PLC的 D100。
- 建立 触发条件。使用定时器或脉冲触点,避免通信总线拥堵。通常使用
T1定时器产生周期性触发信号。 - 输入 指令:
LD T1(触发条件)MODBUS K1 K3 K4096 K1 D100
- 解析:
S1 = K1:目标从站地址为1。S2 = K3:功能码03(读取)。S3 = K4096:变频器频率寄存器地址。S4 = K1:读取1个数据。D = D100:读取到的数值存入D100。
3. 编写写入程序 (功能码 06)
假设需要将PLC中 D200 的数值写入从站地址为 1 的变频器运行指令(假设地址为 4097)。
- 输入 指令:
LD M0(触发条件,如写入按钮按下)MODBUS K1 K6 K4097 K1 D200
- 解析:
S2 = K6:功能码06(写单个寄存器)。S3 = K4097:目标写入地址。D = D200:源数据寄存器。
4. 通信状态监控
通信过程中,PLC会自动置位特殊标志位。
- 监控
M1120(通信口忙碌标志)。当通信指令执行时,该位为On;完成后为Off。编程时应确保上一条通信指令完成后,再执行下一条,防止通信冲突。 - 监控
D1130。该寄存器存储通信错误代码。若为0表示通信正常;非0表示发生错误(如超时、校验错)。
5. 通信轮询逻辑实现
在实际应用中,往往需要读写多个数据。此时需要编写轮询程序,通过状态字或步进指令依次触发不同的 MODBUS 指令。
流程逻辑如下:
程序示例(使用 MOV 指令配合比较指令实现简单的轮询):
- 初始化:上电第一个扫描周期,传送
K0到状态寄存器D10。 - 状态0:当
D10=K0且通信空闲时,执行 读取频率指令,完成后 传送K1到D10。 - 状态1:当
D10=K1且通信空闲时,执行 读取电流指令,完成后 传送K2到D10。 - 状态2:当
D10=K2且通信空闲时,执行 写入控制字指令,完成后 传送K0到D10(循环)。
四、 调试与故障排查
通信配置完成后,若数据无法交互,需按以下步骤排查。
1. 物理层排查
- 测量 电压:使用万用表测量
D+与D-之间的电压。空闲状态下,电压差通常在 0V 左右或微小幅摆动;通信发送时,电压应有明显跳变(通常在 1.5V 至 5V 之间)。 - 确认 终端电阻:如果通信距离超过50米,建议在总线首尾两端 接入 120Ω终端电阻,以消除信号反射。部分台达PLC内部集成终端电阻跳线,需 拨至 ON位置。
2. 参数核对
- 对比 参数:使用PLC编程软件在线监控
D1120的值,确保与从站设备的波特率、校验位完全一致。这是最常见的故障原因。 - 检查 站号:确认PLC程序中的
S1参数与从站设备设定的站号一致,且总线上没有重复站号。
3. 程序逻辑排查
- 监控 标志位:观察
M1120和D1130。- 若
M1120一直为On,说明通信死锁,需检查接线或PLC设置。 - 若
D1130不为0,查阅台达PLC手册错误代码表。- 错误代码
K1:校验错误(检查接线干扰或参数匹配)。 - 错误代码
K2:超时错误(检查从站是否上电、站号是否正确)。
- 错误代码
- 若
4. 常见问题解决方案表
| 故障现象 | 可能原因 | 排查步骤 |
|---|---|---|
读取数据全为 0 |
线路断路或接反 | 交换 D+ 和 D- 线;检查 线路通断 |
| 数据偶尔跳变 | 干扰严重 | 增加 屏蔽层接地;降低 波特率(如改为 4800) |
| 通信频繁中断 | 帧间隔太短 | 延长 轮询时间间隔;在指令间 增加 延时计时器 |
| 无法写入数据 | 从站地址错误 | 核对 从站说明书,确认地址是否偏移(如有的设备地址需 +1) |
五、 进阶技巧:CRC校验与报文监控
对于复杂的非标设备,如果台达PLC的标准 MODBUS 指令无法满足需求(例如自定义功能码),可以使用 RS 指令发送原始报文。此时需要手动计算CRC校验码。
CRC-16 校验码计算原理
Modbus RTU模式采用CRC-16校验。其计算逻辑较为复杂,通常通过查表法或循环计算得出。公式核心逻辑如下:
- 预置 一个16位寄存器为
0xFFFF。 - 循环 处理数据帧中的每一个字节,将当前字节与寄存器低8位 进行异或操作。
- 判断 最低位是否为1:若为1,寄存器右移一位并 异或 多项式
0xA001;若为0,仅右移一位。 - 重复 判断和移位操作8次,处理完一个字节。
- 所有字节处理完毕后,寄存器中的值即为CRC校验码(低字节在前)。
在台达PLC中,若使用 RS 指令,部分型号支持硬件自动添加CRC,但通过编程软件的“CRC计算器”工具或简单的PLC算法块计算,是诊断通信故障的有效手段。若怀疑程序发送的地址有误,可人工计算理论报文,与串口调试助手截获的实际报文 进行对比,找出差异。
六、 总结
台达PLC的Modbus通信配置核心在于参数一致性与程序逻辑的严谨性。通过正确接线、配置 D1120 参数、合理调用 MODBUS 指令,并配合轮询逻辑管理 M1120 标志位,即可实现稳定可靠的工业数据交互。调试时应遵循“先物理、后参数、再程序”的原则,逐步缩小故障范围,确保系统稳定运行。

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