☰
台达PLC与英威腾变频器RS485 Modbus RTU通讯实例详解
2026/10/19 5:27:58 网站建设 项目流程

自动化改造这一行,需求翻来覆去就是那几个,“用台达 PLC ES 系列去控制英威腾 GD 变频器”绝对算高频场景之一。如果你在供水、风机、输送带上待过,八成遇到过这种情况:变频器装好了,现场要远程调速、远程启停,还得看得见当前频率和电流,这时候让PLC与变频器通过RS485走Modbus RTU通讯,是最常见也最省事的方案。

这篇文章就把我从接线、参数设置,到梯形图程序、现场排障的完整流程整理出来,程序思路可以直接抄,参数我会讲清楚为什么这样设。适合正在做设备改造的电气工程师,也适合刚接触PLC通讯、对Modbus寄存器还一知半解的新手。

1. 方案设计思路:为什么选RS485通讯,而不是模拟量

1.1 通讯控制和端子控制的真实取舍

很多人一开始纠结:变频器调速,用模拟量0~10V或者4~20mA不也行吗?确实行,但你算一笔账就明白了。

模拟量控制至少要解决三件事:一是PLC侧得有模拟量输出模块,没有模块就得加DA模块或者用带模拟量的机型;二是模拟量信号长距离传输容易被干扰,尤其现场有变频器这种大功率设备时,干扰起来能把给定值“飘”得没法看;三是模拟量只能单向给频率,变频器当前跑多少、电流多大、有没有报警,你通通看不到,想做人机界面显示、远程监控,还得额外配通信或者扩展模块。

而RS485通讯一根双绞线就全干完了。调速、启停、停机、故障复位、读取输出频率、输出电流、母线电压、故障代码,全部通过Modbus寄存器读写搞定。硬件成本几乎是零,台达ES2自带一个RS485通讯口,英威腾GD系列变频器也标配485端子,线材费可以忽略。

1.2 台达ES系列与英威腾GD的搭配逻辑

这套组合的优势很明确:台达ES2的MODRW/MODRD通讯指令非常成熟,专门针对Modbus协议做了指令级封装,不需要自己拼报文算CRC,梯形图里写一条指令就能完成一次读或写操作,学习门槛比自由口通讯低很多。

英威腾GD系列的Modbus寄存器布局也有规律可循。常见机型里,频率给定寄存器在2000H附近,运行命令寄存器在2001H附近,运行状态参数从2100H开始连续排列。这种大厂公开的通讯协议表做得比较规范,调试时查手册找地址很方便。

另外两个品牌在RS485电气特性上都是标准差分信号,波特率和数据格式只要两边一致就能通。实际项目中,这套组合出现在恒压供水、风机节能、输送带调速、纺织机械联动等场景里都很常见,点位不多,逻辑不复杂,非常适合用485总线解决。

2. 硬件准备与接线,这步错了后面全白搭

2.1 材料清单

先列一份材料清单,别在现场东缺西缺:

物料规格说明
台达PLCDVP-ES2系列,比如DVP-28ES2,自带COM2 RS485口
英威腾变频器GD100/GD200/GD350系列均可,确认有485端子
通讯线2芯双绞屏蔽线,截面积0.5~1.0平方毫米
接线端子UT型冷压端子若干
USB转RS485工具调试阶段必备,建议用带自动收发切换的
万用表确认端子对应关系和通断

这里特别强调一下通讯线。很多人图省事用普通硬线或者两根单芯线,短距离调试可能没问题,但现场一旦有变频器、接触器、电机电缆在旁边,干扰问题就会被无限放大。双绞屏蔽线是为了让两根差分线的抗共模干扰能力发挥出来,屏蔽层又能兜住空间辐射,所以这个钱不能省。

2.2 接线要点和常见的坑

