
1. 这到底是什么设备为什么值得自己造一台做电源测试这一行的人对交流电源AC Source应该都不陌生。实验室里给待测设备供电、测效率、测输入特性都离不开它。但普通的交流电源只能输出稳定的正弦波真要模拟电网异常——比如电压突然跌落到40%、频率瞬间偏移、波形里塞进谐波——就力不从心了。而“New AC Source with Power Line Disturbance Simulator”这套项目说白了就是把一台可编程交流电源和一台电网扰动模拟器合并到同一个系统里既能当普通交流电源用又能按预设序列输出各种电网故障波形专门用来验证设备在恶劣供电条件下的表现。我为什么说这套东西值得做因为做电源类产品、家电控制器、工业设备的人都会遇到同一个痛点标准里要求做电压跌落、短时中断、电压暂升测试类似IEC 61000-4-11那类场景但手头设备要么只能输出纯正弦要么得外接一台昂贵的电网扰动发生装置。把两者合一相当于一个设备解决两类需求省了测试台上的空间也省了动辄几十万的设备采购预算。这套方案适合谁如果你在做开关电源、逆变器、UPS、家电控制板、充电桩模块或者任何需要过认证、需要验证供电异常耐受能力的硬件这个项目都能直接拿来改造成自己的测试平台。接下来我把整机架构、核心参数计算、扰动波形的实现思路、以及我在实测中遇到的坑一条条拆开讲。2. 系统架构与核心设计思路2.1 从需求反推一台机器要干两件事先明确需求。第一件事是当交流电源这个大家都熟输出电压可调、频率可调、限流保护、能测功率参数。第二件事是当扰动模拟器这个才是核心难点。什么叫“扰动”标准的电网异常大概分这么几类电压跌落Voltage Dip/Sag电压在短时间内跌到额定值的0%~90%持续0.5个周期到几十个周期。电压暂升Voltage Swell电压超过额定值的110%甚至到140%。短时中断Interruption电压直接掉到0持续几毫秒到几秒。频率偏移Frequency Variation电网频率从50Hz漂移到47Hz、52Hz甚至更宽。谐波畸变Harmonic Distortion电压波形里叠加3次、5次、7次等高次谐波。这套系统的目标就是在一个设备里同时覆盖以上所有场景而且切换时间要快波形要可控。也就是说当我们按下“触发”按钮时输出电压必须在一个很短的过渡时间内通常要求小于5微秒的更新率从正常波形切换到预设的异常波形并且相位不能乱跳。这里有一个容易被忽略的设计决策为什么不用“普通交流电源外部切换箱”的方式因为外部切换箱用的是继电器或接触器动作时间在毫秒级而且切换瞬间会产生电弧、相位不可控根本模拟不出标准的跌落波形。真正的扰动测试要求波形的开始点和结束点都精确落在某个相位角上比如“从0度开始跌落到40%持续100ms后恢复”这不是机械开关能干的活必须由功率半导体加实时数字控制来完成。2.2 整机架构数字控制线性/开关混合功率级这套系统的整体架构分三层人机交互层上位机软件或触摸屏负责编辑测试序列、设置输出电压/频率/扰动参数、记录测试数据。实时控制层MCUDSP或FPGA负责波形生成、电压电流双闭环控制、扰动序列的状态机切换、保护逻辑。功率输出层AC源功率级扰动注入功率级负责将控制信号放大成实际的高压大电流输出。功率级我见过两种主流做法。一种是采用“交流电源拓扑PWM整流器”结构输入市电先整流成直流母线再用全桥或半桥逆变器输出任意波形。这种方案的效率高但动态响应受限于开关频率和滤波电感模拟快速跌落时波形边沿会有一点拖尾。另一种是“线性电源拓扑”用大功率运放或线性调整管直接放大波形响应速度快、波形质量极高但效率低、发热大体积也大。我个人在做这种合一的扰动模拟器时偏向于采用“PWM逆变输出端LCL滤波少量线性补偿”的混合方案兼顾效率和波形质量。当然如果测试功率不大比如500VA以内纯线性方案省事很多。控制层是这套系统的灵魂。我推荐用“DSP跑电压电流环FPGA跑序列状态机”的组合。DSP负责每周期几十kHz的闭环控制FPGA负责精确的相位定位和事件触发。为什么要把序列状态机放在FPGA而不是DSP里因为DSP的中断响应时间有抖动无法精确到微秒级别的相位触发而FPGA的硬件定时器可以做到纳秒级精度。这一点在做“跌落终止点与下一周期起始点无缝衔接”的时候特别关键后面细说。3. 核心参数计算与硬件设计要点3.1 电压电流裕量与功率级设计设计这套系统第一个要定的是功率等级。以最常见的2kVA规格为例输出额定电压220Vrms额定电流约9.1Arms。但扰动测试有个特殊要求电压跌落到0%时电流可能瞬间冲到很大因为待测设备内部的输入电容要放电或重新充电所以电流裕量不能按额定值算建议至少留2倍峰值裕量。峰值电流怎么算220Vrms对应的峰值电压是311V。如果负载是整流容性负载很多电源类设备都是导通角小峰值电流可能是有效值的3~5倍。所以2kVA的设备输出峰值电流能力至少要按30~40A设计。这个裕量直接决定了功率管的选型和散热方案我建议IGBT或高压MOSFET的电流规格按峰值电流的1.5倍以上选留足安全余量。母线电压也要算清楚。220Vrms输出如果采用SPWM调制直流母线电压至少要达到311V以上考虑到裕量和调制度母线电压取380~400V常见。如果输出还要支持264Vrms很多标准要求高线测试峰值就是373V母线电压至少取450V。别小看这个参数我见过有人按220V设计母线结果做264V输出时波形顶到削顶测试怎么都过不了返工很痛苦。3.2 输出滤波器的设计逻辑PWM逆变器的输出不能直接接负载得经过滤波器把开关纹波滤掉。滤波器的截止频率选择有个权衡截止频率太低输出电压对控制指令的响应变慢模拟跌落时波形边沿变缓截止频率太高开关纹波滤不干净输出波形THD超标。以开关频率20kHz为例LC滤波器截止频率通常取开关频率的1/10~1/5也就是2kHz~4kHz。用经验公式计算滤波电感L 负载阻抗 × (截止频率/开关频率) ÷ 2πf_c实际设计时还要考虑电感电流纹波。更简单的方法是先定L让最大纹波电流不超过额定电流的20%。比如2kVA/220V系统额定电流9.1A纹波电流取1.8A母线电压400V开关频率20kHzL (400 ÷ (4 × 20kHz × 1.8A)) ≈ 2.8mH。这个值在工程上是合理的。LCL滤波比单L滤波多一个电容支路对高频衰减更好但谐振峰处理比较麻烦需要加阻尼电阻或有源阻尼。我图省事在2kVA级别用的是LC滤波配合输出端的小共模电感实测THD能控制在2%以内完全够用。3.3 扰动注入的方式选择这台设备的关键是“如何产生扰动”。不同的扰动类型实现方式不一样电压跌落/暂升/中断本质上就是“改变输出波形的幅值包络”。控制上最简单的方式是直接改变调制波的幅值。比如正常输出220V跌落深度40%意味着输出88V那么在软件里把参考电压的幅值乘以0.4即可。难点在于切换时刻要精确落在指定相位角这个靠FPGA的硬件触发实现。相位跳变Phase Jump有些标准要求模拟电压跌落时伴随相位跳变比如跌落瞬间相位从0度跳到-30度。这个需要在波形生成时直接修改参考波形的相位值同时保证电流环不会因为相位突变而产生过冲。实现起来要对锁相环做特殊处理不能让PLL在跳变瞬间失锁后重新锁相而是要用“前馈瞬时相位补偿”的方式。谐波注入在调制波里加指定次数的谐波分量例如在50Hz基波上叠加10%的三次谐波。这个在数字控制里就是多生成几路正弦波相加计算量不大但要注意谐波分量不能超过逆变器在对应频率下的最大输出电压能力否则会过调制。我建议把“扰动模式”和“普通模式”做成软件模块化的东西不要在硬件上做两套通路。平时当普通交流电源时扰动模块不启用参考波形就是纯正弦做测试时从序列列表中读下一条指令变更参考波形的参数。这样做的好处是硬件复用率高机器一台顶两台。4. 扰动模拟的软件实现与序列控制4.1 波形生成从正弦查找表到任意波形数字控制的交流电源波形生成通常用查找表法在内存里存一个周期的正弦波采样点控制周期一到按当前相位角查表乘上幅值系数得到当前的电压参考值。比如开关频率/控制频率是20kHz50Hz一个周期是20ms一个周期的采样点数是400个。如果采用三相交错或更高控制频率点数翻倍。查找表的精度用16位整数就够但要留意幅值调整和相位偏移都必须在32位域里做避免乘法溢出后波形出现毛刺。对于扰动模拟单纯的“正弦查找表”不够用因为需要叠加谐波、调制包络。我建议把参考波形生成改成“基波谐波叠加包络调制”三层结构基波用相位累加器生成0~2π的相位值查正弦表。谐波对同一个相位值乘以谐波次数n查表后乘以谐波幅值系数。包络调制把上面两步的结果乘以一个“包络函数”正常情况下是常数1跌落时是0.4中断是0。这个三层结构能覆盖绝大部分扰动模拟需求。相位累加器的位宽建议用32位步长 (目标频率 × 2^32) ÷ 控制频率。为什么要用定点数而不是浮点因为FPGA里浮点计算资源昂贵定点流水线一个时钟周期就能出结果而且相位累加器本身就是天然的“不会随时间漂移”的正弦发生器。4.2 序列状态机一条测试流程怎么被精确执行扰动测试通常不是只做一个动作而是按标准跑一整套序列。比如IEC 61000-4-11里典型的测试序列是正常输出220V持续5秒。电压跌落到0%中断持续10ms。恢复正常220V持续5秒。电压跌落到40%持续100ms。恢复正常220V持续5秒。电压暂升到120%持续1秒。恢复正常220V持续5秒。这套序列如果靠人工操作误差大到没法看必须由状态机自动执行。状态机的设计我建议用一个简单的“事件表”结构Event: { type: DIP / SWELL / INTERRUPT / NORMAL, target_voltage: 0.0~1.5 (标幺值), duration_ms: 10, phase_start: 0 (度), phase_end: 270 (度), next_event: pointer }FPGA里的状态机按事件表逐条执行每条事件触发时更新参考波形的包络参数持续时间由硬件计数器精确控制。这里最容易被忽略的一个参数是“phase_end”也就是恢复时刻的相位角。很多标准测试要求跌落结束在特定的相位角上比如跌落在0度开始在90度结束目的是模拟最恶劣的电网故障。如果只控制跌落开始相位不控制结束相位测试结果的重现性会大打折扣。4.3 无缝切换避免切换瞬间的电流冲击扰动模拟中最怕的问题是什么是切换瞬间的电流冲击。试想负载是整流容性负载正常时电容充到311V突然电压掉到88V电容上的电压比输入电压高电流会反向灌回电源此时如果逆变器的电流环响应不够快母线电压会泵升严重的会触发过压保护甚至烧毁功率管。我的做法是在切换瞬间不做“硬切换”而是做一个“包络渐变”用极短的时间比如100~200微秒从正常电压渐变到目标电压。但这个时间不能太长否则不满足标准里“跌落开始时间应小于5微秒”这类要求。怎么兼顾其实关键在“电流内环”。电压外环的响应可以慢一点但电流内环必须足够快能在切换瞬间把输出电流限制在安全范围内。所以这套系统的控制设计里电流环带宽建议做到2kHz以上比一般的交流电源通常几百Hz高出一截。带宽高了之后环路稳定性会变差输出滤波器的谐振峰需要更仔细地处理这就是“扰动模拟能力”和“电源稳定性”之间的一个直接矛盾设计时需要反复权衡。5. 实操过程从装机到跑通一条测试序列5.1 硬件平台搭建与基本校准我以自己搭的一套2kVA样机为例说说实操流程。主功率器件用的是1200V/50A IGBT模块输出LC滤波控制板是DSPFPGA双芯片前级整流用不控整流加母线电容没有做PFC2kVA级别做PFC成本高测试设备对功率因数不敏感所以省了。第一步是先做空载调试。用调压器给控制板单独供电先不接功率级用示波器看DSP输出的SPWM波形确认占空比随参考波形变化正常。第二步接上母线电容用电子负载或功率电阻做假负载开环状态下不给反馈看看输出电压波形是否正常。这里有个坑开环调试时母线电压不能一步加到400V先用调压器把母线加到100V左右等波形确认正常了再往上加不然一旦波形异常、电流失控炸机器是分分钟的事。第三步是闭环调试。先只闭合电流内环给一个正弦电流指令观察实际电流跟随情况。然后是外环电压闭环给220V参考看输出电压波形和THD。最后是加扰动功能先模拟最简单的“中断0V”场景用示波器看波形切换过程是否干净。校准环节有两个参数务必仔细输出电压增益和相位补偿。输出电压增益不准你设220V实际输出可能只有210V测试结果全偏相位补偿不对示波器上看波形起始相位和设定值对不上后面做相位角切换测试时会出大问题。建议用高精度万用表标定电压增益用示波器配合锁相环信号标定相位。5.2 用上位机编辑并执行一条完整的IEC风格序列硬件跑通之后下一步是验证整条测试序列。我习惯用上位机软件LabVIEW或C#上位机都行通过Modbus或CAN总线下发事件表实时监控输出电压电流。拿前面提到的“中断10ms→跌落40% 100ms→暂升120% 1秒”序列举例。在实际执行前我会先做一次“干跑”待测设备不接直接接电阻负载用示波器记录整条序列的电压波形确认每一个动作的电压值、持续时间、相位角都符合设定。有个细节值得提一下在做跌落测试时待测设备的输入电流会发生剧烈变化特别是开关电源跌落瞬间输入电流可能冲到正常工作电流的几倍。如果这时候电流环限制了输出电流输出电压的跌落波形会走样——不是标准的方波跌落而是一个被电流限制“压扁”的曲线。这在实际测试中属于正常现象因为真实的电网故障也有内阻电压跌落时电流也会被限制。但如果你的目的是“标准合规测试”那就要确保设备在额定功率范围内都能维持设定电压不能因为电流限制导致输出电压偏离标准允许的误差带。5.3 结果判断什么样的波形算“有效测试”做扰动测试不只是“跑完流程”就完事关键要看测试结果是否有效。以IEC 61000-4-11为例一个有效的电压跌落需要满足跌落开始时间电压从90%跌到目标值的时间小于5微秒如果是“即时”跌落保持时间误差在±10%以内恢复后的电压要在规定时间内回到正常值的90%以上。实操中我遇到过一种看似通过实则无效的情况示波器上电压跌落了但待测设备的控制器根本没复位测试被判为“通过”。问题在于待测设备的输入端有大容量电解电容跌落40%时电容上的电压根本没降到足以让控制器复位的阈值以下。这时候要做的是调整测试条件比如增加跌落深度或延长跌落持续时间直到待测设备真正经历一次“掉电-恢复”的过程。这个经验在给客户做认证预测试时特别重要毕竟标准测试是固定的但设备工况千差万别测试的严酷度要匹配实际应用场景。6. 常见问题与排查技巧实录6.1 波形在跌落恢复瞬间出现振荡这是最常见的故障现象。表现为电压从跌落状态恢复到正常值时输出波形先冲高、再回落形成一个明显的振荡尾巴持续几毫秒甚至十几毫秒。原因通常是电压外环的响应速度过快恢复瞬间参考电压突变环路产生超调。排查方法先用示波器看电感电流波形确认振荡发生在电流环还是电压环。如果是电压环的超调适当降低电压环带宽或者在参考电压变化时加一个一阶低通斜坡ramp让参考电压不是阶跃变化而是快速渐变。但注意斜坡时间要控制好否则不满足标准对恢复时间的要求。我一般习惯斜坡时间设为200~300微秒既能抑制振荡又不会显著影响测试有效性。6.2 做跌落测试时母线电压泵升导致过压保护这个现象我遇到过好多次特别是在测试容性负载浓郁的设备时。跌落瞬间负载端的电容能量回馈到逆变器输出端经过续流二极管回灌到母线电容导致母线电压瞬间升高。如果母线电容容量不够电压会冲到500V甚至更高直接触发过压保护。排查和处理思路有几个方向一是加大母线电容容量但成本高、体积大二是在母线电容上并联泄放电阻或泄放IGBT检测到母线电压超过阈值时主动泄放三是优化控制算法在跌落开始瞬间主动把逆变器切换到“可控整流”模式让能量回馈不是被动灌入母线而是受控回馈。这几种方案我实测下来算法优化第三种效果最好但要付出DSP算力代价而且调试周期长。如果项目周期紧先用泄放电阻方案顶住等后续版本再优化。6.3 谐波注入后输出电压不准确很多人在做谐波测试时发现一个现象设置了3次谐波10%但示波器测出来谐波含量只有6%或者8%数值怎么都不对。这个问题的根源一般不在控制而在输出滤波器的频响特性。LC滤波器的截止频率以上幅值会以-40dB/dec衰减。3次谐波是150Hz如果滤波器截止频率设计在2kHz150Hz处的衰减很小但也有一定的相位滞后和幅值下降。关键是你在软件里加的“10%谐波”是加到调制波上的经过逆变器和滤波器后输出端的谐波含量会低于调制波的设定值。解决办法有两个一是直接在控制里做“谐波幅值预补偿”根据滤波器频响特性在设定值上乘一个修正系数二是在软件里做输出端的谐波闭环实测谐波含量并反馈调节但成本高。对于标准测试来说通常用预补偿就够误差在±1%以内完全可接受。6.4 关于同步与触发的几个坑最后专门说一下触发同步。做扰动测试时如果你用外部触发信号比如用一个信号发生器发出“开始测试”脉冲不同设备之间的触发延迟会导致测试起始相位不确定。为了解决这个问题我建议在软件里设置一个“相位触发模式”可以指定从0度、90度或270度开始触发也可以指定“自由运行”模式任意相位触发适合摸底测试。万一你发现测试结果的重现性差先检查触发模式是不是“自由运行”如果是那每次测试的起始相位都不同波形差异大是预期的不是设备坏了。另外一个坑是“锁相环PLL的带宽设置”。如果PLL带宽太高它会跟踪输入电压的瞬时相位抖动导致输出波形相位不稳定如果太低频率变化时PLL跟踪不及时。在做频率偏移测试时我建议把PLL带宽调低比如50Hz时带宽设为5Hz左右让PLL跟踪平均频率而不被瞬时抖动干扰。这一点在标准测试里直接影响频率偏移的测试结果是否通过不可忽视。在这套系统的开发过程中我最大的体会是做一台“能输出正弦波”的电源和做一台“能模拟各种电网故障”的电源难度差的不是一星半点。前者只需要一个稳定的反馈环路后者则要求你在稳定性、动态响应、波形质量三个维度之间反复权衡。尤其是在切换瞬间的能量处理上硬件的余量、算法的细腻程度、甚至PCB布线的寄生参数都会影响最终测试波形的好坏。如果你也准备动手做类似的项目建议先把主力功率器件的余量留足再花时间把序列状态机的逻辑理顺这两个基础打牢了剩下的问题基本都能通过调试解决。