基于Simulink的三相交流调压器晶闸管触发仿真与谐波分析

📅 发布时间:2026/9/16 6:45:57
基于Simulink的三相交流调压器晶闸管触发仿真与谐波分析
简介基于Matlab的晶闸管三相交流调压器仿真模型面向计算机、电子信息工程及数学等专业学生可直接服务于课程设计、期末大作业或毕业设计中有关电力电子变换、晶闸管触发控制与三相调压的环节作为理解原理和起步仿真的参考资料。压缩包共157个文件涵盖Simulink模型mdl、C语言源程序与头文件、mat数据文件以及obj、mexw32等编译中间件txt文本和bat批处理脚本分别承担说明文档与运行配置整体仅475KB结构清晰便于按需查阅。已有343人学习下载。借助这套模型与源码读者可以直观观察三相交流调压器的触发角调节、输出电压/电流波形变化等关键过程理清从触发脉冲生成到主电路工作的完整逻辑。资料提供可运行的基础框架并保留较多的模块化接口适合在此基础上自行修改参数、扩展功能或排查报错尤其适合具备一定Matlab和电路基础、希望快速上手仿真的学习者。1. 三相交流调压器仿真模型难题不在画晶闸管而在触发脉冲拿到一个“基于Matlab实现晶闸管三相交流调压器仿真模型.rar”先别急着解压要判断这套仿真模型值不值一眼看它是否包含完整的触发脉冲生成逻辑。三相交流调压器的Simulink模型通常不难画无非是三相电源、晶闸管桥臂、阻感负载再加一台Powergui真正的难点集中在控制角alpha怎么产生、双脉冲与宽脉冲怎么分配、以及负载变化时alpha能推到多少度而不失控。这篇文章面向要做电力电子课程设计、软启动器预研或者验证手写触发算法的工程师从触发原理、拓扑选型、Simulink搭建到波形验证按一条完整路径走完看完你能把模型从零搭起来也能解释为什么alpha等于90度时输出波形会缺一块。2. 三相交流调压器的触发原理与拓扑选择2.1 晶闸管三相调压与直流调压的差别三相交流调压器与整流器最大的差别在于输出电压没有直流滤波电感晶闸管输出的每一段电压都被负载直接承受波形是工频周期中被“切”剩下的片段。整流电路里晶闸管的控制角alpha决定直流平均电压计算相对直观交流调压器里alpha改变的则是输出电压有效值、基波分量和低次谐波分布仿真中观察的往往是有效值曲线和FFT谱线而不是平均值。另一个容易忽略的地方是交流调压器的晶闸管在电流自然过零时关断。直流调压里换相电感和续流回路会对关断点做整形交流调压器没有续流二极管电流过零后的反向阻断完全靠晶闸管自身的阳极电压反向。这就是为什么仿真模型里晶闸管的关断时间、正向压降和最小维持电流参数会影响波形边界的精确度。Simulink里的Thrristor模型如果直接用默认参数它表示的是一只理想程度较高的器件但在alpha接近150度时由于导通区间太窄电流幅值很小可能出现边界处导通与关断的抖动这是模型问题而不是硬件问题。与PMSM Simulink FOC仿真模型那种以逆变器PWM为驱动的思路不同三相交流调压器没有载波它的驱动信号是工频同步的方波脉冲频率50Hz每周期六只管子各触发一次不存在高频斩波。因此仿真步长对触发时刻的影响比PWM模型更敏感一个步长差一度输出有效值就可能有明显偏差。这个特性在后面的求解器设置里会重点处理。2.2 三相三线拓扑为什么必须用宽脉冲三相交流调压器有几种拓扑常见的是三相四线星形接法和三相三线星形接法。三相四线制下每相有独立的中性线回路某一相晶闸管触发后与之串联的负载电流可以独立流通各相工作互不牵扯触发脉冲用窄脉冲例如20度就够了。三相三线制没有中性线任意时刻必须至少有两只晶闸管同时导通负载电流才能在一相与另一相之间构成回路。这里有一个关键限制三相三线晶闸管调压器在启动瞬间如果触发脉冲宽度小于60度可能出现某一相的晶闸管导通后下一相触发信号到来前该相电流已经过零并关断导致电路突然断流。为了保证从任意初始时刻启动都能建立电流回路三相三线调压器的每只晶闸管触发脉冲宽度必须大于60度或者采用双窄脉冲方式在每只管子本应导通的区间发给它两个相距60度的窄脉冲。Simulink里实现宽脉冲比双脉冲简单直接把Pulse Generator的脉宽设到70度左右即可但这样每只晶闸管的触发角调节范围会被压缩追求精确控制时更适合用双脉冲逻辑。下表给出几种常见方案在Simulink里的适用性对比。拓扑中性线所需脉冲宽度Simulink推荐实现典型应用三相四线Y接有窄脉冲即可Pulse Generator单脉冲实验室教学模型三相三线Y接无大于60度或双窄脉冲宽脉冲70度或双脉冲逻辑工业调压、软启动三相三角形连接无大于60度宽脉冲或双脉冲大电流调压实际搭建仿真模型时我一般默认选择三相三线星形接法不带中性线。原因有两个一是它与工业中常见的三线供电环境一致二是它能暴露出脉冲宽度不足导致的波形断续问题这正好是检验触发逻辑是否正确的好手段。如果直接在Simulink里拉一个三相四线模型触发脉冲写窄一点也能跑反而掩盖了触发设计上的缺陷。2.3 Simulink中搭建最小调压回路的器件选型在Simulink里搭这个模型不需要从零写晶闸管的特性方程。Simscape Electrical库的Specialized Power Systems子库中已经提供了现成的晶闸管模型和三相整流桥模块。最快的方式是直接放一个Universal Bridge在参数对话框里把Number of Bridge Arms设为3Power Electronic Device选Thyristor这样六只晶闸管连同各自的缓冲电路就一次建好了省去手动排列六只管子的麻烦。不过UniversalBridge的参数对话框默认给出的Snubber电阻和电容值需要关注。默认值Rs100欧姆、Cs1e-6法拉对大多数仿真场景可用但在研究谐波时较大的缓冲电容会产生明显的额外电流尖峰干扰FFT分析结果。我通常把Snubber改成Rs10000欧姆、Cs1e-9法拉让缓冲支路的电流小到可以忽略电压尖峰又仍然被限制在安全范围。三相电源用Three-Phase Source模块设置Phase-to-phase RMS Voltage为380V频率50Hz内部接线选择Y接。负载端如果有三相RLC负载模块最好它可以分别设定有功功率P和感性无功功率QL方便切换电阻负载与阻感负载场景。最后别忘了放一个Powergui模块它负责求解电气网络的微分方程是整个电路模型运行的调度核心。将Scope接到Universal Bridge的测量端口上就能分别观察六只晶闸管的电流和三相输出电压。3. 在Simulink里做带双脉冲触发的完整调压器3.1 同步信号生成相电压过零 vs PLL晶闸管的触发角alpha必须以某一路电压的过零点为参考基准否则每次周波里触发时刻都是漂移的。Simulink模型里生成同步基准常见有两种方法一种是直接检测A相相电压的过零信号另一种是通过PLL锁定电网相位。过零检测实现起来简单但电压波形如果带谐波畸变过零抖动会被直接带入触发角PLL在这种场景下更稳定因为它输出的是平滑的相位角。对于50Hz固定频率的仿真我一般直接用一个Clock模块乘以2pi50把仿真时间换算成名义相位角wt。这种方式并不是真正的同步因为电网相位和仿真绝对时间之间没有真实绑定但可靠性很高——三相电源和触发逻辑运行在同一个仿真时钟域里相位差完全由触发逻辑内部的加法运算决定不会出现硬件里那种频率漂移。如果你之后要把触发算法部署到嵌入式设备再在同步环节加上真实的过零或者PLL算法就好。PLL方案对应的是Simscape Electrical里的PLL模块输入三相电压输出相位角。它的响应速度与控制器参数有关仿真中需要等待大约两到三个工频周期相位才能跟上因此起始阶段波形会有一段暂态。这个暂态不影响稳态分析但如果你直接从0秒开始截取波形观察FFT就会看到一堆乱七八糟的频率成分第四章节会说明该从哪里开始分析。3.2 用MATLAB Function写6路触发脉冲六只晶闸管的触发逻辑适合写成一个MATLAB Function模块接受同步相位角和alpha作为输入输出六路门极信号。这个方案比放置六个独立的Pulse Generator再手动设置delay要灵活得多alpha可以在仿真运行过程中实时修改方便做参数扫描。下面这段代码实现的是双窄脉冲触发逻辑每60度补发一个20度宽度的窄脉冲保证三相三线拓扑下任意时刻至少两相导通。function gates thy_gate(alpha_deg, wt) % 双脉冲触发逻辑输出六路门极信号 % alpha_deg 触发角(度)以A相相电压过零点为参考 % wt A相相电压的空间相位角(弧度)由2*pi*50*t计算得到 alpha alpha_deg * pi / 180; pulsew 20 * pi / 180; % 窄脉冲宽度 % 六路触发信号的基准相位 % A相上管0°B相上管120°C相上管240° % A相下管180°B相下管300°C相下管60° base [0, 120, 240, 180, 300, 60] * pi / 180; gates zeros(1, 6); for idx 1:6 pha mod(wt - base(idx), 2*pi); % 当前路相对相位 % 主触发相位到达alpha时发出第一个窄脉冲 if pha alpha pha alpha pulsew gates(idx) 1; end % 补偿触发主触发后60度处补发第二个窄脉冲 if pha alpha pi/3 pha alpha pi/3 pulsew gates(idx) 1; end end end这段代码的关键是把每只晶闸管的触发基准相位强制偏移到对应的相区间。A相上管的过零时刻是A相相电压正半周起点B相上管与之差120度A相下管对应A相相电压负半周起点自然差180度。计算ph mod(wt - base, 2*pi)之后ph的取值范围就被映射到0到360度之间后续只需要和alpha比较。MATLAB Function模块在Simulink里的输入配置为两个alpha_deg和wt。alpha_deg可以直接接一个Constant模块也可以在运行中用信号线从工作区或旋钮控件拉进来。wt的生成方式前面已经提过用Clock模块乘2pi50。输出gates是1x6向量通过Demux模块拆成六路后分别接到Universal Bridge的六只晶闸管门极输入上。如果你用的是独立Thyristor模块而不是Universal Bridge需要手动保证接线顺序和base向量一致。3.3 从标量角到触发时刻的参数换算不用MATLAB Function改由Pulse Generator逐个生成触发脉冲时需要把alpha角度换算成时间延迟。50Hz工频下一个完整周期是20毫秒折算下来每度电角度对应约55.56微秒。因此alpha60度时触发延迟为3.33毫秒。下表给出几个常见触发角的延迟值注意这里的参考点是各相晶闸管的基准电压过零时刻。触发角alpha(度)对应延迟(毫秒)A相上管触发时刻B相上管触发时刻00A相电压正半周起点滞后A相120度约6.67ms301.67过零后1.67ms8.33ms603.33过零后3.33ms10.00ms905.00过零后5.00ms11.67ms1206.67过零后6.67ms13.33ms如果用线电压过零点作为同步参考事情会多一步偏移修正。线电压uAB过零时刻比A相相电压过零提前30度电角度因此以uAB过零为参考时要在最终触发时刻上额外加上30度。很多人在这个细节上出错仿真波形看起来上下半周不对称实际上就是这个偏移没有处理对。Pulse Generator方案不支持运行中连续改变triggering角因为每个模块的Phase Delay一旦设置就固定了。需要连续扫描alpha的场合建议还是回到3.2的MATLAB Function方式把alpha作为外部信号输入这样在Simulink里用斜坡信号就可以扫出整个调压范围。4. 调参三板斧触发角、负载特性、SNUBBER与谐波4.1 电阻性负载触发角的有效值变化曲线电阻性负载下三相交流调压器的行为最容易理解。把负载设为纯有功功率感性无功为零然后让alpha从0度增加到150度每一步等电路进入稳态后测量三相输出电压有效值。理论上三相三线Y接电阻负载的调压范围大约从线电压全值一路降到接近零alpha150度时输出电压有效值已经很小了。Simulink里测量有效值有两种常用方式。一种是在Universal Bridge输出端口后面接RMS模块选择Fundamental频率50Hz输出就是电压有效值随时间变化的曲线稳态时读取该曲线平台段数值即可。另一种是直接导出Scope波形到工作区再用Matlab的rms函数离线计算。我习惯前一种因为可以在一次仿真里同步看波形和有效值省掉二次处理的麻烦。实际操作中要留意alpha0度与alpha180度的区别。alpha0度时晶闸管相当于二极管整流的全导通工况输出完整正弦电压alpha180度时触发时刻落在电压过零点处晶闸管随即承受反向电压无法导通输出为0。因此调压范围的有效边界是0到180度但为了波形对称性和避免触发抖动电阻负载建议只用0到150度留30度余量。触发角alpha(度)输出电压有效值(相对值)波形特征0约1.0完整正弦30约0.96出现轻微切角60约0.82明显缺相角90约0.62波形接近半波形状120约0.38导通区间窄150约0.10接近关断上表数值是三相三线纯阻性负载下的典型结果准确值跟实际负载阻值及电压等级没有关系只和触发角相关。仿真中看到数值与表中偏差超过5%时优先检查三相电压是否平衡、负载是否为纯阻性、以及脉冲宽度是否不足。4.2 阻感性负载的电流断续与触发角回退阻感性负载是工业现场最常见的工况电机、变压器都算这一类。加入感性无功后晶闸管电流过零点会滞后于电压过零点负载功率因数角用phi表示。当触发角alpha小于phi时电流波形保持连续调压器可以稳定工作当alpha超过phi后电流出现断续每周期里有一段电流为零的时间负载端电压波形也跟着发生畸变。Simulink里验证这个分界点很简单将三相RLC负载的感性无功QL调到有功功率的30%左右例如P10kW、QL3kvar此时功率因数角约17度。alpha设20度时电流波形每周期连续alpha设45度时电流波形每相可以看到明显的断流区间。把Scope的显示时间拉长到两个完整工频周期观察电流包络线会自动看到这个现象。阻感负载下alpha能调到的上限比电阻负载小得多。alpha过大时晶闸管关断前承受的di/dt和dv/dt都比较高模型里虽然不会烧管子但数值求解器容易在电流断续边界处触发步长骤减仿真速度会突然慢得离谱。出现这种情况时不是模型逻辑错误而是触发角超过了负载功率因数角的边界回调alpha后再仿真就恢复正常。这也是三相交流调压器用在电机负载上通常只做小范围降压启动、不做深度降压运行的原因。如果想要扩大alpha的调节范围可以在负载端并联一个阻性分流支路提高等效功率因数使电流过零时刻更接近电压过零时刻。这种做法在只做仿真验证时意义不大但对于理解调压器的负载适配范围有帮助。4.3 Powergui FFT与谐波分析参数设置三相交流调压器的输出谐波非常丰富低次谐波含量远高于PWM变流器。Simulink里做谐波分析的标准工具是Powergui模块中的FFT Analysis界面。打开Powergui后选择FFT Analysis工具在弹出的窗口里要指定分析信号和参数缺省设置往往不能直接给出有用的谐波柱状图。需要手动设置的参数有三个Start Time设0.06到0.08秒之间跳过启动暂态Number of Cycles设为5个工频周期对应0.1秒数据宽度频率分辨率20HzBase Frequency设为50Hz。Display Style选择List relative to Fundamental这样各次谐波以基波百分比形式输出Thd数值一目了然。alpha60度时FFT结果通常显示三次谐波约20%到30%五次谐波约10%到15%总谐波畸变率THD在30%到50%之间。随着alpha增大THD大体上升到alpha120度后总畸变率反而可能下降因为导通区太窄基波与被测的各次谐波同时变小相对比值不比中角度区大。这个现象是调压器固有的不代表谐波能量真的降低表达谐波污染水平时还要结合基波电压的绝对幅值一起分析。对于三相三线无中性线拓扑三次谐波在相电压中不会出现因为三相同相的零序分量没有N线构成回路。如果仿真波形FFT里150Hz分量依然很大几乎可以断定模型里接到了三相四线或者负载端的接法中隐含了中性点通路。这是检验模型接线是否正确的好方法。4.4 仿真步长和solver选择三相交流调压器模型包含晶闸管这种开关器件仿真求解器选择直接决定波形质量。连续模式求解器默认使用ode23tb对刚性系统适应性好但由于晶闸管导通与关断事件发生在步长内部触发点会被插值算法平滑处理波形的边缘看起来不尖锐。固定步长模式求解器例如ode3则在设定的时间网格上强制捕捉触发点波形缺角位置更接近理想物理过程。步长选择的依据不是仿真总时间而是触发角的精度要求。每度电角度对应55.56微秒如果要求alpha设置误差不超过0.5度最大步长就不能超过27.78微秒。综合考虑波形质量和仿真速度我通常把最大步长设为20微秒仿真时间0.2秒一次运行大概需要几秒到十几秒视计算机性能而定。同步触发信号生成方式与求解器配置也要匹配。3.2代码里用Clock乘2pi50生成相位wt在变步长求解器下wt的变化是一段段折线触发点落在步长内部时会有微小延迟。用固定步长之后触发时刻与步长网格严格对齐代码输出更稳定这是做参数扫描时推荐固定步长的根本原因。5. 落袋技巧用双脉冲时序与FFT谱线验证调压器真的“调”了压5.1 双脉冲信号的时间间隔测量仿真模型搭建完成后先不要急着看输出电压第一步验证门极信号是否正确。把Scope接到MATLAB Function输出的某一路信号上例如A相上管gates(1)把时间轴放大到20到40毫秒之间。正常情况下可以看到两个相距3.33毫秒的窄脉冲第一个出现在alpha对应的时刻第二个出现在alpha60度对应的时刻例如alpha30度时主脉冲在1.67毫秒处补脉冲在5.00毫秒处。测量主脉冲与补脉冲的时间差可以用来核对alpha的换算是否正确。双脉冲间隔60度理论时间间隔为60除以360再乘以20毫秒即3.33毫秒。如果测量结果与理论值偏离超过一个步长例如固定步长20微秒时偏差大于60微秒多半是wt的生成频率不是50Hz检查Clock模块后接的增益是否为2pi50而不是314.159差别虽然小但累积几毫秒就会可见。同时检查同一相上下两只管子的脉冲间隔。A相上管与A相下管的触发基准相差180度对应时间间隔10毫秒。观察Scope里两个脉冲序列如果二者间隔不是10毫秒而是9.x或10.x毫秒说明base向量中的相位配置有错位通常是下管基准多加了30度或者上管基准少减了30度。5.2 三线拓扑三次谐波的谱线特征双脉冲时序正确之后下一步跑一次完整的0.2秒仿真打开Powergui的FFT分析窗口选取0.1秒到0.15秒的波形数据alpha以60度为例。理想的三相三线电阻负载结果中50Hz基波谱线最高100Hz分量应该几乎为零150Hz分量也就是三次谐波在理想情况下为零实际数值通常在0.1%到1%之间浮动属于数值噪声不影响结论。如果150Hz分量超过5%第一反查模型中性线接线可能是三相三线电源仍然给负载或晶闸管模块提供了中性点通路。另一种可能是三相电压不平衡导致的非特征谐波Simulink的Three-Phase Source默认输出理想三相对称电压因此不平衡的可能性极小除非手动修改了电源模块的单相参数。FFT窗口里五至十一次谐波在alpha60度时呈现典型的调压器分布五、七、十一依次递减到十三次以后基本衰减到1%以下。如果高次谐波直到三十次以上还保持明显幅值说明波形边缘太陡可能与晶闸管模块的缓冲电路参数有关增大缓冲电阻到100千欧级别可以平滑这种边缘尖峰再观察谱线是否收敛。5.3 从仿真模型到实验台架的参数迁移仿真跑通以后要把控制逻辑移植到单片机或FPGA时有三条参数需要保留。第一是同步基准的偏移角仿真代码里base向量的六路相位偏移如果带30度修正对应硬件方案中的电压采集和过零检测就必须保留同样的移相补偿否则实际触发角与目标alpha偏差30度。第二是脉冲宽度双脉冲的窄脉冲宽度在硬件里至少要覆盖晶闸管开通建立时间常见的应用选15到30度电角度仿真中的20度有参考意义最终需要根据实际器件门极最小触发宽度调整。第三是alpha限幅阻感负载下alpha上限按负载功率因数角限制在30到60度之间仿真中超过边界只会波形畸变硬件中则可能因为电流断续产生转矩脉动或谐振保护逻辑里要额外加一道限幅。调压器模型要做参数扫描时可以用Simulink的Signal Editor模块把alpha做成随时间变化的斜坡信号从0度线性升到150度再降回0度一次仿真就能观察到电压有效值的滞回式变化路径。扫描结果里alpha上升与下降过程中相同角度对应的有效值略有差异这是晶闸管电流断续期间存储的能量释放导致的自然滞后将它用于后续的闭环控制参数整定会让算法更贴近实际物理过程。本文还有配套的精品资源点击获取