台达PLC与网络及串口型MODBUS继电器通讯示例工程

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

台达PLC与网络及串口型MODBUS继电器通讯示例工程缩略图
本文目录
  1. 1. 一、台达PLC支持的Modbus通讯方式
  2. 2. 二、硬件接线
  3. 3. 三、Modbus地址映射
  4. 4. 四、WPLSoft编程示例(梯形图)
  5. 5. 五、ISPSoft/AS系列编程示例
  6. 6. 六、常见问题与排查
  7. 7. 七、示例工程说明

台达PLC(DVP系列、AS系列、AH系列等)通过Modbus协议与网络型或串口型继电器模块通讯,是工业自动化中常用的分布式控制方案。本文详细介绍台达PLC的硬件接线、ISPSoft/WPLSoft编程配置、Modbus地址映射以及完整的示例工程,帮助工程师快速实现台达PLC对继电器模块的读写控制。

一、台达PLC支持的Modbus通讯方式

台达PLC支持多种Modbus通讯方式,不同系列的PLC支持的通讯口和协议略有差异:

PLC系列通讯口支持协议说明
DVP-ES2/EX2/SS2/SA2/SX2COM1(RS232), COM2(RS485)Modbus RTU/ASCIICOM2内置RS485,最常用
DVP-EH3COM1(RS232), COM2(RS485), 可选COM3Modbus RTU/ASCII高速通讯,支持115200bps
AS系列RS485口, 以太网口Modbus RTU/TCP新一代中型PLC,功能强大
AH系列多串口, 以太网Modbus RTU/TCP大型PLC,支持多主站

二、硬件接线

2.1 DVP系列RS485接线

  • PLC端:使用COM2口(RS485),引脚定义为:D+(1号针)、D-(2号针)、SG(3号针)
  • 模块端:A端子接PLC的D+,B端子接PLC的D-
  • 地线:SG与模块的信号地连接,提高抗干扰能力
  • 终端电阻:总线两端接入120Ω终端电阻,DVP系列PLC的COM2口内置终端电阻,可通过软件启用
  • 电源:继电器模块使用独立24V DC供电

2.2 网络型Modbus TCP接线

  • 使用网线将模块连接到交换机或直接连接PLC的以太网口
  • 模块IP地址需与PLC在同一网段
  • 单网口版设备必须在网络配置中将【透传】模式更改为【Modbus TCP】模式
  • Modbus TCP默认端口号为502

三、Modbus地址映射

台达PLC的Modbus地址与内部寄存器的对应关系如下:

台达PLC元件Modbus地址(十进制)功能码说明
S(步进继电器)0000-204701/05/15位元件
X(输入)2048-409502只读
Y(输出)4096-614301/05/15位元件
M(辅助继电器)6144-1228701/05/15位元件
T(定时器)12288-1433501/05/15触点
C(计数器)14336-1638301/05/15触点
D(数据寄存器)40000-4999903/06/16字元件
T/C当前值50000+03/06/16字元件

继电器模块作为从站时,其内部地址映射通常为:

功能Modbus功能码地址范围说明
继电器输出0x01/0x05/0x0F0x0000-0x00078路继电器
数字输入0x020x0000-0x00078路光耦输入
模块参数0x03/0x060x0000-0x000F地址、波特率等

四、WPLSoft编程示例(梯形图)

WPLSoft是台达DVP系列PLC的梯形图编程软件。使用MODRD和MODWR指令进行Modbus通讯。

4.1 通讯参数设置

在WPLSoft中,通过设置特殊寄存器来配置COM2口的通讯参数:

// 通讯参数设置(使用MOV指令)
MOV  H81   D1120   // COM2通讯协议:81=Modbus RTU, 82=Modbus ASCII
MOV  H03   D1121   // 波特率:03=9600, 04=19200, 05=38400, 06=57600, 07=115200
MOV  H00   D1122   // 数据位8,停止位1,无校验
MOV  K100  D1123   // 通讯超时100ms
MOV  H00   D1124   // 不启用终端电阻(如需要设H01)

