Official repository for lib60870 an implementation of the IEC 60870-5-101/104 protocol (read-only mirror)
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 6 个月前 | ||
| 1 年前 | ||
| 6 个月前 | ||
| 9 年前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 8 个月前 | ||
| 6 个月前 |
README lib60870-C {#mainpage}
lib60870 库:基于 IEC 60870-5 协议的 C 语言实现
当前实现包含 IEC 60870-5-101(应用层和串行链路层)和 IEC 60870-5-104(基于 TCP/IP 的协议)规范的代码。
功能特点:
- 支持所有应用层消息类型
- 主站与从站功能
- 平衡式和非平衡式链路层(适用于 CS 101 串行通信)
- CS 104 TCP/IP 通信的客户端/服务器功能
- CS 104 冗余组支持
- CS101 从站/CS104 服务器:文件服务支持
- 支持 IEC 62351-3 要求的大多数 TLS 功能(需第三方代码 mbedtls)
- 安全认证支持(IEC 60870-5-7:2013)作为商业可用附加组件提供
- 可移植的 C99 代码
另请参考用户指南和 API 参考文档(https://support.mz-automation.de/doc/lib60870/latest/)
编译和运行示例:
在 lib60870-C 文件夹中,使用以下命令构建库:
make
进入 examples 文件夹,并在每个示例的目录中使用以下命令构建示例:
make
该库和示例也可以使用 CMake 构建。
要在单独的文件夹中构建库,请在项目文件夹的子目录中创建一个新文件夹,并运行 cmake 以生成构建文件:
mkdir build
cd build
cmake ..
不包含通用代码和 HAL 的构建
该库包含一些通用代码和平台抽象层(HAL),这些代码与 MZ Automation 的其他协议库(例如 libiec61850)共享。为了简化这些协议库的协同使用,可以编译不包含通用部分的库。
这可以通过在调用 make 时使用 WITHOUT_HAL 和 WITHOUT_COMMON 定义来实现:
make WITHOUT_HAL=1 WITHOUT_COMMON=1
构建带 TLS 支持的库
该库可以构建为支持 TLS。为此,您必须下载 mbedtls 2.28.x 版本。
将 mbedtls 压缩包解压缩到 dependencies 文件夹中,确保存在以下文件夹:
dependencies/mbedtls-2.28
cmake 构建系统将自动检测 mbedtls 源代码,并构建包含 TLS 支持和 mbedtls 的库。
使用 make 时,您必须使用 WITH_MBEDTLS=1 调用 make:
make WITH_MBEDTLS=1
库配置
存在不同的运行时和编译时配置选项。
编译时配置选项可用于为小型嵌入式系统精简库。可通过修改文件_config/lib60870_config.h_来更改编译时配置。
内存分配
该库使用动态内存分配(通过自有函数封装的malloc/calloc,必要时可替换)。
CS104从站仅在设置阶段(调用函数_CS104_Slave_create_以及_CS104_Slave_start_/_CS104_Slave_startThreadless_时)使用动态内存分配。
有关详细信息,请参阅《用户指南》。
联系方式:
该库由Michael Zillgith开发,并得到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。
贡献
如果您希望为库的改进和开发做出贡献,请向我发送意见、功能请求、错误报告或补丁。
请勿向github仓库提交拉取请求。github仓库是只读副本。拉取请求可能会被无提示地忽略。
对于非 trivial 的贡献,我要求您签署贡献者许可协议。请联系info@mz-automation.de。