开发者中心 开发者中心
  • 简体中文
  • English
视频教程
敢为云网站
  • 6.0版本
  • 6.1 版本
视频教程
敢为云网站
  • 平台概述
  • 平台功能
  • 平台安装
  • 开发者指南
  • 项目实战
  • 附录
    • 常用协议说明
    • 接口说明
    • 数据库说明
    • 平台接入能力
    • 如何使用gRPC
    • 敢为公共库
    • 设备禁用配置
    • 内网平台获取外网平台数据
    • 工程调试
      • 常用调试工具
        • MODBUS
        • SNMP
        • OPC
        • BACNet
          • 视频教程
          • 1 BACnetScan 的使用
            • 1.1 获取点表并整理
            • 1.2 工具生成数据库方法
          • BACent属性类型说明
        • MQTT
      • 园区数字平台交付指南
    • Q&A

BACNet

# 常用调试工具

BACNet 协议调试

# 视频教程

# 1 BACnetScan 的使用

BACnetScan下载:BACnetScan.zip

# 1.1 获取点表并整理

  1. 使用 BACnetScan 工具获取 BA 点表

    需要确保网通通讯正常,才能使用工具获取到点表,如果网络通讯不上,需要将本机IP修改成与目标保持在同一网段的IP,确保网络能够ping通。 以管理员的身份运行BACentScan.exe程序。

    打开的软件主界面,如下:

    软件默认三个个节点:

    1. BACent Etherncet

    2. BAcent IP

    3. BAcent MS/TP

    一般常用到的是BACent IP 跟BAcent MS/TP两种。

    选择根节点模式,右击搜索设备,工具会将目标服务器里所有BACent的网络引擎ID(Device:多少)读取出来,读取点表的电脑需要和网络设备在同一网段下。

    选择一个NAE(device:15),会将这个NAE的信息读取出来,如:

    Address:192.168.1.10:47808(网络引擎IP跟端口)

    SNET:11(表示11号网络地址)MS/TP方式才会有

    SADR:15(15号设备ID)MS/TP方式才会有

  2. 再选择Device,右击搜索点位,等下方对话框出现完成扫点,即已经将这个device下所有的BACent点位扫描完成,再选择这个device,右击,选择导出BACent ip.exl;会将已经扫描的点位信息生成excle导出,文件名称最好为:文件名+DvecieID+网络引擎IP+MS/TP(SNER+SADR如果不是ms/tp方式,则不需要记录) 如下:

    1. IP:点表的IP地址,该IP在BACentScan可查看到
    2. DeviceID:在BACentScan可查看到
    3. 使用bacnet/IP方式部署的网络控制器,其SNET(设备网络地址)+SADR(设备ID)都默认为0;当现场设备部署方式为MSTP方式,则需要使用另外的工具读取。
  3. 点表内容中关键字段解析(以下截图为第三方工具导出的点表,使用敢为软件自带工具导出有细微区别)

    1. ID:点位属性排序标识
    2. Name:点位名称
    3. RegType:点位类型
    4. RegAddress:点位地址
    5. DataType:点位获取到的数据类型
    6. BACnetType:点位类型所对应的数字(和属性类型相对应)
    7. BACnetAddress:点位属性在点表中的地址
    8. Description:点位注释(此属性由厂家配置)

  4. 整理成研发要求的数据库模板(华为网关项目才需要使用该项数据库模板解析,4.9往后属性为配合工具使用自主配置)

    1. ID:点位属性排序标识(默认自增)
    2. Name:点位名称(在厂家软件上对属性点右击即可查看到)
    3. RegType:点位类型
    4. RegAddress:点位地址
    5. DataType:点位获取到的数据类型
    6. BACnetType:点位类型所对应的数字(不重要)
    7. BACnetAddress:点位属性在点表中的地址(不重要)
    8. Description:点位注释(可能会没有注释)
    9. 设备名称:需要自己依据点位属性并核对厂家软件整理
    10. 设备类型:确认设备并划分设备所属类型(如:空调:AHU)该缩写由自己定义
    11. 标志命名:点位属性所对应的属性缩写
    12. 上报方式:该点位属性的上报方式(TIMING或CHANGE)
    13. 上报周期:定义该点位多长时间上报一次数据(单位:秒)
    14. YCP:是否将该属性添加至此表(0:不添加,1:添加)
    15. YXP:是否将该属性添加至此表(0:不添加,1:添加)
    16. Setparm:是否将该属性添加至此表(0:不添加,1:添加)

