基于BACnet MS/TP协议的计量仪表数据通讯设计与实现
2018-10-11王晓春王小利
王晓春,王小利
(1.威海市天罡仪表股份有限公司,山东威海264200;2.山东大学威海分校,山东威海264200)
0 引言
随着水、气、热户用计量仪表从机械式向智能化方向发展,能够实时采集数据的集抄监控系统便得到广泛的使用,其中仪表通讯采用的标准主要是行业标准《CJ/T 188户用计量仪表数据传输技术条件》和基于欧洲标准制定的国标《GB/T 26831社区能源计量抄收系统规范》。
近年来,随着智能建筑的迅猛发展,数据通信协议 BACnet(Data Communication Protocol for Building Automation and Control Networks)作为最主流的楼宇自控通信协议,已经成为事实上的工业标准。由于协议兼容问题,目前常见的智能建筑抄表方案中仍然以表计的CJ/T 188或GB/T 26831协议组网,在数据网关处统一分析,通过网关支持的BACnet协议接入智能楼宇网络。
鉴于上述原因,我们设计实现了一种能够原生支持BACnet协议的低成本计量仪表。该仪表可以充分利用BACnet协议在智能楼宇组网中的技术优势,更好地满足市场需求。
1 系统设计及工作原理
BACnet的网络体系架构基于开放系统互连(OSI)参考模型,可以运行在以太网、RS485/232 等多种链路之上。计量仪表支持RS 485接口,通常采用主 - 从/令牌传递 MS/TP(Master-Slave/Token-Passing)数据链路协议。MS/TP协议确定了三个有限状态机,包括Master节点状态机和Slave节点状态机以及Slave节点状态机。例如BACnet传感器不需要维护令牌环网,消耗资源有限。为了简化部署过程,用户越来越倾向能够动态发现的Master设备,令牌传递对MCU的要求比较高,功耗也较大。综合考虑各种需求,MS/TP协议模块采用STM32单片机实现一个单独的通讯板,如图1所示。
图1 BACnet仪表工作框图
BACnet通讯板与仪表通讯采用TTL 232接口,对外则采用RS485接口,通讯板发送CJ/T 188协议指令读取表数据并转换为MS/TP协议,通过BAC-net网关将数据上传到网络服务器。
2 硬件设计
BACnet通讯板主要由主控模块、电源模块、TTL隔离模块、RS485模块组成,整体框图如图2所示。
图2 BACnet通讯板硬件结构图
系统以STM32F101CBT6作为主控MCU,内置128 Kbytes Flash,64 Kbytes SRAM,3路 USART口,主频高达36 MHz,能够有效满足 MS/TP协议对MCU的能力需求。
系统电源支持AC220 V或DC24 V两种常用的外供电方式。电源模块支持DC5-42 V宽电压输入,如需支持AC220 V,可选配AC-DC模块。系统采用合泰HT7463 DC-DC芯片完成输入电平转换成5 V输出电平。考虑到现场比较复杂的电磁干扰环境,增加B0505S电源隔离模块,隔离电压可达1000 V,为RS485通讯提供电源。
TTL隔离模块实现 USART的 Tx、Rx以及RS485芯片发送使能引脚这三条线路的隔离。MS/TP通讯标准的波特率范围是9600-76800 bps,部分厂家支持的波特率高达115200 bps,因此Tx、Rx选用10 Mbps的高速光耦隔离模块6N137,电路设计如图3所示。
图3 USART高速光耦隔离模块
RS485模块采用TI公司的SN65HVD3082芯片,支持256个节点,具备失效保护功能。RS485芯片的数据使能引脚使用EL357低速光耦隔离。BACnet通讯板实物如图4所示。
图4 BACnet通讯板实物图
3 软件设计
系统软件架构采用免费的实时操作系统FreeRTOS,作为一个轻量级的操作系统,它具有源码公开、可移植、可裁减、调度策略灵活的特点,配置完备的任务管理、信号量、消息队列、内存管理等功能组件。
系统软件主要包括驱动模块、命令配置模块、读表解析模块、BACnet协议栈模块四个部分。①驱动模块提供时钟、GPIO、USART、看门狗等基础模块的寄存器配置和调用接口实现;②命令配置模块实现了一个Shell命令行,支持版本、时间、任务管理、接口测试等,用户可以通过仪表的红外接口方便的配置系统参数;③读表模块定时读取仪表数据,根据通讯协议解析出各种计量数据;④BACnet协议栈实现完整的MS/TP Master协议,上送计量数据到服务器。
BACnet MS/TP协议栈分为物理层、数据链路层、网络层、应用层及应用程序,通过标准中定义的各种协议数据单元PDU(Protocol Data Unit)在各个层次间传递数据。协议栈实现了两个核心的状态机:接收帧状态机和Master节点状态机。接收帧状态机接收物理层数据,进行数据帧的校验分析,合法的数据帧被送入协议栈进一步处理。主节点状态机负责令牌的维护管理,令牌传递要求很高的实时性,FreeRTOS启用了STM32的毫秒级高精度SysTick定时器,协议中的时间参数精确到1 ms,支持在115200 bps波特率下精准地完成协议交互。
BACnet通讯板的数据通过对象来组织访问,对象具备不同的属性。每个BACnet设备至少有一个设备对象,代表设备自身,设备对象是在发现设备首先被访问的对象,包含客户端访问其他对象及操作设备所需要的基本信息。BACnet通讯板设备对象的一些关键属性如表1所示,设备对象的基本属性包括设备标识、设备名称、设备类型。天罡仪表公司在BACnet组织中分配的厂商标识ID是799。
表1 BACnet通讯板设备对象属性表
计量仪表数据采集重点关注流量、热量等计量信息,根据仪表的上述特点,设计BACnet通讯板的对象如表2所示,其中包括8个“Analog Input”类型的标准计量数据对象。
表2 BACnet通讯板对象表
4 通讯测试
由于BACnet协议的实时特性,测试分析非常困难,采用软件日志打印的方式容易对时序造成影响,硬件示波器则没有足够的深度,数据难以分析。BACnet提供有mstpcap工具,我们对其进行了修改,使之可以配置波特率等通讯参数,通过USB<->RS485转接头,在PC机实时监控协议的运行,如图5所示,能够清楚地看到令牌的传递过程。
图5 BACnet协议数据监控
BACnetScan是一款国产的免费BACnet测试软件,该软件具备快速的扫描和读写功能。通讯板与计量表板组装成完整的BACnet仪表,BACnetScan能够完整地扫描到仪表的对象数据,如表6所示。( 文)
图6 BACnet仪表数据
5 结语
本文设计的BACnet仪表已在智能建筑项目中批量应用,RS485组网采用屏蔽双绞线,接入EasyIO FG-32 DDC网关,系统运行稳定可靠。BACnet仪表原生支持BACnet协议,能够自动发现、自动扫描仪表设备,对楼宇自动化系统的发展起到了重要的推进作用。