欢迎访问 工业自动化技术交流圈!一起拆解 PLC 难题、优化 HMI 界面、探讨设备选型与方案设计。

PLC地址、Modbus地址与变频器参数对应关系全解析

日期:01-19  点击:  属于:电气论道

PLC地址、Modbus地址与变频器参数对应关系全解析

系统梳理S7系列PLC与Modbus地址映射逻辑,详解变频器参数字址转Modbus地址方法,附实操案例与计算规则

第一章:概述

在工业自动化通讯场景中,PLC与外部设备(如变频器、HMI、传感器)的Modbus通讯,核心是解决“地址对应”问题——即PLC内部地址如何映射为标准Modbus地址,外部设备(如变频器)的私有参数字址如何转换为Modbus可识别的地址。

本文聚焦两大核心场景:一是S7-200 SMART、S7-1200/1500系列PLC的内部地址(Q区、I区、V区、DB区等)与Modbus地址的映射规则;二是变频器参数(以VFD-M为例)的参数字址到Modbus地址的转换方法,同时详解Modbus从站指令的关键配置要点,帮助工程师快速解决通讯地址匹配难题。

核心原则:Modbus地址分为四大类(线圈00001-0xxxx、离散输入10001-1xxxx、输入寄存器30001-3xxxx、保持寄存器40001-4xxxx),PLC与外部设备的地址映射需严格遵循对应类别,否则会导致通讯失败。

第二章:S7-200 SMART PLC与Modbus地址对应关系

S7-200 SMART的内部地址(输出线圈、输入离散量、保持寄存器、模拟量输入)与Modbus地址存在固定映射规则,需注意地址范围、访问方式及特殊限制。

<
PLC地址类型<PLC地址范围<对应Modbus地址范围<Modbus地址类别<访问方式(功能码)<关键说明
输出线圈(Q区)Q0.0-Q31.700001-00256线圈(Coil)01(读)、05(写单个)、15(写多个)地址需以字节边界起始(如Q0.0、Q2.0),数量为8的整数倍
输入离散量(I区)I0.0-I31.710001-10256离散输入(Discrete Input)02(只读)直接映射输入映像区,按位序递增
保持寄存器(V区)VWx-VW(x+2*(n-1)-1)(n为寄存器数)40001-4xxxx保持寄存器(Holding Register)03(读)、06(写单个)、16(写多个)需在MBUS_INIT指令中指定起始地址,以字(VW)为单位
模拟量输入(AI区)AIW0-AIW110(共56通道)30001-30056输入寄存器(Input Register)04(只读)每个AIW占1个16位寄存器,按字序递增(AIW0=30001)

保持寄存器地址计算规则

保持寄存器(V区)的Modbus地址需通过公式计算,核心以V区起始字节地址为基准:

Modbus地址 = 40000 + (T/2 + 1)

其中:T为V区起始字节地址(必须为偶数,因为VW为16位字,占用2个字节);T/2计算出起始字地址,+1对应Modbus保持寄存器起始编号40001。

示例:HoldStart=VB1000(T=1000)

计算过程:(1000/2) + 1 = 500 + 1 = 501 → Modbus地址=40000 + 501 = 40501? 不,实际对应关系为:

HoldStart=VB1000 → 起始字为VW1000(占用VB1000、VB1001),对应Modbus地址40001;

VW1002(VB1002、VB1003)对应40002,以此类推,公式本质是“Modbus地址=40000 + (起始字地址+1)”(VW1000为第0个起始字,+1后对应40001)。

MBUS_INIT指令关键参数

  • HoldStart:V区保持寄存器起始字节地址(如&VB0、&VB100),决定Modbus 40001对应的PLC内部地址

  • MaxHold:可访问的保持寄存器数量(以字为单位),建议设为32767,若需映射2000字节V区,需设为1000(2000字节=1000字)

  • SM0.0:使能MBUS_SLAVE指令,需持续为ON以维持Modbus从站协议运行

第三章:S7-1200/1500 PLC与Modbus地址对应关系

S7-1200/1500的地址映射逻辑与S7-200 SMART类似,但支持DB块(优化/非优化)作为保持寄存器,地址范围更广泛,且兼容符号寻址与绝对寻址两种方式。

