☰
PLC与变频器联动控制全解析:从开关量到MODBUS通讯
2026/9/29 3:11:57 网站建设 项目流程

干自动化这一行,迟早会碰上一个绕不开的场景:一台PLC旁边跟着几台变频器,要么拖风机,要么拉水泵,要么带着传送带跑。大部分项目都会从最简单的开关量启停开始,等要求精细了再上模拟量无级调速,最后被多台设备组网逼着去研究通讯。这也是我自己走过的路线,从对着端子一排排薅头发,到后来能半小时调通一条485总线,中间踩过的坑实在太多。

这篇就把这条路完整串一遍,围绕“PLC与变频器联动控制”这个主题,把开关量控制、模拟量控制、通讯控制三种方式的接线、程序编写、参数设置和现场调试全部铺开讲。不管你是刚入行的电工、转行做PLC调试的年轻人,还是在现场被变频器折磨过的老工程师,这篇都应该能给你一些能直接抄作业的东西。文章里我会以西门子S7-200 SMART、台达/汇川/三菱变频器为主要例子,但这套思路放到其他品牌上一样适用。

1. 先搞清架构:三种控制方式到底在解决什么问题

1.1 开关量控制:给变频器配一颗“简单大脑”

所谓开关量控制,就是用PLC的数字量输出点(DO)去控制变频器的多功能输入端子(DI)。变频器那边本质上看的是“某个端子有没有电”,端子一闭合,变频器就执行一个预设动作,比如正转、反转、点动、故障复位、多段速选择。

这种方式的优点非常直白:接线简单、程序简单、抗干扰能力好,一个继电器或一个晶体管输出点就能搞定。它的缺点也明显——无法连续调速。变频器的频率只能靠内部预置的多段速参数来切换,比如三段速、七段速、十六段速,本质上是一组可以组合的开关信号,速度档位是离散的,不是连续的。

那么什么时候适合用开关量控制?我个人的判断标准是:如果工艺上只需要两三个固定速度,比如风机的高速/低速切换,或者传送带的快慢档,那就老老实实用开关量。为了一个三段速去上模拟量模块或者通讯,纯属浪费预算。反之,如果工艺要求“从0到50Hz任意设定”,那开关量这条路就走不通了,必须考虑下面两种方案。

1.2 模拟量与通讯:两条精确调速路线怎么选

模拟量控制,是PLC通过模拟量输出模块(AQ/AO)输出一个连续变化的电信号给变频器的模拟量输入端子,常见的有0-10V电压信号和4-20mA电流信号。频率给定的大小跟信号大小一一对应,所以可以实现无级调速。通讯控制,则是PLC通过串口或者总线,直接把频率值、启停指令以数据包形式发给变频器,变频器解析后执行。

两者都能实现连续调速,区别在于:

  • 模拟量是一根线对应一个物理量,接线直观,但信号在传输过程中容易受干扰,长距离传输时电压信号衰减明显,而且模拟量通道本身有精度误差。
  • 通讯是一根双绞线可以挂载多台设备,信息量远超模拟量,不仅能写频率、写启停,还能读回变频器的运行频率、输出电流、母线电压、故障代码等状态,这是模拟量完全做不到的。缺点是需要双方协议匹配,调试门槛稍高,一旦通讯断了整个系统就“瞎”了。

这里我直接给一张对比表,方便不同项目的选型判断:

对比维度开关量控制模拟量控制通讯控制
调速能力只能固定档位连续可调连续可调
接线量少每台至少一根信号线最少,一根总线挂所有
抗干扰能力很强较弱,需屏蔽与接地中等,依赖布线质量
读取运行状态基本不能不能能,可读频率/电流/故障
调试门槛很低中等较高
典型应用风机高/低速、简单联动单台泵无级调速多台变频器组网、远程监控

仔细看这张表就会明白,三种方式不是替代关系,而是互补关系。很多项目实际上是混合使用:大电机用通讯做速度给定,急停和硬保护用开关量点对点直连,这样即便通讯出问题,安全回路还能兜底。

