
去年帮一家山区茶厂重建柴油发电机控制系统是我这几年做过的比较有代表性的一个项目。茶厂那台250kW发电机组平时给杀青机、烘干机供电负载本身就很暴躁启动电流大、冲击频繁。原厂控制器只做了最简单的电压保护结果一到茶叶季就烧设备、跳闸一年修好几回。我过去之后没有急着换硬件而是把整个控制逻辑重新梳理了一遍从电压调节、转速控制到保护策略建了一套真正意义上的发电机控制系统。下面我就把整个构建过程摊开讲包括架构怎么搭、参数怎么整、现场怎么调试以及我踩过的那些坑。不管你是做柴油发电机组配套的电气工程师还是家里有应急备用发电机想改造控制逻辑或者只是对自动控制感兴趣想了解一套系统是怎么从零落地这篇文章应该都能给你一些可复用的思路。我会把方案选型、控制策略、硬件接线、软件状态机、保护整定、并机调试这些环节逐个拆开尽量讲到位。1. 项目整体设计与架构思路1.1 这套系统到底要解决什么问题先明确一个概念发电机本身和发电机控制系统是两回事。发电机负责把机械能转成电能控制系统负责让这个过程稳定、安全、可指挥。拆开来说一套完整的发电机控制系统要解决的其实是四个层面的问题。电能质量层面电压幅值、频率必须稳定在允许范围内。负载一变端电压会跌、转速会掉控制系统要把这些偏差及时拉回来。运行控制层面机组要能按指令完成启动、运行、停机整个生命周期还要能跟市电或其它机组进行切换、并联。安全保护层面出现过压、欠压、过频、欠频、过流、逆功率这些异常工况时系统要能快速识别并跳闸把设备和人身风险压到最低。人机交互层面运行人员要知道当前电压、电流、功率、转速还要能远程启停、查看报警记录。很多时候工厂只装了能发电的最简电路没有完整的控制闭环所以电压飘、频率晃。这个项目要做的就是把上面四个层面补齐形成一个可以连续可靠运行的完整控制系统。这里我想强调一个原则控制系统不是越复杂越好。我的习惯是用最简单的结构解决必须解决的问题每个保护环节都必须能说清楚为什么需要、动作值是多少、动作了会怎样。这一条贯穿了整个设计过程也决定了后面很多技术选型。1.2 方案选型混合控制架构为什么更实用市面上的发电机控制器大致分几类专用控制器发电机组控制器品牌很多功能集成度很高、通用PLC加模拟扩展模块、以及纯模拟电路方案。专用控制器的好处是功能集成度高从自动启动、AVR调节到保护逻辑都有现成模块适合快速部署。但缺点是黑盒内部逻辑不好改尤其当你要接非标的负载逻辑、自定义报警策略时就很别扭。纯模拟电路方案响应快、可靠性高但参数调整全靠电位器调试效率低多机并联、远程监控这类需求也很难做。我最后采用的是PLC主控加专用模拟采样板加独立AVR励磁调节器的混合架构。PLC负责状态机、保护逻辑、通信和人机交互模拟采样板负责电压、电流、频率的实时采集和信号调理AVR调节器负责励磁电流的闭环调节。这么分工的原因是采样和保护逻辑需要高速实时处理放在硬件层面更稳而状态机、报警、远程通信这些对实时性要求没那么极端PLC来做开发效率高、改起来方便。这个选型还有一个实际考量现场维护人员对PLC的熟悉程度远高于专用控制器后期出问题他们自己也能查程序、换模块。给用户提供可维护性往往比堆技术指标更重要。我见过很多项目技术方案看起来很先进但现场没人会维护最后设备坏了只能等厂家反而误事。2. 核心控制策略与参数整定2.1 电压调节AVR的控制逻辑发电机端电压的稳定主要靠励磁系统。当负载增加时电枢反应会削弱主磁场端电压会下降这时AVR要加大励磁电流把电压拉回额定值。励磁系统本质上是一个以电压为被调量、以励磁电流为控制量的闭环。在这个项目里我用的AVR调节器支持PID控制。PID参数的整定我第一次上电时用的是工程经验法先把积分和微分都关掉只留比例增益从小到大慢慢加直到电压出现等幅振荡记下临界增益Ku和振荡周期Tu然后按经验公式算出初始PID参数。Kp取0.6倍临界增益Ki在Kp除以0.5倍振荡周期附近Kd取Kp乘以0.125倍振荡周期。注意这个算出来只是起点。实际因为发电机励磁回路的时间常数比较大特别是无刷励磁机型电压环的响应速度天然比电流环慢参数要偏保守一些。我调了几次后最终比例增益比经验值下调了20%左右积分时间稍微放宽电压恢复时间从3秒左右压到了1.2秒同时没有出现振荡。这里有个非常容易踩的坑空载时调好的PID参数带载后往往要重新微调。因为负载变化会改变励磁回路的等效阻抗整个被控对象的传递函数都变了。有些师傅只在空载时把电压调稳一带大功率负载就发现电压跌到380V以下甚至振荡就是这个原因。2.2 转速与频率控制调速器的整定频率由转速决定对四极50Hz机组来说同步转速就是1500rpm。转速控制的执行机构是油门或者燃气阀、喷油泵控制器通过PID给执行器输出信号调节燃料量。调速器的整定思路和电压环类似但也有自己的特点油门执行器有机械惯性从执行器动作到转速变化之间存在燃料燃烧、机械传动的延迟所以这个环路的滞后比电压环还大。如果比例增益过大油门会来回摆转速和频率都会跟着晃如果积分太强又容易过冲。我调试时用了一个比较实用的方法先把油门执行器手动控制在中位也就是50%开度附近让机组稳定在一个可以接受的转速范围然后再切自动调速。切自动后先把比例增益从0慢慢往上涨观察转速波动找到能让转速稳定、又不来回喘振的最大值然后再加积分消除稳态误差。这样操作比一上来就凭空给一组PID参数要靠谱得多。额定转速的稳态精度我目标是±0.5%以内也就是1500rpm时误差不超过7.5rpm。实际调下来在30%到100%负载区间稳态频率能稳定在50Hz±0.2Hz算比较理想了。调试的时候我习惯把转速和频率同时显示出来因为控制对象其实是转速但运行人员更关注的是频率两个量都要盯住。2.3 多机并联时的下垂控制茶厂后来新增了一套机组两台机组要能并联运行这就必须有负荷分配功能。并联控制最常用的是下垂控制Droop Control原理也好理解频率下垂让有功负荷按机组容量比例分配电压下垂让无功负荷按比例分配。以有功分配为例把每台机组的频率-功率特性设定为下垂关系。比如5%的调速下垂率意思是当有功从空载增加到满载时频率允许从51.25Hz跌到48.75Hz。两台容量一样的机组只要设置相同的下垂率系统会自然把负荷按比例分给两台机而不需要机组之间实时交换负荷信号这就是无互联线并联的基本原理。实际整定下垂率的时候要兼顾静态稳定性和频率偏移。下垂率太小负荷分配不均匀下垂率太大频率偏差会超标。我一般先从3%开始试观察两台机组的有功差和频率偏差再逐步调整。最终定在4%附近两台机组有功分配误差在5kW以内频率偏差在0.5Hz以内完全满足要求。3. 硬件搭建与关键接线3.1 主回路与采样回路设计采样是控制系统判断的依据采样错了后面所有逻辑都白搭。这台250kW机组额定电流算一下250kW除以1.732乘400V乘0.8功率因数约等于451A。三相四线制系统电流互感器我选了500/5电压互感器用的是400V/100V这样二次侧电流最大5A、电压最大100V可以直接进采样模块。采样回路的设计有几个细节值得注意。电流互感器二次侧绝对不允许开路安装时所有端子都要拧紧CT极性必须一致不然并机时会出现环流。电压采样的保险丝我用的是快熔虽然贵一点但保护效果好电压异常时能快速切断避免烧坏控制器。还有一个容易忽略的点采样线的屏蔽层要单端接地避免形成接地环路造成50Hz工频干扰叠加在采样信号上。现场有很多变频设备电磁环境比较脏屏蔽处理不好PLC读到的电压数据会跳误报警就来了。我第一次在这个茶厂调试时采样数据偶尔跳变排查了半天最后发现就是屏蔽层两端都接地了改成单端接地后问题消失。3.2 控制器选型与I/O分配PLC我选的是带模拟量模块的中型PLC输入输出点规划如下。数字量输入有6个急停、手动/自动切换、启动按钮、停机按钮、发电开关合闸反馈、并机联络开关状态。数字量输出有5个启动马达、合闸继电器、分闸继电器、蜂鸣器报警、故障指示灯。模拟量输入有8路三相电压经PT二次侧、三相电流经CT二次侧、冷却水温、机油压力。模拟量输出有2路转速给定信号给调速器励磁给定信号给AVR。I/O分配表在上位机里做成一整页页面每路信号标注清楚位号、线号、信号类型和量程现场查线时能省一半时间。这块工作看着不起眼真正做工程的人都知道I/O点表整理得好不好直接决定联调时痛苦不痛苦。我见过不少项目图纸倒是画了但点位和实际接线对不上调试时全凭拷问电线效率极低。选型时要留I/O余量一般按20%到30%预留。这不算浪费现场经常出现临时加一路油位报警、加一路门禁联锁的情况。没有余量就只能挂扩展模块或者外接继电器转换麻烦且不美观。3.3 执行机构与驱动接口调速执行器我用的是电动的油门执行器接收4-20mA信号4mA对应全关、20mA对应全开。这里要注意不同执行器的机械行程和中位位置差异很大接线前必须先手动确认执行器全关和全开时的电流值再标定到PLC里。我遇到过一台新执行器标称4-20mA实际开始动作的电流是4.8mA如果按4mA做零点标定油门就会有一个固定偏差频率稳定下来后总会差一点。励磁这边用的是与发电机配套的无刷励磁调节器它接受一个0-10V的电压给定信号。AVR内部还有自己的一路PID相当于我们PLC输出的给定值和AVR内部调节是串联关系的双环结构外环是总控制器负责根据系统判断给出励磁目标内环是AVR负责把实际励磁电流或电压稳定在给定值上。这种级联结构理论上稳定性更好但代价是两个环路的参数必须匹配任何一个环路调得太激进整个系统都会振荡。在整定时我一般先把内环AVR调稳再去动外环。4. 软件实现状态机、保护与通信4.1 主控程序的状态机设计控制系统的灵魂是状态机。我不推荐用一坨if/else从上往下跑的方式写控制逻辑因为机组运行状态多、转移条件多用状态机才能保证任何时候都只有一个确定的状态不会出现逻辑打架。我定义了6个主状态STANDBY待机、STARTING启动中、RUNNING运行中、STOPPING停机中、FAULT故障、TEST测试。每个状态对应一组允许执行的动作状态迁移有明确的触发条件。几个关键迁移条件值得细说。STANDBY到STARTING需要手动启动指令或自动化启动信号有效且无故障、无停机保持。STARTING到RUNNING需要转速达到额定转速的90%以上发电电压达到额定值的85%以上同时油压建立。RUNNING到STOPPING要么收到停机指令要么出现可恢复的保护报警比如高温报警。任意状态到FAULT只要出现不可恢复的故障比如急停按下、过流保护动作。状态机的好处是程序逻辑清晰、新同事接手容易看懂、加功能时不容易影响旧逻辑。我在这个项目里状态机用结构化文本写的每个状态一个函数块方便独立测试。跑测试的时候把每个状态单独拉出来演练一遍确认所有迁移条件都符合设计再整体联测。4.2 保护逻辑的阈值与延时保护逻辑要同时管住动作值和动作时间不能只看值。比如过压10%以内可能只是瞬时波动没必要立刻跳闸但过压20%就必须快速切出。具体阈值我参考了发电机组标准并做了适当调整过压超过额定值115%延时0.5秒跳闸欠压低于额定值85%延时2秒跳闸给自动电压调节一点恢复时间过频超过52Hz延时0.5秒跳闸欠频低于47Hz延时2秒跳闸低频对发电机本身危害没那么大但对负载的异步电机影响很大所以也不能放太久过流超过110%额定电流延时30秒超过150%延时10秒超过200%瞬时动作逆功率在并机运行时功率反向超过5%额定功率延时5秒跳闸。这些参数不是随手写的。过流那几档延时是从发电机温升特性、保护配合选择性出发考虑的——越严重的故障动作越快同时给下级保护一定的动作窗口避免越级跳闸。现场联调的时候我会用可调负载柜一遍一遍做真值测试确保每个保护动作都符合设定。这里有个经验每做一项保护测试记录仪表上显示的实测值和跳闸时间和设定值对比。如果偏差超过5%要认真查原因不能凑合因为保护定值是安全底线。4.3 上位机监控与通信协议上位机部分我用的是开源组态软件跑在工控机上通过Modbus TCP和PLC通信。通信协议里我规定了几类数据状态量运行状态、故障代码、测量量三相电压、三相电流、频率、功率以及控制量启动、停机、复位。这里有个细节容易坑到新人写控制量时上位机按钮必须用脉冲命令而不是电平命令。也就是说按下按钮上位机发出一个置位脉冲然后立刻归零。如果一直放电平PLC会一直响应就会出现关机后马上又自动启动这种诡异故障。我调试时真碰到过一回整个机组像抽风一样来回启停排查了半天才发现是上位机逻辑里把一个置位信号写成了保持信号。实时性方面Modbus TCP轮询周期我设置到500ms显示刷新完全够用。如果后面要接更快的录波或SOE事件记录再考虑走独立通道不必把整个系统都升级成高速总线成本不合算。数据记录我加了简单的SQLite存储运行数据每5秒存一条报警事件实时存这样事后分析问题有据可查。5. 调试过程与实测数据记录5.1 空载调试从点亮到闭环的点检流程空载调试是整个调试的基础我习惯按先开环、后闭环先小步、后大步的顺序来。第一步是检查电源和硬件。送上控制电确认PLC、采样板、显示面板都正常I/O点用万用表逐个点测模拟量输入在端子上加标准信号源确认量程和工程值换算正确。第二步是机组启动测试。先手动启动马达确认飞车、油压建立、转速上升到额定值整个过程中没有任何异响。第三步才是切自动闭环。先只启用调速器闭环让机组稳定在1500rpm附近观察转速波动稳定后再启用AVR闭环观察端电压从起励到稳定的过程。空载阶段最容易出问题的反而是启动逻辑。比如冷机天冷机油黏度大转速建立慢如果启动超时时间设置得太短就会报启动失败。我一般是把启动超时设成15秒并允许一次自动重试重试仍失败再进FAULT态这样可以避免很多无谓的报警。还有一个细节起励建压的延时也要给够有的机组剩磁弱AVR需要一点时间才能建立稳定的励磁给个3到5秒的等待窗口比较稳妥。5.2 带载调试与动态响应带载调试是整个项目最考验耐心、也最容易暴露问题的地方。我按30%、50%、75%、100%四档逐步加载每一档都同时记录电压和频率的稳态值以及突加负载瞬间的动态跌落值。按标准突加100%负载时电压跌落不应超过额定值的15%恢复时间不大于5秒频率跌落不应超过8%恢复时间也不大于5秒。下面是实测数据空载电压399.8V频率50.03Hz加载30%后电压395.6V频率49.92Hz加载50%后电压393.2V频率49.87Hz加载75%后电压389.5V频率49.76Hz加载100%后电压386.1V频率49.65Hz。这里有一个容易被忽略的现象加载到100%时电压和频率还在允许范围内但AVR和调速器的输出都已经接近上限了。这说明这台发电机组的过剩容量其实不大。后期再增加负载控制系统就算能把电稳住机组本身也会过载所以系统里我是把100%负载对应的功率整定成告警负载超过105%再给30秒延时跳闸。保护一定要从全局看不能只看控制器自己的参数是否好看。动态响应的记录我用了一台数字录波仪采样率设到1kHz重点看突加100%负载瞬间的电压最低点、恢复时间以及有无振荡。实测最低电压出现在加载后0.2秒大约跌到335V约为额定值的84%1.4秒左右恢复到385V以上没有再继续爬升抖动。这个表现算是比较理想了。5.3 一次典型的并机调试记录并机调试最怕的是对不上相序。两台机组并联前必须先用相序表确认两边相序一致否则合闸瞬间就相当于相间短路非常危险。我通常先断开输出断路器分别测量两台机组的相序确认一致后再进行并机操作。并机时我让第一台机组先带载运行然后启动第二台机组进入同步并车状态。PLC检测到两侧电压差小于5%、频率差小于0.3Hz时发出合闸指令。第一次合闸后我一直在盯着有功功率表发现两台机组的负荷分配并不均匀——第二台明显比第一台多带了约15kW的负荷。排查后确认是下垂率曲线标定不一致两个端口的4-20mA信号增益存在偏差。重新标定后重新并车负荷分配误差降到了5kW以内。并机调试还有一个习惯每次合闸前手动把待并机组的电压微调到比运行机组略高一点高1%到2%合闸瞬间冲击电流会更小。理论上电压差越小冲击越小但现场仪表精度有限略高一点可以避免合闸后立即出现逆功率。6. 常见问题与排查技巧实录6.1 电压振荡PID参数引发的典型故障第一次上电调AVR的时候电压在400V上下快速摆动摆幅大概±25V频率也伴随着轻微抖动。这个现象非常典型几乎可以肯定是AVR的PID参数太激进或者内环和外环参数不匹配。我当时的排查步骤是先把AVR的自动调节切到手动调压模式确认励磁回路本身是稳定的然后恢复自动把比例增益降一半积分时间放大一倍电压立刻稳下来。之后再慢慢往回加参数找临界点。折腾了半天才明白这台无刷励磁发电机的励磁时间常数比我想象的大不少参数必须比教科书上的经验值更保守。这个案例说明遇到振荡不要急着改硬件先用手动模式隔离出故障范围再一维一维去试PID参数。你永远不知道问题是出在参数还是执行器所以必须一步一步排除。这就像排查水管漏水先关掉总阀看是不是总管问题再分段检查比盲目拆墙效率高得多。6.2 频率漂移油门执行器与调速器协同问题启动后频率能稳定在50Hz但运转半小时后频率慢慢掉到49.5Hz左右。排查发现机油温度升高后发动机内部阻力变化油门特性也跟着变了而PID调速器的积分作用太弱补偿不了这种缓慢的扰动。解决方法是增强积分作用同时加了一个简单的负载前馈根据当前有功功率先预置一个油门开度然后再由PID做细调。这样负载突变时前馈先把油门推到位PID只负责修正剩余误差频率的动态表现好了很多稳态误差也回到了允许范围内。这个前馈加反馈的组合在现场非常实用。很多做过程控制的同行应该都有体会不要把宝全押在PID上把可预测的扰动想办法前馈掉控制品质会好一个档次。前馈的本质是提前动作PID是事后修正两者配合才能兼顾响应速度和稳态精度。6.3 构建上位机时遇到的CMake Generator报错差点漏了这个。在写上位机监控程序时我用CMake在Windows上构建一个跨平台的工具库结果configure的时候报了一个错大意是generator: Visual Studio 16 2019 does not match the generator。这个错的原因很简单工程文件夹里已经有一个旧的build目录之前是用别的生成器比如MinGW Makefiles或者Ninja配置过的里面残留了CMakeCache.txt。我再指定-G Visual Studio 16 2019的时候CMake发现缓存里的生成器和命令行指定的不一致就拒绝继续。解决方式也不复杂把build目录下的CMakeCache.txt和CMakeFiles文件夹删掉重新配置一次。或者更省事直接新建一个干净的构建目录比如build-vs2019。我在工程里现在都习惯用一项目一构建目录的方式不同工具链对应不同build目录互不污染。这种问题在控制系统开发里很常见因为我们往往要同时维护嵌入式固件、上位机软件、还有仿真模型工具链换来换去构建目录不隔离就容易出这种低级别但很烦人的错误。6.4 常见问题速查表我把这段时间遇到的高频问题整理成一张速查表供现场参考现象大概率原因排查与处理方向电压振荡AVR参数激进或内外环不匹配切手动调压隔离励磁回路降比例、放大积分时间频率缓慢漂移积分作用弱、油门特性随温度变化加强积分增加负载前馈空载电压正常带载跌到380V以下励磁容量不够或AVR带载参数未整定检查励磁功率重新整定AVR带载PID并机后负荷分配不均下垂率或标定增益不一致检查两侧频率功率特性重新标定4-20mA通道合闸时机组冲击大同步条件不满足检查相序、电压差、频率差检查合闸延时上位机控制指令重复触发控制量用了电平命令改用脉冲命令发完即归零CMake configure报generator不匹配构建目录残留旧缓存删除CMakeCache.txt或新建构建目录这张表是我根据自己项目经验整理的不同现场负载类型不同具体阈值和参数会有差异但排查思路是通用的。这次项目做完给我最大的体会是一套控制系统真正的难点往往不在控制器本身而在对整个系统发电、励磁、调速、负载、环境的综合理解。数据手册上写不清的东西只能靠现场一点点试出来。如果你正准备给自己手头的发电机组重建控制系统我建议先从采样和保护做起把这两个基础打牢再往更复杂的闭环调节和并机功能推进。别一上来就追求花哨的远程监控先把现场跑稳其他的都是锦上添花。最后再分享一个小技巧每次调试完把整定参数、实测数据、问题记录都整理成一份文档存档下次同类项目直接拿来用能省一大半时间。