架构、组件及其任务 CODESYS BACnet2 SL 和 CODESYS BACnet(1) SL 每个包含三个 IEC 库: CmpBACnet , CmpBACnet2 BACnet , BACnet2 BACnetDefaultImpl , BACnet2DefaultImpl2 (注意:以下描述适用于库的两个“变体”。) 该套件还包括 BACnet 插件用于 CODESYS 开发环境,
何时使用 BACnet 库或 CmpBACnet 库 注意 这些描述也始终适用于相应的库 CODESYS BACnet2 SL (“主要修订2”)。 IEC 库 BACnet 旨在作为 IEC 库之上的一层 CmpBACnet 。但是,该层不会隐藏库,因为这需要 BACnet 库具有“外观功能”的功能 CmpBACnet 。这些“外观函数”将导致更大的应用程序代码和增加的运行时要求。这对于PLC来
入门 以下说明将指导您使用一个简单的应用程序,该应用程序使用两个 BACnet 对象以便 1)编写模拟 BACnet 运行时的值,2)根据a发出警报 BACnet 当前的通知类 BACnet 值超出特定范围。 . 要求: 这 CODESYS BACnet2 SL 软件包已安装。 运行时支持 BACnet 。为了实现这一点, CmpBACnet 组件必须在运行时的配置文件中输入和配置。 在 CODE
BACnet 运行时配置 CODESYS BACnet2 SL 使用 CmpBACnet 或者 CmpBACnet2 用于通信的组件。该组件必须在运行时的配置文件中输入和配置,如下所示。 [ComponentManager] Component.1=CmpBACnet2 [CmpBACnet2] ; configuration file of the BACnet stack IniFile=$P
BACnet 配置在 CODESYS 项目 BACnet 设备树和设备编辑器中的配置 在 CODESYS ,您可以插入一个 BACnet 服务器和 BACnet 对象作为项目树中 PLC 设备下方的设备。这 BACnet 服务器代表 BACnet 设备并处理与运行时系统的通信。 每个应用程序可以有一个服务器设备,包括作为子对象的对象设备。您还可以插入 BACnet 客户端位于服务器下方。 要求:
进入 BACnet 对象及其属性 每个功能块 BACnet 作为项目树中的设备插入的对象源自 BACnetStaticObjectBase 功能块(库 BACnet )因此从 BACnetObjectBase 。 BACnetObjectBase 提供通过通用功能更改任何 BACnet 对象功能块的任何 BACnet 属性的能力 SetPropertyInstance 。 要设置的 BACnet
用于 BACnet 客户端功能块 此外 BACnet 物体, BACnet 客户端也可以作为“设备”插入到 BACnet 服务器。 与对象和服务器一样,每个客户端设备也带有一个功能块,该功能块以与客户端设备相同的名称进行实例化。 不像 BACnet 物体,一个 BACnet 客户端不需要复杂的(静态)配置。因此,即使不创建客户端功能块也可以使用 BACnet 客户端作为“设备”。然而,在这种情况下
BACnet 数据类型 – 定义和例外 这 BACnet 库主要使用 BACnet 数据类型(在 CmpBACnet 库)在其接口(方法参数、方法返回值、功能块属性)。 如果接口上使用其他数据类型(在这种情况下主要是 IEC 基本数据类型),则相应的方法和属性将执行与相应内部使用的隐式转换 BACnet 数据类型。 例子: 转换 国际电工委员会 BOOL <-> CmpBACnet.IEC_BAC
使用电流时的实施要求 BACnet API/堆栈 在实施 BACnet 这里描述的API/stack,很大一部分对象行为是在 BACnet 标准已经预先实施。但是,每个特定应用程序(用户应用程序,或者换句话说您的应用程序)必须实现特定的对象操作,以便完全遵守 BACnet 标准(例如,获得BTL认证)。 许多服务请求已在此 API 中处理,因此应用程序无需注册所有服务挂钩即可作为服务运行 BACn
具有默认操作实现的服务指示挂钩 以下是已经实现了一些默认操作并且通常不需要在用户应用程序中实现任何钩子的列表: 服务挂钩:AcknowledgeAlarm 验证请求的有效性后,API 尝试定位指定的对象。如果该对象存在并且如果 Time Stamp 参数与被确认事件的最近时间相匹配,则将发生以下情况: Acked_Transitions 对象的属性对应于值 Event State Acknowle