1.3 为什么总会从开关量一路走到通讯

我在项目里见过不少同行,一开始都是“能转就行”,用按钮盒子手启手停,后来甲方要求中控室远程启停,于是加了PLC和开关量;再后来中控不满足于启停,还要设定频率、看电流,于是被迫上了模拟量或通讯。这里面有个规律:控制需求越往上走,数据交互的要求就越高,而通讯是唯一能把“控制”和“监视”合二为一的方案。

所以这篇文章的安排也有意按照这个进阶路径走:先讲开关量,把PLC控制变频器的基础逻辑建立起来;再讲模拟量,熟悉连续给定与信号调理;最后重点讲通讯——这是目前新项目中占比最高的方案,也是很多工程师觉得“玄学”的部分。每一层都会配上实操细节,保证看完能动手。

2. 开关量控制实战:正反转、多段速与梯形图

2.1 端子接线:公共端和源型漏型别搞错

开关量控制的第一步是接线。以西门子S7-200 SMART搭配台达VFD-M系列变频器为例,变频器控制端子排上通常有FWD(正转)、REV(反转)、M1/M2/M3(多功能输入)、COM(公共端)等。PLC的数字量输出有两种接线形式:源型输出(输出点输出24V正电)和漏型输出(输出点输出0V,公共端接24V),这直接决定了你怎么接变频器的公共端。

这里我重点强调一个关键点:一定要看变频器DI端子的内部电路。多数变频器的DI端子内部是光耦隔离,电流方向有要求。以台达为例,如果SINK/SOURCE跳线或参数设定为“SINK”模式,那么外部需要给DI端子供24V正,DI动作后电流流入COM,这时PLC如果是源型输出,可以直接把Q点接到DI,COM接0V;如果PLC是漏型输出,就得调换极性,否则信号永远给不进去。

我第一次接的时候就没仔细看手册,直接按“Q点接FWD、COM接0V”的老套路来,结果变频器死活不启动,查了半天才发现该型号默认是漏型,需要把跳线改到另一边。所以接完线第一件事不是上电,而是对照手册确认DI极性,这一段省不了。

接线完成后,把台达变频器参数设成“外部端子控制”,常见参数是P00设为01(主频率由外部端子/多段速决定),P01设为01(运转指令由外部端子控制)。不同品牌参数编号完全不同,但思路一致:控制源设成端子、频率源设成多段速。

2.2 多段速组合怎么编

多段速的原理是利用M1、M2、M3三个端子的通断组合,对应变频器内部的1-3段甚至更多段速。三个DI可以组合出8种状态,其中一段通常用于正转,剩下几档设成不同频率。

假设工艺需要三档速度:低速15Hz、中速30Hz、高速45Hz。变频器里分别把第一段速频率设为15Hz、第二段设30Hz、第三段设45Hz,然后把对应端子功能分配给M1、M2、M3。PLC程序就非常简单:

  • 低速:I0.0闭合,接通Q0.0(对应M1)和Q0.5(对应FWD)。
  • 中速:I0.1闭合,接通Q0.1(M2)和Q0.5。
  • 高速:I0.2闭合,接通Q0.2(M3)和Q0.5。

梯形图里用起保停电路分别写几个网络段就行,每一段输出到对应的变频器端子。如果担心按钮冲突导致多个段速同时触发,可以在变频器参数里设定多段速的优先级,或者在PLC程序里做互锁,即I0.0、I0.1、I0.2同时只能有一个有效。互锁这个细节很重要,否则操作员手一抖按了两个按钮,变频器可能按着参数里的组合逻辑跑出一个意想不到的频率,现场很容易出事故。

顺带提一句,很多刚学PLC的朋友会把“星-角降压启动”和“变频器多段速”搞混。星-角启动是电机直接工频启动时为了降低启动电流而进行的绕组切换,跟变频器联动不是一个概念。变频器本身有软启动功能,不存在需要额外星-角切换的问题,除非是变频器与工频旁路切换的特殊场合,那属于另一套电路,不在这次展开的范围内。

