Skip to main content

架构、组件及其任务

CODESYS BACnet2 SLCODESYS BACnet(1) SL 每个包含三个 IEC 库:

  • CmpBACnet, CmpBACnet2

  • BACnet, BACnet2

  • BACnetDefaultImpl, BACnet2DefaultImpl2

(注意:以下描述适用于库的两个“变体”。)

该套件还包括 BACnet 插件用于 CODESYS 开发环境,对库版本执行一致性检查 BACnet 对象 ID,以及提供 EDE 导出/导入。

BACnet 堆 (BACstack) 是一个可选组件 CODESYS 运行时间(CmpBACnet 成分)。

CmpBACnet IEC 库代表了 BACnet 堆叠成一个 CODESYS IEC 环境并提供 BACnet 数据类型以及 BACstack 方法。独家使用IEC库 CmpBACnet (没有 BACnetBACnetDefaultImpl 库)将导致复杂而冗长的 IEC 应用代码。

有关更多信息,请参阅: 何时使用 BACnet 库或 CmpBACnet 库

BACnet 库简化了 BACnet 与单独使用相比,应用程序开发显着 CmpBACnet,特别是在以下领域:

  • 启动和停止 BACnet

  • 使用 BACnet 服务器对象及其属性

  • 触发异步请求(主要是“客户端服务请求”)并处理“请求事务”

  • 来自“回调”的处理 BACnet 堆栈(参见 IBACnetEventConsumer)并将“回调”分发给应用程序中的多个接收者

此外, BACnet 库提供了插件机制(BACnetServerPlugin)用于扩展某些方面 BACnet 图书馆。 BACnetServerPlugin 是的基础 BACnetDefaultImpl 图书馆。

BACnetDefaultImpl 库用于进一步简化 BACnet 应用程序开发。这 BACnet 标准 ASHRAE 135 留下了实际使用的一些方面 BACnet 打开。最值得注意的例子包括:

  • 服务器对象的持久化

  • 存储和持久化 Trend Log, Trend Log Multiple, 和 Event Log 条目

  • 更新设备对象的日期/时间信息

CODESYS 这些方面的实现必然基于有关 PLC 和应用程序的一些假设,例如:

  • PLC有一个文件系统。

  • PLC文件系统对于数据量、速度或写入周期数没有过于严格的限制。

由于这些假设,此类实现不能永久包含在 BACnet 库,因为这会妨碍其他用例的实现以及其他约束的遵守。

BACnetDefaultImpl 库是这些“默认实现”的地方。在最好的情况下,如果假设正确,那么可以轻松使用这些标准实现。如果假设不适用,那么特定方面的标准实现可以很好地用作 PLC/特定应用实现的示例和基础。

为此, BACnetDefaultImpl 库既作为编译库又作为源代码库提供。