RS485接线本身不复杂,但细节决定成败。台达ES2的COM2口和英威腾GD变频器的485端子,大多数情况下按“正接正、负接负”接就能通。具体丝印写法不一定一样,可能是D+/D-,也可能是A/B或者S+/S-,这时候记住一个对应关系:D+对应A,D-对应B。如果一边标了D+另一边标了A,直接同名接同名,通常没问题。

注意:如果接反了,不会烧设备,但会出现通讯偶尔能通、稳定性极差的症状。现场有人调了半天程序,最后发现是两根线接反,这种事我见过不止一次。

屏蔽层处理是有讲究的。正确做法是屏蔽层单端接地,也就是在PLC这一端或者变频器这一端,选一头把屏蔽层可靠接到PE端子,另一端做绝缘处理悬空。两端都接地反而容易形成地环路,把干扰导进通讯线里。

终端电阻这块,短距离(小于50米)一般不需要接。超过50米或者现场干扰特别大,可以在总线两端的设备上各接入一个120欧姆终端电阻,把信号反射抑制住。注意是两端,不是每台设备都接,中间设备接终端电阻反而会压垮信号。

还有一条容易忽略:通讯线一定要和变频器输出侧的U/V/W动力线、接触器线圈线分开走线槽,不要扎在一起。平行过来的强干扰,会在RS485线上感应出很高的共模电压,哪怕你用的是屏蔽线,屏蔽层也扛不住这种紧贴着的干扰。

3. 变频器和PLC两侧的通讯参数,核三遍

3.1 英威腾GD变频器侧参数设置

接下来是通讯能否建立的关键一步,两边参数必须完全一致。变频器侧要设置的项目大概有以下几个,具体功能码编号在不同系列里略有差异,以你手头的说明书“P0组”或者“通讯参数组”为准:

设置项通用设置值说明
运行命令源设为通讯控制否则PLC写的启停命令无效
频率设定源设为通讯给定否则PLC写的频率不生效
通讯站号1要和PLC指令里的从站号一致
通讯波特率9600默认常用值,稳定优先
数据格式8E1Modbus RTU常见格式
通讯协议Modbus RTU不是ASCII
通讯超时动作调试期设为不动作调通后再设成减速停车

命令源和频率源是两个完全独立的设置项,很多人只把命令源切到了通讯,结果PLC写了频率不转,就以为是通讯有问题。实际上变频器面板显示频率已经变了,但频率源还是面板给定,通讯给的频率根本没被采用。

调试期间,通讯超时动作建议先设为“不动作”或“继续运行”,超时时间放长到10秒以上。因为程序调试过程中,通讯指令偶尔停顿、PLC被强制STOP,都会让变频器收不到报文,如果超时动作设成立即停车,现场设备会一顿一顿地启停,非常危险。等程序稳定后,再根据工艺需求改成通讯超时后减速停车。

3.2 台达ES2 PLC侧通讯参数

台达ES2的COM2口通讯格式,不是通过菜单设的,而是写两个特殊寄存器。

  • D1120:通讯格式设定,里面包含波特率和数据格式
  • D1121:站号设定
  • M1138:RTU/ASCII模式选择

常用的配置是9600波特率、8个数据位、偶校验、1个停止位,也就是“9600,8,E,1”。这个组合在Modbus RTU里最常见,写法是把 H0031 这个值传送到D1120。

这里要说一下H0031的含义:低4位的数字1表示波特率9600,高4位的数字3表示数据格式8E1。如果想用“8,N,1”,就把高4位改成5,即H0051。如果你设的是19200,低4位改成2即可。

M1138要保持在OFF状态,对应Modbus RTU。台达ES2默认就是RTU,但如果程序里曾经操作过M1138,务必检查一下。

提示:D1120修改后,不是立刻生效的,必须把PLC切到STOP再RUN,或者重新上电,通讯口才会按新参数初始化。在线修改觉得没反应,先别折腾程序,重启一下RUN。

站号D1121,本例PLC作为主站写K1就行,但养成习惯把它显式写一遍,避免固件默认值和预期不一致。