2.3 开关量方案的边界

开关量方案的局限不止于速度档位有限,还体现在状态监视上。PLC只能知道“我发出了正转指令”,但变频器是真转了还是报故障停了,PLC一概不知。要做状态反馈,就得占用更多的输入点,把变频器的故障输出继电器(如TA/TB/TC)接到PLC的DI点上,再把运行指示信号也接过来。这一通接下来,点数消耗非常快,机柜里的线也多得吓人。

所以我一直建议,只有那些控制要求很低、设备台数也少的项目才用纯开关量方案。一旦设备超过三台,或者需要远程监控运行状态,直接考虑通讯方案,综合成本反而更低。这个判断我后面在通讯章节还会再展开。

3. 模拟量调速实战:接线、屏蔽与量程映射

3.1 电压还是电流:先解决信号选型

模拟量控制最常遇到的问题,就是选电压信号还是电流信号。0-10V电压信号接线最简单,很多PLC模拟量模块和变频器都默认支持,但电压信号在长线传输时压降明显,而且极易感应外界干扰。4-20mA电流信号是恒流源驱动,线路上即使有几欧姆的接触电阻,电流也不会变化,抗干扰能力和传输距离都优于电压信号,还能利用小于4mA的区间做断线检测。

所以实际项目里,只要距离超过20米、或者现场有大功率设备,我倾向于选4-20mA,甚至直接选带HART或者传感器内置变送器的方案。距离很近且干扰小的柜内场景才用0-10V。另外还要注意,有些PLC模拟量输入模块的量程是通过接线端子或模块上的跳线配置的,有些是通过软件组态配置的,用之前必须确认,否则信号类型不对直接烧通道。

模拟量接线还有一点容易被忽略:AI信号负端与变频器的模拟地/电源地是否共地。不同品牌的要求不一样,有的变频器AI端子内部是浮地的,不支持与PLC模拟量模块直接共地,这时需要在两端之间单独接一根参考地线,否则信号会持续跳动。这也是很多人接完模拟量后频率乱飘的主要原因之一。

3.2 屏蔽层接0V,但只能单端接地

关于模拟量屏蔽层的处理,网上说法很杂,这里我说说现场验证过无数遍的结论:屏蔽层必须在PLC侧或信号源侧择一单端接地,绝对不能两端同时接地。两端都接地会形成地环路,地电位差会在屏蔽层上感应出环流,这个环流恰恰会给信号线引入严重的干扰,频率值反而跳得更厉害。所谓“模拟量屏蔽层接0V”,指的就是屏蔽层接到信号参考地(0V),而不是接到保护地PE,这两者在很多系统里不是同一个电位。

实际操作中,我在机柜内统一设置一个信号接地端子排,把所有模拟量屏蔽层引到这个排上,再单点接到柜内的接地铜排,然后再和PE相连。现场很多干扰问题,最后查下来都是屏蔽层悬空或者两端接地导致的。这是所有模拟量调试里最值得提前做对的一件事。

3.3 PLC侧量程映射与编程细节

PLC模拟量模块的本质是一个ADC,它把物理信号转换成数字量。不同品牌的数字量范围不一样,西门子S7-200 SMART和S7-1200/1500一般是0-27648,三菱FX系列的模拟量模块大多是0-4000,部分国产品牌是0-32000或者0-16384。这个原始数字量必须经过换算,才能得到对应的频率值。

举个例子,我的PLC输出通道是0-27648,对应的物理输出是0-10V,变频器设定0-10V对应0-50Hz。那么PLC程序里要做的映射就是:频率值(Hz)×27648÷50 = 写入模拟量输出通道的数字量。如果要在HMI上设定30Hz,那PLC先算30×27648÷50=16588.8,再把16588这个整数写入AQW0。

这里有个编程细节:SCALE转换时最好用浮点数或者双整数运算,避免整数除法直接截断导致低速段误差大。以30Hz为例,整数除法算出来可能直接丢到16588还是16589,影响看似不大,但在要求转速精确同步的场合,这点误差会被累积放大。西门子200 SMART里的简单处理是用浮点指令:

LD SM0.0 MOVR VD100, VD200 // VD100是HMI传来的频率设定值,浮点数 *R 27648.0, VD200 /R 50.0, VD200 ROUND VD200, VD204 // 四舍五入转成双整数 MOVW LW0, AQW0 // 低16位写入模拟量输出

同样的换算在博途(TIA Portal)里可以用NORM_X和SCALE_X指令一行搞定,但理解底层换算逻辑很重要,否则指令用起来就是个黑盒。模拟量调速的另一个编程技巧是加死区:当设定频率小于0.5Hz时,直接置为0并停掉变频器,这样能避免信号底噪导致电机以极低频率爬行的现象。

4. 通讯控制实战:RS485与MODBUS RTU组网

4.1 为什么是MODBUS RTU

市面上PLC与变频器的通讯协议五花八门,有西门子的USS、PROFINET,有台达的MODBUS,有三菱的专用协议,还有CANopen等总线协议。但如果你问我在现场最省心、兼容性最好的方案,我一定选MODBUS RTU跑在RS485物理层上。原因很朴素:几乎所有主流变频器都内置MODBUS从站功能,几乎所有PLC都提供MODBUS主站指令或库函数,它已经成为工控界的“普通话”。

MODBUS RTU的数据帧格式很紧凑:从站地址、功能码、数据、CRC校验。CRC校验的存在让通讯可靠性有了基本保障,传输中哪怕有一位跳变,接收方也能通过校验发现并丢弃错误帧。实际调试中,只要接线正确、参数一致,极少出现CRC算错的问题,更多的坑都在接线和参数上。

4.2 接线规范:A/B、终端电阻与屏蔽层

RS485接线看似简单,实际翻车率极高。首先搞清楚线色:大多数屏蔽双绞线中,A接D-(或B-),B接D+(或A+),具体要以设备端子标注为准。很多变频器端子上写的不是A/B,而是D+、D-,或者DATA+、DATA-,接线时务必对照手册,不要想当然。

我之前见过一个项目,调试员把A和B接反了,结果通讯时好时坏,有时候能读上来几个数据,有时候全部超时。原因就是RS485靠差分电压传输,反接后信号极性完全颠倒,加上线缆上其他因素才偶尔“撞对”几个字节。正确接法其实只要一根线接反,整个总线都废了。

第二条规范是终端电阻。RS485总线在物理上是一条传输线,首尾两端如果阻抗不匹配,信号会反射,长距离或高速率下就会出现波形畸变。标准做法是在总线最远端的两个设备上,各并联一个120欧姆终端电阻。很多变频器侧面有内置的终端电阻拨码开关,拨上即可,不需要额外买电阻。但要注意,这个电阻只能加在物理链路的最末端,不是每台设备都加,否则会拉低总线电平导致通讯失败。

第三条是我反复强调的屏蔽层。RS485屏蔽层应该单端接地,一般选择在PLC侧或其中一个主站侧接地。如果整条总线跨了几个机柜,最好在机柜内做等电位连接后再统一接地。通讯线务必与动力线分开走线,不能在同一个线槽里平行长距离敷设,这是现场干扰的头号来源。

4.3 一主多从:32台变频器的组网可行性

热搜词里有一个问题“一个西门子PLC与32个变频器MODBUS通讯控制是否可行”,这个问题我项目里真正干过。答案是可行,但有几个前提必须满足。

首先,MODBUS RTU协议在一个RS485串口下理论上最多支持247个从站,但这是理论值。实际工程中一个串口挂32台变频器,最大的瓶颈不是地址不够,而是轮询周期太长。MODBUS RTU是半双工一问一答模式,主站发一帧、从站回一帧,中间还有响应超时时间。如果波特率9600,一帧大约10-20毫秒,32台全部轮询一遍就是500毫秒以上,再考虑通讯异常时的超时等待,轮询周期可能超过1秒。对于要求快速响应的场合,这个周期显然不够。