// D1120详细说明:
// Bit7-4: 协议 (0=无, 1=ASCII, 2=RTU, 8=Modbus ASCII, 9=Modbus RTU)
// Bit3:   停止位 (0=1位, 1=2位)
// Bit2-1: 校验 (0=无, 1=奇, 2=偶)
// Bit0:   数据位 (0=7位, 1=8位)
// H81 = 1000 0001 = Modbus RTU, 1停止位, 无校验, 8数据位

4.2 读取继电器状态(MODRD指令)

// 读取从站1的8路继电器状态
// MODRD  从站地址  功能码  起始地址  读取数量  存储位置

LD     M0           // 触发信号
MODRD  K1    K1    H0000   K8     D100

// 参数说明:
// K1    = 从站地址1
// K1    = 功能码01(读线圈)
// H0000 = 起始地址0
// K8    = 读取8个
// D100  = 数据存储起始地址

// 读取结果:
// D100的Bit0 = 第1路继电器状态
// D100的Bit1 = 第2路继电器状态
// ...
// D100的Bit7 = 第8路继电器状态

// 通讯完成标志:M1127(COM2传送完成)
// 通讯错误标志:M1129(COM2通讯错误)
// 错误代码:D1129

4.3 写单个继电器(MODWR指令)

// 控制第1路继电器吸合
LD     M10          // 按钮触发
MODWR  K1    K5    H0000   HFF00

// 参数说明:
// K1    = 从站地址1
// K5    = 功能码05(写单线圈)
// H0000 = 继电器地址0(第1路)
// HFF00 = 吸合(H0000=断开)

// 控制第1路继电器断开
LD     M11
MODWR  K1    K5    H0000   H0000

// 写保持寄存器示例:设置模块地址为2
LD     M12
MODWR  K1    K6    H0000   K2

// K6 = 功能码06(写单寄存器)
// H0000 = 寄存器地址(模块地址寄存器)
// K2 = 新地址值

4.4 写多个继电器(MODWR功能码15)

// 同时控制前4路继电器
LD     M20
MOV    H0F   D200   // 低4位置1,前4路吸合
MODWR  K1    K15   H0000   K4    D200

// 参数说明:
// K15   = 功能码15(写多线圈)
// H0000 = 起始地址0
// K4    = 写入4个线圈
// D200  = 数据起始地址(按位存储)

// D200的Bit0=第1路, Bit1=第2路...
// H0F = 0000 1111 = 前4路吸合,后4路断开

4.5 完整的轮询程序

// 主程序:定时轮询读取继电器状态
LD     M1002        // 首次扫描
MOV    H81   D1120  // 初始化COM2为Modbus RTU
MOV    H03   D1121  // 9600bps
MOV    H00   D1122  // 8N1
RST    M0           // 清除触发标志

// 每500ms读取一次
LD     M1000        // 1s时钟脉冲
ANI    M1127        // 等待上一次通讯完成
ANI    M1129        // 无错误
OUT    M0           // 触发读取

// 读取8路继电器状态
LD     M0
MODRD  K1    K1    H0000   K8     D100

// 通讯错误处理
LD     M1129        // 通讯错误
INC    D110         // 错误计数
MOV    D1129 D111   // 保存错误代码
RST    M1129        // 清除错误标志

// 将读取的继电器状态映射到输出
LD     M1127        // 通讯完成
MOV    D100  D101   // 保存数据
RST    M0           // 清除触发

// 第1路继电器状态 -> Y0
LD     D101.0
OUT    Y0

// 第2路继电器状态 -> Y1
LD     D101.1
OUT    Y1

// ...以此类推

五、ISPSoft/AS系列编程示例

AS系列PLC使用ISPSoft编程软件,支持结构化文本(ST)和梯形图(LD)。Modbus通讯使用MB_Master功能块。