# 1.2 工具生成数据库方法

# 1.2.1 华为网关项目数据库配置方法

  1. 需要在数据库新建表(具体文档见文件:BACnet工具导入Exl版新增数据表.xlsx):GW_HW_EquipConfig,GW_HW_EquipNodeConfigYcx,GW_HW_EquipNodeConfigSet,GW_HW_ObjectType

  2. 表中字段解析:

    GW_HW_EquipNodeConfigYcx

    数据库字段 填入内容(空调为例) 说明
    equipType AHU 已梳理好Excel表格中设备的类型缩写
    ocEquipType Ahu 华为OC平台所需的设备类型
    ocEquipId Ahu01 华为OC平台所需的设备标识
    ocTime AhuRealService 属性表(YCP,YXP)所用数据传输的服务名称
    setOcTime AhuService 指令表(SetParm)所有数据传输的服务名称

    GW_HW_EquipNodeConfigYcx(提供YCP,YXP转换规则)

    数据库字段 填入内容(空调为例) 说明
    ocTime AhuRealService 属性表(YCP,YXP)所用数据传输的服务名称
    valueEx S 设备类型中属性类型缩写,与表中定义保持一致
    equipName Status 该属性缩写转换后的名称

    GW_HW_EquipNodeConfigSet(提供SetParm转换规则)

    数据库字段 填入内容(空调为例) 说明
    ocTime AhuService 指令表(SetParm)所用数据传输的服务名称
    valueEx SF-C 设备类型中属性类型缩写,与表中定义保持一致
    equipName setSupplyFanStartSwitch 该属性缩写转换后的名称

    GW_HW_ObjectType

    数据库字段 填入内容 说明
    ObjectType float/bool 点表中的属性数据类型(DataType)
    objectTypeSQL float/enum 转换后应存入数据库的属性数据类型
  3. 将工具插件(ExlBAC)放入软件:

    路径: D:\AlarmCenter\AddIns\AddIns\AlarmCenter\System

  4. 软件菜单栏->配置->导入Excel生成数据库版(江森)。

  5. 点击导入已整理的点表

    导入已整理的点表

  6. 操作步骤:

    1. 选择对应点表
    2. 点击获取设备属性
    3. 点击全选
    4. 点击将所选一键配置
    5. 跳出弹窗后点击:确定
    6. 跳出弹窗(是否向已有设备添加)如果是新增,则点击:取消
    7. 跳出第二个弹窗界面:
      1. 填入该点表加入数据库时第一设备编号,后续会自增
      2. 设备区域根据实际情况填写,
      3. 点击:确定
    8. 之后会卡住一定时间,最后会弹出成功页面

  7. 查看数据库是否已经导入

    • local_addr字段表示远程BACent设备的UDP通讯地址和端口,格式:192.168.0.100:47808

    • 如果需要使用多线程通讯,可以在格式后增加不同的线程ID如:192.168.0.100:47808:1

    • Equip_addr字段便是远程BACent设备的ID(device-instance)

    • Communication_time_param通讯时间参数,格式:1500/50/20第一个表示通讯间隔,第二个表示最大读取段数,第三个表示重试次数

    • Communication_param字段使用MS/TP模式,格式:11_15,表示11号网络地址,15号设备ID

    • SNET:网络地址

    • SADR:设备ID

    • YCP表和YXP表

      main_instruction字段表示设备属性的数据类型跟地址,格式如:OBJECT_ANALOG_VALUE:3002311;OBJECT_ANALOG_VALUE:表示属性为AV类型,3002311表示属性的地址;

    • RegType:属性的类型

    • RegAddress:属性的地址

    • Setpram表

      main_instruction字段表示设备属性类型跟地址,格式如:OBJECT_ANALOG_VALUE:3002311;OBJECT_ANALOG_VALUE:表示属性位AV类型,3002311表示属性的地址;

      minor_instruction字段表示属性的数据类型,如:Float,enum

    • RegType:属性的类型

    • RegAddress:属性的地址

    • DataType:属性的数据类型