所以针对32台这个规模,我一般建议两种方案。第一种,如果PLC有多个串口(比如S7-200 SMART有两个RS485口),把32台分成两组甚至三组,每组一个串口独立轮询,轮询周期直接缩短到原来的三分之一。第二种,选支持MODBUS TCP的PLC或加一个串口服务器,把RS485转成以太网,上位机通过TCP/IP与PLC交互,PLC内部再把请求分发到不同RS485子网。实际项目中,一台PLC通过合理组网控制32台变频器完全能做到,但这属于系统设计层面的话题,不是简单把站地址设成1-32就完事。

另外,从站地址千万别设重复,这是所有多从站通讯里最蠢也最常见的错误。上电前把每台变频器的站号、波特率、数据格式列一张表,逐一核对,能省掉大量排查时间。

4.4 主站轮询程序的基本写法

在S7-200 SMART里做MODBUS主站,常用的是库指令MBUS_CTRL和MBUS_MSG。MBUS_CTRL每个扫描周期都要调用一次,负责初始化串口;MBUS_MSG是触发一次读写请求,需要一个边沿触发信号来启动下一次请求。多从站轮询的经典思路是用一个“轮询指针”或者状态字,指向当前正在操作的从站,完成一读一写后指针加1,循环往复。

下面是一个简化版的轮询逻辑,用VD1000作为站号指针:

// 轮询编号0到31,对应从站地址1到32 LD SM0.0 CALL MBUS_CTRL, 1, 9600, 0, 1000, M0.0 // 用1Hz时钟或定时器触发一次MBUS_MSG LD T37 CALL MBUS_MSG, M0.0, 1, VD1000, 3, 06, &VB2000, 2, M1.0 // 上一条执行完后,把VD1000加2,指向下一台 LD M1.0 MOVW VW1002, VW1000

这段只是示意,真实工程中还要处理轮询之间的间隔、读写指令交替、错误计数和超时诊断。这里我要重点强调:不要在一个扫描周期里连续调用多次MBUS_MSG,尤其不要在一个周期里连续对32台设备发送请求,那样会导致串口数据拥塞,对方响应不过来。标准做法是“一周期一帧”或者“一帧完成后置位,再启动下一帧”。

轮询顺序上,可以按控制优先级排序:先给所有变频器写入启停和频率,再依次读取运行状态和电流。优先级高的写操作放在前面,读操作放后面,即便某台从站掉线导致超时,也不会影响已经下发的控制指令。

4.5 变频器侧参数设置顺序

变频器这边如果参数没设对,PLC程序写得再漂亮也是白搭。以三菱D700为例,常用的通讯参数有:Pr.79(运行模式,设为0或2表示外部/通讯组合)、Pr.117(从站号)、Pr.118(波特率)、Pr.119(数据格式,比如8-E-1)、Pr.120(校验方式)、Pr.121(通讯超时时间),以及Pr.338等跟通讯启动指令相关的参数。台达VFD-M则对应P88(通讯地址)、P89(波特率)、P92(通讯数据格式),控制源和频率源参数也要改成MODBUS通讯。

参数设置的顺序我建议这样:先设通讯参数(站号、波特率、数据格式),再设控制源和频率源,最后设置通讯超时保护。如果先设控制源再设通讯参数,中途机器可能因为控制源漂移而误动作。调试通讯时,最好把变频器先切到面板控制验证电机正常,再切到通讯控制,最后再让PLC下发指令,这样能快速定位是变频器问题还是通讯链路问题。

我用台达变频器举例,常见的通讯地址表大概是:2000H写频率,2001H写控制命令(含正转、反转、停止),2100H读运行状态,2101H读当前频率,2102H读输出电流。不同系列有差异,但整体规律一致。PLC侧按此地址读写时,控制指令和频率指令是两个寄存器,需要分别下发,不能指望写一次频率电机就转起来。

5. 实战排查:现场最常翻车的几个问题

5.1 典型故障速查表

