基于Matlab/Simulink的晶闸管三相交流调压器仿真模型搭建与验证
简介这套基于Matlab实现的晶闸管三相交流调压器仿真模型面向电子信息工程、自动化、数学等相关专业学生可作为课程设计、期末大作业或毕业设计环节中的参考资料。压缩包内共157个文件核心包含mdl仿真模型、c与h源码文件、mat数据文件以及bat批处理脚本、mexw32编译接口等整体结构覆盖从主电路搭建、触发控制逻辑到运行调试的完整链路方便读者理解三相交流调压的工作原理并在此基础上改动参数或扩展功能。目前已有343人学习下载。资源代码模块划分清晰适合有一定Matlab/Simulink和C语言基础的学习者用来对照仿真流程、排查报错也可为毕业设计中的电力电子仿真部分提供直接参考。1. 模型还没解压先想清楚这三件事拿到一个“基于Matlab实现晶闸管三相交流调压器仿真模型.rar”别急着双击解压。这类模型最常见的翻车点有三个主电路本身不难搭难的是三相三线无中线拓扑下触发脉冲怎么给触发角α给多大、脉宽给多宽直接决定输出是不连续还是完全没输出最后是求解器步长没限制晶闸管的窄脉冲被求解器跳过去波形看起来像缺相。这篇文章按一套常规的Matlab/Simulink搭建方案展开覆盖晶闸管三相交流调压器的原理、建模、触发函数、电压闭环和FFT谐波验证适合电力电子、电机软启动和电源方向的学生与工程师。整个模型基于Simscape Electrical Specialized Power SystemsSPS库搭建Matlab R2023b及以上版本都可以直接操作。2. 三相交流调压器的相控原理以及Simulink建模落点2.1 相控调压和通断调压为什么软启动多用前者晶闸管交流调压器有两条路相位控制和通断控制。相位控制是每个电源周期内延迟一个触发角α再让晶闸管导通改变α就能连续改变输出电压有效值电压波形是缺角正弦波谐波分量较大但调节连续、分辨率高。通断控制是把整个电源周期作为单位在某些周期导通、某些周期关断输出是完整正弦波串谐波集中在低频段但电压调节是台阶式的不能做到连续变化。电机软启动和灯光调光这类对连续调压有要求的场景几乎都选相位控制。Simulink里做相位控制核心是生成随α角移动的触发脉冲而不是简单地用Pulse Generator设几个固定脉宽参数。这个思路先立住后面建模型才不会走偏。反过来的一个常见误用是直接用“通用桥”Universal Bridge默认参数把它当成交流调压器主电路。实际上通用桥的晶闸管是三相桥式整流拓扑不是三对反并联交流开关直接接交流负载会看到负半周行为不正常。做三相交流调压器主电路要按“电源—反并联晶闸管对—负载”逐相搭后面第3章会按这个结构给模块清单。2.2 三相三线无中线拓扑两相导通的约束和α移相范围三相交流调压器分三相三线无中线和三相四线有中线两种。三相四线时每相独立工作α可从0°调到180°每相相当于单相调压器结构简单但需要中线零序电流会流回电源实际工业场景较少。三相三线无中线时没有零序通路任何时刻必须至少有两相晶闸管同时导通电流才能从一相流出、经负载和另一相流回这个约束决定了α的调节范围。阻性负载下三相三线无中线的α有效范围是0°到150°。α大于150°后任意时刻只有一相晶闸管收到触发形不成电流回路输出直接为零。α在0°到60°区间三相或两相交替导通电流基本连续60°到90°区间总是两相导通电流仍然连续90°到150°区间出现全断和两相导通交替电流断续输出电压有效值急剧下降。感性负载时电流滞后于电压晶闸管在电压过零后继续导通实际可调边界和负载阻抗角φ有关α需要后移且边界收窄仿真时建议从阻性负载先跑通再换成阻感负载。α范围导通模式输出特性0°60°三相/两相交替导通电流连续输出接近正弦畸变小60°90°任意时刻两相导通电流连续波形畸变逐渐明显90°150°两相导通与全断交替电流断续有效值快速下降≥150°无导通回路输出为零2.3 从原理到模块Simulink模型里对应的六个要素把上面的原理落到Simulink一个能跑的模型里至少有六个要素三相电源、三对反并联晶闸管、负载、同步信号、触发脉冲生成器、测量与显示。前三个是功率电路属于SPS电网络域同步信号从电源电压里取常用三相PLL得到电网相位触发脉冲生成器接收α角和电网相位输出六路0/1门极信号测量部分用电压电流测量模块接示波器。这六个要素里主电路和触发电路之间的接口最容易出问题。SPS库里的Thyristor模块门极输入是Simulink逻辑信号可以直接把触发脉冲接到g端不需要再做Simscape物理域转换。如果选的是Simscape基础库里的Thyristor门极是电气节点就得额外搭门极驱动电路模型会大一圈。建模时优先用SPS库的Thyristor后续参数设置也直接。3. 建一个能跑的晶闸管三相交流调压器开环模型3.1 主电路搭建六个晶闸管反并联的接法和参数表打开Simulink新建模型先把Simscape Electrical Specialized Power Systems库加到库浏览器。主电路按三相三线无中线结构搭Three-Phase Source输出接三对反并联晶闸管晶闸管输出端接三相星形负载负载中性点保持悬空不要接地。六个晶闸管按相序安排管号。A相上管T1阳接电源A、阴接负载AA相下管T4阳接负载A、阴接电源AB相上管T3阳接电源B、阴接负载BB相下管T6反向C相上管T5阳接电源C、阴接负载CC相下管T2反向。管号顺序按触发基准排列触发函数里会用到最好从一开始就固定这个编号习惯。晶闸管参数在SPS库的Thyristor模块对话框中设置常用参数如下表。其中缓冲电路R-C参数一般不关掉纯理想开关模型在换流瞬间容易出现数值高频振荡拖慢仿真甚至不收敛。参数建议值说明Ron0.001 Ω导通电阻越小损耗越小Lon0 H可设1e-6避免电流突变的代数环Vf1.2 V正向管压降Rs500 Ω缓冲电阻数值稳定用Cs250e-9 F缓冲电容Snubber打开保留默认缓冲网络负载用Three-Phase Series RLC Load星形接法R取10 ΩL取30 mH感性负载中性点不连接。电源用Three-Phase Source相电压220 V线电压380 V50 Hz。注意电源和负载的参考点三相三线无中线时负载中性点悬空仿真模型里不能把负载中性点接到地否则等效成了三相四线系统α特性会变。3.2 触发脉冲生成基于电网相位的Matlab Function触发脉冲是整个模型的核心。六个晶闸管的自然换相点以A相电压过零为参考各管触发基准为0°、60°、120°、180°、240°、300°对应管号1到6。给每个基准加上α角得到该管的触发相位当前电网相位落在“触发相位到触发相位脉宽”区间内门极输出1否则输出0。脉宽取60°电角度这个宽度足够保证三相三线无中线拓扑在换相过程中有重叠导通。在Simulink里插入MATLAB Function模块输入电网电角度angle_rad弧度、触发角alpha_rad弧度和使能信号enable输出六路门极信号g。代码如下。function g firing_controller(angle_rad, alpha_rad, enable) % 三相交流调压器六路触发脉冲生成 % angle_rad: 以A相电压过零为参考的电角度, 0~2*pi % alpha_rad: 触发角, 单位弧度 % g: [T1 T2 T3 T4 T5 T6] 六路门极信号, 0或1 base_deg [0, 60, 120, 180, 240, 300]; % 六管触发基准 base_rad base_deg * pi / 180; width_rad 60 * pi / 180; % 脉宽60度电角度 phase mod(angle_rad - base_rad - alpha_rad, 2*pi); g double((phase width_rad) (enable 0.5));这段代码的工作方式用mod取余把每个晶闸管的角度都折算到0到2π周期内再判断是否落在脉宽窗口里。注意“phase width_rad”判断的是距离触发点的相对位置而不是当前角度的绝对值所以即使α在150°以上T1的脉冲窗口跨过π边界也能正确触发。enable大于0.5时输出才有效用于闭环前的手动投入。触发角α给固定值时用Constant模块输入例如60°对应60*pi/180。如果alpha_rad没有限幅仿真中α大于150°后模型仍然输出脉冲但电流为零属于正常现象但容易让人误以为触发没生效建议在Constant后接Saturation把弧度限幅在[0, 2.618]对应0°到150°。3.3 同步信号与求解器设置PLL、最大步长和Powergui触发函数里的angle_rad必须和主电路电源电压同相位否则触发时刻会整体偏移。最省事的同步方案是用SPS库的Three-Phase PLL模块。把主电路A相电压经Three-Phase V-I Measurement引出转成标幺值后送入PLL的输入PLL的wt输出就是随A相电压相位连续增长的角信号单位弧度。PLL需要设置初始频率为50 Hz比例积分参数按默认值一般就能锁定。如果仿真启动阶段看到α对应的波形有几十毫秒的漂移那是PLL锁相过渡过程正常等稳态后再看波形。求解器设置是个关键细节。Simulink默认变步长求解器ode45会自动扩大步长晶闸管脉宽只有3.3 ms60°步长过大会直接把窄脉冲跳过去。把Solver Type改为变步长Solver选ode23tbMax step size设成50e-650微秒相对容差RelTol设1e-3。这样单个脉冲周期内至少采样几十个点触发窗口不会丢失。模型里加一个Powergui模块SPS库最上层Configuration窗口选Continuous或Discrete都行。连续模式精度高离散模式速度快调参数阶段建议用离散仿真步长Ts设为50e-6和最大步长保持一致。Powergui还可以做后面的FFT分析模型里先放上。开环验证方法把α设成60°跑0.2秒仿真Scope里看负载三相电流。α60°时三相三线阻感负载电流应该接近连续正弦每相电流在过零附近有轻微畸变。再把α改到120°电流波形会明显出现断续段。两种波形都能出来说明主电路和触发逻辑基本对了。4. 从固定触发角到电压闭环软启动模型的收尾方式4.1 输出电压RMS测量和反馈通道开环模型能跑通后下一步就是闭环。三相交流调压器做闭环最常见的目标是输出电压有效值稳定模拟电机软启动时电压按斜坡爬升。反馈信号取负载线电压或相电压的有效值测量通道用RMS模块先整定不能直接拿瞬时值做PI。用Three-Phase V-I Measurement测负载侧A相电压接到RMS模块Simulink Extra库或Signal Processing库都有RMS模块的基波频率设50 Hz输出就是电压有效值。为了避免波形在α较大时畸变导致RMS抖动RMS窗口可以用一个周期0.02 s输出再做一阶低通滤波时间常数5 ms左右把高频脉动滤掉再进PI。4.2 PI调α的方向、限幅和抗积分饱和电压闭环的调节方向要特别留意。误差e Vref - Vrms如果当前电压低于给定需要减小平滑α来升压。PI输出的是α角所以比例和积分增益都需要带上负号或者用PI输出后接一个Gain-1再叠加到初始α上。常见做法是PI输出为0到1的控制量用Gain把控制量映射到α弧度范围这样调试更直观。α的限幅必须加。三相三线阻性负载的可控范围是0°到150°感性负载还要收窄。取下限10°防止脉宽和换流重叠导致短路冲击上限150°超过就无输出。限幅直接放在α信号进触发函数之前用Saturation模块。PI积分必须在限幅时停住否则α顶到限幅而积分继续累积恢复给定后会有明显超调这就是积分饱和。Simulink的PID Controller模块自带抗积分饱和选项把Limit Output勾上下限设0上限设2.618。PI初值给一组能用的经验值具体还看负载P从0.05开始试I从20开始试。P太大容易在α小角度区振荡I太大则电压波形来回抖动。表格里的范围适合10Ω电阻串30mH电感的负载换负载后按“先P后I”的顺序调。参数初始值调节方向P0.05增大使响应变快过大会振荡I20增大消除静差过大会低频抖动α下限10°防止过小触发角冲击α上限150°保证三相三线拓扑正常换流4.3 用斜坡给定模拟软启动过程看α和电流的变化软启动的本质是让输出电压从低到高平滑过渡而不是阶跃给定。给定电压Vref用Signal Builder或Repeating Sequence Staircase生成斜坡比如0.3秒内从110 V线性升到220 V。仿真0.5秒Scope里看α角、输出电压和三相电流三条曲线。正常现象是启动初始α被PI推到接近150°电流很小随着Vref斜坡上升PI输出α缓慢下降输出电压跟随上升电流幅值逐步增大。这个过程中如果看到α在某个角度来回抖先检查是不是限幅起作用的边界。比如给定110 V对应α约130°落在电流断续区PI在这个区域增益要适当降低否则纹波大。闭环调好后把负载从纯阻性换成R10 Ω、L30 mH观察α的可调范围变化。感性负载下电流滞后晶闸管关断点后移同样的输出电压对应α会比阻性时略小波形过零附近畸变也更明显。如果α在低角度区比如20°到40°出现电流尖峰说明触发脉冲与感性负载续流重叠脉宽需要加大到90°甚至120°验证。5. 波形验证、FFT谐波检查和三个最常踩的坑5.1 三个波形判断模型是否正常仿真跑完先看三个波形负载相电压、晶闸管电流、门极脉冲。负载相电压在α60°时应该看到明显的缺角正弦每个周期有六处小缺口晶闸管电流应该是半波形态导通段跟随正弦关断段为零门极脉冲每组相差60°宽度一致。三个波形里如果负载电压正常但电流全为零查门极脉冲是否通过Saturation把α限制在150°附近如果脉冲正常但电流断续严重查脉宽是否小于30°窄脉冲在三相三线拓扑下换流能力不足。5.2 输出谐波的FFT量化方法谐波分析用Powergui自带工具最省事。仿真停止后双击Powergui选FFT Analysis信号选负载A相电压基波设50 Hz最大频率设1000 Hz显示方式选Bar。α90°时5次250 Hz和7次350 Hz谐波会非常突出幅度可能达到基波的20%以上这是相控调压的固有特性。用脚本方式也可以复现但要注意仿真数据时间步长不均匀先插值再FFT% 假设load_va为Scope导出的A相负载电压, t为时间轴 fs 5000; % 重采样率, 覆盖到50次谐波 tq (t(1):1/fs:t(end)); vq interp1(t, load_va, tq, linear); seg vq(end-40961:end); % 取最后4096点 Y fft(seg); P2 abs(Y/4096); P1 P2(1:4096/21); P1(2:end-1) 2*P1(2:end-1); f (0:4096/2)*fs/4096; bar(f(2:end), 20*log10(P1(2:end)1e-6)); xlabel(频率 / Hz); ylabel(幅值 / dB);这段代码先把变步长数据插值成5 kHz等间隔序列再做4096点FFT。注意取数据段时最好避开启动过渡区用最后0.8秒的数据否则PLL锁定过程和软启动斜坡会污染频谱。5.3 最大步长、同步基准和中性点三个坑和回避办法最大步长是第一个坑。变步长仿真没设最大步长触发脉冲会随机丢失。解法不是把仿真步长无限缩小而是把脉宽加大到60°以上并设Max step size为脉宽对应时间的十分之一以下也就是50微秒左右。同步基准是第二个坑。PLL出来的angle_rad相位基准如果和A相电压过零点对不齐所有管子的触发时刻同步偏移波形看起来像α整体偏大。用Three-Phase PLL时把A相电压和PLL的wt同时接到Scope里观察确认PLL锁定后wt过零点与A相电压过零点重合不重合就调整PLL内部的初始相位。中性点接地是第三个坑。三相三线无中线模型负载中性点一旦接地系统变成三相四线α大于90°后仍可能有不正常电流回路输出特性完全偏离理论曲线。检查模型时直接看负载模块的neutral连接端悬空状态才是对的。最后留一个调试技巧把触发角α从Constant改成Repeating Sequence Staircase按0.1秒步进从150°递减到30°开环扫一遍全角度范围记录每个α对应的输出电压幅值得到这个负载下的实际调压曲线。现场换负载之后用这条曲线去校准闭环的PI限幅范围比对着默认参数盲调整可靠得多。本文还有配套的精品资源点击获取