☰
电气元件选型工具:本地化规则引擎驱动的离线校验软件
2026/10/18 4:03:05 网站建设 项目流程

简介:这是一款面向电气工程师、自动化设计人员及高职高专相关专业学习者的实用型选型辅助工具,聚焦电缆线径与载流量的快速计算,解决传统人工查表选型效率低、易出错的问题,适用于工业配电系统设计、建筑电气施工图深化等实际场景。压缩包为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.2

2.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.9

requirements.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.whl

3.3 处理 wheel 文件缺失的应急方案

如果pip install -r requirements.txt报错ERROR: xxx.whl is not a supported wheel on this platform,说明你下载的.whl文件架构不匹配。此时:

  1. 进入https://pypi.org/project/PyQtWebEngine/#files
  2. 找到PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl(注意cp39和win_amd64)
  3. 手动下载,放在D:\electrical_tool\目录下
  4. 修改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 列(顺序可变,但列名必须完全一致):

列名示例值说明
modelNSX100N型号(字符串)
Icu_kA15.0极限短路分断能力(数值,单位 kA)
Ics_percent100使用短路分断能力(百分比)
Uimp_kV8.0冲击耐受电压(数值,单位 kV)
pollution_degree3污染等级(整数 2 或 3)
ac3_current_A100.0AC-3 负载电流(数值,单位 A)
catalog_pdfnsx_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 版本时,注册表关联极易错乱。
解决:

  1. 右键electrical_selector.py→ “打开方式” → “选择其他应用”;
  2. 勾选“始终使用此应用打开 .py 文件”;
  3. 点“浏览”,找到C:\Program Files\Python39\python.exe;
  4. 确认。

验证: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)。
解决:

  1. 在激活的虚拟环境中执行:
    python -c "from PyQt5.QtWebEngineWidgets import QWebEngineView; print('OK')"
    若报错ModuleNotFoundError,说明PyQtWebEngine未装;若报ImportError: DLL load failed,说明 wheel 不匹配。
  2. 重新下载PyQtWebEngine-5.15.9-cp39-cp39-win_amd64.whl(确认是win_amd64,不是win32);
  3. 执行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 步骤一:输入系统参数,触发自动推荐

  1. 启动工具:venv_selector\Scripts\activate.bat && python electrical_selector.py;
  2. 主界面选择 “Circuit Breaker”(断路器);
  3. 在右侧参数面板填写:
    • System Voltage (V):400
    • System Frequency (Hz):50
    • Motor Power (kW):75
    • Motor Full Load Current (A):140
    • Expected Short Circuit Current (kA):25.0(由上游变压器容量推算)
  4. 点击 “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.25kA31.25kA36.0kA✅余量 15.3%
Ics ≥ Icu × 75%27.0kA36.0kA✅Ics=Icu(该系列特性)
Uimp ≥ 8kV (IEC 60947-2)8.0kV8.0kV✅刚好达标
Pollution Degree ≤ 3≤33✅符合工业环境
AC-3 Current ≥ 140A × 6840A250A❌严重警告!接触器额定电流需 ≥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三连验;只要这三步绿,后面就全是确定性操作。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询