5.1 ST语言示例

// 变量声明
VAR
    MB_Read : MB_Master;        // Modbus主站功能块
    Enable : BOOL := FALSE;     // 使能
    Done : BOOL;                // 完成标志
    Busy : BOOL;                // 忙标志
    Error : BOOL;               // 错误标志
    ErrorID : WORD;             // 错误代码
    ReadData : ARRAY[0..7] OF BOOL;  // 读取的数据
END_VAR

// 读取继电器状态
MB_Read(
    Enable := Enable,
    SlaveID := 1,               // 从站地址
    Function := 1,              // 功能码01=读线圈
    StartAddr := 0,             // 起始地址
    Quantity := 8,              // 读取数量
    Buffer := ADR(ReadData),    // 数据缓冲区
    Done => Done,
    Busy => Busy,
    Error => Error,
    ErrorID => ErrorID
);

// 写单个继电器
MB_Write : MB_Master;
MB_Write(
    Enable := WriteEnable,
    SlaveID := 1,
    Function := 5,              // 功能码05=写单线圈
    StartAddr := 0,
    Quantity := 1,
    Buffer := ADR(CoilValue),
    Done => WriteDone
);

六、常见问题与排查

6.1 通讯失败常见原因

  • D1120设置错误:确认通讯协议设置为Modbus RTU(H81)或ASCII(H82)
  • 波特率不匹配:PLC和模块的波特率必须一致,D1121设置正确
  • 从站地址错误:MODRD/MODWR指令中的从站地址必须与模块设置一致
  • A/B线接反:交换A/B线试试,这是最常见的接线错误
  • 未启用终端电阻:长距离通讯时总线两端必须接120Ω终端电阻
  • 电源问题:模块供电不足会导致通讯不稳定
  • 干扰问题:RS485线远离动力线,使用屏蔽双绞线
  • COM口选择错误:DVP系列有COM1和COM2,注意使用正确的特殊寄存器

6.2 台达PLC错误代码(D1129)

错误码含义解决方法
H01非法功能码模块不支持该功能码
H02非法地址读取/写入地址超出范围
H03非法数据值写入的数据不合法
H04从站设备故障模块硬件故障
H05确认但未处理从站忙,稍后重试
H06从站忙等待从站空闲
H07否定应答从站拒绝请求
H08内存奇偶错误从站内存故障
H0A网关路径不可用网关配置错误
H0B网关目标无响应目标设备未响应
HFE超时错误从站无响应,检查接线和地址

七、示例工程说明

本文配套的台达PLC完整示例工程包含:

  • DVP-ES2完整WPLSoft工程(含初始化、读线圈、写线圈、错误处理、状态显示)
  • AS系列ISPSoft工程(ST和LD两种版本)
  • Modbus地址映射表Excel
  • 硬件接线图PDF
  • 详细的调试步骤说明
  • 常见问题排查手册

示例工程在文章底部进行下载,下载后可直接导入到WPLSoft或ISPSoft中使用。建议先使用默认参数(从站地址1、9600波特率、无校验)测试通讯,成功后再根据实际需求修改参数。

技术术语(共 13 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用二进制编码和CRC校验
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
Modbus ASCII使用ASCII字符传输的Modbus协议,以冒号开头、CR/LF结尾
RS485工业常用的差分串行通信标准,支持多点通信
RS232点对点串行通信标准,常用于短距离设备通信
功能码Modbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
波特率串行通信每秒传输符号数,Modbus RTU常用9600/19200
网关协议转换设备,如 Modbus RTU ↔ Modbus TCP
串口计算机与外部设备进行串行通信的物理接口
线圈Modbus位可读写数据,地址从00001开始
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 Modbus编程开发 字数 4132 字 · 阅读约 11 分钟 更新 2026-08-20 永久链接 https://www.modbus.cn/11839.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注