现场调试久了,遇到的基本都是那几类问题。我整理了一个速查表,基本上照着排查能解决八成以上的故障:

故障现象可能原因排查方向
通讯完全不通A/B接反、站号不对、波特率不一致核对接线、核对参数表
通讯时通时断屏蔽层未接地、总线过长、终端电阻缺失查布线、加终端电阻
频率给定跳变模拟量信号受干扰、信号类型不匹配查屏蔽层、查模块量程
电机不启动DI极性错误、控制源参数没改查手册确认极性和参数
读取数值明显异常数据格式不一致、寄存器地址算错核对8位/16位、地址偏移
个别从站掉线站号重复、该台设备接线松动重新分配地址、检查端子

5.2 通讯通不上先查这三件事

遇到“PLC连变频器通讯不上”,我的排查习惯是先做以下三件事,顺序不能乱。

第一,用万用表电阻档测A/B两端,确认线路没有短路或断路。RS485是差分总线,正常时A/B之间应该有几十到几百欧姆的特征阻抗,短路或断路一眼就能测出来。第二,确认波特率、数据格式(数据位、校验位、停止位)在主从两侧完全一致,尤其校验位最容易不一样,有的默认无校验,有的默认偶校验,一个参数不一致就收不到完整帧。第三,直接把PLC和变频器一对一短距离连接,排除所有中继器、转换头、长线的干扰因素。如果一对一还通不上,那就是参数或者硬件的问题;如果一对一通了,再接回原总线,逐台往总线上增加设备,看是哪一台挂上去之后把总线电平拉垮的。

这个“最少系统”的排查思路,听起来老生常谈,实际能省掉大量时间。我曾经在现场被“通讯时好时坏”折磨了一下午,最后发现是总线上挂了一台已经损坏的变频器,它的RS485收发器芯片漏电,把整条总线的差分电压拉到了临界值。这种故障如果不做逐台排除,靠看程序是永远查不出来的。

5.3 模拟量频率跳变的软硬对策

模拟量控制的典型故障是频率设定值跳变:HMI上设定30Hz,变频器面板显示频率在29.5到30.5之间来回飘。这个问题的根源几乎都是干扰或信号源阻抗不匹配。

硬件上,先确认屏蔽层是否单端接地,再确认信号线是否与动力线分开敷设。如果变频器附近有接触器频繁吸合,那瞬间的电磁干扰会直接耦合到模拟量线路上,这时除了屏蔽接地外,还可以在PLC模拟量输出端与变频器AI输入端之间串联一只RC滤波器,或者选带滤波功能的信号隔离器。成本不高,效果立竿见影。

软件上,PLC侧可以加一阶惯性滤波或者取平均值,比如每秒读一次实际频率,连续读10次求平均。但这只能让显示稳定,不能解决真正的控制精度问题。真正的釜底抽薪方案是改走通讯,因为数字信号抗干扰能力远强于模拟信号。这也是为什么我在新项目里,只要条件允许就优先推荐通讯方案——不是模拟量不能用,而是长期运行稳定性和维护成本上,通讯确实有先天优势。

最后再说一个经验之谈:模拟量通道在初次上电前,务必用信号发生器或PLC自身强制输出功能,先测试通道输出是否正常,再接到变频器上。不少现场故障其实是PLC模块本身通道损坏或者组态量程错误,结果调试员怀疑变频器、怀疑线路,折腾半天才回到源头。模块通道测试花不了十分钟,却能避免无数无效排查。

这个流程走完,你会发现从开关量到模拟量再到通讯,并不是三个互相孤立的技能点,而是同一套“PLC给变频器下指令”的逻辑在不同场景下的三种形态。我在实际项目中的体会是:新项目优先考虑通讯,老项目改造优先叠加模拟量,简单点位控制用开关量兜底,三者结合才能做到既稳定又经济。如果你正在做一个变频器联动项目,不妨先把这篇文章里的接线和参数设置捋一遍再动手,能少走很多弯路。

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

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

立即咨询