4. 寄存器规划与完整Modbus程序实现

4.1 英威腾GD常用寄存器地址映射

写程序之前,先要把变频器的寄存器地址搞清楚。以英威腾GD系列常见机型为例,典型布局如下:

寄存器地址含义读写
2000H通讯频率给定,范围0~10000对应0.00~100.00Hz写
2001H运行命令写
2100H当前输出频率读
2101H当前输出电流读

频率给定寄存器用的是0.01Hz分辨率,比如要给定50.00Hz,往2000H里写5000。想给定37.50Hz,就写3750。这个换算是程序里最容易出错的点,后面我会单独讲。

运行命令寄存器2001H,在GD系列里常见命令字定义是:正转运行写1,反转运行写2,减速停车写6,自由停车写5。不少新手习惯性地以为写0就是停止,但在某些机型里写0可能被当作无效命令,电机停不下来。所以一定要查手册里的命令字定义,不要凭感觉。

注意:不同批次、不同系列的寄存器地址和命令字写法可能有差异,接线和参数都设对了还是无反应,第一件事就是把说明书通讯协议章节翻出来,核对寄存器地址表。

4.2 PLC软元件规划

程序设计之前,先规划好寄存器,不然写一半就乱。

软元件用途
D100HMI频率设定,单位0.1Hz(比如50.0Hz就存500)
D0换算后的频率给定值,单位0.01Hz,写入变频器
D110轮询槽位用的频率写入数据
D111运行命令字
D200读回的变频器输出频率
D201读回的变频器输出电流
M10运行标志
C0轮询节拍计数器

D100和D0分开存是刻意的。HMI上工程师习惯输入50.0这种带一位小数的数,但变频器寄存器要的是0.01Hz分辨率。让HMI直接处理两位小数也行,但不同品牌触摸屏的小数位处理方式不一样,容易踩坑。干脆在PLC里做一次乘法:D100乘以10存入D0,程序逻辑清晰,换触摸屏也不用改下位机。

4.3 轮询机制:为什么通讯指令不能一直发

台达MODRW指令的触发条件如果一直保持ON,它会持续地往从站发报文。这在少数几条指令时问题不大,但有多条读和写指令时,如果两条指令的驱动条件同时为ON,就会抢通讯口,轻则报文交错,重则通讯超时。

解决思路很朴素:做一个轮询节拍,让不同通讯指令在不同时间片执行,同一时刻总线上只有一条指令在发。用台达的时基定时器和计数器就能实现。

具体做法是用T0做一个100毫秒自复位定时器,每导通一次,计数器C0加1,计数到4后清零。C0的值就是槽位编号,不同槽位对应不同通讯指令:

  • C0=0:写频率给定
  • C0=1:写运行命令
  • C0=2:读输出频率和电流
  • C0=3:空闲,给总线留喘息时间

这样一个完整循环是400毫秒。对变频器控制来说,频率给定和运行命令的刷新间隔完全足够,输出频率显示的刷新率也看不出卡顿。如果觉得响应偏慢,可以把T0从100毫秒改成50毫秒,但建议不要低于50毫秒,给从站留足处理时间。

4.4 完整程序逻辑(文字版梯形图)

下面按初始化段、频率换算段、启停段、轮询段四个部分,把程序逻辑写出来。

初始化段,用M1002(RUN后第一扫描周期)一次性设置通讯格式:

M1002 |--[MOV H0031 D1120] ; COM2设为9600,8,E,1 |--[MOV K1 D1121] ; 站号1 |--[RST M1138] ; 选择Modbus RTU模式

频率换算段,常ON条件M1000下,把D100换算到D0并限幅:

M1000 |--[MUL D100 K10 D0] ; 0.1Hz转换成0.01Hz M1000 |--[CMP D0 K6000] ; 如果D0大于6000,强制等于6000

这里6000对应60.00Hz,限幅是为了防止HMI误输入超高频率导致设备超速。具体限幅值按你现场电机额定频率设置,可以是5000也可以是更高,但一定要限。

