桌面级 IEC 61850 客户端工具:IEC 61850 Client Studio 开源一个桌面级 IEC 61850 客户端工具IEC 61850 Client Studio基于 Electron C gRPC libiec61850 的变电站自动化调试客户端支持 MMS 全栈通信、模型浏览、数据读写、报告控制、GOOSE/SV 订阅。为什么做这个工具在 IEC 61850 变电站自动化领域工程调试和运维人员日常需要与智能电子设备IED进行通信——浏览在线数据模型、读取/写入数据对象、配置报告控制块URCB/BRCB、执行控制操作等。现有的商用工具要么价格昂贵要么界面陈旧、功能分散。我决定从零构建一个现代化的桌面客户端目标是功能完整覆盖 MMS 客户端核心能力 GOOSE/SV 实时报文架构清晰前后端分离可独立演进开箱即用无需真实设备也能用 Mock 模式验证流程开源免费MIT 协议任何人都可以使用和贡献下面是应用启动后的主界面顶部是菜单栏和工具栏连接/模拟/断开/刷新模型/读取/监视左侧是工程模块导航树中央是多标签页工作区右侧为属性面板。整个布局支持拖拽调整面板大小。技术架构整体设计采用Electron UI C gRPC 后端的前后端分离架构┌──────────────────────────────────────────────┐ │ Electron 主进程 │ │ 窗口管理 │ 应用菜单 │ IPC/gRPC 桥接 │ ├──────────────────────────────────────────────┤ │ preload 安全桥接层 │ │ (contextIsolation contextBridge) │ ├──────────────────────────────────────────────┤ │ 渲染进程 (桌面工作区 UI) │ │ 模型树 │ 数据读写 │ 数据集 │ 报告 │ 控制 ... │ ├──────────────────────────────────────────────┤ │ gRPC 双向流 (Protobuf) :48650 │ ├──────────────────────────────────────────────┤ │ C gRPC 后端进程 │ │ libiec61850 适配层 │ Mock 适配层 │ │ libiec61850 库 │ └──────────────────────────────────────────────┘为什么这样分层Electron 负责所有 UI 相关的事情窗口管理主窗口、独立模块窗口原生菜单栏文件/连接/视图/工具/窗口/帮助多标签页系统 可拖拽分割面板CSS Grid 四层 Shell 布局标题栏 → 工具栏 → 工作区 → 状态栏C 后端负责所有协议相关的事使用 libiec61850 开源库实现 MMS 客户端通信通过 gRPC 服务暴露 24 个 RPC 方法给 Electron支持真实 IED 连接 和 Mock 模拟模式两者通过 gRPC Protobuf 通信定义在proto/iec61850studio.proto约 343 行包含 30 消息类型覆盖连接、模型、数据、数据集、报告、控制、文件、日志、定值组、GOOSE/SV双向流StreamWorkspace实现后端状态实时推送安全设计渲染进程通过contextIsolation隔离只能通过preload.js暴露的受限 API 访问后端// preload.js — 仅暴露这些安全接口contextBridge.exposeInMainWorld(iec61850,{call(method,payload),// 调用后端 RPCgetWorkspace(),// 获取工作区状态onWorkspace(callback),// 订阅实时更新detachModule(moduleId,title)});核心功能演示连接 IED 设备点击工具栏连接按钮或按 F5输入 IED 的 IP 地址和端口即可建立 MMS 连接输入目标地址后回车确认应用自动与设备建立 MMS 会话。连接成功后状态栏指示灯变绿。在线模型浏览连接成功后按 F6 刷新在线模型左侧导航树展示完整的LD → LN → DO → DA四级层次结构上图展示了从本地 61850 服务器读取到的真实模型LD逻辑设备DemoIEDLD0LN逻辑节点LLN0DO数据对象Mod,BehDA数据属性stVal,q,t等右侧面板显示选中节点的详细信息引用、FC、当前值、品质、时标。支持右键菜单复制引用、跳转关联页面。数据集操作数据集DataSet是 IEC 61850 中将多个数据对象打包用于报告或日志的机制自动枚举设备上的所有数据集展示每个数据集的成员列表及引用路径支持点位巡检表标记已测试项状态持久化到 localStorage全部标为已测快捷操作报告控制块配置报告控制块Report Control Block, RCB是 IEC 61850 中事件通知的核心机制区分URCB无缓冲报告和BRCB缓冲报告显示每个 RCB 的关联数据集支持读取当前值、设置参数并启用/停用实时接收并展示最新报告数据控制操作支持 IEC 61850 规定的三种控制模式模式说明Direct直接操作无选择-返回过程SBOSelect-Before-OperateEnhanced-SBO增强 SBO带附加安全检查右侧安全边界面板展示二次确认、SBO 流程、当前状态等信息。GOOSE / SV 通信统计MMS 请求/响应计数报告接收统计GOOSE 帧、SV 帧订阅入口平均通信延迟监控网卡选择与 AppID/SvID 配置注GOOSE/SV 实时接收需要 WinPcap/Npcap SDK 支持MMS 主链路不受影响。Mock IED 模式这是我认为最有用的功能之一。点击模拟CtrlF5或工具栏模拟按钮可以在没有任何真实 IED 设备的情况下运行完整的客户端流程Mock 后端提供一套预设的 IEC 61850 数据模型包含 LD/LN/DO/DA 树所有 RPC 接口行为一致只是数据来自模拟适用于UI 开发调试、CI 流程验证、产品演示这使得即使在没有物理设备的开发环境中也能进行全链路测试。打包发布项目使用electron-builder进行跨平台打包一条命令生成安装包和便携版npmrun dist输出产物文件类型大小IEC61850ClientStudio-Setup-0.1.0-x64.exeNSIS 安装包~95 MBIEC61850ClientStudio-Portable-0.1.0-x64.exe便携版~95 MB安装包支持自定义安装路径、创建桌面/开始菜单快捷方式便携版解压即用适合 U 盘携带。项目结构概览Iec61850ClientStudio/ ├── src/ │ ├── main/main.js # Electron 主进程267行 │ ├── preload/preload.js # 安全桥接层23行 │ └── renderer/ │ ├── index.html # 主页面170行 │ ├── renderer.js # 渲染核心逻辑1802行 │ └── styles.css # 样式表949行 ├── proto/ # gRPC 接口定义24个RPC30消息类型 ├── backend/src/main.cpp # C gRPC 服务端~82KB完整实现 ├── scripts/ # 构建与启动脚本 └── third_party/libiec61850/ # libiec61850 源码依赖代码量精简但功能完整——前端纯原生 HTML/CSS/JS 无框架依赖后端单个 C 文件承载全部业务逻辑。快速开始环境要求Windows 10/11 x64Node.js 18.xVisual Studio 2019/2022含 C 桌面工作负载CMake 3.18 vcpkg管理 Protobuf/gRPCgitclone https://github.com/YlbIce/IEC-61850-Client-Studio.gitcdIEC-61850-Client-Studionpminstallnpmrun dev# 编译后端并启动# 或 npm run dist # 打包发布版本未来计划Linux 平台支持SCL/ICD 文件导入离线浏览报告波形实时绘制多设备同时连接管理工程配置持久化保存/加载工程文件插件化协议扩展框架开源地址GitHub: https://github.com/YlbIce/IEC-61850-Client-Studio欢迎 Star、Fork、Issue 和 Pull Request技术栈一览: Electron v39 | C17 | CMake | gRPC | Protobuf | libiec61850License: MIT