在Modbus通讯中,不同品牌PLC的地址与Modbus协议地址存在明确的对应关系,这种对应关系通常基于元件类型和功能码进行映射。以下是常见PLC品牌与Modbus地址的对应关系及说明:
一、常见PLC品牌与Modbus地址对应关系
PLC品牌 | 输入元件(X/I) | 输出元件(Y/Q) | 数据寄存器(D/V/DM等) | 功能码支持 |
---|---|---|---|---|
三菱 | X元件支持Modbus 02功能码 | Y元件支持Modbus 01、05、15功能码 | D元件支持Modbus 03、06、16功能码 | - |
西门子 | I元件支持Modbus 02功能码 | Q元件支持Modbus 01、05、15功能码 | V元件支持Modbus 03、06、16功能码 | - |
欧姆龙 | CIO0元件支持Modbus 02功能码 | CIO100元件支持Modbus 01、05、15功能码 | D元件支持Modbus 03、06、16功能码 | - |
松下 | X元件支持Modbus 02功能码 | Y元件支持Modbus 01、05、15功能码 | DT元件支持Modbus 03、06、16功能码 | - |
台达 | X元件支持Modbus 02功能码 | Y元件支持Modbus 01、05、15功能码 | D元件支持Modbus 03、06、16功能码 | - |
基恩士 | R0元件支持Modbus 02功能码 | R500元件支持Modbus 01、05、15功能码 | DM元件支持Modbus 03、06、16功能码 | - |
施耐德电气 | I元件支持Modbus 02功能码(更新固件后支持01、02、15功能码) | Q元件支持Modbus 01、15功能码 | M元件支持Modbus 03、06、16功能码 | - |
二、Modbus地址与PLC地址映射规则
地址偏移:
Modbus协议地址通常从0开始,而PLC地址可能基于1或特定偏移量。例如,西门子PLC的输入点I0.0在Modbus中可能对应地址000000(而非100001),具体取决于通信配置。
部分PLC(如三菱FX系列)的Modbus地址需通过公式计算。例如,Y25(八进制)需先转换为十进制21,再加000001得到Modbus地址000022。
功能码与数据类型:
输入元件(如X/I)通常对应Modbus的02功能码(读取离散输入)。
输出元件(如Y/Q)对应01(读取线圈状态)、05(写入单个线圈)、15(写入多个线圈)功能码。
数据寄存器(如D/V/DM)对应03(读取保持寄存器)、06(写入单个寄存器)、16(写入多个寄存器)功能码。
寄存器类型与地址范围:
Modbus协议中,40001-49999为保持寄存器(对应PLC的V区、D区等),30001-30056为模拟量寄存器(如西门子的AIW),00001-00256为输出线圈(如Q点),10001-10256为输入线圈(如I点)。
三、实际应用中的注意事项
协议转换与配置:
当PLC作为Modbus主站时,需直接使用PLC手册中的地址(如S7-200的MBUS_MSG指令)。
当PLC作为从站时,上位机(如组态软件)需根据Modbus协议地址编写通信程序,此时需明确PLC地址与Modbus地址的映射关系。
地址冲突与验证:
使用测试工具(如ModScan32)验证地址映射是否正确。例如,读取西门子PLC的VW100时,Modbus地址应为400001+100/2=400051。
品牌差异与兼容性:
不同品牌PLC对Modbus协议的支持程度不同。例如,富士PLC需通过无协议编程实现Modbus通信,且部分功能码(如D元件的16功能码)可能受限。