☰
libIEC61850 1.6.2:开源 IEC 61850 MMS/GOOSE/SV 协议栈的功能全貌、构建流程与集成实践
2026/10/14 16:54:58 网站建设 项目流程
  • 通信
  • 嵌入式
  • 工业制造

【免费下载链接】libiec61850

Official repository for libIEC61850, the open-source library for the IEC 61850 protocols

项目地址:https://gitcode.com/gh_mirrors/li/libiec61850
点击查看免费下载

libIEC61850 是一个以 C99 编写的开源(GPLv3)IEC 61850 客户端/服务器库,实现了 MMS、GOOSE、SV(Sampled Values)与 R-Session 四类核心协议,可直接用于在嵌入式设备或 Linux/Windows/macOS 主机上开发 IEC 61850 兼容设备与测试工具。本文基于当前仓库的README.md(版本 1.6.2)与对应构建脚本、源码实现展开:先梳理库的功能矩阵与代码组织结构,再逐一给出 Make/CMake 两套构建系统的完整操作命令、TLS(mbedtls 2.28/3.6)集成、安装头文件、Windows GOOSE 支持、SQLite 日志服务与 C#/Python 绑定等实战环节,并在关键步骤处给出源码级证据,帮助读者从“跑通示例”推进到“集成进自有工程”。

一、项目定位:一套 C99 实现的 IEC 61850 协议栈

根据 README.md 的 Overview 章节,libIEC61850 的核心定位是:

  • 开源许可证:GPLv3(协议文本见 COPYING);
  • 协议覆盖:MMS(基于 ISO/TP 的制造消息规范)、GOOSE(IEC 61850-8-1)、SV(IEC 61850-9-2)、R-Session(加密会话,承载 R-GOOSE/R-SMV);
  • 语言与目标平台:按 C99 标准实现以保证最大可移植性,可运行于嵌入式系统与运行 Linux、Windows、macOS 的 PC;
  • 附带内容:一组简单的示例程序,可作为自研 IEC 61850 设备或通信工具的起点。

版本信息方面,根目录 CMakeLists.txt 中LIB_VERSION被设定为1.6.2(1.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、GOOSE(8-1)核心关联、读写、GOOSE 发布/订阅src/mms、src/goose/goose_publisher.c、src/goose/goose_subscriber.c
Sampled Values(SV,9-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.c
MMS 文件服务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_tracking
GOOSE/SV 控制块处理控制块对象的读写src/iec61850/server/impl
TLS 支持(IEC 62351-3/4)加密的 MMS 关联hal/tls、hal/inc/tls_socket.h
R-Session(R-GOOSE/R-SMV)基于 IEC 61850-8-1 的加密会话src/r_session
简单 SNTP 客户端(IEC 61850-5)供测试用途src/sntp/sntp_client.c
C、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.h);
  • src/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 使用-std=gnu99并开启-Wall -Wextra -Wshadow -Wmissing-declarations等一组严格告警;另提供static_checks(splint)与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.6)

README 指出库提供与具体实现无关的 TLS 配置接口(对应 hal/inc/tls_socket.h 与 hal/inc/tls_config.h),并附带两套实现:

  • mbedtls 2.28 LTS:支持到 TLS 1.2;
  • mbedtls 3.6.0:仅支持 TLS 1.2 与 1.3。

mbedtls 2.28 集成步骤

  1. 下载、解压 mbedtls-2.28 源码包,将其复制到third_party/mbedtls目录。注意:从官方源码包解压得到的目录名如果不是mbedtls-2.28,必须重命名为该名称(CMake 通过目录名探测版本,见下文);
  2. 在 libiec61850 根目录执行:
make WITH_MBEDTLS=1

mbedtls 3.6 集成步骤

  1. 下载、解压 mbedtls-3.6.0,放入third_party/mbedtls目录;
  2. 执行:
make WITH_MBEDTLS3=1

CMake 用户无需手动指定:当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_TLS=1)——打开 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 侧的等价逻辑在 Makefile:WITH_MBEDTLS会把third_party/mbedtls/mbedtls-2.28/library与hal/tls/mbedtls纳入编译并定义CONFIG_MMS_SUPPORT_TLS=1、CONFIG_IEC61850_R_GOOSE=1、CONFIG_IEC61850_R_SMV=1;WITH_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 install

