PSASP继保算例文件结构拆解与110kV线路保护定值整定
发布时间:2026/9/15 4:29:34来源:尧图网络
简介这套PSASP继电保护仿真算例资源面向电力系统继保工程师、研究生及电网故障分析学习者以110kV T110典型线路或变电站保护配置为对象帮助理解过流保护、电流速断、距离保护等动作逻辑并验证保护定值与故障切除策略。压缩包共406个文件整体仅324KB主要为MySQL数据库表结构及数据文件132个frm、132个myd和132个myi可还原完整仿真工程另含PSASP工程文件pro、conf、暂态稳定日志slg与T110算例文件便于线下复现、二次调试并支持从故障设置到保护动作报告的全流程验证。对于初学者可直接导入工程查看模型搭建与参数配置对于有经验者可依据仿真结果分析保护动作时序、误动或拒动风险并评估保护配置的合理性。目前已有586人学习下载是结合理论与实践、系统掌握PSASP继保仿真的实用资源。1. 继保算例包藏在文件结构里的线索拿到继保算例包时第一眼看到的不是漂亮的保护配置界面而是一组.fdb数据库、.frm模型模板和version.conf版本文件。这其实暴露了 PSASP 一个核心习惯潮流、短路、暂态稳定、继电保护共用同一套工程数据库元件模型单独用库文件维护。这意味着保护仿真里任何一个动作结果都可能是十几层参数累积出来的。某个继保算例跑不出预期曲线大概率不是保护模块调错了而是某个.frm模型没挂上或者fdbBak恢复时把定值覆盖了。这套算例适合 110 kV 线路和变电站保护配置验证无论是刚接触 PSASP 继保仿真的工程师还是做过几年整定想复现故障的老手都需要先把文件角色理顺。这篇文章按数据链路、模型装配、故障仿真、批量核对这条线拆开重点讲清每个文件在仿真里起什么作用以及常见坑在什么地方。2. 拆解 fdb 与 frm 的算例数据链路2.1 数据库存实例、模板存模型PSASP 的数据组织方式可以概括为「数据库存实例、模板存模型」。.fdb是工程数据库100212205655.fdb这个命名大概率是创建时间戳里面存母线、交流线路、变压器分接头、负荷、发电机等实例数据以及各计算方案的结果缓冲。100212205655.fdbBak是同名备份PSASP 在一致性校验前会自动生成参数改乱后跑不动时第一件事就是看这个备份还在不在。.frm文件则是元件模型描述与具体工程数据分离。同一个算例包里的.frm往往来自不同计算环节搞清楚它们各自挂在哪个环节比直接打开算例更重要。下面这份文件角色表可以当排查对照文件类型在仿真链路中的角色version.conf文本配置记录算例版本与工程路径用于版本兼容校验100212205655.fdb工程数据库潮流、短路、暂稳共用存母线/线路/变压器实例100212205655.fdbBak数据库备份自动备份参数被改坏时的恢复入口l4_0.frm版本化核心库按文件名推断与线路、母线结构模型有关版本迁移时对比用s4_0.frm版本化核心库短路计算任务相关的内核描述故障计算接口依赖它cdb_dcline.frm直流线路数据模型含直流线路的算例描述直流线路静态参数cdb_trans_3w.frm三绕组变压器模型三绕组变压器连接方式、分接头、短路电压百分比lfr_dcline_r.frm直流线路控制模型整流侧控制特性影响故障时直流注入交流侧的电流cpar_avr310_lib.frm励磁调节器模型库发电机励磁系统模型决定短路电流周期分量衰减cpar_gov3_lib.frm调速器模型库原动机调速系统模型影响故障后功率恢复与频率波动l4_0.frm 和 s4_0.frm 这类版本化核心库一般不在界面里直接编辑。它们的作用更像内核快照把新版本内核文件替换进工程目录可以对同一份 fdb 数据做版本对比观察同一故障点在不同计算内核下的短路电流差异。这个手法在做保护灵敏度复核时非常有用后面第五章的脚本思路可以配合这个用法。2.2 用命令行给算例做完整性体检拿到算例包后我习惯先做一次文件体检而不是直接打开 PSASP。三个命令就够了# 1) 看主库与备份库的大小和修改时间 ls -l 100212205655.fdb 100212205655.fdbBak # 2) 对比主库与备份的差异量级判断备份是否可用 cmp -l 100212205655.fdb 100212205655.fdbBak | head -20 # 3) 查看版本配置确认算例来自哪个 PSASP 版本 strings -n 8 version.conf第一条命令看主库与备份的修改时间差。正常情况下 fdbBak 的修改时间不晚于 fdb如果反过来说明备份是被后一次操作覆盖过的直接恢复前要再确认。第二条命令用cmp输出两文件差异的字节位置如果差异只有几十行说明只是近期微调过参数备份可安全回退如果差异行数上千那主库和备份可能根本不是同一套工程直接替换会把整套算例搞乱。第三条用strings提取 version.conf 里的可读字段因为部分版本该文件带 BOM 或非纯文本编码直接cat会看到乱码strings -n 8过滤出不少于 8 个字符的连续字符串通常能拿到发布版本号和工程标识。不同大版本之间 fdb 不能互开这个版本号就是判断能否迁移的依据。2.3 用脚本统计算例包构成文件一多靠肉眼检查不现实。下面的 Python 脚本按扩展名分组统计每个类别的文件数量和最大文件体积用来判断模型库是否完整import os from collections import defaultdict path . stat defaultdict(list) for root, _, files in os.walk(path): for name in files: ext name.rsplit(., 1)[-1] if . in name else (none) stat[ext].append(os.path.join(root, name)) for ext, files in sorted(stat.items()): sizes [os.path.getsize(f) for f in files] print(f{ext:12s} count{len(files):3d} max{max(sizes)})跑完输出后重点看三类frm 文件数量是否覆盖了线路、变压器、励磁、调速器这些必备模型fdb 是否同时有主库和备份有没有混入多余的文件。如果 frm 数量明显少于正常运行工程多半是复制时漏了库文件。漏文件的后果是 PSASP 前端还能打开工程但挂接模型时提示「找不到指定模型」比 fdb 缺失更隐蔽。这个脚本不用改在哪个算例目录下执行就检查哪个目录。3. 元件模型库装配与 110kV 保护定值整定3.1 保护仿真依赖的元件模型链很多人在继保仿真里犯的第一个错是拿到了算例就直奔保护配置界面却忽略了短路电流是从哪算出来的。保护动作判据的本质是「电流超过定值」或「阻抗落入动作区」而故障电流由系统阻抗和电源模型决定。cpar_avr310_lib.frm励磁调节器库决定故障瞬间发电机的励磁顶值电压和内电势变化直接影响短路电流周期分量衰减。靠近电源侧的 110 kV 母线发生三相短路时如果励磁模型没挂短路电流可能被算低一截速断保护会拒动。cpar_gov3_lib.frm调速器模型库影响故障后原动机输出功率的恢复曲线对低频减载配合校验很重要但它不参与故障瞬间的短路电流计算。这个区分要记住短路电流主要看励磁模型暂态过程中的功率摆动和频率变化主要看调速器模型。至于直流部分cdb_dcline.frm和lfr_dcline_r.frm是成对出现的前者描述直流线路的静态数据后者描述整流侧控制规律。交直流混联系统中直流电流控制会改变交流侧故障电流的相位和幅值换相失败期间零序电流里会出现非线性分量零序保护的动作行为会和纯交流算例明显不同。如果该算例不研究交直流耦合这两个文件可以不挂但定值校验时要在报告里注明直流模型未参与。3.2 算例挂接的五个步骤在 PSASP 里把这套算例跑起来我一般按下面顺序装配设置模型库路径。在工程属性里把库文件目录指向算例包根目录注意不要只指到某个子目录否则运行时找不到配套的版本化核心库。导入 fdb 工程数据库。选择 100212205655.fdb 作为当前工程库导入前先备份原有工程避免库结构不一致时把已有数据覆盖掉。给发电机分配 AVR 和 GOV 模型。在动态模型映射界面从 cpar_avr310_lib.frm 和 cpar_gov3_lib.frm 中选择与实际机组型号对应的典型模型挂接到 fdb 里的发电机设备上。这一步最容易漏漏了之后短路电流衰减特性完全不对。核对变压器与线路参数。从 cdb_trans_3w.frm 中读取三绕组变压器的短路电压百分数换算成标幺值后填入对应卡片。母线基准电压和基准容量要全工程统一否则保护定值归算全是错的。定义保护配置。在保护配合界面给线路两侧配置三段式距离保护和四段式零序电流保护110 kV 中性点接地系统里零序保护负责接地故障距离保护负责相间故障两者缺一不可。其中第 5 步的定值不是瞎填的。可以用短路计算先跑出各故障点的短路电流再用手算公式验证保护定值是否合理。下面这段 awk 就是估算线路末端三相短路电流并计算速断 I 段定值的常用做法# EB 为母线电压标幺值Zsys 为系统等值阻抗Zline 为线路阻抗base 为基准容量下电流基准 # 实际整定时 Zsys 取最大运行方式保证 I 段有最长保护范围 awk BEGIN{eb1.05; zs0.08; zl0.21; base1000; ieb/(zszl)*base; print 线路末端三相短路电流(kA) , i; print 速断I段定值(可靠系数1.25) , i*1.25}这段命令用标幺值估算线路末端短路电流乘上 1.2 到 1.3 的可靠系数得到速断定值。Zsys 取系统最大运行方式下的等值阻抗这样 I 段保护范围最长而灵敏度校验时则要换成最小运行方式的等值阻抗防止末端故障时灵敏度不够。PSASP 的短路计算输出可以直接给出各故障点的短路电流把计算值和整定公式对查能快速定位算例里定值不合理的地方。3.3 110 kV 线路定值配合参数表110 kV 线路保护通常按三段式配合每一段的整定原则和时间级差有固定套路。下面的参数表是我处理 T110 这类算例时常用的基准具体数值要按算例中线路阻抗和相邻线路情况调整保护段整定原则时间配合校验要求I 段电流速断/距离 I 段躲过本线路末端最大短路电流或最小测量阻抗0 s 瞬时动作保护范围不伸出本线路末端II 段限时电流速断/距离 II 段与相邻线路 I 段配合取 1.1~1.2 倍定值比相邻 I 段大 0.3~0.5 s本线路末端故障灵敏系数不小于 1.3III 段定时过电流/距离 III 段按躲过最大负荷电流并计及电动机自启动整定与相邻线路 II 段或 III 段配合远后备灵敏系数不小于 1.2表格里的定值是保护装置的一次定值在 PSASP 保护模型里要换算成二次值涉及 CT 变比和 PT 变比。算例包里的定值表通常只给一次值仿真时需要在参数卡里正确填写变比让软件自动折算到二次侧。这个换算错误是继保定值仿真结果异常的头号原因保护动作逻辑完全正确但动作边界偏移了几百安培原因就是变比填反了。4. 故障卡设置与保护动作时间校验4.1 故障卡参数怎么设给 T110 算例设置短路故障时我习惯先做金属性短路确认保护逻辑正确后再加过渡电阻。故障卡的几个关键参数如下参数典型取值说明故障类型三相短路 / 单相接地校验相间保护用三相校验零序保护用单相接地故障点位置线路首端 / 中点 / 末端逐点扫描可画出保护范围曲线过渡电阻0 / 10 / 100 欧姆接地故障零序保护受过渡电阻影响显著故障起始时刻0.2 s留出系统稳定建立时间故障持续时间0.1 ~ 0.3 s要大于保护动作时间否则观察不到完整跳闸过程故障点位置选择有一个原则先放在线路末端验证 I 段是否可靠不动作再放到线路中点验证 II 段是否可靠动作。这样一轮下来保护范围就出来了。设置完故障卡之后先不投入保护自动功能只做短路电流计算确认故障电流水平与理论估算一致然后再投入保护模型做机电暂态仿真观察动作时序。两步分开做能避免「电流算错」和「保护逻辑错」混在一起这是处理继保算例最省时间的流程。4.2 动作时序判读与脚本校验保护动作时间判读有两个维度。横向看主保护与后备保护配合I 段瞬时动作II 段比相邻 I 段慢 0.3 到 0.5 秒时间级差要拉开。纵向看同一故障下母线两侧保护动作顺序近故障侧先动远故障侧后动如果顺序反过来说明定值配合有问题。PSASP 导出的保护动作报表一般是 CSV 格式手动核对多组算例太慢我用下面的脚本做批量校验import csv import sys # 期望动作时间窗口单位秒 EXPECT { LINE1P_DIST_I: (0.02, 0.06), LINE1P_DIST_II: (0.35, 0.55), LINE1P_ZERO_I: (0.02, 0.06), } def main(path): with open(path, newline) as f: rows list(csv.DictReader(f)) for r in rows: key r.get(Relay) or r.get(Prot) t float(r.get(TripTime) or r.get(Time)) lo, hi EXPECT.get(key, (0, 5)) status OK if lo t hi else CHECK print(f{key:20s} t{t:6.3f}s range({lo},{hi}) {status}) if __name__ __main__: main(sys.argv[1])这个脚本读取 PSASP 导出的保护动作报表Relay 列是保护段名TripTime 列是动作时间期望区间用字典维护。输出中 OK 表示动作时间在窗口内CHECK 表示需要人工复核。CHECK 的原因通常是两类时间慢了但逻辑对说明时间级差没拉开或者是根本没在预期段动作说明启动电流或阻抗定值越界。脚本里的 EXPECT 字典可以随算例修改不同线路段加一行就能扩展。4.3 异常结果的三个高频方向仿真结果不对时先看是不是下面三个方向的问题。第一个是保护拒动特征是最末端故障时保护没出口。优先检查发电机励磁模型是否挂上励磁顶值电压没设置时短路电流衰减过快末端故障电流会低于速断定值。第二个是保护误动常见于故障切除后负荷恢复阶段III 段过流保护被涌流或功率倒送触发。这时先区分是定值偏低还是时间偏短不要一上来就改定值。第三个是切除总时间超限保护本身动作时间正常但断路器分闸时间没计入总切除时间。单相接地算例还要看重合闸时间与系统振荡周期的配合重合太快可能在线路未完全去游离时再次击穿故障发展为相间故障。5. 用轻量脚本批量核对定值与动作窗口5.1 多算例目录下的定值漂移检查实际工作中算例不止一个同一个工程不同日期导出的 fdb可能改了定值但忘了更新记录表。多个算例混在同一目录时靠人工逐个核对不现实。下面这个脚本把 PSASP 导出的定值表和动作报表放同一个目录自动对比基准定值和仿真输出import glob import os import csv def load_settings(base): 加载 *_settings.csv以 (线路, 段别) 为键存定值基准 out {} for rel in glob.glob(os.path.join(base, *_settings.csv)): with open(rel, newline) as f: for row in csv.DictReader(f): out[(row[Line], row[Segment])] float(row[Setting]) return out def compare(base): ref load_settings(base) for rep in glob.glob(os.path.join(base, *_result.csv)): with open(rep, newline) as f: for row in csv.DictReader(f): key (row[Line], row[Segment]) if key in ref and abs(float(row[Value]) - ref[key]) 1e-3: print(rep, key, changed) compare(.)脚本把_settings.csv里的整定值当基准逐个对比_result.csv的仿真值差值超过阈值就输出文件名和定值段。结合第四章的动作时间脚本每次定值改版后只需要跑这两条命令就能同时确认「定值有没有被误改」和「动作时间还在不在窗口内」两个问题。归档算例包时把 version.conf 一起拷贝多个算例混在同一目录时靠版本号区分数据链来源避免下次调试时拿错库。本文还有配套的精品资源点击获取
网站建设高端定制企业官网