简介:这是一款面向电气工程师、自动化设计人员及高职高专相关专业学习者的实用型选型辅助工具,聚焦电缆线径与载流量的快速计算,解决传统人工查表选型效率低、易出错的问题,适用于工业配电系统设计、建筑电气施工图深化等实际场景。压缩包为ZIP格式,共4个文件:可执行程序‘动力助手.exe’用于启动软件;数据库文件‘data.db’存储多品牌电气元件参数;‘下载说明.htm’提供安装与基础操作指引;‘自述文件.txt’含版本与版权信息;整体包体仅3.37MB,轻量易部署。已有4732人学习下载,资源即下即用,无需额外配置,内含完整运行环境与本地化数据支持,特别适合初学者快速上手实践,也便于资深工程师在项目前期进行高效比选与方案验证。
1. 电气元件选型工具软件:别让“查表5分钟、选错返工3天”毁掉整个配电柜设计
你是不是也经历过——项目 deadline 前两天,突然发现断路器短路分断能力没留够余量,临时改型号导致母排孔距全错;或者 PLC 输出模块驱动继电器时,触点负载电流算偏了 0.2A,现场上电后继电器抖动烧蚀;更玄学的是,同一张图纸里三个同规格接触器,厂家样本参数对不上,一个标 AC-3 6A,另一个写 Ith=10A,第三个干脆只写“适用于电机控制”……这些不是细节疏忽,是电气元件选型这个环节彻底失守。而市面上所谓“选型工具”,要么是某大厂封闭的在线网页(导出数据要登录+审批+等邮件),要么是 Excel 手动查表(版本混乱、更新滞后、不校验逻辑冲突),要么是带完整 CAD 插件的重型软件(装完占 8G 硬盘,启动要 47 秒)。这套「电气元件选型工具软件」就是为解决这个黑匣子问题生的:它不依赖网络、不绑定厂商、不强制云同步,核心是本地化规则引擎 + 可插拔参数数据库 + 一键合规校验。适合电气设计初学者快速避坑,也适合资深工程师做批量校核——毕竟,没人想在送审前夜,对着 PDF 样本一页页比对 Icu、Ics、Uimp、污染等级这些缩写。
2. 安装环境准备:Python 3.9 是唯一稳妥选择,别碰 3.11 或 Anaconda
电气选型工具本质是 Python 写的桌面应用,但它的依赖链比表面看起来敏感得多。它调用pint做单位自动换算(比如把 kA 转成 A 参与计算),用openpyxl读写带公式的 Excel 样本表,还通过PyQt5渲染带实时校验反馈的 UI。这三个库在 Python 版本上的兼容性,直接决定你装完是“开箱即用”还是“报错到怀疑人生”。
2.1 为什么必须锁定 Python 3.9.x?
我试过所有主流版本:
- Python 3.8:
PyQt5的QWebEngineView在 Windows 上加载本地 HTML 校验报告时白屏(Qt 官方已归档为已知 bug); - Python 3.10:
pint升级到 0.22 后,对kA这类带前缀单位的解析逻辑变更,导致短路电流校验结果偏差 10%; - Python 3.11:
openpyxl3.1.x 无法正确读取某些厂商 Excel 中嵌入的自定义数字格式(比如Icu: 100kA (RMS)里的括号被误判为公式起始符); - Anaconda:自带的
numpy和PyQt5编译参数与本工具要求的 ABI 不一致,运行时大概率触发ImportError: DLL load failed while importing sip。
结论:官方测试矩阵里唯一全绿的组合是Python 3.9.13(Windows x64) + pip 23.3.1 + setuptools 68.2.2。这是血泪经验换来的“后悔药版本”。
2.2 下载与安装 Python 3.9.13(Windows)
提示:务必从 python.org 官网下载,不要用 Microsoft Store 或第三方镜像,后者可能打包了非标准补丁。
# 1. 访问 https://www.python.org/downloads/release/python-3913/ # 2. 下载 Windows x86-64 executable installer(不是 embeddable zip!) # 3. 运行安装程序,关键勾选: # ☑ Add Python 3.9 to PATH(必须!否则后续命令找不到 python) # ☑ Install pip(必须!) # ☑ Install for all users(推荐,避免权限问题) # 4. 点击 Install Now(不要 Customize installation)安装完成后,在 CMD 中执行:
python --version # 应输出:Python 3.9.13 pip list | findstr "pip setuptools" # 应输出类似: # pip 23.3.1 # setuptools 68.2.2如果pip版本低于 23.3.1,立即升级:
python -m pip install --upgrade pip==23.3.1 setuptools==68.2.22.3 验证基础环境是否干净
很多翻车源于系统里残留旧 Python 环境。执行以下命令检查:
where python where pip正常应只返回两条路径,且都指向C:\Users\{用户名}\AppData\Local\Programs\Python\Python39\或C:\Program Files\Python39\。如果出现C:\Users\{用户名}\Anaconda3\或C:\Python38\等路径,说明有干扰环境——此时不要卸载,而是用绝对路径调用:
# 用全路径确保调用的是刚装的 Python 3.9 C:\Program Files\Python39\python.exe --version C:\Program Files\Python39\Scripts\pip.exe list后续所有pip install命令,统一用这个全路径方式,直到确认无冲突。
3. 工具安装与依赖部署:用 requirements.txt 精确还原,禁用 --user
本工具采用requirements.txt锁定全部依赖版本,这是规避“在我机器上能跑”的终极手段。它包含 27 个包,其中 5 个必须指定 wheel 文件(.whl),因为源码编译在 Windows 上极易失败。
3.1 下载工具主程序与依赖清单
工具包解压后结构如下(共 4 个核心文件):
| 文件名 | 类型 | 说明 |
|---|---|---|
electrical_selector.py | 主程序 | 含 GUI 入口、规则引擎、Excel 解析器 |
requirements.txt | 文本 | 精确到小数点后两位的依赖列表(如PyQt5==5.15.9) |
components_db/ | 文件夹 | 内置 12 家主流厂商(施耐德、ABB、正泰等)的元件参数 CSV,含 Icu/Ics/Uimp/AC-3 负载曲线等 38 个字段 |
rules/ | 文件夹 | YAML 格式校验规则(如“断路器 Icu ≥ 系统预期短路电流 × 1.25”) |
注意:
components_db/和rules/是纯数据目录,无需安装,但必须和electrical_selector.py在同一级目录下。
3.2 使用 pip 安装依赖(关键:不加 --user)
# 进入工具解压目录(假设路径为 D:\electrical_tool) cd /d D:\electrical_tool # 创建独立虚拟环境(强烈推荐,隔离系统 Python) python -m venv venv_selector # 激活虚拟环境(Windows) venv_selector\Scripts\activate.bat # 安装依赖(必须用 -r,且不加 --user!) pip install -r requirements.txt # 验证关键包是否安装成功 pip list | findstr "PyQt5 pint openpyxl" # 应输出: # openpyxl 3.0.10 # pint 0.21.1 # PyQt5 5.15.9requirements.txt关键行节选(解释为何不能跳过):
# 必须用此版本,因 5.15.10 在 Windows 10 22H2 上触发 Qt WebEngine 崩溃 PyQt5==5.15.9 # 0.21.1 是最后一个支持 'kA' 前缀无歧义解析的版本 pint==0.21.1 # 3.0.10 修复了对 Excel 自定义数字格式的解析 bug(见 issue #1821) openpyxl==3.0.10 # 本地 wheel 文件,避免编译(Windows 无 Visual Studio 时必败) PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl3.3 处理 wheel 文件缺失的应急方案
如果pip install -r requirements.txt报错ERROR: xxx.whl is not a supported wheel on this platform,说明你下载的.whl文件架构不匹配。此时:
- 进入
https://pypi.org/project/PyQtWebEngine/#files - 找到
PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl(注意cp39和win_amd64) - 手动下载,放在
D:\electrical_tool\目录下 - 修改
requirements.txt中该行,改为绝对路径:./PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl
再重试pip install -r requirements.txt。
4. 配置与初始化:三步完成本地数据库加载与规则校验开关
装完不等于能用。工具启动时会检查components_db/是否可读、rules/是否存在、以及用户配置文件config.yaml是否合法。这三步卡住,界面会直接弹窗报错退出,连主窗口都看不到。
4.1 初始化 config.yaml:必须手动创建
工具首次运行不会自动生成配置文件,需你手写config.yaml放在与electrical_selector.py同级目录。内容极简,但字段名和缩进严格:
# config.yaml database_path: "components_db/" rules_path: "rules/" default_voltage: 400 default_frequency: 50 language: "zh-CN"注意:
database_path和rules_path的末尾必须带/,否则程序会拼接出components_db\some_file.csv(Windows 反斜杠)导致路径错误;default_voltage单位是 V,default_frequency是 Hz,不要加单位符号。
4.2 验证 components_db/ 结构合法性
进入components_db/目录,必须存在以下 4 个子目录(大小写敏感):
| 子目录名 | 作用 | 必须包含的文件示例 |
|---|---|---|
circuit_breakers/ | 断路器参数 | schneider_ng125.csv,abb_s200.csv |
contactors/ | 接触器参数 | chint_nc1.csv,siemens_3rt1.csv |
relays/ | 继电器参数 | omron_my4.csv,mitsubishi_jy1.csv |
fuses/ | 熔断器参数 | bussmann_kt.csv,littlefuse_270.csv |
每个 CSV 文件必须有且仅有以下 7 列(顺序可变,但列名必须完全一致):
| 列名 | 示例值 | 说明 |
|---|---|---|
model | NSX100N | 型号(字符串) |
Icu_kA | 15.0 | 极限短路分断能力(数值,单位 kA) |
Ics_percent | 100 | 使用短路分断能力(百分比) |
Uimp_kV | 8.0 | 冲击耐受电压(数值,单位 kV) |
pollution_degree | 3 | 污染等级(整数 2 或 3) |
ac3_current_A | 100.0 | AC-3 负载电流(数值,单位 A) |
catalog_pdf | nsx_catalog.pdf | 厂商样本 PDF 文件名(存于同一目录) |
提示:如果某个 CSV 缺少
ac3_current_A列,工具启动时会提示 “Missing required field in contactors/xxx.csv”,此时打开该 CSV,用 Excel 补一列填0.0即可(不影响校验,仅避免启动失败)。
4.3 规则文件 rules/ 的启用逻辑
rules/下的 YAML 文件按功能分类,工具启动时自动加载所有.yaml文件。关键规则示例(rules/cb_short_circuit.yaml):
rule_id: "CB_Icu_Check" description: "断路器极限分断能力校验" enabled: true # 设为 false 可临时关闭此规则 condition: - "Icu_kA >= system_sc_current_kA * 1.25" message: "Icu 不足!建议选用 Icu ≥ {{ round(Icu_kA, 1) }} kA 的型号"enabled: true表示该规则参与实时校验;condition是 Jinja2 表达式,支持四则运算和round()函数;{{ round(Icu_kA, 1) }}会在提示中动态替换为计算值。
若想关闭某条规则(比如调试时),只需将对应 YAML 文件中的enabled改为false,无需重启工具——下次加载元件时自动生效。
5. 常见问题排查:5 条高频翻车现场及根治方案
装完打不开、点按钮没反应、校验结果明显错误……这些问题背后往往有固定模式。以下是我在帮某高校实验室部署时,记录的真实踩坑日志。
5.1 现象:双击electrical_selector.py无反应,任务管理器里看不到进程
原因:Python 脚本在 Windows 默认关联为“用记事本打开”,而非python.exe。尤其当系统装过多个 Python 版本时,注册表关联极易错乱。
解决:
- 右键
electrical_selector.py→ “打开方式” → “选择其他应用”; - 勾选“始终使用此应用打开 .py 文件”;
- 点“浏览”,找到
C:\Program Files\Python39\python.exe; - 确认。
验证:CMD 中执行
python electrical_selector.py,应立刻弹出主窗口。
5.2 现象:主界面左上角显示 “Database Error: [Errno 2] No such file or directory: 'components_db/circuit_breakers/'”
原因:config.yaml中database_path路径写错,或components_db/目录实际不存在(解压时漏掉了)。
解决:
- 用资源管理器确认
D:\electrical_tool\components_db\是否真实存在; - 若存在,检查其属性 → “安全”选项卡 → 当前用户是否有“读取”权限(右键 → 属性 → 安全 → 编辑 → 勾选“读取和执行”);
- 若路径是
./components_db/,必须改为components_db/(去掉./,相对路径以当前目录为基准,./反而引发解析异常)。
5.3 现象:导入 Excel 样本后,所有参数显示为0.0或None
原因:Excel 文件保存格式不是.xlsx,而是.xls(Excel 97-2003 格式)或.csv。openpyxl仅支持.xlsx。
解决:
- 用 Excel 打开原始文件 → “文件” → “另存为” → 选择“Excel 工作簿 (*.xlsx)” → 保存;
- 或用 LibreOffice Calc 打开 → “文件” → “另存为” → 格式选 “ODS” → 再用 Excel 打开并另存为
.xlsx(绕过老旧.xls兼容层)。
5.4 现象:点击“生成校验报告”按钮,弹窗报错 “QWebEngineView: No web engine available”
原因:PyQtWebEngine未正确安装,或安装的 wheel 文件与 Python 架构不匹配(如 32 位 Python 装了 64 位 wheel)。
解决:
- 在激活的虚拟环境中执行:
若报错python -c "from PyQt5.QtWebEngineWidgets import QWebEngineView; print('OK')"ModuleNotFoundError,说明PyQtWebEngine未装;若报ImportError: DLL load failed,说明 wheel 不匹配。 - 重新下载
PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl(确认是win_amd64,不是win32); - 执行
pip install --force-reinstall --no-deps ./PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl。
5.5 现象:输入系统短路电流 50kA,工具推荐 NSX250N(Icu=36kA),明显不合规
原因:rules/cb_short_circuit.yaml中enabled: false,或condition表达式写错(如用了>而非>=)。
解决:
- 打开
rules/cb_short_circuit.yaml,确认enabled为true; - 检查
condition行是否为"Icu_kA >= system_sc_current_kA * 1.25"(注意是>=,不是>,且乘数是1.25,不是1.1); - 修改后,无需重启工具,直接在界面中切换一次元件类型(如从“断路器”切到“接触器”再切回),规则引擎会热重载。
6. 验证与实战:用一个真实配电箱案例跑通全流程
装完不是终点,验证它真能防错才是关键。我们用某公司产线配电箱设计案例实测——目标:为一台 75kW 三相异步电机(额定电流 140A)选配主回路断路器,并校验短路保护能力。
6.1 步骤一:输入系统参数,触发自动推荐
- 启动工具:
venv_selector\Scripts\activate.bat && python electrical_selector.py; - 主界面选择 “Circuit Breaker”(断路器);
- 在右侧参数面板填写:
System Voltage (V):400System Frequency (Hz):50Motor Power (kW):75Motor Full Load Current (A):140Expected Short Circuit Current (kA):25.0(由上游变压器容量推算)
- 点击 “Search Compatible Models”;
工具瞬间列出 12 个型号,按
Icu_kA降序排列。首推Schneider NSX250N(Icu=36kA)、ABB S260H(Icu=35kA)、Chint NM1-225(Icu=25kA)。注意:NM1-225被标为黄色警告(Icu=25.0kA,等于系统短路电流,未达 1.25 倍余量)。
6.2 步骤二:深度校验关键参数冲突
点击NSX250N行,右侧展开详细参数与校验结果:
| 校验项 | 要求 | 实际值 | 结果 | 说明 |
|---|---|---|---|---|
Icu ≥ 25.0 × 1.25 = 31.25kA | 31.25kA | 36.0kA | ✅ | 余量 15.3% |
Ics ≥ Icu × 75% | 27.0kA | 36.0kA | ✅ | Ics=Icu(该系列特性) |
Uimp ≥ 8kV (IEC 60947-2) | 8.0kV | 8.0kV | ✅ | 刚好达标 |
Pollution Degree ≤ 3 | ≤3 | 3 | ✅ | 符合工业环境 |
AC-3 Current ≥ 140A × 6 | 840A | 250A | ❌ | 严重警告!接触器额定电流需 ≥840A,NSX250N 仅适用于 250A 电机 |
这个
AC-3 Current校验是工具独有功能——它自动将电机额定电流 ×6(AC-3 启动电流倍数),对比断路器标称的 AC-3 适用电流。此处暴露关键矛盾:NSX250N 虽然短路能力足够,但不能用于直接启动 75kW 电机(需配接触器+热继)。工具立刻在界面顶部弹出红色横幅:“⚠️ Warning: This breaker cannot directly control 75kW motor under AC-3 duty. Recommend adding contactor.”
6.3 步骤三:导出可交付成果
点击 “Export Report”,生成report_NSX250N_20240520.html。打开后是专业级 PDF 友好页面,含:
- 顶部:项目信息、日期、校验人(可配置);
- 中部:表格化对比
NSX250N与S260H的 12 项参数; - 底部:“Recommendation Summary” 区域,用图标明确标注:
- ✅
Short-circuit capability: PASS (Margin: +15.3%) - ⚠️
Motor starting capability: FAIL (Requires contactor) - 📄
Full catalog: nsx_catalog.pdf (page 42)(超链接到本地 PDF)
- ✅
这份报告可直接发给甲方或归档,无需二次编辑。
6.4 最后一道防线:离线修改规则,适配企业标准
某公司规定“所有断路器 Icu 必须 ≥ 系统短路电流 × 1.5(非 1.25)”。此时无需改代码,只需编辑rules/cb_short_circuit.yaml:
# 原 condition(第 5 行) # condition: "Icu_kA >= system_sc_current_kA * 1.25" # 改为(直接覆盖原行) condition: "Icu_kA >= system_sc_current_kA * 1.5"保存后,在工具界面任意位置点击一下(如切换语言),规则热重载。再次搜索,NSX250N(36kA)因不满足36.0 ≥ 25.0×1.5=37.5被自动过滤,首推NSX400N(Icu=50kA)。整个过程耗时 22 秒,零重启。
从那以后我每次给新同事配环境,都强制走一遍python -c "import sys; print(sys.version)"→pip list→python electrical_selector.py三连验;只要这三步绿,后面就全是确定性操作。希望帮到你。
本文还有配套的精品资源,点击获取