2026-03-02 18:18:46 +08:00
|
|
|
|
# EGM - 输电线路绕击跳闸率计算程序
|
|
|
|
|
|
|
|
|
|
|
|
基于电气几何模型(Electro-Geometric Model, EGM)的架空输电线路雷电防护性能计算工具,用于评估输电线路的绕击跳闸率。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
|
|
|
|
|
- 支持单回和双回输电线路的绕击跳闸率计算
|
|
|
|
|
|
- 考虑工作电压对雷电击距的影响
|
|
|
|
|
|
- 支持地面倾角参数
|
|
|
|
|
|
- 支持自定义地闪密度和雷电流概率密度曲线
|
|
|
|
|
|
- 支持交流/直流线路计算
|
|
|
|
|
|
- 输出CAD图形(DXF格式)可视化击距模型
|
|
|
|
|
|
- 提供动画演示模式(可选项)
|
2026-03-02 19:39:28 +08:00
|
|
|
|
- **提供图形化界面(pywebview)**,支持可视化参数配置和计算
|
2026-03-02 18:18:46 +08:00
|
|
|
|
|
|
|
|
|
|
## 安装
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
|
|
|
|
|
- Python >= 3.12
|
2026-03-03 17:36:19 +08:00
|
|
|
|
- Node.js >= 18(图形界面开发需要)
|
2026-03-02 18:18:46 +08:00
|
|
|
|
|
|
|
|
|
|
### 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 使用 uv(推荐)
|
|
|
|
|
|
uv sync
|
|
|
|
|
|
|
|
|
|
|
|
# 或使用 pip
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 依赖包
|
|
|
|
|
|
|
|
|
|
|
|
- ezdxf - DXF文件生成
|
|
|
|
|
|
- loguru - 日志记录
|
|
|
|
|
|
- matplotlib - 数据可视化和动画
|
|
|
|
|
|
- numpy - 数值计算
|
|
|
|
|
|
- tomli - TOML配置文件解析
|
2026-03-02 19:39:28 +08:00
|
|
|
|
- pywebview - 图形界面框架
|
2026-03-02 18:18:46 +08:00
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
|
|
|
|
|
### 基本使用
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 使用默认配置文件
|
|
|
|
|
|
python main.py
|
|
|
|
|
|
|
|
|
|
|
|
# 指定配置文件
|
|
|
|
|
|
python main.py <配置文件路径>.toml
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 批量计算
|
|
|
|
|
|
|
|
|
|
|
|
批量计算不同保护角下的跳闸率:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python main-batch.py <配置文件路径>.toml
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
结果将输出到 `r.txt` 文件中。
|
|
|
|
|
|
|
|
|
|
|
|
### 打包为可执行文件
|
|
|
|
|
|
|
|
|
|
|
|
使用 Makefile 打包:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
make
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
生成的可执行文件位于 `dist/Lightening.exe`
|
|
|
|
|
|
|
2026-03-02 19:39:28 +08:00
|
|
|
|
### 图形界面使用
|
|
|
|
|
|
|
|
|
|
|
|
程序提供基于 pywebview 的图形界面,使用 Vue 3 + Quasar + TypeScript + Tailwind CSS 开发。
|
|
|
|
|
|
|
|
|
|
|
|
#### 安装前端依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd webui
|
|
|
|
|
|
npm install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 开发模式运行
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 终端1:启动前端开发服务器
|
|
|
|
|
|
cd webui
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
|
|
|
|
|
|
# 终端2:启动 pywebview 窗口
|
|
|
|
|
|
python webview_app.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 生产模式运行
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 构建前端
|
|
|
|
|
|
cd webui
|
|
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
|
|
|
|
# 启动 pywebview 窗口
|
|
|
|
|
|
python webview_app.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
图形界面支持:
|
|
|
|
|
|
- 可视化参数配置(基本参数、高级参数、可选参数)
|
|
|
|
|
|
- 动态添加/删除数组参数
|
|
|
|
|
|
- 参数导出功能
|
|
|
|
|
|
- 计算结果展示
|
|
|
|
|
|
|
|
|
|
|
|
详细说明请参考 `webui/README.md`
|
|
|
|
|
|
|
2026-03-02 18:18:46 +08:00
|
|
|
|
## 配置文件格式
|
|
|
|
|
|
|
|
|
|
|
|
配置文件使用 TOML 格式,包含三个主要部分:
|
|
|
|
|
|
|
|
|
|
|
|
### [parameter] - 基本参数
|
|
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
|
[parameter]
|
|
|
|
|
|
rated_voltage = 750 # 额定电压等级 (kV)
|
|
|
|
|
|
h_c_sag = 14.43 # 导线弧垂 (m)
|
|
|
|
|
|
h_g_sag = 11.67 # 地线弧垂 (m)
|
2026-03-03 17:36:19 +08:00
|
|
|
|
insulator_c_len = 7.4 # 导线串子绝缘长度 (m)
|
2026-03-02 18:18:46 +08:00
|
|
|
|
string_c_len = 9.2 # 导线串长 (m)
|
|
|
|
|
|
string_g_len = 0.5 # 地线串长 (m)
|
2026-03-03 17:36:19 +08:00
|
|
|
|
h_arm = [130, 100] # 导、地线挂点垂直距离 (m),第一个值为地线挂点高度
|
2026-03-02 18:18:46 +08:00
|
|
|
|
gc_x = [17.9, 17] # 导、地线水平坐标 (m)
|
|
|
|
|
|
ground_angels = [0] # 地面倾角 (°),向下为正,支持多个角度
|
|
|
|
|
|
altitude = 1000 # 海拔高度 (m)
|
|
|
|
|
|
td = 20 # 雷暴日 (d)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### [advance] - 高级参数
|
|
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
|
[advance]
|
|
|
|
|
|
ng = -1 # 地闪密度 (次/(km²·a)),大于0时使用此值,否则通过雷暴日计算
|
|
|
|
|
|
Ip_a = -1 # 雷电流概率密度曲线系数a,大于0时使用此值
|
|
|
|
|
|
Ip_b = -1 # 雷电流概率密度曲线系数b,大于0时使用此值
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-03 17:36:19 +08:00
|
|
|
|
**注意**:当 `ng` > 0 时,不会通过雷暴日计算地闪密度;当 `Ip_a` 和 `Ip_b` > 0 时,不会使用默认雷暴日对应的概率密度。
|
2026-03-02 18:18:46 +08:00
|
|
|
|
|
|
|
|
|
|
### [optional] - 可选参数
|
|
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
|
[optional]
|
|
|
|
|
|
voltage_n = 3 # 计算时电压分成多少份(考虑电压波动影响)
|
|
|
|
|
|
max_i = 200 # 最大尝试雷电流 (kA)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 计算原理
|
|
|
|
|
|
|
|
|
|
|
|
### 击距模型
|
|
|
|
|
|
|
|
|
|
|
|
程序使用基于电气几何模型的方法计算绕击跳闸率,主要涉及以下击距公式:
|
|
|
|
|
|
|
|
|
|
|
|
1. **地线击距**:$r_s = 10 \times I^{0.65}$
|
|
|
|
|
|
2. **导线击距**:$r_c = 1.63 \times (5.015 \times I^{0.578} - 0.001 \times U_{ph})^{1.125}$
|
|
|
|
|
|
3. **地面击距**:
|
|
|
|
|
|
- $h_{av} < 40m$: $r_g = (3.6 + 1.7 \ln(43 - h_{av})) \times I^{0.65}$
|
|
|
|
|
|
- $h_{av} \ge 40m$: $r_g = 5.5 \times I^{0.65}$
|
|
|
|
|
|
|
|
|
|
|
|
### 地闪密度计算
|
|
|
|
|
|
|
|
|
|
|
|
根据 Q/GDW 11452-2015 导则:
|
|
|
|
|
|
|
|
|
|
|
|
$N_g = 0.023 \times T_d^{1.3}$
|
|
|
|
|
|
|
|
|
|
|
|
### 跳闸率计算
|
|
|
|
|
|
|
|
|
|
|
|
通过积分暴露弧面积与雷电流概率密度的乘积得到最终跳闸率,并考虑建弧率。
|
|
|
|
|
|
|
|
|
|
|
|
## 输出结果
|
|
|
|
|
|
|
|
|
|
|
|
1. **控制台日志**:显示详细的计算过程和中间结果
|
|
|
|
|
|
2. **DXF文件**:egm1.dxf、egm2.dxf 等,可视化击距模型
|
|
|
|
|
|
3. **跳闸率结果**:单位为 次/(100km·a)
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
EGM/
|
|
|
|
|
|
├── main.py # 主程序入口
|
|
|
|
|
|
├── main-batch.py # 批量计算程序
|
|
|
|
|
|
├── core.py # 核心计算模块
|
|
|
|
|
|
├── animation.py # 动画演示模块
|
2026-03-02 19:39:28 +08:00
|
|
|
|
├── webview_app.py # pywebview 图形界面后端
|
2026-03-02 18:18:46 +08:00
|
|
|
|
├── article.toml # 示例配置文件
|
2026-03-03 17:36:19 +08:00
|
|
|
|
├── default.toml # 默认配置文件
|
2026-03-02 18:18:46 +08:00
|
|
|
|
├── Makefile # 构建脚本
|
|
|
|
|
|
├── pyproject.toml # 项目配置
|
|
|
|
|
|
├── README.md # 说明文档
|
2026-03-02 19:39:28 +08:00
|
|
|
|
├── webui/ # 图形界面前端项目
|
|
|
|
|
|
│ ├── src/
|
|
|
|
|
|
│ │ ├── components/
|
2026-03-03 17:36:19 +08:00
|
|
|
|
│ │ │ ├── ParameterForm.vue # 参数表单组件
|
|
|
|
|
|
│ │ │ ├── Animation.vue # 动画可视化组件
|
|
|
|
|
|
│ │ │ └── Log.vue # 日志显示组件
|
2026-03-02 19:39:28 +08:00
|
|
|
|
│ │ ├── types/
|
2026-03-03 17:36:19 +08:00
|
|
|
|
│ │ │ └── index.ts # TypeScript 类型定义
|
|
|
|
|
|
│ │ ├── App.vue # 主应用组件
|
|
|
|
|
|
│ │ ├── main.ts # 应用入口
|
|
|
|
|
|
│ │ └── style.css # 全局样式
|
|
|
|
|
|
│ ├── package.json # 前端依赖配置
|
|
|
|
|
|
│ ├── vite.config.ts # Vite 配置
|
|
|
|
|
|
│ ├── tsconfig.json # TypeScript 配置
|
|
|
|
|
|
│ ├── tailwind.config.js # Tailwind CSS 配置
|
|
|
|
|
|
│ └── index.html # HTML 入口
|
|
|
|
|
|
├── CSharp/ # C# 版本实现
|
|
|
|
|
|
└── 历史/ # 历史配置文件和DXF文件
|
2026-03-02 18:18:46 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 技术支持
|
|
|
|
|
|
|
|
|
|
|
|
程序基于新版大手册公式和 Q/GDW 11452-2015《架空输电线路防雷导则》实现。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
请参考项目许可证文件。
|