首页 理论教育BACnet-MS/TP协议在MCU中实现的软件框架

BACnet-MS/TP协议在MCU中实现的软件框架

【摘要】:可以使用多种方式来实现BACnet-MS/TP协议的软件编程,下面是一个在MCU中实现BACnet-MS/TP协议的软件结构框架。DDC中的协议栈软件结构中最复杂的是应用层模块,包含BACnet对象模块、基本数据类型模块、APDU解析/分发模块和APDU组装模块。服务解析模块对APDU的信息进行解码,并根据需要与DDC中的BACnet对象进行交互。使用以上MS/TP协议软件结构框架,可以解决BACnet控制器的通信功能。

可以使用多种方式来实现BACnet-MS/TP协议的软件编程,下面是一个在MCU(Micro Con-trol Unit,微控制单元)中实现BACnet-MS/TP协议的软件结构框架

完整的协议栈软件自上而下的结构是:应用层模块→对象模块→服务模块→基本数据类型模块→数据链路层(MS/TP)模块→网络层接口模块。

DDC中的协议栈软件结构中最复杂的是应用层模块,包含BACnet对象模块、基本数据类型模块、APDU解析/分发模块和APDU组装模块。

1.应用层模块

如前所述,BACnet协议为了节约软硬件开销简化了层次结构,使得BACnet应用层涵盖了开放系统互联参考模型(OSI)中会话层、表示层和应用层的功能。BACnet应用层模块是BACnet应用软件的基础,它实现BACnet协议应用层内容,负责提供工作站的各功能模块与物理设备直接的通信服务。根据应用层的功能分析,可以将应用层划分为如下模块:对象模块、服务模块、基本数据类型模块。

(1)对象模块

对象模块定义了BACnet对象。BACnet对象按其功能可分为两类:一类是采集数据的对象,如模拟输入/输出对象,这类对象需要访问设备硬件;另一类对象是在采集的数据基础上完成复杂功能,如环对象以及其他实现报警事件功能的对象,这类对象不需访问硬件。另外,某些对象的属性(如趋势登录对象的缓存器大小属性)需要设备厂商根据DDC型号进行初始配置,协议栈提供对这些属性的配置函数接口。

(2)服务模块

服务模块用于处理报文的分发、解析和组装。对于从网络层上来的APDU,服务模块根据APDU的类型和服务选择参数,调用相应的服务解析模块。服务解析模块对APDU的信息进行解码,并根据需要与DDC中的BACnet对象进行交互。另一方面,DDC会发出响应报文(如读属性响应),或者主动发出某些报文(如事件与报警服务),因此服务模块还提供服务报文组装的函数接口。

(3)基本数据类型模块

基本数据类型模块是一个工具类库,包含对基本数据类型的定义及其编、解码函数。BACnet包含13种应用数据类型以及其他基本数据类型。BACnet应用数据类型可以直接进行编、解码。BACnet基本数据类型对应着ASN.1中的复合数据类型,它是由BACnet应用数据类型配合标记按照一定的结构组合而成的。因此,基本数据类型的编/解码实际上是按一定的规则调用应用数据类型以及标记的编/解码方法来实现的。

2.网络层模块

对于DDC来说,网络层向应用层提供一个不确认的无连接数据单元传输服务。网络层与应用层交互的服务原语是网络层数据单元请求(N-UNITDATA.request)和网络层数据单元指示(N-UNITDATA.indication)。其原语参数如下:

N-UNITDATA.request(destination address,data,network priority,data expecting reply)

N-UNITDATA.indication(source address,destination address,data,network priority,data ex-pecting reply)

DDC收到来自链路层数据,解析出相应的地址信息,并把地址信息和APDU绑定起来存放到一个结构中传送给应用层,这样当应用层需要回复报文时可以得到目标地址。

3.数据链路层(MS/TP)模块

MS/TP是一个主从/令牌传递的数据链路协议,物理层采用RS-485半双工通信标准。MS/TP层包含两个状态机,分别是主节点状态机和接收帧状态机;接收帧状态机负责帧的接收,如是数据帧则调用网络层接口上传给网络层,主节点状态机负责帧(包括数据帧和控制帧)的发送。两个状态机分时实现,根据两者之间的关系,接收帧状态机可放在主节点状态机中统一调度。BACnet数据链路层模块中的接收模块实现接收帧状态机;发送模块实现主节点状态机;串口控制模块实现串口驱动与收发控制,串口读写采用中断方式。

4.网络层接口模块

网络层接口模块定义接口及接口函数调用模块,使用服务原语DL UNITDATA.request和DL UNITDATA.indication来实现。

使用以上MS/TP协议软件结构框架,可以解决BACnet控制器的通信功能。解决方案具有极大地多样化特点,这仅仅是其中的一个方案而已。