Make 构建脚本的默认安装目录是.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 公共 API(iec61850_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/libiec61850(CMake)或include(Make)即可。

五、Windows 下带 GOOSE 支持的构建(WinPcap)

Windows(10/11)没有可用的原始 socket 支持,因此 GOOSE 相关应用依赖第三方库 WinPcap。README 给出的步骤:

  1. 下载并安装 WinPcap;在安装向导最后一屏选择开机时自动加载 WinPcap 驱动;
  2. 重启系统(也可稍后重启,但运行任何使用 GOOSE 的 libiec61850 应用前必须加载 WinPcap 驱动);
  3. 下载 WinPcap 开发者包(WpdPack_4_1_2.zip);
  4. 解压后,将Lib与Include两个目录拷贝到 libiec61850 的third_party/winpcap目录。

仓库中这一依赖在多处得到印证:

  • Makefile:HAL_IMPL=WIN32时把third_party/winpcap/Include加入包含路径;
  • examples/CMakeLists.txt:Windows 下检查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改为"0"(WinPcap 适配器编号)。

从源码结构看,Windows 的以太网捕获走 hal/ethernet/win32/ethernet_win32.c,而 Linux/macOS/FreeBSD 走 hal/ethernet/linux/ethernet_linux.c 与 hal/ethernet/bsd/ethernet_bsd.c;Linux 默认网卡名eth0由 config/stack_config.h.cmake 的CONFIG_ETHERNET_INTERFACE_ID指定,macOS 需自行改为en0等(文件中留有注释示例)。

六、使用 CMake 构建

Linux 构建

前提是安装构建工具与 CMake(README 以 Ubuntu 20.04 的build-essential、cmake包为例)。执行:

mkdir build cd build cmake .. make

可选地安装到系统目录:

sudo make install

可选的“仅测试用”插桩:LIB61850_ENABLE_TEST_API

README 在 CMake 章节新增了一小节:为确定性测试(例如 MMS 文件 ObtainFile 请求超时行为),库提供了默认关闭、且在生产构建中完全排除的测试插桩 API:

cmake -DLIB61850_ENABLE_TEST_API=ON ..

启用后可用的测试专用函数以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 时,相关符号与代码被整体省略,对运行时行为与内存占用零影响——因此它只应在测试工程中启用。

Windows(Visual Studio)生成器

README 说明了 CMake “generator”机制:在 libiec61850 下新建子目录、进入该目录后,通过 CMake 命令行参数指定生成器,由 CMake 生成具体构建工具的项目文件。命令中的..指向主构建脚本 CMakeLists.txt 所在目录(即父目录)。各版本 Visual Studio 的生成器命令(README 原文,64 位构建):

  • Visual Studio 2015(32 位/64 位):
cmake -G "Visual Studio 14 2015" .. cmake -G "Visual Studio 14 2015 Win64" ..
  • Visual Studio 2017:
cmake -G "Visual Studio 15 2017 Win64" ..
  • Visual Studio 2019:
cmake -G "Visual Studio 16 2019" .. -A x64
  • Visual Studio 2022:
cmake -G "Visual Studio 17 2022" .. -A x64

README 补充:部分系统可以不指定 generator;使用ccmake/cmake-gui可以图形化地选择配置选项。对 VS 2015 之前的 MSVC,CMakeLists.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 绑定(SWIG)
CONFIG_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/SMV(Windows 需要 WinPcap)
CONFIG_IEC61850_R_GOOSE/R_SMV(ON)R-Session 加密会话(需要 mbedtls)
CONFIG_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# API

dotnet目录包含 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 两处提及联系邮箱 info@mz-automation.de);
  • 贡献:欢迎提交评论、功能请求、Bug 报告与补丁;超过“琐碎”级别的贡献需要签署 Contributor License Agreement(CLA),README 建议计划贡献前先联系 info@libiec61850.com;
  • 仓库性质:README 末尾特别提醒,官方代码托管为 Bitbucket(bitbucket-pipelines.yml即其 CI 配置),GitHub 仓库仅为只读归档,不接受 Pull Request。当前所在镜像同样属于只读归档性质。

十、小结:从 README 到可验证的构建路径

本文沿 README 的脉络把 libIEC61850 1.6.2 的“文档承诺”逐一对照到了仓库中的构建脚本与源码:

  1. 功能面:MMS/GOOSE/SV/R-Session 四类协议 + 报告、数据集、日志、文件、设置组、服务跟踪等服务,均有src/下的明确实现目录;
  2. 构建面:make examples最快验证;make WITH_MBEDTLS=1/WITH_MBEDTLS3=1或放置third_party/mbedtls/mbedtls-2.28(mbedtls-3.6.0)目录获得 TLS 能力;CMake 下LIB61850_ENABLE_TEST_API提供可完全排除的测试插桩;
  3. 集成面:install目标按 30 个头文件白名单输出干净的 include/lib 布局;Windows GOOSE 依赖 WinPcap 且由构建脚本自动探测;SQLite 日志服务依赖log_storage_sqlite.c与third_party/sqliteamalgamation 源码;
  4. 语言面:C 为核心,C#/.NET 封装成熟,Python 绑定实验性且无官方支持。

后续可继续深入的材料:examples/ 下各示例的源码与.cid/.icd模型文件、tools/model_generator/ 的模型生成工具、CHANGELOG 的完整版本记录,以及fuzz/中各模糊测试入口所揭示的协议边界条件。

  • 通信
  • 嵌入式
  • 工业制造

【免费下载链接】libiec61850

Official repository for libIEC61850, the open-source library for the IEC 61850 protocols

项目地址:https://gitcode.com/gh_mirrors/li/libiec61850
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询