<
PLC地址类型<PLC地址范围<对应Modbus地址范围<访问方式(功能码)<核心说明
输出线圈(Q区)Q0.0-Q1023.700001-0819201/05/15直接映射输出映像区,按位序递增(Q0.0=00001,Q1.0=00009)
输入离散量(I区)I0.0-I1023.710001-1819202(只读)按位序映射(I0.0=10001,I0.7=10008,I1.0=10009)
保持寄存器(DB区)DBx.DBW0-DBx.DBW1999840001-4999903/06/16需通过MB_HOLD_REG指定起始地址,支持优化/非优化DB
保持寄存器(扩展DB区)DBx.DBW0-DBx.DBW131068400001-46553503/06/16适用于大容量数据块,扩展地址范围
模拟量输入(IW区)IW0-IW102230001-3051204(只读)每个IW占1个寄存器(IW0=30001,IW2=30002)

DB块映射关键规则

  • 1. 保持寄存器优先映射DB块的字(DBW)变量,32位数据(如DBD、Real)需占用2个连续Modbus地址(如DBD0=40001+40002)

  • 2. 非优化DB块支持绝对指针寻址(如P#DB4.DBX0.0 WORD 1),优化DB块需使用V4.0+版本MB_SLAVE指令,支持符号寻址

  • 3. 地址映射按“字序递增”:DBx.DBW0=40001,DBx.DBW2=40002,DBx.DBW4=40003,依次类推

版本兼容性:MB_SLAVE指令V3.0-仅支持非优化DB或M区;V4.0+支持优化DB符号名(需TIA Portal V13 SP1+);V5.0+支持多区域映射(需CPU固件≥V4.2)。

第四章:Modbus从站指令MB_HOLD_REG参数配置

MB_HOLD_REG是Modbus从站指令的核心参数,用于指定PLC中映射为Modbus保持寄存器(4xxxx)的存储区域,支持DB区、M区等,需根据存储类型选择合适的关联方式。

支持的存储类型与关联方式

MB_HOLD_REG参数需指向长度≥16位的存储区,否则会报错(如16#8187),支持的存储类型包括非优化DB、优化DB、M区,关联方式分为以下5种:

1. 绝对指针寻址(非优化DB)

适用于非优化DB块,通过指针指定起始地址和占用字数,直接映射绝对地址。

示例1:P#DB4.DBX0.0 WORD 1

含义:映射DB4中从DBX0.0开始的1个Word(DB4.DBW0),对应Modbus地址40001;

若指针为P#DB4.DBX0.0 WORD 5,则映射DB4.DBW0~DB4.DBW8,对应40001~40005。

示例2:P#DB5.DBX10.0 WORD 2

含义:映射DB5中从DBX10.0开始的2个Word(DB5.DBW10、DB5.DBW12),对应40001~40002。

2. M区映射(指针寻址)

支持M区的字节/字存储,映射为Modbus保持寄存器,按字组合规则映射。

示例:P#M100.0 BYTE 10

含义:映射M100.0开始的10个字节(5个Word),对应关系:

MW100(M100+M101)→40001;MW102(M102+M103)→40002;依此类推至MW108→40005。

3. 符号寻址(优化/非优化DB)

适用于V4.0+版本指令,直接关联DB块名称、变量名、数组名或结构体名,无需关注绝对地址。

<
关联对象<关联格式<Modbus地址对应关系
DB块整体(Word变量)"数据块_1"变量a(DB4.DBW0)→40001;a_1(DB4.DBW2)→40002;依次递增
DB块数组(Array[0..9] of Word)"数据块_2".bb[0]→40001;b[1]→40002;...;b[9]→40010
DB块结构体(Struct)"数据块_3".Datacontrol(Word)→40001;count(Int)→40002;time(UInt)→40003
结构体成员(DWord类型)"数据块_3".statistics.stress低16位→40001;高16位→40002(32位数据占2个寄存器)

4. 结构体成员映射规则

结构体中不同数据类型的成员,按“位宽凑整16位”原则映射,具体如下:

<
结构体成员<数据类型<总位宽<占用寄存器数<Modbus地址范围
stArray[0..16] of Bool17位2(32位)40001-40002
btArray[0..3] of Byte32位(4×8)240003-40004
temp1Int(16位)16位140005
stressDWord(32位)32位240006-40007
speedReal(32位)32位240008-40009
stateArray[0..6] of Word112位(7×16)740010-40016

符号寻址vs指针寻址对比

  • 符号寻址:兼容优化DB,支持结构体重构(无需修改指令),现代PLC编程首选

  • 指针寻址:仅支持非优化DB,结构变化后需手动更新指针,易出错,适用于传统项目

第五章:变频器参数与Modbus地址对应关系

变频器的参数(如启停指令、频率设定、运行状态)均有内部参数字址(十六进制),需转换为Modbus保持寄存器地址(4xxxx)才能通过PLC进行读写操作。以下以VFD-M变频器为例,详解转换规则与实操案例。

核心前提:参数字址类型判断

变频器参数字址分为两类,转换前需先判断类型:

  • 1. 控制类地址:用于接收PLC指令(如启停、方向)或反馈状态(如输出频率),通常为保持寄存器(4xxxx),支持读写或只读

  • 2. 参数配置地址:用于修改变频器内部参数(如频率来源、加速时间),地址格式为00nnH(nn为参数号),同样映射为保持寄存器

判断依据:保持寄存器具有“写入后保持有效”特性,符合变频器指令/参数的控制逻辑;输入寄存器(3xxxx)仅读,线圈(0xxxx)仅支持位操作,均不适用。

转换步骤(十六进制参数字址→Modbus地址)

变频器参数字址多为十六进制(后缀H),转换为Modbus保持寄存器地址需3步:

  1. 将十六进制参数字址转换为十进制数(记为N)

  2. Modbus保持寄存器起始地址为40001,扩展地址为400001(适用于大数值地址)

  3. 代入公式计算:Modbus地址 = 40001 + N(或400001 + N,根据地址范围选择)

Modbus地址(保持寄存器)= 40001 + 十六进制参数字址的十进制值

示例:参数字址2000H(控制命令地址)

步骤1:2000H转十进制 → 2×16³ + 0×16² + 0×16¹ + 0×16⁰ = 8192(N=8192)

步骤2:代入公式 → 40001 + 8192 = 48193

结论:VFD-M变频器的控制命令地址(2000H)对应Modbus地址48193,支持通过功能码06(写单个)写入启停指令。

VFD-M变频器关键参数对应表

<
功能描述<参数字址(H)<十进制值(N)<Modbus地址(4xxxx)<访问属性<备注
控制命令(启停/方向)2000H819248193读写Bit0=停止,Bit1=启动,Bit4=正转
频率指令(主设定)2001H819348194读写单位0.01Hz,如写入5000对应50.00Hz
输出频率(实时监控)2102H845048451只读反馈实际输出频率,单位0.01Hz
输出电流(实时监控)2104H845248453只读反馈电机电流,单位0.1A
参数P00(频率来源)0000H040001读写配置变频器频率给定方式
扩展参数(示例)4000H16384416385(400001+16384)读写大数值地址需使用扩展起始地址400001
指令选择:写入变频器控制命令或参数时,需使用Modbus功能码06(写单个保持寄存器);批量写入时使用功能码16(写多个保持寄存器);读取运行状态时使用功能码03(读保持寄存器)。

第六章:核心总结

  • 1. PLC地址映射核心:Q区→Modbus线圈(00001-0xxxx),I区→离散输入(10001-1xxxx),AI/IW区→输入寄存器(30001-3xxxx),V区/DB区→保持寄存器(40001-4xxxx)

  • 2. 保持寄存器计算:S7-200 SMART按V区起始字节计算,S7-1200/1500按DB块字地址递增,32位数据占用2个连续地址

  • 3. 指令版本适配:优化DB块需使用MB_SLAVE V4.0+,推荐符号寻址;非优化DB块支持指针寻址,适用于传统项目

  • 4. 变频器地址转换:十六进制参数字址→十进制→加40001(或400001),控制类地址多为2000H开始,状态反馈地址多为2100H开始

  • 5. 通讯成功关键:地址类别匹配(如保持寄存器对应4xxxx)、数据位宽一致(16位/32位)、功能码正确(读03/写06/16)

掌握以上规则后,可快速解决PLC与Modbus设备、变频器的地址匹配问题,避免因地址错误导致的通讯故障,提升项目调试效率。

关于本站
不销售任何资料软件,不销售限制发布和积分不销售任何资料软件,不销售限制发布和积分
联系我们

工作时间:周一至周五 9:00-18:00

联系人:赵云龙

邮件:Hackdragon@vip.qq.com

底部导航
聚焦电气自动化领域的一站式共享服务平台,致力于打破行业资源壁垒,推动技术、资源、人才的高效流转与协同共赢。平台精准对接电气工程师、企业技术负责人、院校科研人员等核心群体,覆盖工业控制、智能限制发布、新能源自动化等全细分领域。


网站地图 PLC