很多做控制仿真的朋友第一次接触水轮发电机调速系统时第一反应是把它当成一个普通的“PID 伺服机构”控制回路测频率偏差调导叶开度完事。真正上手建Simulink仿真模型之后才会发现这个系统牵扯的东西远比想象的多——水流惯性、水锤效应、接力器速度限制、频率测量死区、永态转差、暂态转差、机组摆动方程每一步都是一道坎。我前前后后帮同事改过不少调速系统模型也踩过相当多的坑这篇文章就把我在MATLAB/Simulink里搭建水轮发电机调速系统仿真模型的经验整理出来给准备做这方面仿真、或者刚被调速器模型折磨得头疼的朋友一个可以直接参考的路径。这篇文章不是照着说明书抄模块而是从“为什么要这么做”出发把数学模型怎么选、Simulink里怎么搭、参数怎么整定、甩负荷和一次调频工况怎么设计讲透。无论你是水电厂的运维工程师、做调保计算的技术人员还是高校做水力机械控制方向的研究生下面这些内容应该都能用得上。1. 水轮发电机调速系统仿真到底在研究什么1.1 调频、并网、孤岛与甩负荷四条主线水轮发电机调速系统往小里说是一套“频率-导叶开度”闭环控制硬件往大里说则是整个水电机组参与电网频率调节的核心。它的工作对象是机组转速或者说电网频率执行机构是导叶接力器中间隔着压力引水系统、水轮机和发电机。仿真要还原的就是这条完整链路上从频率变化到导叶动作、再到机械功率输出和转速变化的动态过程。在实际工程中这套系统面对的典型场景有四类并网运行一次调频电网频率出现偏差时调速器自动调整导叶开度改变机组有功出力让频率回到允许范围。这是最频繁发生的动态过程也是最考验参数的场景。二次调频与AGC指令调节调度下发负荷指令调速器逐步改变机组出力。此时频率闭环和功率闭环同时作用模型里要多考虑永态转差和负荷限制逻辑。孤网运行机组脱离大电网在孤立负荷下运行调速器成了唯一的频率稳定器模型必须能反映频率大幅摆动的过程。甩负荷机组突然解列负荷一下子甩到零导叶开始紧急关闭机组转速飞升。这是调速系统最极端的考验也是水电站调保计算最关注的事。把这四个场景放在仿真的角度去看你会发现它们对模型的要求不太一样。一次调频更关注线性范围内的响应速度和小扰动稳定性孤网运行要关注非线性环节如死区、限幅对稳定性的影响甩负荷则必须把接力器关闭速度、水锤效应、转速上升率这些因素全部拉进来。所以模型一开始就不要做成只能加个小阶跃的玩具最好留出切换工况的接口。1.2 为什么偏偏用MATLAB/Simulink我知道有人会说调速器数学模型无非是几组微分方程用Python的控制库甚至手写C也能算何必死磕Simulink。这句话理论上没错但实际做工程的时候Simulink的优势是其他工具很难替代的。首先是电气和机械一体化建模方便水轮机、发电机、调速器、电网负荷可以在同一个图形环境里连起来信号从机械侧传到电气侧再传回来中间用总线结构体传递调试时一眼就能看出问题在哪。其次是模型和实际系统的对应关系直观电厂工程师拿现场录波和仿真曲线对比时不用去翻代码直接看模块就能对齐物理环节。另外Simulink对连续系统、离散系统、混合系统的支持很成熟。数字式电液调速器本身就是离散采样控制的产物频率测量周期、PID计算周期和接力器液压环节的连续动态混在一起想用普通数值程序把这种混叠效应表达清楚麻烦得很而Simulink里一个ZOH块加一个离散PID就能解决。再加上Stateflow可以方便地写开度限制、功率限制、紧急关机等逻辑切换模型做出来后给同事评审、给领导汇报可视化的效果也远胜一堆代码。2. 先把数学模型写对水锤、接力器、PID与摇摆方程的取舍2.1 水轮机线性化模型与水流惯性时间常数Tw我在指导新手搭建调速系统模型时说的最多的一句话是不要在Simulink里急着拉模块先在纸上把数学模型写明白。调速系统所有让人摸不着头脑的动态基本都来自水轮机和引水系统这一段。水轮机在额定工况附近的线性化模型工程上一般写成[ q a_{qy}\cdot y a_{qh}\cdot h ][ p a_{py}\cdot y a_{ph}\cdot h ]其中 (q) 是流量偏差(p) 是机械功率偏差(y) 是导叶开度偏差(h) 是水头偏差全部采用标幺值。对于反击式水轮机在额定工作点附近这些系数的经验值大致为 (a_{qy}1.0)、(a_{qh}0.5)、(a_{py}1.0)、(a_{ph}1.5)。注意这只是经验值真正的工程模型要用模型综合特性曲线在额定点求偏导或者用厂家提供的特性数据拟合否则后面的参数整定结果会偏差很大。引水系统的水锤效应最常用的是刚性水柱模型[ h(s) -T_w \cdot s \cdot q(s) ]这个式子背后的物理含义是流量变化越快水头变化越大而且是反方向的。当导叶突然开大时水流加速需要消耗能量水头不但不会立刻升高反而会先压下去导叶突然关小则反过来水头会瞬间抬升。这就是为什么水轮机调速比汽轮机调速要“别扭”——汽轮机调节进汽阀蒸汽压力响应快系统基本是最小相位特性水轮机调节导叶水锤效应会在开度变化初期产生一个反向的功率波动形成非最小相位特性这直接限制了调速器增益不能取太高。把上面的线性化式子代入水锤公式水轮机开度到机械功率的传递函数可以进一步合并成[ \frac{p(s)}{y(s)} a_{py} - \frac{a_{ph} \cdot a_{qy} \cdot T_w \cdot s}{1 a_{qh}\cdot T_w \cdot s} ]从数学形式上看这就是一个带右半平面零点的典型环节。Tw越大这个右半平面零点越靠近原点系统能接受的调速器开环增益就越低。Tw是水流惯性时间常数工程上按以下方式估算[ T_w \frac{Q_r}{H_r g}\sum_i \frac{L_i}{A_i} ]也就是把引水管道按段累加 (L/A)再乘上额定流量和额定水头的比值。举个实际例子一条长度500米、截面积30平方米的压力管道额定流量80立方米每秒额定水头100米那么水流惯性时间大约是[ T_w \approx \frac{80}{100 \times 9.81} \times \frac{500}{30} \approx 1.36s ]这在水电站里是非常典型的数量级。不同机组的Tw经验范围大致如下机组类型引水特点Tw典型范围冲击式高水头长压力管道1.5~3.5s混流式中水头引水系统0.5~2.0s轴流/贯流式低水头短流道0.2~1.0s2.2 调速器策略并联PID、暂态转差系数与永态调差水轮机电液调速器的控制逻辑现在基本都数字化了但在数学上仍然可以分解成几个环节。频率偏差信号经过死区后进入并联PID[ u K_p e K_i \int e dt K_d \frac{de}{dt} ]这里的 (e) 是频率偏差(K_p) 是比例系数(K_i) 是积分系数(K_d) 是微分系数。但水轮机调速器有个特色就是暂态转差系数和缓冲时间常数。很多初学者看到参数表里的 (b_t) 和 (T_d) 就发懵其实把它们对应到并联PID上就很好理解暂态转差体现为微分通道的增强阻尼作用缓冲环节则相当于微分信号的低通滤波也就是传递函数里的 (K_d s/(1T_f s))。这样一来参数的意义就清晰了微分不能直接作用于高频噪声加一个滤波时间常数 (T_f) 就是缓冲时间常数 (T_d) 的核心作用。永态转差系数 (b_p) 则对应另一种反馈——功率反馈。并网运行的机组频率闭环稳态时不能把频率拉回额定值否则多台机组之间会抢负荷所以必须带调差率。典型的 (b_p) 取0.04也就是频率偏差4%对应满负荷变化。在模型里永态转差表现为[ y_{ref} f_{ref} - b_p \cdot p ]也就是说机组出力越大频率给定就略微降低这会让最终的频率—出力静态关系变成一条有斜率的直线。仿真时如果只做甩负荷或孤网工况这个环节影响不大但做一次调频统计、AGC切换时少了它模型就完全不对。2.3 发电机与电网负荷的简化处理调速系统的被控对象是机组转速而转速动态由转子运动方程决定。忽略轴系扭振单刚体模型足够[ T_a \frac{d\omega}{dt} p_m - p_e - D(\omega - \omega_0) ]这个方程和汽轮机、燃气轮机里的摇摆方程没有本质区别。(T_a) 是机组惯性时间常数等于同步机组的动能时间常数 (2H)。水电厂的 (T_a) 通常可以用经验公式估算[ T_a \frac{GD^2 n^2}{358 P} ]其中 (GD^2) 是发电机转子和水轮机转轮的飞轮力矩(n) 是额定转速(P) 是额定功率。一台额定功率300MW、额定转速125rpm的中大型混流机组(GD^2) 大概在20000吨·平方米上下算出来的 (T_a) 大约在5~8秒之间。大机组的惯性大频率不容易飞升但调速器响应也不能太慢。负荷侧和并网侧的处理要看工况。孤网运行时负荷可以简化成频率敏感型(p_e p_{load} D_f \Delta\omega)也就是负荷功率本身会随频率变化这相当于在摇摆方程里天然加了一部分阻尼并网运行时机组频率被大电网钳制调速器调整的是有功出力这时候发电机端口更接近于一个功率源直接给定 (p_e) 或者用外部潮流接口接入就好。仿真模型里最好把这两种模式做成切换开关否则同一套模型做甩负荷和做一次调频要拆两个模型维护起来很痛苦。3. 在Simulink里搭建可调参的完整模型3.1 顶层结构与信号定义Simulink模型不建议把所有的模块铺在一个层级里那样信号线绕得根本没法看。我的习惯是把整个闭环分成五个子系统调速器、接力器、水轮机与水锤、发电机与负荷、测量环节。顶层看起来就是一个标准的负反馈结构频率给定减去实测频率得到偏差经过调速器变成开度指令经过接力器变成导叶实际开度经过水轮机模型变成机械功率经过摇摆方程变成转速转速再通过测量环节回到频率偏差。顶层模型的信号命名要在一开始就规划好我建议全部用标幺值。频率偏差单位用标幺频率功率用标幺功率导叶开度用标幺开度。这样可以免去后续整定PID时被单位搞晕的麻烦。Simulink里也可以用总线信号替代普通导线把频率、导叶开度、机械功率这些量装在一个总线结构体里模块之间的接口更清楚后续做代码生成也方便。这也是很多实际工程模型的常用做法。3.2 关键模块的实现细节调速器子系统我建议直接用Simulink库里的离散PID控制器设成并联形式Kp、Ki、Kd、Tf分别从参数脚本读取。PID输出后接一个饱和模块限制开度给定范围再接一个rate limiter限制导叶开度变化率。这里要特别注意Simulink的rate limiter是限制一阶变化率的但实际液压接力器开方向速度和关方向速度往往不一样甩负荷时关方向速度限制通常更严格所以最好拆成两个独立的rate limiter或者用一个带对称参数的模块工程上更严谨。还要在PID模块里把抗积分饱和打开。Simulink的PID Controller模块里有一个Anti-windup参数选择back-calculation方式并设好增益就行。我见过很多调速系统模型出现导叶开度长时间顶在限幅值上、频率稳定后功率还不断波动的情况查到最后基本都是积分饱和在作怪。接力器子系统最简化的模型是一个一阶惯性环节 (1/(T_n s1))(T_n) 是接力器反应时间常数通常在0.05~0.2秒之间。但如果只做成纯惯性环节就失去了液压执行机构的非线性特点。真实接力器在收到开度指令后先以固定速率匀速开导叶而不是指数趋近所以更合理的模型是用积分器加限速反馈积分器的输入是开度指令与实际开度之差除以时间常数积分器的输出经过上下限饱和积分器前后嵌套速率限制器。这个结构既保留了线性惯性又能在指令大幅突变时体现出实际液压系统的匀速运动特性。在做甩负荷仿真时这个差别非常关键一阶惯性会让导叶永远无法以真正恒定的速率关闭而现场录波显示的关阀过程往往是明显的等速段。水轮机与水锤子系统这是整个模型最容易出问题的地方尤其是代数环。如果你照着数学式子直接在Simulink里用增益模块相连把 (h) 和 (q) 用加减乘除搭出来十有八九会触发代数环警告仿真要么卡死要么结果震荡。原因前面说过水锤模型里 (h) 和 (q) 互为因果关系直接代数互联产生瞬时依赖。解决方法是把 (h-T_w s q) 这个微分关系放进积分器或传递函数里不要直接使用微分模块。我常用的做法是用一个传递函数模块来实现水锤到流量的等效关系[ \frac{q(s)}{y(s)} \frac{a_{qy}}{1 a_{qh} T_w s} ]然后机械功率通过 (p a_{py} y a_{ph} h) 得到(h) 由 (h-T_w s q) 经过传递函数得到。换句话说把水锤模型的输入输出关系整理成标准的传递函数用Transfer Fcn模块直接建模。只要没有直接的微分模块和瞬时互联代数环问题就能绕开。这个技巧看起来简单但我见过有同事在仿真里卡了整整一天最后才发现问题根源就在这里。发电机与负荷子系统摇摆方程用积分器实现输入是机械功率减去负荷功率除以惯性时间常数 (T_a)得到频率偏差。如果考虑阻尼再在求和点前加一个频率反馈增益。对于并网模式可以把频率偏差强制设为零让机械功率直接输出到外部对于孤网和甩负荷模式才让摇摆方程真正运转起来。这个模式切换我用一个手动开关模块实现简单直接不会引入状态跳变。3.3 用脚本管理参数别在界面上手输一个调速系统模型至少有二三十个参数全部手输到模块参数框里改起来一定会疯。我的习惯是建一个参数脚本把这些参数定义成结构体放到Structures里。比如建一个文件hydro_governor_params.m% 引水系统与机组参数 params.Tw 1.36; % 水流惯性时间常数 params.Tn 0.08; % 接力器反应时间常数 params.Ta 6.0; % 机组惯性时间常数 % 调速器参数 params.Kp 2.2; % 比例系数 params.Ki 0.45; % 积分系数 params.Kd 0.60; % 微分系数 params.Tf 0.20; % 微分滤波时间常数 params.bp 0.04; % 永态转差系数 % 测量与限制参数 params.f_deadband 0.033; % 频率死区单位Hz params.y_max 1.0; % 导叶开度上限 params.y_min 0.0; % 导叶开度下限 params.rate_open 0.2; % 开启速率限制标幺每秒 params.rate_close -0.3; % 关闭速率限制标幺每秒然后在每个子系统的Mask初始化代码里写一句params evalin(base,params);再通过动态参数读取把需要的字段映射到各个块。这样以后要做参数敏感性分析只需在主脚本里修改params结构体然后循环仿真不需要逐个打开模块改数。顺便说一句有次同事遇到Bus Selector选不到总线信号的报警反复检查机械结构查不出原因最后发现是因为信号标签改了之后总线签名没有刷新。做总线型模型时只要遇到Bus Selector没有可选信号第一反应应该是更新总线信号定义而不是去查模块连线。4. 仿真工况设计与调参实践4.1 空载频率扰动与调速器参数整定调速器参数整定最好从空载频率扰动开始。所谓空载指的是机组转速稳定在额定值但还没有并入电网此时负荷为零机械功率主要用于克服空载损耗。这个工况下频率闭环的稳定裕度最容易通过阶跃扰动看出来。在Simulink里给频率给定加一个0.5%的阶跃扰动观察转速响应。一个整定合理的调速器频率响应应该是2~5次衰减振荡后稳定下来超调量不能太大一般不超过30%。如果响应发散就必须降低Kp如果响应慢吞吞地爬很稳就应该适当提高Ki。按经验给出的初始参数是 (K_p2.0)、(K_i0.5)、(K_d0.4)、(T_f0.1s)然后在仿真基础上微调。这里有个水轮机特有的规律由于水锤造成的非最小相位特性Kp一旦超过一定阈值系统会在频率阶跃初期出现持续高频振荡现场表现为导叶来回抽动、油压装置频繁启泵。Simulink里做小幅频率阶跃就能观察到这个现象比现场试错安全得多。我建议在整定过程中同时用Simulink Control Design里的linearize命令提取闭环传递函数看幅值裕度和相位裕度。水电调速系统一般要求相位裕度在30度到60度之间幅值裕度不小于6dB。单纯靠时域曲线一个个试效率太低参数空间太大处理不好容易漏掉危险区域。4.2 甩负荷工况检验转速飞升和导叶关闭逻辑甩负荷仿真是调速系统模型最有价值的应用也是和现场数据最常对比的场景。做这个仿真时把负荷从额定功率瞬间降到零同时给调速器一个主配压阀紧急关闭信号导叶以设计好的速度曲线关闭。在初始阶段一个反直觉的现象要注意机组转速飞升并不是在导叶关闭到最小那一刻达到峰值的。当导叶刚关闭一点流量骤减水头会急剧上升机械功率甚至可能短暂增加这相当于负荷切除后的“二次加速”来源。随后导叶继续关闭机械功率才真正下降转速峰值通常出现在导叶关闭后期。所以在模型里如果只关心最大转速上升率一定要把水锤模型保留下来不能为了简化把Tw设为零否则结果会偏乐观。我做过一个常规混流机组的甩负荷仿真参数大致是 (T_a6s)、(T_w1.8s)、关闭速率初始段0.3倍额定开度每秒尾段0.07倍每秒仿真结果最大转速上升率约32%接近过速保护动作值。把导叶关闭速率提高到0.5标幺每秒后最大转速上升率下降到26%但压力管道的水压上升明显加剧。这个矛盾正是调保计算的精髓关闭速度太快转速控制住了水锤压力却爆了关闭速度太慢水锤压力安全转速说不定飞出限制。Simulink模型能做的是把转速侧算准水锤压力侧如果需要精确结果最好和弹性水锤计算程序联合起来看。4.3 并网一次调频电网频率跌落时导叶开度响应并网一次调频仿真不需要让频率真的被机组拖回来因为一台水电机组在大型电网里的“话语权”有限。我的做法是把频率扰动当作外部输入在某个时刻电网频率跌落0.1Hz观察调速器导叶开度和有功功率的响应。这时候最能看出永态转差和负荷限制的效果。频率偏差进入死区后比如0.033Hz以内不动作超过死区才启动调频。调速器把频率偏差按比例和积分计算成开度增加量但由于永态转差系数的存在稳态时频率不可能完全回到额定值而是稳定在一个略低于额定值的平衡点。这个平衡点的出力增量理论上应该是频率偏差除以永态转差系数仿真值会和手算值吻合如果不吻合往往是功率反馈回路的极性或者调差系数单位出了问题。做这种工况时还要注意负荷限制。很多调频需求可能已经超出了当前水头下的最大出力能力导叶开度会在某个限幅值上顶住此时如果积分没有抗饱和措施频率恢复后导叶还要过冲很久才会回来这就是典型的现场“调频过头”现象。仿真里把这个场景复现出来然后再修正抗饱和策略比在现场被调度考核罚分要划算得多。5. 仿真中必踩的坑与排查链路5.1 代数环水锤模型最容易引发的问题几乎每一个从零开始搭建水轮机调速模型的人都会碰到代数环。现象是仿真开始时报出多条关于代数环的警告模型计算速度奇慢或者某个中间变量始终无法收敛。究其原因Simulink在求解过程中遇到一组瞬时依赖的变量必须通过迭代求解才能得到结果而水锤模型里 (h)、(q)、(p) 之间存在直接代数关系恰恰命中这个坑。排查链路也不复杂你可以在Dashboard里打开Diagnostics Viewer看到代数环警告提示的具体路径然后顺着路径把直接相连的增益模块打断。打断的方法通常是给瞬时反馈路径注入一个小惯性环节比如一个时间常数0.001秒的一阶惯性或者干脆把数学模型改写成传递函数形式像我前面介绍的那样把 (q/y) 写成一个标准传递函数而不是用代数互联。对调速器这种时间常数以秒级的系统加入千分之一秒的小惯性带来的误差完全可以忽略但对代数环的消除却是立竿见影的。5.2 死区、限幅和积分饱和导致的“调不动”有时候仿真会遇到一种很诡异的情况频率偏差明明超过死区导叶开度却纹丝不动。新手第一反应往往是PID参数设错了或者反馈极性反了。我建议按照固定顺序排查先看测量环节。是否在频率偏差后接了死区模块死区宽度是否被错设成了标幺而不是赫兹。再看开度给定路径。调速器的输出是否被负荷限制、开度限制模块夹住了如果给定本身已经到达饱和值PID输出限幅后自然无法继续上升。第三看限速环节。导叶开度变化率被rate limiter限制住了视觉上感觉“没动”其实每秒钟只动百分之几放大时间轴就能看到。最后看积分饱和。如果PID输出一直被限幅钳制积分通道还在线性累积等频率偏差反向时积分值需要很长时间才能消下去这也会表现为系统响应滞后。在PID模块里直接开抗积分饱和再把限幅上下限设成和导叶开度范围一致会让这个问题消失大半。另外频率测量环节如果用一阶低通滤波注意滤波时间常数不能太大否则频率偏差信号被滞后得过分整个闭环相位裕度都会明显下降。我见过有模型因为给频率测量滤波器设了1秒的时间常数导致一次调频响应延迟严重现场考核完全无法验收。5.3 仿真结果与现场录波对不上的常见原因做完甩负荷仿真拿现场甩负荷录波来对比是查漏补缺最好的办法。对不上太正常了但原因其实就集中在几个地方。第一个是参数脱离实际。有些同事直接从论文里抄参数Tw、Ta、Tn看着像那么回事但用在自己项目上完全不是那台机组的状态。Tw和Ta都是可以实测或通过制造资料估算的千万不要随便拿一本教材里的参数当万能参数。第二个是初值设置不对。Simulink积分器默认初值是零但调速系统模型里导叶开度的初始值是满载开度比如0.9接力器输出一开始就应该在这个位置否则模型会在仿真初期出现一个异常的过渡过程甚至把系统拉回稳定点之前先产生大幅波动。第三个是控制模式不匹配。现场调速器可能处于开度模式、功率模式、水位模式中的某一种而仿真模型默认做了频率模式。在同一台机组上切换控制模式响应曲线完全是两码事。6. 模型验证、进阶扩展和一点个人体会6.1 用实测甩负荷录波反推模型参数如果你手里有真实电站的甩负荷录波建议别浪费。录波至少包括频率、导叶开度、有功功率、蜗壳压力几组曲线。把导叶开度曲线作为模型输入观察模型输出的机械功率和转速上升曲线能不能和实测录波大致重合。如果转速上升率明显偏大通常是Tw取得太小或者关闭速率设置偏快如果上升很慢则是Ta或者阻尼设置偏大。这个过程做两三轮模型里的关键参数就能被约束到很窄的区间内。这里我踩过一个印象很深的坑拿到录波后一味调PID参数结果怎么调都对不上。后来发现现场录波里导叶关闭第一天之后就进入了一段很慢的尾段关闭而我的模型里只设了一段等速关闭。把关闭曲线拟合成分段折线之后转速曲线立刻就贴近了。所以做水轮机调速系统模型时导叶关闭规律永远要比PID参数优先校验。6.2 进阶方向弹性水锤、多机并联与实时仿真如果刚性水柱模型不够用尤其是长引水系统在甩负荷时水压剧烈波动就要上弹性水锤模型。Simulink里可以自己写一个特征线法S函数模块把引水管道分成若干段逐点计算压力波传播也可以调用外部水锤计算程序在Simulink里通过数据接口交换边界条件。工作量会大很多但却是做高精度调保计算的正路。多机并联也是一个很自然的扩展。几个调速系统模型接到同一母线每台机组的摆动方程、调速器参数和导叶关闭特性都不一样仿真时可以观察机组之间的功率振荡是否在可控范围。这种模型适合研究电气距离很远的两个水电站之间一次调频协调问题。再进一步可以借助Simulink的External Mode把模型部署到工控机里做硬件在环测试或者用Simulink Coder把调速器模型生成C代码直接验证数字调速器的软件逻辑。现在也有一些研究用DQN、PPO这类强化学习方法把仿真模型当成训练环境来整定水轮机调速器参数传统方法和数据驱动方法混着用越来越常见了。6.3 几点个人经验做水轮发电机调速系统仿真最难的不是Simulink操作而是你对物理过程的直觉。建议仿真之前先把水锤、机组惯性、调速器限制这几个环节的物理量在脑子里过一遍想清楚每个参数变化半个数量级会带来什么后果再去动模块。有了直觉之后你看到仿真曲线哪怕不科学地“抖了一下”也能很快猜出是哪个环节出了问题而不是一根根信号线去排查。另外重要的仿真结论一定要写入文档记录参数版本、仿真工况、结果曲线。调速系统模型这种牵一发动全身的东西过两个月你可能连当初某个参数是怎么标定的都忘了。听我一句劝吃过的亏就别再吃第二遍。