lib60870:基于 IEC 60870-5 协议的 C 语言库

当前的实现包含 IEC 60870-5-101(应用层和串行链路层)和 IEC 60870-5-104(TCP/IP 协议库)规范的代码。

特性:

  • 支持所有应用层消息类型
  • 主站和从站
  • 平衡和不平衡链路层(用于 CS 101 串行通信)
  • 用于 CS 104 TCP/IP 通信的客户端/服务器
  • CS 104 冗余组支持
  • 可移植的 C99 代码

还请考虑用户指南和 API 参考文档 (https://support.mz-automation.de/doc/lib60870/latest/)

编译和运行示例:

在 lib60870-C 文件夹,使用如下命令构建库

make

转到 examples 文件夹,在每个示例文件夹使用如下命令构建示例

make

该库和示例也可以使用 CMake 来构建。

要在单独的文件夹中构建库,请创建一个新文件夹作为项目文件夹的子目录,并运行 cmake 来创建构建文件:

mkdir build
cd build
cmake ..

构建不带通用代码和 HAL 的版本

该库包含一些公共代码和与 MZ Automation 的其他协议库(例如 libiec61850)共享的平台抽象层(HAL)。如果要简化使用所有这些协议库,可以在没有公共部分的情况下编译库。

这可以通过在调用 make 时使用 WITHOUT_HALWITHOUT_COMMON 定义来实现:

make WITHOUT_HAL=1 WITHOUT_COMMON=1

构建支持 TLS 的版本

该库可以构建支持 TLS。为了做到这一点,您必须下载 2.16.12 版本 mbedtls。

解压缩 dependencies 文件夹中的 mbedtls tar 包,保证以下文件存在

dependencies/mbedtls-2.16.12

cmake 构建系统将自动检测 mbedtls 源,并构建包含 TLS 支持和 mbedtls 的库

使用 make 时,需要带 WITH_MBEDTLS=1 选项调用 make

make WITH_MBEDTLS=1

库配置

有不同的运行时和编译时配置选项。

编译时配置选项可用于在小型嵌入式系统中缩小库大小。可以通过修改文件 _config/lib60870_config.h 来更改编译时配置。

内存分配

该库使用动态内存分配(malloc/caloc 由自己的函数包装,这些函数可以在需要时替换)。

CS104 从机仅在启动时使用动态内存分配(当调用函数 CS104_slave_createCS104_Slave_start/CS104_Slave_startThreadless_)。

有关详细信息,请参阅 User Guide

联系方式:

该库是由我的 MZ Automation GmbH 开发和支持的。

有关错误报告、提示或支持,请联系 info@mz-automation.de

许可证

此软件可在 GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html)以及商业许可协议下获得双重许可。

在商业和非 GPL 应用程序中使用库时,您应该购买商业许可证。

商业许可证和支持

MZ Automation GmbH 提供支持和商业许可选项。请联系 info@mz-automation.de 了解更多详细信息。

贡献

如果你想为库的改进和开发做出贡献,请给我发评论、功能请求、错误报告或补丁。

对于不是微不足道的贡献,我要求您签署一份贡献者许可协议。请联系 info@mz-automation.de


英文原文:https://github.com/mz-automation/lib60870
API参考:https://support.mz-automation.de/doc/lib60870/latest/index.html