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

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

台达PLC与网络及串口型MODBUS继电器通讯示例工程缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  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,most common
DVP-EH3COM1(RS232), COM2(RS485), 可选COM3Modbus RTU/ASCII高速通讯,支持115200bps
AS系列RS485口, 以太网口Modbus RTU/TCP新一代中型PLC,Powerful Features
AH系列多串口, EthernetModbus 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元件Modbusaddress(decimal)function code说明
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/Ccurrent value50000+03/06/16字元件

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

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

四、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   // Baud rate:03=9600, 04=19200, 05=38400, 06=57600, 07=115200
MOV  H00   D1122   // data bit8,stop bit1,无校验
MOV  K100  D1123   // 通讯超时100ms
MOV  H00   D1124   // 不启用终端电阻(如需要设H01)

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

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

// 读取从站1的8路继电器状态
// MODRD  slave address  function code  starting address  Reading quantity  存储位置

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

// 参数说明:
// K1    = slave address1
// K1    = function code01(读线圈)
// H0000 = starting address0
// K8    = read8个
// D100  = 数据存储起始地址

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

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

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

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

// 参数说明:
// K1    = slave address1
// K5    = function code05(写单线圈)
// H0000 = 继电器地址0(No.1路)
// HFF00 = 吸合(H0000=断开)

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

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

// K6 = function code06(写单寄存器)
// H0000 = register address(模块地址寄存器)
// K2 = 新地址值

4.4 写多个继电器(MODWRfunction code15)

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

// 参数说明:
// K15   = function code15(写多线圈)
// H0000 = starting address0
// K4    = 写入4个线圈
// D200  = 数据起始地址(按位存储)

// D200的Bit0=No.1路, Bit1=No.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           // 触发读取

// read8路继电器状态
LD     M0
MODRD  K1    K1    H0000   K8     D100

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

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

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

// No.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,               // slave address
    Function := 1,              // function code01=读线圈
    StartAddr := 0,             // starting address
    Quantity := 8,              // Reading quantity
    Buffer := ADR(ReadData),    // 数据缓冲区
    Done => Done,
    Busy => Busy,
    Error => Error,
    ErrorID => ErrorID
);

// 写单个继电器
MB_Write : MB_Master;
MB_Write(
    Enable := WriteEnable,
    SlaveID := 1,
    Function := 5,              // function code05=写单线圈
    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非法地址read/写入地址超出范围
H03Illegal data value写入的数据不合法
H04Substation equipment malfunction模块硬件故障
H05确认但未处理从站忙,稍后重试
H06从站忙等待从站空闲
H07否定应答从站拒绝请求
H08内存奇偶错误从站内存故障
H0AGateway path unavailable网关配置错误
H0B网关目标无响应目标设备未响应
HFE超时错误从站无响应,检查接线和地址

七、示例工程说明

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

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

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

技术术语(共 13 个)—— Click to Expand
Modbus RTU基于串行链路的ModbusProtocol,使用二进制编码和CRC check
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
Modbus ASCII使用ASCII字符传输的ModbusProtocol,以冒号开头、CR/LF结尾
RS485工业常用的差分串行通信标准,支持多点通信
RS232点对点串行通信标准,常用于短距离设备通信
function codeModbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
registerModbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
Baud rate串行通信每秒传输符号数,Modbus RTU常用9600/19200
网关协议转换设备,如 Modbus RTU ↔ Modbus TCP
serial port计算机与外部设备进行串行通信的物理接口
线圈Modbus位可读写数据,地址从00001开始
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— Click to Expand
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Modbus programming development 字数 4132 字 · 阅读约 11 分钟 更新 2026-08-20 永久链接 https://www.modbus.cn/11839.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus debugging tool,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 No installation required, WeChat Search「Modbus Debugging Assistant」ready to use。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.