1. 39节点为何是“万金油”测试系统:先把它摆回坐标里
搞电力系统仿真的,手里没跑过一两个标准测试系统,就跟学自动化的没调过PID一样,总觉得少点底气。市面上常见的测试系统从IEEE 4节点、9节点到39节点、118节点、300节点一级级往上走,每一档都在不同尺度的研究里找到了自己的位置。而10机39节点这套系统,在Matlab/Simulink仿真这个圈子里被点名的频率相当高,一篇论文里如果没有特别说明,审稿人默认你跑过它、复现过它,讨论动态稳定问题的时候才会觉得你的验证有一定可信度。
39节点系统最初来自新英格兰电网的简化等值模型,后来被收录进IEEE标准测试系统库,在Pai那本经典的《Energy Function Analysis for Power System Stability》里有一套常用参数。它包含39条母线、10台发电机、约40多条交流支路,其中含多台变压器支路,母线负荷也覆盖了从几十兆瓦到接近千兆瓦的跨度。和只有9条母线的三机系统相比,它的网络骨架更接近真实区域电网,失稳模式不再是一眼能看穿的“局部问题”,故障在某一条输电线路上发生之后,影响会通过多条通道传到远处机组,这正是互联电网动态行为里最有意思、也最容易出问题的地方。
1.1 它和“单机无穷大系统”的差别到底在哪里
很多人在学暂态稳定时,第一个模型是单机无穷大系统——一台发电机经双回线接到一个无穷大母线,然后看切除故障后转子角能不能稳定回来。这个模型的好处是概念干净,课堂上可以用解析公式推导等面积法则,但它把“多机之间的相互摇摆”这个最核心的现象给砍掉了。真实系统里并没有哪个母线是刚性无穷大的,一台机加速,其他机会因为联络线功率变化而跟着减速或加速,机群之间会出现相对摆动,甚至撕裂成不同步的机群。39节点系统让你第一次感受到这种“群体动力学”:切除一条故障线路后,有的机相对参考机摆开80度,有的摆开120度,到底谁先失稳、为什么是它先失稳,这些问题只有在足够复杂的拓扑上才有意义。
另外,39节点的规模也刚好卡在一个舒服的区间。如果你直接上118节点或300节点,建模、数据整理、故障扫描、结果分析的时间会翻好几倍,很难在课题周期内把每一条支路动态都盯清楚;而39节点既能让你看到区域间振荡的影子,又不至于被海量数据淹没,所以很多关于广域控制、动态稳定、低频振荡抑制的研究都喜欢拿它当示范算例。它也经常和“电力系统仿真课程设计”“研究生入学后第一个复现任务”“科研论文验证算例”这几个场景绑定在一起,可以说这条路几乎谁都绕不过去。
1.2 它适合解决什么问题,又不适合解决什么问题
从我的经验看,39节点系统适合这几类工作:一是暂态稳定分析,比如不同故障地点、不同切除时间下的临界切除时间搜索;二是小信号稳定分析,通过线性化模型找出低频振荡模式;三是控制策略验证,比如PSS参数优化、广域阻尼控制器设计、储能和调相机接入后的稳定性改善;四是保护与故障分析层面的简化研究,虽然它不像配电网模型那样精细化,但作为高压输电网典型结构,做对称和不对称故障的场景推演是非常合适的。
它并不适合用来做微电网、主动配电网相关研究,因为39节点系统是纯输电网视角,网络中不含逆变器型电源、配电网负荷特性也不典型。同样,涉及线路行波、电磁暂态过电压、高频暂态分析时,这个系统的低频动态参数也不够精细,强行扩展会让工作量大增但说服力不足。所以你在决定用这套系统前,先问自己一句:我的课题里,是不是真的有“多机区域电网”这个层级的需求?如果只是验证励磁控制算法,9节点或39节点都可以;如果是研究广域测量和区域振荡,那39节点几乎是起步配置。搞清楚这个问题,后面的工作才有方向。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备反而比拖动Simulink模块更花时间:先把潮流算例和参数文件做扎实
很多初学者拿到项目后,第一反应是打开Simulink,从元件库往模型编辑器里拖同步电机、变压器、输电线路。这个热情是好的,但我见过太多人拖到一半发现:“我这台发电机的初始功率应该填多少?初始功角是多少?线路另一端的母线电压相角是多少?”全部答不上来。在Simulink里直接搭网络,要求你把每一个动态元件的初始状态都填准确,而这些初始状态不是拍脑袋定的,它们来自于系统在某个稳态工作点下的潮流解。
2.1 先用MATPOWER之类工具把静态工作点算出来
做动态仿真前先算静态潮流,这不是多此一举,而是保证模型不自洽的关键一步。最简单的办法是直接用MATPOWER,它自带case39算例。安装好MATPOWER后,将路径设置好,在命令窗口执行:
matlab复制mpc = loadcase('case39');
res = runpf(mpc, mpoption('verbose', 2));
跑完以后,res.bus里能看到每条母线的电压幅值、相角、有功和无功负荷;res.gen里能看到每台发电机当前的有功出力、机端电压设定值和无功出力;res.branch里是每条支路的有功无功流向。拿到这套静态解,你就掌握了整个系统的“初始照片”。
有了潮流结果之后,不要急着往下走,先做三个检查。第一,看平衡机(松弛母线)的有功出力是否在合理范围。如果平衡机出力巨大,说明系统中其他发电机的出力设置可能和负荷不匹配,这套工作点不太健康。第二,看有没有发电机无功出力越限。39节点系统里个别机组的无功会逼近上限,如果越限,潮流结果会给出警告,你需要参照其他文献对出力计划做调整。第三,记录系统总有功负荷和无功负荷量级,后面在Simulink里设置负荷模块时,很多资料用标幺值,你要统一基准值才能对上数。
2.2 手头要建立哪些参数文件,结构怎么设计
Simulink模型里的数据,不要全部散落在模块参数窗口中,那样不好检查,也难以复现。建议把所有参数沉淀成一套结构清晰的数据文件,可以用Matlab脚本里的结构体,也可以用Excel维护后统一读入。从39节点常用数据里提取信息,至少需要覆盖以下三张表。
| 表 | 关键字段 | 用途 |
|---|---|---|
| 母线表 | 母线编号、基准电压、电压幅值初值、相角初值、有功负荷、无功负荷 | 设置母线测量与负荷模块 |
| 发电机表 | 所在母线、有功出力、机端电压、无功上下限、暂态电抗、惯性时间常数 | 设置同步电机模块与潮流初值 |
| 支路表 | 首端母线、末端母线、电阻、电抗、对地电纳、变压器变比、额定容量 | 搭建输电线路和变压器模型 |
39节点系统的数据在公开资料中有不少版本,母线编号和部分支路参数可能存在细微差异。我的建议是:无论你从哪个渠道拿到数据,都把它导入MATPOWER先跑一次,看能不能收敛,再看每个节点的电压是否在0.9到1.1标幺值范围之内。一个能通过潮流自洽检查的数据集,才值得花力气拖到Simulink里。
2.3 两条技术路线:纯手工搭建还是基于第三方工具箱改造
数据准备好以后,会面临路线选择。路线一是完全用Simulink的Simscape Electrical Specialized Power Systems模块库手工搭建39节点网络。这样做的优点是模型完全可视化,能够很方便地调整保护模块或故障模块,教学演示效果好;缺点是建模型工作量极大,需要逐个放置元件、连线、命名、填参,一个不小心就会接线错误或者漏掉一条支路,排错排到怀疑人生。路线二是基于Power System Toolbox或Matlab现有模型数据,先用脚本算好初值,再把动态模型导入到Simulink中。这个做法适合科研为主、追求复现和批量仿真的人。
对于第一次接触39节点项目的人,我推荐折中方案:不要把39个节点全部当复杂子系统搭,而是把模型划分成若干“区域”,每台发电机用带完整控制器的同步电机模块,网络部分用PI型线路等效;全部搭建完成后,通过Powergui的Load Flow工具做潮流初始化。这样既有可视化的可控性,也不会把自己累死在连线上。
3. Simulink模型搭建的取舍:同步电机、线路和负荷最容易拉开差距
真正把模型搭起来以后,你会发现模块参数设置才是重头戏。同样一个三相对地短路仿真,别人跑出来是多机功角曲线有序摆动,你跑出来却是发散到天际的数值振荡,差别往往不在故障模块上,而在同步电机、线路模型和负荷模型的参数设置方式上。
3.1 同步电机模块怎么选:三种常用建模方式的对比
Simscape Electrical Specialized Power Systems库中最常用的是Synchronous Machine模块。这个模块在不同版本里会有几种可配置方式,从建模复杂度上看大致有三种层次,实际选哪种取决于你研究问题的侧重点。
| 模型类型 | 对动态过程的考虑 | 适用场景 | 注意点 |
|---|---|---|---|
| 经典二阶模型 | 只保留转子运动方程,认为励磁磁链恒定 | 暂态稳定趋势分析、多机功角首摆 | 无法复现励磁系统动态和电压调节作用 |
| 详细实用模型(fundamental) | 考虑d/q轴绕组、阻尼绕组、励磁绕组动态 | 励磁系统、PSS、动态稳定研究 | 需要正确填写电抗与时间常数 |
| 电磁暂态模型 | 建模到定转子绕组磁链级别 | 需精确故障电流波形时 | 计算量显著增加,39节点全用会很吃力 |
在多数39节点暂态稳定项目中,我建议以“详细实用模型+励磁系统+调速器”为基底。如果你只是想快速复现文献里的功角摆动趋势、不涉及励磁动态,经典二阶模型也可以承受,但在论文的方法部分必须写明“采用经典二阶模型”这一假设,避免审稿人或读者误以为你考虑全动态模型。
选好模块类型之后,需要填的核心参数包括额定容量与额定电压、惯性时间常数H、d轴和q轴同步电抗、暂态和次暂态电抗及对应时间常数。39节点系统中各发电机参数通常是以系统基准容量为基准的标幺值,模块对话框中若要求填国际单位制,一定要换算。最容易栽跟头的地方是惯性时间常数:有些资料给的是以发电机自身额定容量为基准的H,而模块内部期望的是以模块额定容量为基准的H,不换算直接填会导致摇摆周期整体偏移。
3.2 线路模型选择:PI型还是分布参数型
输电线路在39节点系统里既有短线路也有长线路,统一建模时很多人直接选用Distributed Parameter Line模块,希望“更精确”。但这里需要冷静:分布参数线路内部包含波阻抗和传播时间,Simulink在电磁暂态尺度上会严格求解沿线波动过程,这对于几十公里或几百公里的超高压线路本来是优势,然而当你把整张39节点网络都铺上分布参数线路后,仿真会变得异常“硬”,线性多步求解器需要不断缩短步长来跟踪行波分量,结果是机端电压波形上出现大量高频毛刺,功角曲线反而被噪声淹没。
我的经验是,除非你专门研究操作过电压或行波保护,否则做机电暂态研究时,输电线路统一采用Three-Phase PI Section模块或者等效的串联阻抗加并联导纳模型,效果远好于“理论上更精确”的分布参数模型。PI型线路模型在工频下已经能准确反映线路传输功率和电压降落特性,动态时间尺度上对低频振荡的影响也足够接近实测。具体的线路电阻、感抗、容抗参数从39节点支路表中读取,电容不能设0,否则潮流和动态过程中的无功功率会差一大截。
3.3 负荷模型别想当然,恒功率不是默认选项
这可能是39节点建模中新手最容易忽视的问题。39节点静态数据里给的是每条母线的有功、无功负荷,从潮流层面看它是恒功率负荷。但如果直接在Simulink里放一个Three-Phase RLC Load,当你填某一个固定阻抗时,电压变化后负荷消耗的有功无功按阻抗特性改变,不再等于原来那个恒功率值了。故障导致母线电压跌落时,恒阻抗负荷吸收的功率会随电压平方下降,而恒功率负荷会尽量维持功率不变。两者在暂态分析中的效果差别很大,直接影响系统是否稳定。
务实做法是在用RLC负荷模块时,把它按潮流稳态下的电压幅值和负荷功率折算成等效阻抗填写,并在文档中声明“本文暂态仿真中负荷采用等效恒阻抗模型”。如果你想严格模拟恒功率负荷,Simulink里也有Three-Phase Dynamic Load模块,它可以按用户给定P、Q参考值动态调整导纳,更接近恒功率特性。这个模块在仿真中会出现迭代更多、偶发收敛困难的问题,使用前需要把它的外部控制信号接好,同时也要在论文里交代清楚。负荷模型选择不是一个技术细节,它直接决定了你的稳定结论偏向乐观还是保守,这个判断要在课题一开始就做出来并向读者说明。
3.4 Powergui的Load Flow工具怎么用
39节点模型拖动完成后,先别急着点Run,在模型里添加一个Powergui模块,然后在Powergui界面选择Load Flow工具。这个工具允许你指定每条母线电压幅值和相角的期望初值,也允许指定发电机的有功出力、机端电压控制方式和无功上下限。常用做法是把MATPOWER潮流结果逐项填入Load Flow工具的对应表格,然后点击执行。Powergui会通过它内部的潮流计算迭代,得到所有同步电机模块的初始转子角、初始励磁电压、初始机械功率等状态量。
如果Powergui的Load Flow不收敛,先检查模型网络有没有悬空节点、变压器连接组别有没有错误、负荷节点有没有漏填。最常见的错误是两台发电机之间缺少升压变压器或者变压器极性不对,导致潮流计算中无法解出合理的电压分布。Load Flow成功通过后,再在Powergui里选择“Steady-State”或者“Initial States”,把初始化好的状态打入模型,这时再去运行动态仿真,就不会出现模型启动瞬间“砰”地跳出一个巨大暂态的问题。以前很多人手工计算初始功角、励磁电压再往模块对话框里贴,39节点规模下效率极低,现在这个工具已经相当成熟,省了不少事。
4. 标准故障演练:三相短路下的多机功角摇摆曲线怎么读才有价值
模型搭建完毕、初始化通过后,通常第一个做的是三相对称短路故障仿真,原因是它最严重,也最直观。设置故障时可以选在某一关键母线或某条关键线路靠近母线的一侧,然后用Three-Phase Fault模块控制短路发生时刻和持续时间。为了研究暂态稳定性,典型做法是:让系统先在稳态运行约0.2到1秒,之后母线发生三相对地短路,经过若干周期保护动作将故障线路切除,再继续观察几秒到十几秒的转子动态。
4.1 故障场景怎么设置才有对比价值
不要随手填一个故障开始时间完事。要研究问题,需要做场景扫描。例如在母线29处设置三相短路,故障开始时间为1.0秒,切除时间分别设为1.1秒、1.2秒、1.25秒,观察同一个故障在不同切除时间下,系统是恢复稳定还是功角单调发散。你会看到临界切除时间大概落在某个区间,这一组数字写进报告里比放一张“某次故障后稳定”的图有说服力得多。
故障持续时间的选取也很有讲究。39节点系统有些场景下临界切除时间极短,可能只有0.1到0.2秒。如果你把故障设成1秒后投入、2秒后才切除,那基本上无所谓分不分期,系统早就失步了。我建议先做一个较短的故障比如0.1秒切除,看系统能不能稳定;再逐步增加时间,找到那个“临界值”,这样你的仿真报告就能描述系统稳定性裕度,而不是仅仅说“故障后失稳”。Three-Phase Fault模块里面可以设置故障相别、接地电阻和过渡电阻,做三相短路时注意把故障点通过大电阻接地或直接接地,具体要看你要模拟的是金属性短路还是经电阻短路。
4.2 转子角数据怎么导出、怎么画相对曲线
同步电机模块的测量输出中通常包含转子角偏差信号。导出数据时要注意:Simulink里的输出可能以rad为单位,也可能是相对于同步旋转坐标的偏差量,而分析功角稳定习惯上用电气角度。如果你用Bus Selector直接取的“Rotor angle deviation (rad)”信号,画图前乘以180/pi换算成度,同时需要统一参考机。
实际做法是:把10台发电机的转子角偏差都测量出来,经过单位换算后,用某一台参考机作为基准,其余的转子角逐一减去参考机角度,得到相对功角曲线。哪台机组相对功角超过180度甚至持续增大,说明该机与参考机失去同步。在39节点系统里,有些资料推荐以容量较大或等值性较强的机组作为参考,也有些文献习惯选第一台机,这没有绝对标准,关键是全文统一并且在图注中写清楚“以发电机Gx为参考”。
4.3 功角曲线的稳定判据和读图门道
拿到功角摇摆曲线后,怎么判断系统是否稳定?不需要上来就做严格的Lyapunov分析,粗线条判断很简单:故障切除后,各机相对功角经过几次摆动最终趋于平稳,并且机端电压和频率回到正常范围,说明系统是暂态稳定的;如果某台机的相对功角持续单调增长或发散振荡,说明失去了同步。
但有几点细节需要特别注意。第一,功角曲线摆开很大但不一定立刻失稳,需要看是不是在回落。39节点系统里常见的情况是某两台机组首摆相对功角冲到150度,随后又压回来,这个过程里联络线功率方向反转,系统处于非常严峻的工况。第二,要不要看完整过程的频率?如果仿真只做2秒,首摆都没有走完,不能轻易下结论;建议动态仿真至少跑到5到10秒,把首摆、回摆过程都看清楚。第三,观察功角的同时要对比机端电压和线路传输功率,因为功角稳定和电压稳定在故障后可能相互影响,只看功角图容易漏掉瓶颈线路。留好这些配套波形,后续写论文做机理解释时才有素材。
5. 我在39节点复现中踩过的几个坑,每一个都会让Simulink仿真“死”得莫名其妙
这类项目最考验人的往往不是最后几张好看的曲线,而是过程里此起彼伏的报错和发散。下面这几个坑是我自己在那段复现39节点动态模型的经历里反复撞过的,也是学生在邮件里问得最多的问题。写在这里,希望能帮你少走几趟弯路。
5.1 发电机初始状态不一致,仿真从0秒就开始发散
现象是仿真步长在0.0001秒处直接报错,误差超出容差,打开执行报告后看到很多状态变量变化率极大。排查下来绝大多数情况是同步电机的初始转子位置、励磁电压和机械功率与系统潮流结果不匹配。如果你没有用Powergui Load Flow做初始化,而是手动填模块参数,任何一个发电机的初始功角差了3到5度,可能在空载情况下不算什么,但在系统级联网络里就会被放大成巨大的初始功率偏差,导致模型开启瞬间经历一个“人为扰动”。
解决思路很明确:先用MATPOWER算出稳态,再把稳态结果交给Powergui Load Flow,让它自动设置发电机状态。不要试图手动填39节点里所有电机的初值,那既不现实也容易出错。此外,还要检查发电机模块的初始转速是否设置为同步速,如果某个机组初始转速填成了额定转速的1.01倍,仿真中它会像一个启动中的原动机一样推着系统跑。
5.2 分布参数线路模型让整个模型变成“蜗牛”
一个现象是模型连接正确、初始化也通过了,但仿真速度越来越慢,跑1秒仿真需要二十分钟,而且波形上出现密集高频抖动。原因往往在于线路用了Distributed Parameter Line。分布参数线路的波阻抗和传播延时让方程具有强烈的双曲型特性,数值积分器必须用很短的步长去分辨这些高频分量,这会让整个系统仿真时间爆炸式增长。
我的做法是把大多数线路替换成PI型等效,只有在专门研究行波、过电压或者非常长的架空线时才保留个别分布参数模型。PI型模型用π形集中参数近似工频特性,对机电暂态完全够用。如果发现PI型模型在高频段出现轻微振荡,可以考虑在Powergui里把求解器设置为ode23tb并放宽相对误差到1e-3,同时把仿真步长上限设到1e-3秒,这样既保证精度也不拖慢速度。做完这些调整,一个39节点模型从仿真开始到出3秒的动态曲线,通常只需要几十秒到几分钟,而不是煎熬地等待。
5.3 同一套系统不同文献跑出的曲线对不上,先查参数版本
我遇到过一个很典型的情况:用一份从网上找到的39节点参数搭好模型,故障设置在同样的母线和同样的切除时间,功角曲线形状看起来和某篇论文对不上。折腾很久才发现,两台发电机的惯性时间常数基准不一致,另一台发电机的d轴暂态电抗在小数点后第二位有出入。39节点系统的参数在传播过程中有许多版本,不同论文可能对其中一两组参数做了修正,或者对不同发电机的模型阶数做了取舍,这些差异在静稳计算里可能看不出来,但动态响应会有可感差异。
因此,你的仿真结果和参考文献对不上时,不要立刻怀疑自己的模型有bug。可以先检查参考论文的方法部分,看看它用的是几阶发电机模型、有没有励磁系统、负荷是什么模型,再决定是否逐项对齐。如果是做课程设计或复现报告,把参考的数据来源写清楚即可;如果是做科研,更要明确这些建模差异对结论的敏感度影响,这本身就是有价值的研究内容。
5.4 故障电流异常或零序回路不通,问题经常藏在接地里
设置母线三相短路故障后,如果发现电流幅值小得不合理,或不对称故障波形畸变非常奇怪,先检查系统和故障模块的接地路径。在Simulink的Three-Phase Fault模块里可以指定故障是否接地,如果模拟的是经大电阻接地,电阻值设太大几乎等于开路,短路电流当然上不去。另一方面,变压器绕组接地方式会影响零序网络通路,39节点系统中有多个电压等级和不同连接组别的变压器,如果你把高压侧所有中性点都悬空,单相接地故障时就可能没有零序电流路径,故障特性扭曲。
实际排错时,我习惯在关键母线处放置Three-Phase V-I Measurement模块,直接看三相电压电流瞬时值,确认故障前是对称正弦波,故障后能看到明显的短路特性。如果发现电压波形在故障后几乎不变,大概率故障没有真正接入系统,或者断路器跳闸时间设置得比故障时间还早,短路过程根本没建立起来。把故障起始时间、切除时间和断路器动作时间在模型里统一起来,是减少这类问题最简单也最有效的方式。
6. 让39节点从“能跑”变成“能写论文”的几个扩展方向
一个39节点模型一旦稳定复现,后面能做的方向其实很开阔,这也是为什么这个系统能持续出现在各种高水平论文里。我个人建议,在跑通基础故障仿真后不要急着收工,先把手头这个模型能扩展的方向梳理一遍,挑一个和课题主线关系最密切的继续挖下去,你会发现自己从“会用工具”直接跳到了“会做研究”的那一层。
6.1 把常规同步机替换成新能源等值机
这是当前最热门的扩展。39节点系统里10台同步发电机原本都是火电/水电等值模型,你可以选择其中一两台替换成直驱永磁风机、双馈风机或光伏电站的等值模型。替换时需要保留原节点注入功率不变,这样才能和原系统的潮流工作点一致,并在此基础上研究新能源渗透率升高对系统惯量、频率稳定和暂态稳定边界的影响。Simulink里可以先从平均模型风机开始,不必一上来就搭全开关级变流器,否则一个风场内部的器件模型就可能拖垮整个动态仿真的效率。
6.2 加装广域测量、PSS或储能阻尼控制器
另一种扩展路线是在39节点系统上设计控制,因为它的低频振荡模式相对丰富,能够展示控制器在不同模式下互相影响的问题。你可以先做特征值分析,找出区域间振荡模式,然后在关键发电机的励磁系统上设计PSS,或者在某一枢纽母线接入储能装置,用带有时滞的反馈信号模拟广域阻尼控制,对比有控制和无控制时的功角摇摆情况。39节点系统足够大,所以控制器设计不能只考虑单机反馈,还要处理通信时延、量测噪声和控制回路交互,这个复杂度是9节点系统给不了的。
6.3 向实时化、硬件在环方向过渡
如果你希望往工程应用靠近,可以考虑把39节点模型编译成C代码,部署到实时仿真器或做Simulink Desktop Real-Time,让模型在一个实时调度周期里完成逐步计算,为后续硬件在环测试打基础。这个方向对模型结构有要求,不能再有大段代数环和过于复杂的离散求解配置。热词里经常有人搜“simulink模型C代码生成”,本质上也指向这个需求。39节点模型作为中等等级的电网对象,用来练习代码生成和实时化改造,规模不会大到编译困难,又能体现网络动态的复杂度,是很合适的训练对象。
最后说一个我自己的习惯:项目做完后,我会把MATPOWER潮流数据和Simulink动态模型参数整理成一个自动加载的脚本,保证任何人拿到工程文件,只需要运行一个初始化脚本,就能把全部参数载入工作区,打开模型即可仿真。很多同学把精力全部放在拖动模块和调图形美观上,忽略了参数可追溯性,结果论文返修需要改某个负荷大小时,得在模型里翻半天。如果你能一次性把参数文件、潮流初值脚本、故障设置说明和使用文档封装在一起,这个项目经历无论用来写毕业论文还是面试讲项目,都会比单纯“跑出一张功角图”有分量得多。
