架构、组件及其任务
CODESYS BACnet2 SL 和 CODESYS BACnet(1) SL 每个包含三个 IEC 库:
CmpBACnet,CmpBACnet2BACnet,BACnet2BACnetDefaultImpl,BACnet2DefaultImpl2
(注意:以下描述适用于库的两个“变体”。)
该套件还包括 BACnet 插件用于 CODESYS 开发环境,对库版本执行一致性检查 BACnet 对象 ID,以及提供 EDE 导出/导入。
这 BACnet 堆 (BACstack) 是一个可选组件 CODESYS 运行时间(CmpBACnet 成分)。
这 CmpBACnet IEC 库代表了 BACnet 堆叠成一个 CODESYS IEC 环境并提供 BACnet 数据类型以及 BACstack 方法。独家使用IEC库 CmpBACnet (没有 BACnet 和 BACnetDefaultImpl 库)将导致复杂而冗长的 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 库既作为编译库又作为源代码库提供。