目标是将第二个AC500 控制器配置为 BACnet 客户端,从服务器读取模拟值。本例根据插图 280 BACnet 对象、属性、服务和 BIBB ,右侧部分。
-
根据 ⮫ “配置 BACnet 服务器根对象 ” 添加新控制器并配置 “BACnet Server” 根对象。
-
将
InstanceNumber设为14,将InstanceName设为Device 14。
-
除 BACnet 对象外,BACnet 客户端也可作为设备插入“BACnet Server” 。在 “BACnet Server” 节点下面添加 “BACnet 客户端读取属性”。

-
创建的对象“BACnet 客户端读取属性” 会生成一个功能块实例,可用于对客户端读取功能进行编程。下图是一个简单的例子。
在代码部分的第 1-5 行,调用了带有以下参数的功能块:
-
要读取的服务器设备 ID (
12) ⮫ “支持的对象和属性 ” -
读取对象的对象 ID (
1010,用于“模拟输入”) -
对象类型 (“模拟输入”)
-
属性改为 (“现值”)
-
triggerRead开始读取操作
当用户(或其他程序部分)将
triggerRead变量从FALSE设置为TRUE时,边沿触发功能块BACnet_Client_Read_Property开始运行,并向服务器设备发送读取请求。收到服务器的回复后,输出.xDone将被TRUE(第 8 行),并可从输出.result(第 14 行)读取温度值。
-
-
将该程序下载到与服务器处于同一 IP 网络的另一个AC500 控制器上。将
triggerRead设置为TRUE,将其设置为运行并读取温度值。在在线模式下,可在第 14 行观察读取的温度值。
替代配置
与 BACnet 对象不同,BACnet 客户端不需要复杂的(静态)配置,因此无需将 BACnet 客户端创建为设备即可使用客户端功能块。

“BACnet 服务器”下面没有创建 BACnet_Client_Read_Property 对象。相反,必须在 PRG 中声明一个功能块 BACnet_Client_Read_Property(声明中的第 6 行),并通过 RegisterToServer() 与 IEC 代码中的 “BACnet 服务器” 进行初始 "连接",从而激活(代码中的第 2 行)⮫ “参考,功能块”。