启停段:

X0(启动按钮) |--[SET M10] X1(停止按钮) |--[RST M10]

运行命令字生成:

M10 |--[MOV K1 D111] ; 正转运行命令 M10(常闭) |--[MOV K6 D111] ; 减速停车命令

这里注意,停车不是写0,而是写6,对应减速停车。这个细节对英威腾GD系列尤其重要。

轮询段:

LDI T0 OUT T0 K10 ; 100ms自复位定时器 LD T0 INC C0 ; 每100ms加1 LD C0 K4 RST C0 ; 计数到4清零 LD C0 K0 |--[MOV D0 D110] |--[MODRW K2 K1 H06 K2000 D110] ; 写频率给定到2000H LD C0 K1 |--[MOV D111 D111] ; 命令字已由启停段生成 |--[MODRW K2 K1 H06 K2001 D111] ; 写运行命令到2001H LD C0 K2 |--[MODRW K2 K1 H03 K2100 D200 K2] ; 读2100H开始的2个寄存器,存入D200/D201

这里解释一下MODRW指令的格式:MODRW S1 S2 S3 S4 D [n],S1是通讯口编号,K2表示COM2;S2是从站站号,K1对应变频器地址1;S3是功能码,H06是写单个寄存器,H03是读寄存器;S4是寄存器地址,注意这里虽然用K开头,但后面的值是十六进制含义,K2000代表的是2000H这个地址;D是数据存放寄存器;有n参数时表示连续寄存器数量。

读回的数据使用方式很直观:D200是变频器当前输出频率,单位0.01Hz,在HMI上显示时除以100就是实际赫兹。D201是输出电流,具体单位和分辨率查GD手册,常见是0.1A。

4.5 更快的优化版:用H10功能码一次写多个寄存器

上面的基础版程序,频率和命令分了两个槽位,循环周期是400毫秒,对大多数现场足够了。如果你希望控制响应更快,或者担心“先写频率后写命令”带来的时序问题,可以改成用H10功能码,一条指令同时写频率和命令两个寄存器。

思路是这样的:频率写在D110,命令字写在D111,然后一条MODRW把这两个连续寄存器写到变频器的2000H和2001H:

LD C0 K0 |--[MOV D0 D110] |--[MOV D111 D111] |--[MODRW K2 K1 H10 K2000 D110 K2] ; 同时写2000H和2001H LD C0 K1 |--[MODRW K2 K1 H03 K2100 D200 K2] ; 读运行状态

这样循环周期缩短到200毫秒,而且频率和命令同时到达变频器,不会出现命令先到、频率还没更新的中间状态。

要注意的是,H10多寄存器写需要从站支持。英威腾GD系列基本都支持,但如果你用的是非常老的固件版本,可以用串口调试助手先发一帧H10的报文验证一下,如果响应异常就退回两条H06单独写的方案。

5. 现场调试与故障排查实录

5.1 先用串口调试助手验证变频器,再上PLC

我的习惯是,PLC程序编完后不急着下载连线,先用电脑串口工具把变频器这半边验证通了,再让PLC上场。这个顺序能帮你至少省出半天现场调试时间。

准备一个USB转RS485模块,接到变频器的485端子,电脑上开串口调试助手,参数设为9600、8、E、1、RTU模式。先发一帧读寄存器报文,比如读地址0000H的P0.00参数,报文格式是:

01 03 00 00 00 01 CRC

其中01是站号,03是读保持寄存器功能码,0000是寄存器起始地址,0001是读取数量,CRC由调试助手自动计算。如果变频器返回类似“01 03 02 00 02”的帧,就说明通讯通路是通的,而且P0.00当前值确实是2,也就是通讯控制模式。

然后写频率验证,把频率给定到50.00Hz,对应十六进制1388:

01 06 20 00 13 88 CRC

最后写运行命令验证,正转运行命令是1:

01 06 20 01 00 01 CRC

