先说个结论:如果你是想做电力系统稳定分析、保护整定、广域控制算法验证,或者单纯想搞明白“多机系统动态特性是什么样”,那基于10机39节点的Matlab/Simulink仿真几乎是绕不开的一步。这个模型在学术论文和工程预研里出场率极高,因为它的规模不大不小:比单机无穷大丰富太多,又比几百节点的大电网可控得多。我前前后后用这个模型做过机电暂态、低频振荡抑制、PSS参数整定,也踩过不少坑,这篇就把整个从建模到出结果的流程和一些关键细节捋一遍。
1. 10机39节点是个什么系统
很多人第一次接触39节点,第一反应是:“这到底对应现实里哪个电网?”实际上它叫New England系统,最早是上世纪六七十年代美国新英格兰地区电网的简化等值模型,后来被Pai的经典教材《Energy Function Analysis for Power System Stability》收录并推广。虽然它不完全等于任何一座真实电网,但它的拓扑结构和参数设计完全按照真实电力系统的典型特征来的,所以学界和工业界都把它当作标准测试系统用。
IEEE 39节点系统的核心配置是:
- 39条母线(节点),编号1到39
- 10台发电机,其中Bus 39上的G1是平衡机(slack bus),其余G2到G10是PV节点
- 46条交流线路和变压器支路
- 系统基准电压为345kV(高压输电网部分),基准容量常取100 MVA
- 负载集中在多个节点,总量大约是6000 MW级别
这个系统的典型应用场景包括:
- 机电暂态仿真,比如三相短路、线路跳闸后发电机功角的摆动过程
- 低频振荡分析,观察系统在扰动后是否存在0.1~2Hz的功率振荡
- 电力系统稳定器(PSS)和自动发电控制(AGC)的效果验证
- 广域阻尼控制、同步相量测量单元(PMU)布点等需要系统级动态响应的研究
我在具体项目里最常用的组合:用39节点系统做故障仿真,提取各发电机相对功角和母线频率,然后在上面验证PSS参数或阻尼控制器。这套流程如果我手上有现成的Simulink模型,通常从搭建到跑通结果大概一个下午的时间,但如果是第一次从零开始,可能要搭两三天——所以这篇文我也会重点说哪里容易卡壳。
1.1 为什么选39节点而不是9节点或118节点
IEEE还有3机9节点和16机68节点等经典系统,为什么偏偏39节点“出镜率”最高?这其实是几个条件凑到了一起。
先看3机9节点,它最大的优点是简单,适合教学,但动态模式太少,只有两三台机组的功角摆开关系,做单机无穷大研究还够用,一旦你要验证多机系统里的区间振荡、PSS协调设计,9节点的自由度就不够了。
再看不那么经典的16机68节点,它确实更接近真实电网的复杂程度,能支撑的区域间振荡模态也更丰富,但数据准备和模型调试成本明显高一个档次,网架拓扑复杂、参数多、仿真容易发散,不适合作为“快速验证”的底座。
119节点(或者说118节点)也有类似情况:潮流数据相对好找,但它主要面向稳态分析和经济调度,动态仿真需要为每一台发电机组配齐励磁、调速、PSS模型,工作量非常大,一般不作为动态稳定研究的首选。
39节点刚好处于一个甜点位:
- 10台机足够支撑多种振荡模态,既有本地模态(local mode,1~2Hz),也有区域间模态(inter-area mode,0.1~0.8Hz)
- 39条母线的规模,在Simulink里搭模型不会卡到跑不动,也不至于看不过来
- 标准参数公开,MATPOWER、Power System Toolbox(PST)等工具都内置,省去自己核对参数的麻烦
所以如果你写论文要用一个“规模适中的多机系统”,审稿人看到IEEE 39节点基本不会质疑,这是“通用实验平台”的天然优势。
1.2 39节点系统适合研究什么,不适合研究什么
适合的方向,我理解有这么几类:
- 第一类是稳定性研究。包括暂态稳定,也就是大扰动(短路、切机、切负荷)后系统能不能回到稳定状态,这个用功角曲线就能判断;还有小信号稳定,即扰动很小,关注系统自然振荡模态的阻尼情况,通常通过线性化特征值和时域仿真配合分析。
- 第二类是控制策略验证。比如PSS参数优化、广域阻尼控制(WADC)、HVDC/STATCOM附加阻尼控制等,这类研究需要一个能代表“多机系统动态特性”的仿真平台,39节点正好满足。
- 第三类是保护和测量算法。比如行波测距、故障选线、PMU配置优化的算法,需要一套结构清晰的电网模型做验证。
但不适合用它做的问题也很明显:因为它是等值模型,对网络中具体线路的精细电磁暂态过程精度有限,所以像变电站内部过电压、变压器绕组波过程这类电磁暂态问题,更应该用PSCAD/EMTP而不是39节点模型来仿真。另外,它不包含配电网、新能源逆变器的大规模接入,如果你研究微电网控制或配网潮流,39节点也帮不上忙。
说白了,39节点系统是“研究发电机主导的输电网动态”的好平台,你用它是研究系统级行为,不是研究元件级细节。
2. 仿真平台与建模方案
我在Matlab/Simulink环境里做39节点仿真,工具箱的核心是Simscape Electrical(老版本叫SimPowerSystems,再往前叫Power System Blockset)。这个工具箱提供了同步发电机、励磁系统、调速器、变压器、传输线、三相故障等模块,不需要自己推微分方程再封装S函数,效率高不少。
版本上提一句:R2010s时代这套工具箱叫SimPowerSystems,R2015b以后叫Simscape Power Systems,R2020以后再叫Simscape Electrical。查资料的时候如果看到不同的名字,别觉得是另一个软件,只是换壳。
如果你的重点是控制策略,不想纠结元件细节,还有一个选择是Power System Toolbox(PST),它是命令行工具箱,没有Simulink图形界面,但胜在数据文件齐全、运行速度快,很多论文里的曲线其实是用它跑出来的。我个人经验是:初学和验证算法用PST更顺,但如果要展示信号流模型、把控制结构画出来,或者和别的Simulink控制器做联合仿真,还是Simulink更直观。
2.1 发电机和励磁系统建模
39节点系统里发电机参数标准值在网上有很多版本,千万别随便下载一个就用,因为不同来源的参数基准值可能不一样。建议从MATPOWER自带的case39.m里取潮流计算需要的数据(母线、线路、负荷),从Pai的书或者PST的data文件里取动态仿真参数(xd、xq、x'd、x'q、T'do、H等)。
发电机模块我用的是Simscape Electrical里自带的“同步发电机(标准)”模块,参数单位是SI还是pu要注意:
- Simulink里同步电机模块的标幺值,基准容量默认是各自电机的额定值,如果是多机系统,要做换算
- 39节点系统统一基准是100 MVA,但每台发电机额定容量不同,需要把每台电机的H(惯性常数)、电抗等参数归算到各自额定容量下,还是统一基准下,要看模块的基准设置
这里最容易出错。很多新手直接把Pai书里表格的H值填到模块里,结果潮流量纲对不上,初始化就崩。我的处理办法是:
- 先用MATPOWER的case39数据跑一次潮流,得到各母线电压、相角和各发电机有功无功出力
- 再用这些电压电流作为初始条件,去设置Simulink里发电机的“Terminal voltage”“Active power”等初始值
- 仿真前点powergui的“Load Flow”工具,让它重新做负载流初始化
励磁系统我常用IEEE DC1A或AC1A。39节点标准数据里没有标配励磁系统,有的版本用简易一阶励磁,有的用完整IEEE励磁。做暂态稳定时励磁系统影响非常大,因为你指望故障后机端电压能快速恢复,而这完全由励磁系统决定。
在Simulink里,你可以用现成的“Excitation System”模块,参数包括:
- 低增益励磁:Ka通常在20~200之间
- 时间常数Ta通常在0.02~0.2秒
- 调压器上下限,比如Vr_max/min限制励磁电压
如果只是做最简单的暂态仿真,可以在发电机端用“恒定励磁电压”代替——也就是说发电机模型里只用Efd固定值,不做电压反馈。但这样的话,暂态过程会偏保守(因为机端电压无法恢复),而且PSS研究根本做不了,因为PSS励磁系统是作用在参考电压上的。所以我建议至少保留一个一阶励磁。
调速器同样重要,但做10秒以内短暂态时,原动机机械功率变化不大,可以用简单的“机械功率恒定”先跑通。一旦你要做低频振荡或AGC,那汽轮机调速器模型就必须加进来了,否则频率恢复过程出不来。常用的调速模型有GAST、TGOV1,Simulink里都有现成模块。
2.2 线路、变压器和负荷模型
39节点系统高压输电网电压等级是345kV,线路一般用PI型等值电路,忽略分布参数特性。在Simulink里可以用“PI Section Line”模块,每一段给正序电阻、正序电感、正序电容。39节点数据里已经给了每条线路的R、X、B的标幺值,注意换算时基准阻抗是345kV^2 / 100MVA。
变压器建模更简单,用两绕组三相变压器模块,设置变比、接线组别(通常D1Y或YND11)和漏抗。39节点系统里变压器支路不多,但要特别注意Bus 12到Bus 11的变压器,以及G10所在的Bus 30等连接发电机升压变的支路,它们的电抗值对动态结果影响很大。
负荷模型是另一个大坑。39节点系统的负荷,经典的Pai版本默认是恒定阻抗负荷。有的Simulink教程会把每个负荷直接用RLC串联阻抗模块代替,这没问题,因为你把负荷的有功和无功功率P_load、Q_load按额定电压和基准阻抗折算成R和L/C,就等于恒定阻抗负荷。
但注意:恒定阻抗负荷和恒功率负荷(ZIP模型里不同比例)在暂态过程中表现差别很大。恒功率负荷在电压降低时仍维持功率,会加重系统失稳压力;恒定阻抗负荷的功率随电压平方变化,相当于给系统增加阻尼,结果会偏乐观。所以做稳定研究前想清楚你的负荷模型选了哪种,最好在论文里说清楚。
我个人经验,先用恒定阻抗模型跑通,后面要更贴近实际,再把部分负荷改成ZIP模型,即30%恒阻抗+40%恒电流+30%恒功率之类。Simulink里可以用一个受控电流源加一个闭环功率控制来近似恒功率负荷,或者用Three-Phase Dynamic Load模块直接设ZIP比例。
2.3 powergui的模式选择
这是仿真实操前必须想清楚的一个问题:powergui(SimPowerSystems/Simscape Electrical里最核心的交互环境)有三种仿真模式:
- Continuous:连续时间仿真,精度最高,能观察瞬时电压电流波形,但仿真速度很慢。对39节点系统,如果故障全过程需要看10秒动态,Continuous模式可能要跑很久,尤其是步长受开关件影响很小时。
- Discrete:离散采样仿真,适合有PWM电力电子器件的情况,需要指定采样时间Ts。对于纯交流电网的暂态稳定研究,其实不太需要离散模式。
- Phasor(相量):是相量模式,忽略瞬时电压波形,只考虑50Hz工频的幅值和相角,使用相量法求解。仿真速度快,特别适合机电暂态、低频振荡研究,跑10秒动态基本是实时到几十倍速。
所以做39节点机电暂态,我建议直接选Phasor模式。它看不到三相电压瞬时波形,但能看到功角、频率、有功功率、母线电压幅值的动态变化——这些正是暂态稳定分析要的指标。
另外powergui的“Load Flow”工具负责初始化,它会从你设定的发电机功率、电压初始值出发,解网络潮流,把电容/电感初始条件设置好。没有这步,Simulink直接仿真通常会在前几个毫秒产生很大的非真实暂态振荡,甚至直接发散。
3. 实操全流程:从数据准备到故障仿真
这一节我按一个完整的可复现流程来写,适合照着做。
3.1 数据准备与参数整理
第一步去拿标准数据。常用来源:
- MATPOWER的case39.m(潮流数据:母线、线路、发电机出力,以及负荷)
- Power System Toolbox(PST)里的data文件(动态参数:发电机d/q轴电抗、时间常数、励磁参数等)
- Pai教材《Energy Function Analysis for Power System Stability》附录
拿到数据后,第一件事不是建模,而是核对基准值。MATPOWER的case39.m通常已经指明系统基准是100 MVA,线路参数是标幺值。而PST的动态参数文件里发电机的H等参数,很多是在各自额定容量下的标幺值。你需要把每台电机额定容量S_n换算成H(对应于系统基准100MVA),公式是:
H_sys = H_n × (S_n / S_sys)
同理,电抗的换算公式是依赖定义基准的。用Simscape Electrical的同步电机模块时,它内部允许你填“额定参数”和“初始条件”,你主要保证功率基值对得上即可。如果对不上,最典型的症状就是Load Flow计算出来的稳态结果和MATPOWER结果差很多。
整理参数时建议做一个Excel表,列每个发电机节点的以下字段:母线编号、额定有功出力、额定无功出力或机端电压、H(换算后)、d轴暂态电抗x'd、q轴暂态电抗x'q、d轴同步电抗xd、q轴同步电抗xq、d轴开路暂态时间常数T'do、q轴开路暂态时间常数T'qo等。这个表后面整定PSS、做模态分析都要反复用到。
3.2 Simulink模型搭建步骤
以Simulink为例,搭模型的大致步骤如下:
- 新建Simulink模型,拖入powergui模块,模式选Phasor(或Continuous,视需要)。
- 从Simscape Electrical库中拖入39条母线对应的三相节点模块(Three-Phase Connection,或者直接用线路/负载连接的节点拓扑)。
- 按case39.m里支路数据,添加输电线路模块(PI Section Line)和变压器模块。每条线路输入R、X、B参数,均按100 MVA、345kV基准的标幺值,但Simscape里填的是实际工程值还是pu值,要看模块设置——一般选择“pu”并在参数里指定基准容量和电压,那样最省事。
- 添加负荷模块。建议用Three-Phase RLC Load,填入基准电压345kV、三相有功/无功。
- 添加同步发电机模块,共10台。每台发电机要设置额定容量、额定电压、电抗参数、初始状态(初始电压幅值和相角、初始有功无功),这些初始值先用MATPOWER跑出来的结果填入。
- 添加励磁系统。可以用Simscape Electrical自带的IEEE型励磁,或者用Control库里的传递函数搭一个一阶励磁:Efd = Ka(Vref - Vt) / (1 + Ta s),限幅0~5 pu左右。
- 将发电机的输出三相电压电流通过“Voltage Measurement”“Current Measurement”接到励磁系统反馈,再输出触发脉冲(如果不需要,则把Efd固定)。
- 添加故障模块。用Three-Phase Fault模块,可以设置故障类型(三相短路、单相接地、两相短路等)、故障起始时间、故障持续时间、接地电阻。
- 添加测量和示波器。重点测:每台发电机的转速偏差dw(rad/s)、功角delta(最好是相对于系统同步参考,或相对G1)、母线电压、线路有功功率。
有两点提醒:
- 搭建时建议先搭一条“单机无穷大”的简化电路练手,确认模块用法没搞错,再扩建39节点。
- 39节点模型的连线非常多,合理使用Bus Breaker或子系统封装,否则后期排查故障基本想死。
3.3 潮流初始化与仿真参数设置
模型搭完后,双击powergui,点Load Flow,进入潮流界面。
Load Flow工具需要你指定每个发电机的电压幅值(pu)和有功出力,以及平衡机的电压幅值和相角。把MATPOWER跑出来的潮流结果填进去,然后点击“Compute”和“Apply”,powergui会把所有节点电压、电流初始条件写入Simulink模型。
如果Compute不出来,先检查三件事:
- 线路参数基准对不对
- 负荷功率正负号是否弄反(负荷通常取正值,电源输出也为正值,注意Simscape里功率方向的定义)
- 发电机初始电压大小是否合理
潮流解出后,设置仿真Parameters:
- 求解器:Phasor模式用ode23tb或ode15s;Continuous模式用ode23tb
- 仿真时间:暂态稳定建议5~20秒,根据研究需要
- 最大步长:Phasor模式下默认1e-2秒够用,如果低频振荡频率在0.5Hz,奈奎斯特要求步长至少0.1秒,但为了精度建议0.01秒以内
- 容差:默认即可,若太严格会导致Phasor模式极慢
在第一次跑仿真之前,可以先做一个“无扰动仿真”,比如只跑0~1秒,看母线电压、发电机功角是否保持恒定。如果曲线平稳,说明初始化成功。这项验证非常关键,很多模型初始化不干净,一跑就抽风,你根本分不清是模型错了还是扰动带来的响应。
3.4 添加故障与扰动场景
故障仿真的经典设置,我一般做以下几类:
- 三相短路(3LG):最常见的大扰动,在某个关键母线处设置三相短路故障,持续0.1秒后切除(通过断路器跳开线路或故障自动消失)。观察各发电机功角是否同步摆开,系统是否保持稳定。
- 单相接地(1LG):线路对地单相故障,影响相对小,主要用于保护类研究。
- 线路跳闸/切机:在某一时刻跳开一条关键输电线,或切除一台发电机,观察系统潮流转移和频率变化。
- 负荷阶跃:在某节点增加或减少一定负荷功率(比如300MW),观察频率和联络线功率的过渡过程,很适合AGC研究。
故障模块的参数设置里,注意“Transition Times”表示故障出现和消失的时刻,单位秒;“Fault Resistance”越小表示故障越严重,三相短路设0.001Ω即可;“Ground Fault Resistance”代表对地电阻,三相接地短路通常设0.001Ω,两相短路不接地时该项可以忽略。
我实际用下来发现,一个比较容易忽略的点是:故障清除时间(fault clearing time)通常不是和故障起始时间相同,而是故障在0.5s出现、0.6s清除,那么Three-Phase Fault的Transition Times可以写[0.5 0.6],但这时故障点仍连接在线上;如果要模拟断路器真正跳开(把故障线路断开),需要使用Three-Phase Breaker模块,分别在0.5s断开故障相、0.6s重合闸等。
如果你只想看故障清除后系统是否稳定,最简单的做法是Three-Phase Fault的故障窗口[0.5 0.6],但故障点阻抗不变——这种效果近似于“无限大母线短路后短路点被切除”,实际工程中更精确的做法是加Breaker跳线路。两种做法结果会略不同,文章里要交代清楚。
4. 结果分析与调参
跑完仿真,仿真曲线是一堆Scope波形,怎么从里面读出有用信息,并且反过来指导参数整定,这是仿真的核心能力。我一般按以下思路分析。
4.1 转子功角曲线怎么看
把10台发电机的功角画在同一张图里,横轴时间,纵轴功角差(deg)。这个图是暂态稳定分析的“晴雨表”。判稳的核心标准:
- 如果所有发电机功角差收敛到一个稳定值(不一定是0,因为故障后系统结构变化了),说明系统是暂态稳定的
- 如果某一台或几台发电机相对参考机的功角差持续增大,180度、360度甚至跳变,说明系统失去同步,失稳了
39节点系统通常故障后如果清除时间合适,各发电机转子会摆开几次,然后逐渐衰减回到稳定值,表现为衰减的振荡曲线。振荡频率如果在0.3~1.5Hz附近,对应的是区域间或本地振荡模态。
这里有个容易眼花的点:Simulink里同步电机模块直接输出的“Rotor angle”或“delta”可能是相对内部坐标系的角度,不是绝对功角。如果多台发电机模型之间没有设置公共参考,功角差会飘。所以强烈建议用各发电机机械转速积分出来的功角,或者直接用各发电机内部电位E'的相对相位差(用Phasor测量,提取正序电压相位)。我一般用功率测量模块里的“相位”输出,得到的是发电机出口电压正序相角,再对时间做差分得到相对功角趋势。
不要只看功角,还要看转速偏差dw。如果功角曲线看着稳定,但dw有缓慢增长的直流分量,这说明频率没回到同步,系统实际上还是在漂移,只是漂得慢。这种情况通常出现在负荷和发电机有功不平衡的故障场景里,比如切机后系统有功出力不足,频率会下降到一个新的平衡点,这不能叫稳定,只能叫“新的运行点”,需要调速器参与才能恢复频率。
4.2 低频振荡模态与PSS效果验证
39节点系统非常适合研究低频振荡。做法是:对系统加一个小扰动(比如0.1s内负荷阶跃100MW),记录各发电机间相对功角或线路有功功率曲线,然后做Prony分析或FFT,提取主导振荡频率和阻尼比。
Simulink里可以直接用“Power System Stabilizer”模块(或者自己搭一个传递函数),它输入发电机的转速偏差或功率偏差,输出一个附加信号到励磁系统的Vref端,从而增加系统对低频振荡的阻尼。
PSS的经典结构包括三段:
- 增益Kstab(通常0.1~50,需要整定)
- 隔直环节(washout),时间常数Tw通常1~10s,用来滤除稳态直流分量
- 超前滞后补偿环节(1+T1s)/(1+T2s),通常2~3级,目的是补偿励磁系统在振荡频率附近的相位滞后
我自己整定PSS的经验频率响应法:
- 先不加PSS,建立一个线性化模型(在Simulink里可以用“Linear Analysis”工具箱,或者在MATLAB里基于模型状态空间做线性化)
- 在振荡频率(比如1.2Hz)处,求取励磁系统闭环的相位滞后
- 设计PSS的超前滞后环节,使其在目标频率处提供大小相等方向相反的相位超前
- 从小到大调Kstab,观察时域仿真的阻尼是否改善,目标阻尼比大于5%~10%
实际操作中,不是所有发电机都要加PSS。39节点里通常选对区间振荡模式参与度高的几台机(比如G2~G6)加PSS,这种选点可以通过特征值分析里的参与因子来判断。网上也有很多人直接用“全部加同样PSS参数”,但那在真实工程里不推荐,可能引发负阻尼反作用。
4.3 参数调整的三个原则
经验多了以后,我发现调参不需要玄学,核心原则就三个:
- 原则一:先稳态,后动态。任何参数调整都必须保证潮流收敛、初始电压在0.95~1.05pu范围内。如果稳态都偏了,动态曲线全是假的。
- 原则二:先看趋势,后调细节。模型跑出来明显发散时,先检查是不是故障清除时间太长、励磁限幅值设置太小,而不是急着调PSS增益。
- 原则三:一次只改一个变量。做PSS调试时,固定励磁参数,单独调Kstab;做励磁调试时,固定PSS。同时改两三个参数,曲线变好了你都不知道是哪个起的作用。
另外仿真步长如果发生数值发散,表现为功角曲线出现锯齿状高频毛刺,不是物理现象,而是数值问题。这时先减小最大步长,或改用ode15s并提高容差,再判断曲线是否“平滑化”。
5. 常见问题与排查技巧实录
这部分我按自己的踩坑经验,整理一个“症状-原因-解决方案”的速查表,基本上我遇到过的、以及很多读者问过的问题,都分布在下面这些类别里。
| 症状 | 常见原因 | 解决方案 |
|---|---|---|
| Load Flow计算不收敛 | 线路R/X参数基准错误、负荷功率方向错误、发电机出力初值不合理 | 核对基准容量和电压,用MATPOWER标准case39数据校验 |
| 仿真开始1ms内电压剧烈震荡 | 初始化没成功,初始状态和网络不一致 | 重新计算Load Flow并Apply,确认各发电机初始条件填入 |
| 功角曲线高频锯齿状 | 数值步长太大或求解器刚性不足 | 减小最大步长,或从ode23tb换到ode15s |
| 某一台发电机功角持续增大 | 故障清除时间过长或该机阻尼弱 | 缩短故障切除时间;给该机加PSS |
| 母线电压在故障后一直不恢复 | 励磁系统限幅过低或励磁时间常数过大 | 增大Vr_max、减小Ta,检查励磁参考电压 |
| 频率跌落不回升但功角稳定 | 缺少调速器模型,或系统有功不平衡 | 添加TGOV1调速器,调节原动机输出 |
| 用Continuous模式跑10秒仿真极慢 | 开关器件和步长太细 | 改用Phasor模式 |
| 两条线路并联但结果和单线差不多 | 线路模块参数填错或并联支路没连接好 | 检查母线节点连接,测量各支路功率流 |
5.1 故障清除时间与稳定域的关系
用这个模型做暂态稳定研究时,有个经典实验你一定试过:固定故障位置,不断加长故障持续时间,从0.05s、0.1s、0.15s慢慢往上加,观察哪一刻系统从稳定变成失稳。那个临界时间就是临界清除时间(Critical Clearing Time, CCT)。
CCT的值是衡量系统稳定裕度的直接指标,很多论文用它作为控制策略有效性的评价标准。39节点系统在经典参数下,某条关键线路三相短路的CCT通常在0.1~0.3s附近。不同线路不一样,越靠近大电源送出通道的线路CCT越小。你可以用二分法快速逼近CCT:先测0.2s稳定、0.4s失稳,再测0.3s,再测0.25s……一般五六次就能锁定小数点后两位。
还有一个细节:CCT往往对故障后网络拓扑特别敏感,比如一个线路故障后如果紧接着跳开线路变成“线路开断后”的拓扑,那么稳定裕度通常是下降的。所以做CCT扫描时要说明是“故障后不跳线”还是“故障后跳线”两种情况,这直接影响你看到的CCT值。
5.2 仿真数据后处理
Simulink跑出来的Scope数据,如果想输出成图,可以用To Workspace模块把数据导入MATLAB工作区。常用的后处理包括:
- 绘制功角相对曲线,用相对G1的差值或相对所有机组加权平均的角度
- 用FFT分析线路功率振荡频谱,找出主导振荡频率
- 用Prony工具(MATLAB里有prony函数,或自编)拟合振荡信号,提取频率和阻尼比
- 计算CCT时候,写个for循环自动增大故障持续时间并判断是否稳定,减少手工试错
有一点提醒,数据采样时间如果太小,FFT的谱会很好但数据文件会大;如果太大,快速振荡分量可能被混叠。Phasor模式下用0.001s步长保存数据基本够用,分析低频振荡完全足够。
5.3 用MATPOWER做数据校验
很多人容易小看MATPOWER,但它对付39节点数据非常有效。case39.m是官方维护的,如果Simulink模型潮流的计算结果和MATPOWER不一致,那大概率是你在Simulink某条线路或某个负荷参数填错了。
我自己的检查路径是:
- 先用MATPOWER跑case39.m,保存bus、branch、gen结果
- 在Simulink模型中,把每条线路和每个负荷的有功/无功功率用功率测量模块测出来
- 对比关键节点电压幅值,误差在1%以内算正常
- 对比发电机出力,重点看平衡机G1的有功出力是否和其他发电机匹配
如果差很多,就去查基准容量和标幺值。99%的“模型跑不出来”问题,根源是基准值搞混:额定容量、系统基准容量、电压等级,这三个东西必须同时统一。
6. 写到最后的一点补充
39节点模型的Simulink搭建,本质上是个“体力活+细心活”。很多时候不是你不会,而是某个参数填的时候少看了一个零,或者G3和G4的出力填反了,导致整个仿真全盘皆错。我自己的习惯是:搭好模型之后,先花半小时做无扰动仿真校验,再花10分钟做一次已知结果的简单故障复现,确保“基线正确”,然后才放心拿它跑研究工况。
这个模型后续可以扩展的方向也很多。比如你可以在39节点上接入风电场模型,研究高渗透率新能源对系统惯量和阻尼的影响;也可以加装STATCOM或SVC,做动态无功补偿策略验证;甚至可以在某几条线路上装PMU,做广域测量数据驱动的振荡辨识算法测试。底座搭好,上面能做的研究非常多。
我强烈建议手里保留一份已经初始化好的Simulink模型,同时保留一份数据整理表格。这样后面无论做论文还是做工程预研,基本不用再从头搭,进度能快很多。项目文件可以按“case39_base”、“case39_fault”、“case39_pss”分开保存,每次进新工况就另存一份,别在同一个文件里反复改,免得改到后面自己都不知道哪个版本是稳定的。
39节点这套东西,看起来只是无数IEEE测试系统之一,但对于想认真做电力系统动态分析的人来说,它真的是一块很好的试验田。希望这篇能帮你少踩几个坑,早日跑出第一条好看的功角曲线。