# 1.2.2 普通项目数据库配置方法

equip表配置
数据库字段 填入内容 说明
equip_no 1 设备编号不能与其他设备重复
equip_nm 空调网关1 设备名称
acc_cyc 1 数据刷新优先级1为最优
communication_drv GWBACnet.NET.dll BACnet协议解析驱动文件
local_addr 192.168.1.11:47808 UDP通讯地址和端口(如果需要使用多线程通讯,可以在格式后增加不同的线程ID如:192.168.1.11:47808:1)
equip_addr 519437 BACent设备的ID
communication_param 11_15 MS/TP模式:11表示网络地址,15表示设备ID;如果是其他模式:该字段为空
communication_time_param 1500/50/20 数据采集周期(控制数据刷新间隔,以毫秒为单位;第一个表示通讯间隔,第二个表示最大读取段数,第三个表示重试次数)
YCP表配置
数据库字段 填入内容 说明
equip_no 1 设备号(必须与Equip表该设备编号相同)
yc_no 1 遥测点编号
yc_nm 空调1设定温度 遥测点名称
main_instruction OBJECT_ANALOG_VALUE:3002311 OBJECT_ANALOG_VALUE:表示该点位为AV类型(所有类型定义在后面章节详细介绍);3002311:表示属性的地址
minor_instruction 为空 未使用
lvl_level 3 报警事件级别(0表示屏蔽报警、1表示显示报警、2以上表示显示并记录报警、最大级别8)
YXP配置
数据库字段 填入内容 说明
equip_no 1 设备编号(必须与Equip表该设备编号相同)
yx_no 1 遥信点编号
yx_nm 空调1开关机状态 遥信点名称
main_instruction OBJECT_BINARY_INPUT:40011 OBJECT_BINARY_INPUT:表示该点位为BI类型(所有类型定义在后面章节详细介绍);40011:表示属性的地址
minor_instruction =1或者=17 =1 或17是根据不同品牌厂家的协议规范来填写的(有些定义1是开机状态,有些定义17是开机状态)
level_r 3 evt_01事件报警级别(0表示屏蔽报警、1表示显示报警、2以上表示显示并记录报警、最大级别8)
level_d 1 evt_10事件报警级别(0表示屏蔽报警、1表示显示报警、2以上表示显示并记录报警、最大级别8)
SetParm表配置
  • 配置SetPram表是需要注意,控制属性是有优先级的(0~16),所以需要同时配置一个释放优先级的控制指令。

  • 优先级说明:其中0为无优先级;1-16数字越低优先级越高,大部分软件控制的最高优先级为8。

  • BA控制优先级原理:当发送的控制指令优先级比原先控制指令高时,会执行发送的控制指令;当发送的控制指令优先级比原先控制指令低时,此条控制指令不取消,会进入等待状态,高优先级指令被释放时,会执行等待中的最高优先级指令;只有同优先级指令才会相互取代。

  • 通过控制指令控制BA设备时,有时候会控制失效,或者控制成功后,过几秒会恢复原来的状态。有可能是由于优先级过低造成的。

