ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PLC与变频器联动控制全解析:从开关量到MODBUS通讯

PLC与变频器联动控制全解析:从开关量到MODBUS通讯 干自动化这一行迟早会碰上一个绕不开的场景一台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点接到DICOM接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.1M2和Q0.5。高速I0.2闭合接通Q0.2M3和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÷5016588.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给变频器下指令”的逻辑在不同场景下的三种形态。我在实际项目中的体会是新项目优先考虑通讯老项目改造优先叠加模拟量简单点位控制用开关量兜底三者结合才能做到既稳定又经济。如果你正在做一个变频器联动项目不妨先把这篇文章里的接线和参数设置捋一遍再动手能少走很多弯路。
返回列表