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_HAL 和 WITHOUT_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_create 和 CS104_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