数据库字段 填入内容 说明
equip_no 1 设备编号(必须与Equip表该设备编号相同)
set_no 1 控制点编号
set_nm 空调1开机命令 控制点名称
set_type X 如果是直接下发的指令,比如空调开机,填写X,需要手动输入命令的指令,比如设置温度,填写V;
main_instruction OBJECT_ANALOG_OUTPUT:40013 读取的对象类型(object-type)用数字表示,详细定义,可查看下文BACent属性类型说明;RegType:RegAddress
minor_instruction Float 属性的数据类型:只有Float和enum两种类型;Float类型(AO、AV)填写Float; bool类型(BO、BV)和枚举类型(MV)填写enum;如果是释放优先级指令则填写null。
value 1,16 发送的指令内容(根据协议规定填写我们的示例1是开机,0是关机)16是控制优先级(我们在项目中一般默认使用16,16以上的有可能会影响厂家软件的控制;1-16数字越低优先级越高);如果set_type为V,则为空。
BACent属性类型说明
属性类型 属性缩写 说明
OBJECT_ANALOG_INPUT AI Float模拟量读取
OBJECT_ANALOG_OUTPUT AO Float模拟量读取和写入
OBJECT_ANALOG_VALUE AV Float模拟量读取和写入
OBJECT_BINARY_INPUT BI bool状态量读取
OBJECT_BINARY_OUTPUT BO bool状态量读取和写入
OBJECT_BINARY_VALUE BV bool状态量读取和写入
OBJECT_MULTI_STATE_VALUE MV 枚举值读取和写入
在配置数据库过程中需要注意
  • AI类型点位只有读取配置到YCP表;AO类型点位有读取和写入,需要配置到YCP和SetParm表;AV类型点位,需要根据现场请况分析,如果该点位不是控制点(没有写入),则配置到YCP表,如果是控制点,则配置到YCP和SetParm表;

  • BI类型点位只有读取配置到YXP表,BI类型点位有读取和写入,需要配置到YXP和SetParm表;BV类型点位,需要根据现场请况分析,如果该点位不是控制点(没有写入),则配置到YXP表,如果是控制点,则配置到YXP和SetParm表;

  • MV类型点位,需要根据现场请况分析,如果该点位不是控制点(没有写入),则配置到YCP表,如果是控制点,则配置到YCP和SetParm表。

# BACent属性类型说明

OBJECT_ANALOG_INPUT = 0,     AI
OBJECT_ANALOG_OUTPUT = 1,   AO
OBJECT_ANALOG_VALUE = 2,     AV
OBJECT_BINARY_INPUT = 3,     BI
OBJECT_BINARY_OUTPUT = 4,   BO
OBJECT_BINARY_VALUE = 5,     BV
OBJECT_CALENDAR = 6,
OBJECT_COMMAND = 7,
OBJECT_DEVICE = 8,
OBJECT_EVENT_ENROLLMENT = 9,
OBJECT_FILE = 10,
OBJECT_GROUP = 11,
OBJECT_LOOP = 12,
OBJECT_MULTI_STATE_INPUT = 13,
OBJECT_MULTI_STATE_OUTPUT = 14,
OBJECT_NOTIFICATION_CLASS = 15,
OBJECT_PROGRAM = 16,
OBJECT_SCHEDULE = 17,
OBJECT_AVERAGING = 18,
OBJECT_MULTI_STATE_VALUE = 19,
OBJECT_TRENDLOG = 20,
OBJECT_LIFE_SAFETY_POINT = 21,
OBJECT_LIFE_SAFETY_ZONE = 22,
OBJECT_ACCUMULATOR = 23,
OBJECT_PULSE_CONVERTER = 24,
OBJECT_EVENT_LOG = 25,
OBJECT_GLOBAL_GROUP = 26,
OBJECT_TREND_LOG_MULTIPLE = 27,
OBJECT_LOAD_CONTROL = 28,
OBJECT_STRUCTURED_VIEW = 29,
OBJECT_ACCESS_DOOR = 30,
OBJECT_TIMER = 31,
OBJECT_ACCESS_CREDENTIAL = 32,
OBJECT_ACCESS_RIGHTS = 34,
OBJECT_ACCESS_USER = 35,
OBJECT_ACCESS_ZONE = 36,
OBJECT_CREDENTIAL_DATA_INPUT = 37,
OBJECT_NETWORK_SECURITY = 38,
OBJECT_BITSTRING_VALUE = 39,
OBJECT_CHARACTERSTRING_VALUE = 40,
OBJECT_DATE_PATTERN_VALUE = 41,
OBJECT_DATE_VALUE = 42,
OBJECT_DATETIME_PATTERN_VALUE = 43,
OBJECT_DATETIME_VALUE = 44,
OBJECT_INTEGER_VALUE = 45,
OBJECT_LARGE_ANALOG_VALUE = 46,
OBJECT_OCTETSTRING_

上次更新: 9/11/2023, 3:33:27 PM

← OPC MQTT→

目录
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式