这一步如果电机转了,说明变频器侧完全没问题,通讯参数和寄存器地址都对。然后再接PLC,把程序下载进去,固定一个频率让它试运行。整个过程把故障范围一步步缩小,不会出现“两边都不确定是哪边问题”的焦灼状态。

5.2 常见问题速查表

把这些年在现场遇见过的问题整理成一张速查表,排查的时候按表来:

现象可能原因处理方法
完全不通,PLC报通讯超时站号不一致核对PLC指令里的从站号和变频器P0组站号
完全不通,PLC报通讯超时波特率或数据格式不一致两边统一9600、8E1,PLC侧确认D1120已生效
偶发通讯中断,多发生在变频器启动瞬间A/B接反对调D+/D-,观察是否稳定
偶发通讯中断,变频器高速运转时干扰屏蔽层单端接地,通讯线远离动力线,加120欧终端电阻
写了运行命令,电机不转命令源没切通讯查运行命令通道相关参数,设为通讯
频率写进去了,面板显示频率变了但电机不转频率源没切通讯查频率给定通道相关参数,设为通讯
写了频率没反应,写命令也报异常寄存器地址不对翻手册通讯协议章节核对地址
程序一执行,变频器就报通讯超时故障通讯指令一直发,从站来不及响应用轮询方案控制指令频率,或加大轮询时基

5.3 变频器一启动就丢通讯的经典场景

这是最折磨人的一个场景:静止时通讯一切正常,一按变频器启动,变频器还没转起来,PLC这边就开始报通讯超时,变频器也报通讯故障。

这类问题的本质就是高频干扰。变频器启动瞬间,输出侧的高频PWM信号通过空间辐射和线缆耦合,把485总线的电平打乱了。处理顺序我建议这样来:

第一,确认通讯线用的是双绞屏蔽线,屏蔽层单端接地。现场很多“抗干扰”问题,根子就在屏蔽层没接地或者两端都接地了。

第二,通讯线必须和变频器输出线分开走。如果只能走同一个桥架,用金属隔板分隔,或者至少把通讯线穿金属管,金属管两端接地。

第三,在变频器输出侧套磁环,磁环内径要能穿过三相线,绕两三圈,能显著抑制高频辐射。

第四,把变频器的载波频率调低一档试试。载波频率越高,干扰频谱越宽,很多现场把默认的8kHz甚至更高降到4kHz或2kHz后,通讯稳定很多。代价是电机噪音会变大一点,但两害相权取其轻。

第五,如果再不行,波特率从9600降到4800试试。低速率的信号容忍度更好,抗干扰能力更强。

5.4 调试心得和保护措施

最后聊几句调试时的注意事项,这些都是拿真金白银换来的经验。

带载调试前,先把变频器参数里的加减速时间设好,比如加速15秒、减速15秒。如果现场是恒压供水这类惯性大的负载,加减速时间太短,通讯给定频率稍微跳变一下,电机就会猛冲,机械冲击大,容易把泵和管道搞坏。

第一轮通讯测试,频率给定固定一个安全值,比如15Hz到20Hz,不要让变频器直接按设定目标转速跑。确认启停可控、急停回路有效后,再慢慢把频率往上加。

程序里要留一个硬保护逻辑,不依赖通讯。比如读回的电流D201超过阈值时,PLC直接断开运行继电器或者写停车命令,而不是等HMI报警。通讯中断不可怕,可怕的是通讯中断后设备还在按最后一条命令运行,没有保护兜底。

设备参数备份这件小事也别忘了,变频器调通后,把功能码参数用操作面板导出或者拍照保存。变频器某个模块坏了,换一台新的,直接把参数倒进去,不用再从头调一遍。

根据我个人经验,这类PLC和变频器通讯的活儿,真正费时间的从来不是写程序,而是接线和参数核对。把两侧的通讯参数、寄存器地址、接线顺序都搞清楚,程序反而是水到渠成的事。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询