# VarDrive **Repository Path**: GGbondla/var-drive ## Basic Information - **Project Name**: VarDrive - **Description**: 变频器上位机,Electron+React/Vue - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-27 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 变频器调试系统 基于 Electron + TypeScript + React 的 MD500 变频器上位机软件。默认蓝黑主题(可切换墨绿 / 高对比度),Modbus-RTU (RS485) 通信。 ## 技术栈 - Electron 28 + TypeScript 5 - React 18 + Zustand - electron-vite (构建) + electron-builder (打包) - serialport (RS485 串口) + 自研 Modbus-RTU 协议 ## 目录结构 ``` src/ ├── main/ # 主进程(串口、Modbus、协议、IPC、存储) ├── preload/ # Preload 桥接脚本 ├── renderer/ # 渲染进程(React UI) └── common/ # 共享类型、常量、工具函数 scripts/ └── generate-parameter-data.mjs # 由 params.txt 生成参数表数据 ``` ## 参数模块 参数表依据《MD500变频器上位机软件需求规格说明书》第四章整理,覆盖 **25 个参数组 / 611 条参数**(F0~FE、FP、A0~AC、U0),全部带通讯地址、 范围原文、出厂默认值、单位、精度与「实时更改 / 停机更改 / 只读」属性。 | 能力 | 说明 | | --- | --- | | 参数表生成 | `node scripts/generate-parameter-data.mjs` 从 `params.txt` 生成 `src/common/constants/parameter-data.ts` | | 分块读取 | 主进程按「地址连续」合并成块读取(≤60 寄存器/次),失败自动回退逐条读取 | | 写入校验 | 只读 / 枚举合法性 / 数值范围 / 精度逐条校验,界面实时提示 | | 停机保护 | `停机更改` 参数在变频器运行时禁止写入 | | RAM / EEPROM | 写入目标可选:RAM(掉电不保存)或 EEPROM(保存) | | EEPROM 频次保护 | 按 50ms 最小间隔限速写入,规避手册所述「高频写 EEPROM 失败」风险 | | 密码校验 | FP-00(0x1F00)非 0 时,写参数前自动写入用户密码解锁 | | 快捷操作 | 启用通信控制(F0-02/F0-03)、电机铭牌快速设置、参数辨识、恢复出厂、参数备份/恢复 | | 导入导出 | 导出全部参数为 JSON/CSV;导入只解析为「待写入列表」,确认后再下发 | | 值编辑器 | 按参数类型自动切换:数值 / 枚举下拉 / 多位十进制组合 / 16 位位组合 / 只读 | | 组合参数按位映射 | 「个位/十位/百位」类参数逐位给下拉框,并显示该位的含义(如 F0-27 个位=面板命令、十位=端子命令、百位=通信命令);已收录取值文字的位显示文字(FD-00 波特率、F0-27 绑定频率源、F4-33 曲线号、F9-47/49 保护动作…),未收录的位显示范围数字;合成值按位补零(十六进制位组合显示为 0x) | | 枚举映射 | 参数的寄存器值自动映射为手册选项:可改参数给下拉框(选项 → 0/1/2…),只读参数直接显示选项文字 | | 默认值 | 文档中的出厂默认值按精度换算为寄存器值(如 50.00Hz → 5000),负数参数按 16 位补码处理 | | 列宽一致 | 「当前值 / 待写入」列固定 `--param-value-width`(240px),数值 / 下拉 / 逐位 / 位组合 / 只读各种编辑器同宽,逐行对齐 | | 写入保护面板 | 参数页展示 EEPROM 写入次数、限速间隔与用户密码解锁入口 | ## 总览页(SCADA) 总览页以「工艺流程 + 实时趋势」为核心,图形全部为手绘 SVG,不使用堆叠方框: - **工艺流程**:供电段(三相电源 → 断路器)抬到左上角,经 90° 拐弯自上而下馈入变频器; 主传动链(变频器 → 异步电机 → 电机负载)位于下方主行。电缆内有按输出频率变速流动的能量粒子 - **动态部件**:变频器散热风扇、电机转子、负载叶轮按频率旋转(停机静止),运行 / 停机 / 故障三态驱动配色与呼吸光晕 - **实时趋势**:五通道(频率 / 电流 / 电压 / 功率 / 转矩)滚动曲线,图例可点击显隐,Canvas 随容器尺寸自适应 - **右列**:通信控制、运行参数(仪表 + 墨条)、运行控制,三张卡纵向铺满并与左列上下对齐 - **底部操作条**:启用通信控制、参数辨识、参数备份与恢复、电机铭牌快速设置(按需展开) ### 界面模块 | 模块 | 说明 | | --- | --- | | 总览 | 工艺流程图 / 实时趋势 / 通信控制 / 运行参数 / 运行控制 / 快捷操作 | | 报警 | 实时报警与历史记录 | | 参数 | 25 组 611 条参数读写(枚举自动映射为下拉选项) | | 历史回放 | 回放「开始记录」写出的 CSV(曲线 + 播放头 + 逐点读数) | ### 可视化预览(开发辅助) ``` node scripts/preview-scada.mjs # 总览页 PREVIEW_PAGE=parameters node scripts/preview-scada.mjs # 参数页(含值映射与列宽自检) PREVIEW_PAGE=playback node scripts/preview-scada.mjs # 历史回放页 PREVIEW_SIZE=1920,1080 node scripts/preview-scada.mjs # 指定窗口尺寸 PREVIEW_THEME=dark node scripts/preview-scada.mjs # 指定主题(默认 blue) ``` 用真实浏览器渲染路径加载页面(含 Header / NavBar / StatusBar), 再用 Edge 无头模式截图(`scripts/.preview/<页面>.png`)并读回布局自检数据: 主题令牌、卡片高度、是否出现页面滚动、旋转件圆心是否与机壳重合、图形节点是否被画布裁剪、 快捷操作条是否折行;参数页还会逐项打印下拉框的「选项 → 原始值」映射, 以及「当前值 / 待写入」列各类编辑器的实际宽度(用于确认没有参差不齐)。 ## 开发 ```bash npm install npm run dev # 开发模式(热重载) npm run typecheck # 类型检查 npm run build # 构建 npm run dist:win # 打包 Windows 安装包 ``` ## 通信配置默认值 - 波特率: 9600 (FD-00 = 5005) - 数据格式: 8-N-1 (FD-01 = 0) - 从站地址: 1 (FD-02 = 1) > 应用图标:母图 `resources/icons/变频器.png`(256×256), > 执行 `node scripts/make-icon.mjs` 生成多尺寸 `resources/icons/icon.ico` > (打包用,见 package.json 的 `build.win.icon`)与 `resources/icons/app.png` > (运行时窗口图标)。`resources/fonts/` 需放置字体文件。