简介:面向电力系统电磁暂态仿真初学者与防雷设计人员,这份资源聚焦PSCAD平台下雷电波的建模与验证,帮助读者理解冲击电流波形的数学表达与参数设置逻辑。包内为1个doc文档,约120KB,以图文结合方式呈现仿真图与分析结论,便于对照软件界面理解建模细节。内容围绕GB18802标准中浪涌保护器I级与II级分类试验展开,分别给出50kA、1.2/50与20kA、8/20冲击电流的指数拟合公式,并说明波前时间、半峰值时间在PSCAD中需取负值输入的原因,同时提示曲线拟合的参数调整难点。读者可据此掌握雷电波模型的搭建思路,理解波形特性与设备耐受能力评估之间的关系,为过电压保护与防雷策略分析提供参考。目前已有2006人学习下载,适合需要入门PSCAD建模或补充雷电仿真案例的读者。
1. 雷电波建模:为什么 50kA 的波形在 PSCAD 里要填两个负数
很多人第一次在 PSCAD 里搭 8/20 或 1.2/50 冲击电流源,都会卡在同一个地方:公式明明写对了,波形却死活起不来,或者峰值差了一大截。问题不在数学,而在双指数表达式和 PSCAD 内置指数源之间的参数映射——那个833333.33和1/20000的负数,不是随手填的,而是把「视在波前时间」和「半峰值时间」翻译成时间常数后的必然结果。搞懂这一步,雷电波仿真就从玄学变成可复现的工程计算。这份资源把 GB18802 里 I 级 50kA/1.2/50 与 II 级 20kA/8/20 两组波形在 PSCAD 中的建模过程、参数推导和仿真图放在一起,正好适合拿来把底层机制拆开看。
2. 双指数模型:雷电波为什么长成「先陡后缓」的样子
2.1 从两个指数项到一条冲击波形
雷电冲击波在工程上被标准化成一条单极性、快速上升、缓慢衰减的曲线。描述它最常用的就是双指数函数:
i(t) = I * (exp(-a*t) - exp(-b*t))两个指数项一正一负,负项负责「把起点拉回零」,正项负责「把尾巴拖长」。b 远大于 a 时,负项衰减极快,在波前阶段主导上升;正项衰减慢,在波尾阶段主导下降。两者相减,就得到一条从零出发、冲到峰值再缓慢回落的波形。这个结构的巧妙之处在于:它天然满足 i(0)=0,不需要额外的开关或触发逻辑,PSCAD 的指数源直接就能表达。
但双指数函数有个容易被忽略的性质:它的峰值并不出现在 t=0,也不等于系数 I。对i(t)=I*(exp(-a t)-exp(-b t))求导令其为零,峰值时刻为t_p = ln(b/a)/(b-a),峰值电流为I*(exp(-a t_p)-exp(-b t_p))。也就是说,公式前面的 50 或 20 只是缩放系数,真正落到波形上的峰值要乘一个小于 1 的因子。这一点在参数整定时必须心里有数,否则你会以为模型「衰减过头」了。
2.2 视在波前时间与半峰值时间:标准到底在定义什么
GB18802 里说的 1.2/50、8/20,用的是「视在」参数,不是数学上的精确时间常数。视在波前时间 T1 定义为 1.67 倍「从 10% 峰值到 90% 峰值」的时间间隔,半峰值时间 T2 定义为从视在原点 O1 到波尾 50% 峰值点的时间。这套定义来自冲击电压/电流的标准化测量方法,目的是让不同设备、不同实验室测出来的波形可以互相比较。
这里有个关键点:T1 和 T2 是「测量定义」,不是双指数公式里的 a、b。工程上常见的做法是用经验关系把 T1、T2 换算成 a、b,或者反过来先定 a、b 再验证 T1、T2 是否落在标准容差内。常见的实现思路是令a ≈ 0.693/T2(对应半峰值衰减),b则由波前时间反推,近似b ≈ 2.2/T1量级,但这两个近似只在特定比值下够准,1.2/50 和 8/20 的比值差别很大,不能一套系数通吃。这正是原文说「拟和这个曲线有点难度」的根源——标准给的是测量口径,公式要的是衰减常数,中间隔着一层非线性映射。
2.3 为什么 1.2/50 和 8/20 不能共用一套参数
把两组数放在一起看就很清楚。1.2/50 的波前极陡、波尾极长,T2/T1 超过 40;8/20 的比值只有 2.5,波形明显更「胖」。双指数函数的形状由 b/a 的比值决定:比值越大,上升越陡、尾巴越长。所以 1.2/50 需要 b 远大于 a,8/20 则两者接近得多。如果直接把 1.2/50 的 a、b 套到 20kA 场景,得到的波形波前会过缓、波尾会过长,SPD 的残压和能量吸收计算都会偏。
| 试验等级 | 峰值 | 视在波前 T1 | 半峰值 T2 | 波形特征 |
|---|---|---|---|---|
| I 级(CLASS I) | 50 kA | 1.2 μs | 50 μs | 极陡波前、长波尾 |
| II 级 | 20 kA | 8 μs | 20 μs | 波前较缓、波形紧凑 |
这张表也解释了为什么原文要分别写两个公式,而不是改一个系数了事。峰值不同只是缩放,时间参数不同才是形状差异,两者必须分开整定。
3. 参数映射:833333.33 和 1/20000 这两个负数是怎么来的
3.1 PSCAD 指数源的输入口径
PSCAD 里的冲击源常用「指数函数源」或「surge source」组件,它的输入不是 a、b 本身,而是时间常数形式,且符号约定与数学公式相反:衰减项写成exp(-t/τ)时,τ 为正;但组件内部若以exp(k*t)形式求值,要让波形衰减,k 就必须取负。原文里「实际设置时 833333.33 又乘了 2,注意是负值」「1/20000,注意是负值」,说的就是这层符号和量纲转换。
把 1.2/50 的公式拆开看:
i(t) = 50 * (exp(-50e-6 * t) - exp(-1.2e-6 * t))第一个指数项的系数是-50e-6,对应时间常数1/50e-6 = 20000秒的倒数关系;第二个指数项系数是-1.2e-6,对应1/1.2e-6 ≈ 833333.33。所以 833333.33 本质上是1/(1.2e-6),即波前项的时间常数倒数;1/20000 则是50e-6的另一种写法,即波尾项的时间常数。原文说「把峰前时间单取出来、把半峰时间单拿出来」,指的就是把这两个系数分别喂给源组件的两个时间常数输入框。
3.2 为什么波前项还要「乘 2」
原文特别标注「833333.33 又乘了 2」,这是整定里最容易翻车的一步。原因在于:标准定义的 T1 是视在波前时间,而双指数公式里负指数项的系数 b 并不直接等于 1/T1。当用b = 1/(1.2e-6)直接代入时,得到的 10%~90% 上升时间往往小于 1.2 μs,波形偏「瘦」。为了让视在波前时间对上 1.2 μs,需要把 b 调小,也就是把时间常数调大,实践中表现为对 833333.33 再乘一个修正系数(原文取 2 量级)。这个修正不是理论推导出来的唯一值,而是「先按 1/T1 给初值,再仿真比对 10%/90% 点,迭代到落在容差内」的结果。
提示:修正系数与峰值缩放系数 I 是耦合的。改 b 会同时改变峰值时刻和峰值大小,所以整定顺序应该是先定波形形状(T1、T2),再回头校峰值,不要反过来。
3.3 符号、量纲与「负值」的坑
PSCAD 的时间单位是秒,而标准给的是微秒,所有输入都要先乘 1e-6 再取倒数,这一步漏掉就是数量级错误。符号方面,若源组件按exp(k*t)求值,衰减要求 k<0,于是k = -1/τ。原文反复强调「注意是负值」,正是因为很多人填了正的 833333.33,仿真一开始波形就指数爆炸,看起来像发散,实际是符号反了。我一般会这么理解:把「时间常数 τ」和「指数系数 k」当成两个不同的物理量,τ 永远是正的,k 的符号由组件的求值约定决定,填之前先看一眼组件帮助里的公式。
4. 仿真落地:从公式到可运行模型的完整链路
4.1 源组件、测量与波形比对的三段式搭法
一个能验证的雷电波模型,至少包含三段:冲击源、测量支路、波形记录。源用双指数电流源,输出接一个小的采样电阻或直接进电流表;测量支路要保证不影响源的内特性,通常用理想电流探头;波形记录用 PSCAD 的示波器组件,采样步长要远小于 T1,1.2/50 场景下步长取 0.01 μs 量级才能把波前采清楚。下面是一段用 Python 复现双指数波形、并标定 10%/90% 点和半峰值点的脚本,用来在进 PSCAD 之前先把参数验证一遍:
import numpy as np def double_exp(I, a, b, t): # 双指数冲击波形:I 为缩放系数,a 为波尾衰减,b 为波前衰减 return I * (np.exp(-a * t) - np.exp(-b * t)) def apparent_params(I, a, b, t): y = double_exp(I, a, b, t) peak = y.max() t_peak = t[y.argmax()] # 10% 与 90% 峰值点(取上升沿) idx10 = np.where(y[:y.argmax()] >= 0.1 * peak)[0][0] idx90 = np.where(y[:y.argmax()] >= 0.9 * peak)[0][0] t1 = 1.67 * (t[idx90] - t[idx10]) # 视在波前时间 idx50 = np.where(y[y.argmax():] <= 0.5 * peak)[0][0] + y.argmax() t2 = t[idx50] - t[idx10] * 0 # 简化:以起点为参考的半峰值时间 return peak, t_peak, t1, t2 t = np.linspace(0, 100e-6, 200000) # 1.2/50 初值:a=1/50e-6, b=2/(1.2e-6) 量级修正 peak, tp, t1, t2 = apparent_params(50, 1/50e-6, 2/(1.2e-6), t) print(peak, tp, t1, t2)这段脚本的作用不是替代 PSCAD,而是在改参数之前先看趋势:调 b 看 t1 怎么变,调 a 看 t2 怎么变,峰值 peak 随两者联动。参数含义上,a控制波尾衰减速度,越小尾巴越长;b控制波前陡度,越大上升越快;I只做整体缩放。把脚本扫出来的 (a, b) 组合再填进 PSCAD,能少走很多「盲调」的弯路。
4.2 8/20 的整定为什么更麻烦
8/20 的 T2/T1 只有 2.5,双指数函数的两个指数项衰减速度接近,波形在峰值附近比较「圆」,10%/90% 点的位置对 b 的微小变化很敏感。原文说「拟和这个曲线有点难度」,落到操作上就是:b 稍微调大,t1 就明显偏小;调小又会让峰值时刻后移、峰值下降。常见的做法是固定 a 由 T2 反推,再用一维搜索找 b 使 t1 落在 8 μs 容差内,最后用 I 把峰值校到 20 kA。这个过程用上面的脚本循环几十次就能收敛,比在 PSCAD 里手动改一次跑一次快得多。
4.3 仿真图该看哪几个点
仿真跑完后,波形图上真正要核对的是四个量:峰值是否等于 50 kA 或 20 kA、10% 与 90% 上升沿算出的 T1、半峰值点算出的 T2、以及波形是否单调(无二次峰)。二次峰通常意味着两个指数项的系数配比失衡,负项衰减不够快,在波尾阶段又「顶」了一下。把测量光标放在这四个点上截图,就是一份可复核的建模记录,也是这份资源里仿真图和分析部分的价值所在——它给的不只是一条曲线,而是一套可对照的检查点。
5. 避坑与排查:雷电波模型最常见的五类翻车
5.1 波形指数发散,峰值冲到离谱
现象:仿真一开始电流就指数上升,几微秒内到 1e6 量级。原因:时间常数填了正值,或漏乘 1e-6 导致系数大了六个数量级。解决:确认组件求值约定,衰减项系数取负;所有微秒值先换算成秒再取倒数,填完用脚本核对量级。
5.2 峰值总是差一截,怎么调 I 都对不上
现象:把 I 从 50 加到 60,峰值只涨一点,形状还变了。原因:双指数峰值不等于系数 I,且改 I 不改变峰值时刻,但改 a、b 会同时动峰值和 T1、T2。解决:先定形状后校峰值,峰值修正放在最后一步,用peak/I的比例反算需要的 I。
5.3 波前时间明显偏小,波形「太瘦」
现象:算出来 T1 只有 0.6 μs,标准要 1.2 μs。原因:直接把1/T1当 b 用,忽略了视在波前与指数系数的非线性关系。解决:对 b 施加修正系数(原文的「乘 2」量级),用 10%/90% 点迭代验证,不要一次到位。
5.4 半峰值时间对不上,波尾过长或过短
现象:T2 算出来 70 μs 或 30 μs。原因:a 取了1/T2的近似值,而半峰值点定义以视在原点为参考,与纯指数衰减的 0.693/τ 有偏差。解决:以仿真波形的 50% 点为准反推 a,必要时对 a 做小范围搜索,别迷信单一公式。
5.5 采样步长太大,波前被「抹平」
现象:波形看起来没问题,但 T1 算出来偏大、峰值偏低。原因:步长与 T1 同量级,波前只有几个采样点,插值误差大。解决:步长取 T1 的 1/100 以下,1.2/50 场景用 0.01 μs 量级,同时确认示波器组件的输出步长与仿真步长一致。
6. 设计取舍:标准口径与公式口径之间,永远隔着一层整定
雷电波建模最值得琢磨的地方,不是公式本身,而是「标准定义」和「数学表达」之间的错位。GB18802 用视在波前、半峰值这套测量口径来描述波形,因为它要保证不同实验室、不同设备测出来的结果可比;而 PSCAD 的指数源要的是衰减常数,两者之间没有解析的一一对应,只能靠整定逼近。这意味着任何一份雷电波模型,本质上都是「在容差内拟合」,而不是「精确复现」。理解这一点,就不会执着于让仿真曲线和标准曲线逐点重合,而是把注意力放在峰值、T1、T2 三个关键量是否落在容差内。
第二个取舍是参数整定的顺序。形状参数 a、b 和缩放参数 I 是耦合的,先调谁决定了你要迭代几轮。我倾向于先用脚本把 (a, b) 扫到 T1、T2 达标,再一次性用比例修正 I,这样 PSCAD 里只需要跑最后一轮验证。反过来先调 I 再调形状,每改一次形状峰值都变,等于白调。
第三个取舍是模型复杂度。双指数源够用,就不要上更复杂的雷电流模型;但如果要分析 SPD 的能量吸收或多脉冲场景,单条双指数波就不够了,需要考虑后续脉冲和续流。这份资源聚焦在单次冲击波的建模与分析,正好是把基础打牢的那一层——基础波形对不上,后面叠加多少拓扑细节都是空中楼阁。
从那以后我每次搭冲击源,都强制先用脚本把 T1、T2、峰值三个量跑一遍再进仿真界面,省下的返工时间远比写脚本的时间多。希望帮到你。
本文还有配套的精品资源,点击获取