libIEC61850 1.6.2:开源 IEC 61850 MMS/GOOSE/SV 协议栈的功能全貌、构建流程与集成实践
通信嵌入式工业制造【免费下载链接】libiec61850Official repository for libIEC61850, the open-source library for the IEC 61850 protocols项目地址https://gitcode.com/gh_mirrors/li/libiec61850点击查看免费下载libIEC61850 是一个以 C99 编写的开源GPLv3IEC 61850 客户端/服务器库实现了 MMS、GOOSE、SVSampled Values与 R-Session 四类核心协议可直接用于在嵌入式设备或 Linux/Windows/macOS 主机上开发 IEC 61850 兼容设备与测试工具。本文基于当前仓库的README.md版本 1.6.2与对应构建脚本、源码实现展开先梳理库的功能矩阵与代码组织结构再逐一给出 Make/CMake 两套构建系统的完整操作命令、TLSmbedtls 2.28/3.6集成、安装头文件、Windows GOOSE 支持、SQLite 日志服务与 C#/Python 绑定等实战环节并在关键步骤处给出源码级证据帮助读者从“跑通示例”推进到“集成进自有工程”。一、项目定位一套 C99 实现的 IEC 61850 协议栈根据 README.md 的 Overview 章节libIEC61850 的核心定位是开源许可证GPLv3协议文本见 COPYING协议覆盖MMS基于 ISO/TP 的制造消息规范、GOOSEIEC 61850-8-1、SVIEC 61850-9-2、R-Session加密会话承载 R-GOOSE/R-SMV语言与目标平台按 C99 标准实现以保证最大可移植性可运行于嵌入式系统与运行 Linux、Windows、macOS 的 PC附带内容一组简单的示例程序可作为自研 IEC 61850 设备或通信工具的起点。版本信息方面根目录 CMakeLists.txt 中LIB_VERSION被设定为1.6.21.6.2与 README 中标注的版本一致CHANGELOG顶部同样记录了 1.6.2 的功能与修复清单如 TLS 配置运行时更新、LIB61850_ENABLE_TEST_API测试插桩等。商业支持由 MZ Automation GmbH 提供这一点在 README 的 Overview 与“Commercial licenses and support”章节均有说明。协议功能特性清单README 的 Features 章节列出了库支持的 IEC 61850 协议特性完整继承如下并补充了各特性在仓库中的对应实现位置“从源码结构看”均为推断特性说明仓库中对应实现参考路径MMS client/server、GOOSE8-1核心关联、读写、GOOSE 发布/订阅src/mms、src/goose/goose_publisher.c、src/goose/goose_subscriber.cSampled ValuesSV9-2采样值发布与订阅src/sampled_values/sv_publisher.c、src/sampled_values/sv_subscriber.c缓冲/非缓冲报告buffered 与 unbuffered reportsrc/iec61850/server/mms_mapping在线报告控制块配置运行时修改 RCBsrc/iec61850/client/client_report_control.c数据访问服务get data / set datasrc/iec61850/inc/iec61850_client.h在线数据模型发现与浏览模型浏览src/iec61850/inc/iec61850_model.h数据集服务读值、写值、浏览src/mms/inc/mms_common.h动态数据集服务运行时创建/删除数据集同上见MMS_DYNAMIC_DATA_SETS配置Log 服务抽象数据库接口 SQLite 实现src/logging/log_storage.c、src/logging/drivers/sqlite/log_storage_sqlite.cMMS 文件服务browse/get/set/delete/rename下载 COMTRADE 文件src/mms/iso_mms/client、examples/iec61850_client_example_files设置组Setting Group处理SGG/SGCB 服务src/iec61850/inc/iec61850_server.h服务跟踪Service Tracking客户端操作追溯examples/server_example_service_trackingGOOSE/SV 控制块处理控制块对象的读写src/iec61850/server/implTLS 支持IEC 62351-3/4加密的 MMS 关联hal/tls、hal/inc/tls_socket.hR-SessionR-GOOSE/R-SMV基于 IEC 61850-8-1 的加密会话src/r_session简单 SNTP 客户端IEC 61850-5供测试用途src/sntp/sntp_client.cC、C#/.NET、实验性 Python API三种语言接口dotnet、pyiec61850从源码结构看MMS 默认开启的服务集在 config/stack_config.h.cmake 的MMS_DEFAULT_PROFILE中统一定义READ、WRITE、GET_NAME_LIST、JOURNAL、GET_VARIABLE_ACCESS_ATTRIBUTES、DATA_SET_SERVICE、DYNAMIC_DATA_SETS、STATUS、IDENTIFY、FILE、OBTAIN_FILE、DELETE_FILE 均置 1而MMS_RENAME_FILE_SERVICE默认为 0。这也解释了 Features 中“delete/rename file”与默认编译配置之间的细微差别——重命名服务默认不参与构建。代码组织功能与目录的对应关系仓库顶层目录与上述功能特性的对应关系依据 Makefile 与 CMakeLists.txt 中的源文件目录列表src/mms/ISO 层ACSE/Presentation/Session/COTP与 MMS 层协议实现含 ASN.1 BER 编解码asn1/与 asn1c 生成的编解码代码iso_mms/asn1c/src/iec61850/IEC 61850 语义层分client/、server/含model、mms_mapping、impl与common/公共 API 头文件在inc/如iec61850_client.h、iec61850_server.hsrc/goose/、src/sampled_values/、src/r_session/GOOSE、SV、R-Session 三类非 MMS 协议src/logging/日志服务抽象层与 SQLite 驱动src/common/字节缓冲、链表、内存分配等基础组件hal/硬件抽象层按平台划分linux、bsd、win32、macos子目录socket、thread、ethernet、time、filesystem、serial、tls这是库“最大可移植性”承诺的落点——Makefile 会按HAL_IMPL变量POSIX/WIN32/BSD/MACOS选择不同的 HAL 源文件集合examples/约 35 个示例客户端、服务器、GOOSE/SV 发布订阅、R-Session、TLS、SNTP 等dotnet/C#/.NET 封装与 Visual Studio 工程pyiec61850/SWIG 生成的实验性 Python 绑定tools/model_generator/基于 ICD/CID 文件生成静态模型 C 代码的 Java 工具jar 包是编写服务器示例模型的关键工具链fuzz/针对 ACSE 解析、GOOSE 解析、MMS 编解码等的模糊测试入口make/、config/Make 构建系统公共片段与由 CMake 生成的堆栈配置头。二、用 Make 构建并运行示例README 的 “Building and running the examples” 章节给出了最基本的验证路径在仓库根目录执行make examples构建成功后各示例的二进制文件位于相应示例目录中README 表述为“项目根目录下可找到若干二进制文件”实际产物按示例分散在各示例目录内静态库libiec61850.a生成在build目录对应 Makefile 中的LIB_OBJS_DIR约定。随后进入示例目录运行例如cd examples/server_example_basic_io sudo ./server_example_basic_io在 Linux 下启动服务器示例通常需要 root 权限绑定原始报文或特权端口等场景随后可以用通用 IEC 61850 客户端或仓库自带的客户端示例来测试服务器。Make 系统的细节源自 Makefile 与 examples/Makefile根 Makefile 的examples目标只是cd examples; $(MAKE)即委托给 examples/Makefile后者按EXAMPLE_DIRS列表逐个进入示例目录构建Make 方式默认编译 34 个示例客户端 15 个、服务器 19 个左右含 GOOSE 发布/订阅、SV 发布/订阅、mms_utility等与 CMake 相比Make 构建的示例集合略有差异CMake 侧examples/CMakeLists.txt额外包含server_example_logging、server_example_access_control、iec61850_client_example_log、iec61850_client_example_files、iec61850_client_example_async等而 R-Session 与 SNTP 示例只有在 TLS 就绪时才会加入根 Makefile 使用-stdgnu99并开启-Wall -Wextra -Wshadow -Wmissing-declarations等一组严格告警另提供static_checkssplint与cppcheck两个静态检查目标make/target_system.mk 会根据uname自动推断目标Linux→POSIX、MinGW→WIN32、macOS→MACOS、FreeBSD→BSD并支持TARGET指定交叉编译目标ARM、MIPSel、PowerPC、MinGW64 等工具链前缀。README 还特别提醒大多数示例只为演示某一特定功能而设计追求最简形式可能缺少真实应用中必需的错误处理。将其作为起点时务必自行补全错误处理逻辑。三、带 TLS 支持构建库mbedtls 2.28 / 3.6README 指出库提供与具体实现无关的 TLS 配置接口对应 hal/inc/tls_socket.h 与 hal/inc/tls_config.h并附带两套实现mbedtls 2.28 LTS支持到 TLS 1.2mbedtls 3.6.0仅支持 TLS 1.2 与 1.3。mbedtls 2.28 集成步骤下载、解压 mbedtls-2.28 源码包将其复制到third_party/mbedtls目录。注意从官方源码包解压得到的目录名如果不是mbedtls-2.28必须重命名为该名称CMake 通过目录名探测版本见下文在 libiec61850 根目录执行make WITH_MBEDTLS1mbedtls 3.6 集成步骤下载、解压 mbedtls-3.6.0放入third_party/mbedtls目录执行make WITH_MBEDTLS31CMake 用户无需手动指定当third_party/mbedtls/mbedtls-3.6.0或third_party/mbedtls/mbedtls-2.28目录存在时库自动带 TLS 支持构建。这一点在 CMakeLists.txt 中可以逐行验证if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/third_party/mbedtls/mbedtls-3.6.0) set(WITH_MBEDTLS3 1) set(MBEDTLS_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/third_party/mbedtls/mbedtls-3.6.0/include) else() if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/third_party/mbedtls/mbedtls-2.28) set(WITH_MBEDTLS 1) ...一旦WITH_MBEDTLS或WITH_MBEDTLS3为真CMakeLists.txt 会执行add_definitions(-DCONFIG_MMS_SUPPORT_TLS1)——打开 MMS 层 TLS 开关若CONFIG_IEC61850_R_GOOSE/CONFIG_IEC61850_R_SMV为 ON默认 ON置位BUILD_R_GOOSE_EXAMPLES/BUILD_R_SMV_EXAMPLES从而让 examples/CMakeLists.txt 加入rsv_publisher_example、rsv_subscriber_example、r_goose_publisher_example、r_goose_receiver_example四个 R-Session 示例反之未提供 mbedtls 时CMake 会把CONFIG_IEC61850_R_GOOSE/CONFIG_IEC61850_R_SMV强制置 0——从源码结构看R-Session 加密依赖 TLS 栈无 mbedtls 则无法启用。Make 侧的等价逻辑在 MakefileWITH_MBEDTLS会把third_party/mbedtls/mbedtls-2.28/library与hal/tls/mbedtls纳入编译并定义CONFIG_MMS_SUPPORT_TLS1、CONFIG_IEC61850_R_GOOSE1、CONFIG_IEC61850_R_SMV1WITH_MBEDTLS3则对应mbedtls-3.6.0与hal/tls/mbedtls3实现。两套 TLS 适配实现的差异可分别在 hal/tls/mbedtls/tls_mbedtls.c 与 hal/tls/mbedtls3/tls_mbedtls.c 中阅读各自的mbedtls_config.h控制密码套件裁剪。CMake 还支持CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB选项直接使用预编译 mbedtls 动态库CMakeLists.txt 会通过解析build_info.h判断是 2.28 还是 3.6.x。TLS 示例方面examples/tls_client_example/与examples/tls_server_example/目录中附带了根证书与客户端/服务端证书密钥root_CA1.pem、client_CA1_1.pem、server_CA1_1.key等可作为验证加密关联的现成材料dotnet/tls_client_example、dotnet/tls_server_example提供 .NET 侧对等示例。四、安装库与 API 头文件README 的 “Installing the library and the API headers” 章节说明Make 与 CMake 构建脚本都提供install目标将 API 头文件与静态库拷贝到单一前缀下的include/与lib/目录便于外部工程只需添加一个 include 路径即可集成make installMake 构建脚本的默认安装目录是.install可通过INSTALL_PREFIX环境变量修改make INSTALL_PREFIX/usr/local install这与 Makefile 中INSTALL_PREFIX默认./.install、以及 Makefile 中install目标mkdir -p $(INSTALL_PREFIX)/include; mkdir -p $(INSTALL_PREFIX)/lib; cp ...的实现对应一致。CMake 侧则使用标准的CMAKE_INSTALL_PREFIX变量CMakeLists.txt 通过install(FILES ${API_HEADERS} DESTINATION include/libiec61850 COMPONENT Development)安装头文件。值得注意install拷贝的是LIB_API_HEADER_FILES白名单Makefile 与 CMakeLists.txt 中的API_HEADERS两者列表完全一致共 30 个头文件覆盖 HAL 基础层hal_base.h、hal_time.h、hal_thread.h、hal_filesystem.h、hal_ethernet.h、hal_socket.h、TLS 配置tls_config.h、tls_ciphers.h、IEC 61850 公共 APIiec61850_client.h、iec61850_server.h、iec61850_model.h、iec61850_cdc.h、iec61850_dynamic_model.h、iec61850_config_file_parser.h、MMS 值/类型/连接mms_value.h、mms_types.h、mms_client_connection.h、mms_server.h、iso_connection_parameters.h、GOOSE/SV 发布订阅、R-Session 与日志 API。集成时只需链接lib目录中的静态库并包含include/libiec61850CMake或includeMake即可。五、Windows 下带 GOOSE 支持的构建WinPcapWindows10/11没有可用的原始 socket 支持因此 GOOSE 相关应用依赖第三方库 WinPcap。README 给出的步骤下载并安装 WinPcap在安装向导最后一屏选择开机时自动加载 WinPcap 驱动重启系统也可稍后重启但运行任何使用 GOOSE 的 libiec61850 应用前必须加载 WinPcap 驱动下载 WinPcap 开发者包WpdPack_4_1_2.zip解压后将Lib与Include两个目录拷贝到 libiec61850 的third_party/winpcap目录。仓库中这一依赖在多处得到印证MakefileHAL_IMPLWIN32时把third_party/winpcap/Include加入包含路径examples/CMakeLists.txtWindows 下检查third_party/winpcap/Lib/wpcap.lib是否存在存在才编译 GOOSE/SV 示例config/stack_config.h.cmake定义了EXCLUDE_ETHERNET_WINDOWS分支——无 WinPcap 时CONFIG_IEC61850_L2_GOOSE/CONFIG_IEC61850_L2_SMV被置 0有 WinPcap 时把CONFIG_ETHERNET_INTERFACE_ID改为0WinPcap 适配器编号。从源码结构看Windows 的以太网捕获走 hal/ethernet/win32/ethernet_win32.c而 Linux/macOS/FreeBSD 走 hal/ethernet/linux/ethernet_linux.c 与 hal/ethernet/bsd/ethernet_bsd.cLinux 默认网卡名eth0由 config/stack_config.h.cmake 的CONFIG_ETHERNET_INTERFACE_ID指定macOS 需自行改为en0等文件中留有注释示例。六、使用 CMake 构建Linux 构建前提是安装构建工具与 CMakeREADME 以 Ubuntu 20.04 的build-essential、cmake包为例。执行mkdir build cd build cmake .. make可选地安装到系统目录sudo make install可选的“仅测试用”插桩LIB61850_ENABLE_TEST_APIREADME 在 CMake 章节新增了一小节为确定性测试例如 MMS 文件 ObtainFile 请求超时行为库提供了默认关闭、且在生产构建中完全排除的测试插桩 APIcmake -DLIB61850_ENABLE_TEST_APION ..启用后可用的测试专用函数以LIB61850_TEST_API属性导出README 给出的用法示例#ifdef LIB61850_ENABLE_TEST_API /* Introduce 250 ms delay before each FileRead response */ MmsConnection_setFileReadArtificialDelay(conn, 250); #endif该选项在仓库中的落点CMakeLists.txt 定义option(LIB61850_ENABLE_TEST_API ... OFF)开启时add_compile_definitions(LIB61850_ENABLE_TEST_API)src/common/inc/libiec61850_common_api.h 定义LIB61850_TEST_API导出宏Windows 下为__declspec(dllexport)GCC 下为visibility(default)实现位于 src/mms/iso_mms/client/mms_client_connection.c整个函数体被#if defined(LIB61850_ENABLE_TEST_API)包裹仅记录self-fileReadArtificialDelayMs并在MMS_OBTAIN_FILE_SERVICE ! 1时退化为空实现声明在 src/mms/inc/mms_client_connection.h。这与CHANGELOG中 1.6.2 的条目“Added optional test-only instrumentation build option LIB61850_ENABLE_TEST_API”一致。选项为 OFF 时相关符号与代码被整体省略对运行时行为与内存占用零影响——因此它只应在测试工程中启用。WindowsVisual Studio生成器README 说明了 CMake “generator”机制在 libiec61850 下新建子目录、进入该目录后通过 CMake 命令行参数指定生成器由 CMake 生成具体构建工具的项目文件。命令中的..指向主构建脚本 CMakeLists.txt 所在目录即父目录。各版本 Visual Studio 的生成器命令README 原文64 位构建Visual Studio 201532 位/64 位cmake -G Visual Studio 14 2015 .. cmake -G Visual Studio 14 2015 Win64 ..Visual Studio 2017cmake -G Visual Studio 15 2017 Win64 ..Visual Studio 2019cmake -G Visual Studio 16 2019 .. -A x64Visual Studio 2022cmake -G Visual Studio 17 2022 .. -A x64README 补充部分系统可以不指定 generator使用ccmake/cmake-gui可以图形化地选择配置选项。对 VS 2015 之前的 MSVCCMakeLists.txt 会额外加入src/vs目录提供stdbool.h兼容头。常用 CMake 配置选项速查结合 CMakeLists.txt 与 config/stack_config.h.cmake日常集成时可能用到的选项括号内为默认值选项作用BUILD_EXAMPLES(ON)是否构建示例BUILD_TESTS(ON且需存在tests目录)是否构建单元测试BUILD_PYTHON_BINDINGS(OFF)构建 Python 绑定SWIGCONFIG_MMS_MAXIMUM_PDU_SIZE(65000)MMS 最大 PDU 长度CONFIG_MAXIMUM_TCP_CLIENT_CONNECTIONS(5)服务器允许的最大并发客户端连接数CONFIG_MMS_SINGLE_THREADED(ON)服务器单线程模式0 为每连接一线程CONFIG_MMS_THREADLESS_STACK(OFF)无线程栈优化开启后单/多线程服务器不可用CONFIG_MMS_MAX_NUMBER_OF_DATA_SET_MEMBERS(100)数据集最大成员数CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS(5)文件获取并发任务数CONFIG_IEC61850_CONTROL_SERVICE/REPORT_SERVICE/LOG_SERVICE/SERVICE_TRACKING/SETTING_GROUPS(均 ON)各 IEC 61850 服务开关CONFIG_IEC61850_L2_GOOSE/L2_SMV(ON)二层 GOOSE/SMVWindows 需要 WinPcapCONFIG_IEC61850_R_GOOSE/R_SMV(ON)R-Session 加密会话需要 mbedtlsCONFIG_IEC61850_SNTP_CLIENT(ON)SNTP 客户端CONFIG_REPORTING_DEFAULT_REPORT_BUFFER_SIZE(65536)缓冲报告默认缓冲区字节数DEBUG/DEBUG_*(OFF)各协议层 printf 调试开关这些选项经configure_file()从 config/stack_config.h.cmake 生成构建目录下的config/stack_config.h见 CMakeLists.txt。该配置头同时内置了 GOOSE 重传参数稳定态 5000 ms、事件重传 500 ms×2 次、802.1Q 优先级/VLAN 默认值、TCP keepalive 参数空闲 5 s、间隔 2 s、计数 2等修改后需重新编译方可生效。七、使用 SQLite 的 Log 服务README 说明IEC 61850 日志服务采用抽象的“日志数据库”接口内置 SQLite 驱动且该驱动本身即为抽象接口用法的范例。集成方式将 src/logging/drivers/sqlite/log_storage_sqlite.c 加入应用构建Ubuntu 等 Linux 发行版安装标准仓库的 SQLite 开发包即可其他系统如 Windows或交叉编译时推荐下载 SQLite amalgamation合并版源码放入third_party/sqlite目录——CMakeLists.txt 通过检测third_party/sqlite/sqlite3.h是否存在来自动发现该源码并提示“can compile with log service support”在 Windows 上CMake 检测到 SQLite 源码后还会同时创建日志示例工程。配套示例examples/server_example_logging/服务器侧含Makefile.sqliteStatic静态链接变体与README说明与examples/iec61850_client_example_log/客户端读取日志dotnet/log_server、dotnet/log_client提供 .NET 侧对等示例。抽象接口定义见 src/logging/logging_api.h。八、C# API 与实验性 Python 绑定C# APIdotnet目录包含 C#/.NET 封装IEC61850forCSharp/覆盖 client、server、common、goose、mms、sampled_values、TLS 等命名空间以及可运行的示例工程与 Visual Studio/MonoDevelop 项目文件示例与 C# 封装均可在 .NET 或 Mono 上构建运行。dotnet.sln汇总了各示例客户端示例、报告、数据集、GOOSE 订阅、SV 订阅、TLS、日志服务器/客户端、访问控制服务器等core/2.0/子目录提供 .NET Core 2.0 版本的解决方案与一批移植示例。实验性 Python 绑定README 说明Python 绑定通过 SWIG 在 CMake 框架下生成需在ccmake/cmake-gui中勾选 Python 配置选项对应 CMakeLists.txt 的BUILD_PYTHON_BINDINGS选项与 CMakeLists.txt 的add_subdirectory(pyiec61850)逻辑。绑定源码在 pyiec61850/含 SWIG 接口文件 pyiec61850/iec61850.i、服务包装器 pyiec61850/servicePythonWrapper.hpp、事件处理头文件eventHandlers/、示例examples/与测试 pyiec61850/test_pyiec61850.py。README 明确声明不对 Python 绑定提供任何官方支持。九、许可、商业支持与贡献规范开源许可GPLv3商业项目的许可与支持由 MZ Automation GmbH 提供README 两处提及联系邮箱 infomz-automation.de贡献欢迎提交评论、功能请求、Bug 报告与补丁超过“琐碎”级别的贡献需要签署 Contributor License AgreementCLAREADME 建议计划贡献前先联系 infolibiec61850.com仓库性质README 末尾特别提醒官方代码托管为 Bitbucketbitbucket-pipelines.yml即其 CI 配置GitHub 仓库仅为只读归档不接受 Pull Request。当前所在镜像同样属于只读归档性质。十、小结从 README 到可验证的构建路径本文沿 README 的脉络把 libIEC61850 1.6.2 的“文档承诺”逐一对照到了仓库中的构建脚本与源码功能面MMS/GOOSE/SV/R-Session 四类协议 报告、数据集、日志、文件、设置组、服务跟踪等服务均有src/下的明确实现目录构建面make examples最快验证make WITH_MBEDTLS1/WITH_MBEDTLS31或放置third_party/mbedtls/mbedtls-2.28mbedtls-3.6.0目录获得 TLS 能力CMake 下LIB61850_ENABLE_TEST_API提供可完全排除的测试插桩集成面install目标按 30 个头文件白名单输出干净的 include/lib 布局Windows GOOSE 依赖 WinPcap 且由构建脚本自动探测SQLite 日志服务依赖log_storage_sqlite.c与third_party/sqliteamalgamation 源码语言面C 为核心C#/.NET 封装成熟Python 绑定实验性且无官方支持。后续可继续深入的材料examples/ 下各示例的源码与.cid/.icd模型文件、tools/model_generator/ 的模型生成工具、CHANGELOG 的完整版本记录以及fuzz/中各模糊测试入口所揭示的协议边界条件。赞分享通信嵌入式工业制造【免费下载链接】libiec61850Official repository for libIEC61850, the open-source library for the IEC 61850 protocols项目地址https://gitcode.com/gh_mirrors/li/libiec61850点击查看免费下载相关推荐lru-rs内存管理揭秘无内存泄漏的LRU缓存实现原理lru rs内存管理揭秘无内存泄漏的LRU缓存实现原理 lru rs是一个高性能的LRU最近最少使用缓存实现专为Rust开发者设计。它提供了O 1 时间libIEC61850开源IEC 61850协议库使用指南项目概述 libIEC61850是由MZ Automation开发的开放源码库主要用于实现IEC 61850标准中的通信协议。该库完全符合IEC 61850标通信嵌入式工业制造libiec61850终极指南5步实现智能电网IEC 61850协议栈在电力自动化领域智能电网通信面临着协议复杂、部署困难、跨平台兼容性差等痛点。libiec61850作为一款开源C库提供了完整的IEC 61850协议栈实通信嵌入式工业制造创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考