APP下载

基于路由功能的BACnet/Modbus协议转换器设计

2012-09-07李春旺孙育英吴义民

郑州大学学报(工学版) 2012年4期
关键词:通信协议以太网报文

李春旺,孙育英,吴义民,施 方

(1.北京联合大学生物化学工程学院,北京100023;2.北京工业大学,北京100022;3.北京施能通智能科技开发有限公司,北京100081)

0 引言

BACnet协议是楼宇自控网络协议领域的唯一ISO标准(ISO 16484-5),几十家著名公司开发了相关产品,在工程中得到广泛应用[1].Modbus通信协议作为规范工业自动化网络协议的国家标准之一,成为楼宇机电设备控制器和测控仪表串行通信接口的常规配置.传统BACnet/Modbus网关的设计思路是在BACnet和Modbus两种通信协议之间通过数据共享来实现数据交换,即Modbus通过轮询方式获取数据后暂存在数据共享区,当BACnet发出请求时,直接从数据共享区读取数据并进行相应的解析和封装处理,保证BACnet和 Modbus协议的正确映射[2].但这种方式存在2个问题:①软、硬件资源占用大,真正需求数据的实时转换效率不高;②从BACnet软件或硬件环境中,无法直接识别Modbus侧设备,导致Modbus设备管理产生盲区.针对以上问题,笔者研制了一种具有路由定向功能的BACnet/Modbus协议转换器,可以实现Modbus设备与BACnet软件或硬件之间的数据透明传输,并将Modbus设备封装成BACnet设备,可直接支持各种BAC-net软件或硬件对Modbus设备进行的管理和操作功能,实现了真正意义的无缝集成.

1 BACnet Ethernet与Modbus报文

1.1 BACnet Ethernet报文结构[3]

BACnet协议具有应用层、网络层、数据链路层和物理层4层架构.在数据链路层和物理层提供5种选择,其中以太网选择之一是由ISO 88O2 Type 1定义的逻辑连接控制协议、媒体访问控制MAC和物理层协议组合在一起.ISO 88O2 Ethernet协议的报文比IP通信协议报文短,通信效率较高,可以避开使用IP地址技术的一些弊端,是路由器、网关以太网端口的通信协议首选.图1所示的BACnet Ethernet通信协议报文由6个部分构成:应用层协议数据单元(APDU),网络层协议控制信息(NPDU),数据链路层数据单元(LPDU),逻辑链路控制(LLC),X82X82X03是服务访问点信息,物理层报文负责具体硬件收发字节内容.

1.2 Modbus报文结构

标准的Modbus网络通信可以设置成ASCII或RTU两种传输模式.Modbus报文结构包括设备地址、功能代码、所要发送的数据和错误检测域.Modbus通信使用主从方式,即主设备能发送查询报文帧进行查询,从设备根据主设备查询提供的数据发送回应报文帧作出反应.查询报文帧中的功能代码告之被选中的从设备要执行何种功能,数据段包含了从设备要执行功能的任何附加信息,错误检测域为从设备提供了一种验证消息内容是否正确的方法[4].如果从设备产生正常的回应,在回应报文帧中的功能代码是在查询消息中的功能代码的回应,数据段包括了从设备收集的数据,如寄存器值或状态,如果有错误发生,功能代码将被修改以用于指出回应报文是错误的,同时数据段包含了描述此错误信息的代码.错误检测域允许主设备确认消息内容是否可用.

图1 BACnet Ethernet通信协议的报文结构Fig.1 BACnet Ethernet communication protocol message structure

2 基于BACnet路由功能的报文转换方法

2.1 BACnet Ethernet报文转化为Modbus报文的解析和封装

图2为BACnet Ethernet报文转化为Modbus报文的过程.图2所示,BACnet NPDU报文中的NPCI存放的是Modbus设备地址,当BACnet软件或BACnet以太网设备发出BACnet NPDU报文时,直接将Modbus设备地址解析出来,传递给处理Modbus设备通信协议的任务中,Modbus设备通信处理任务的下一次指令则直接针对这个地址的Modbus设备进行主从查询,即发出对这个地址的Modbus设备的查询指令字节.

2.2 Modbus报文转化为BACnet Ethernet报文的解析和封装

图3所示,将Modbus设备回复的应答数据报文中的Modbus设备地址直接解析出来,传递给处理BACnet设备通信协议的任务中,其下一次任务执行则回复给查询软件或其它以太网设备所查询的Modbus设备的地址及数据内容.

2.3 BACnet路由功能的实现

2.3.1 BACnet“I am”响应功能

当转换器收到BACnet软件或其它BACnet以太网设备发出的BACnet对象“Who is”查询指令时,转换器根据已经在线Modbus设备的地址,为每个Modbus设备自动分配生成BACnet通信协议必需的器件编号.例如,假设Modbus设备所在的RS485通信网络被定义为BACnet通信网络,网络编号为61,则硬件地址为1的Modbus设备的BACnet器件编号为6101,硬件地址为2的Modbus设备的BACnet器件编号为6102,…,依此类推,将每个在线的Modbus设备均分配一个独立的BACnet通信时唯一辨识的编号,完成了Modbus设备的BACnet封装的基本条件准备.然后,就在Modbus设备地址的前后封装网络编号和其器件编号,组成标准的BACnet报文,并向BACnet软件或其它BACnet以太网设备发回“I am”回应报文.如图4所示.

2.3.2 BACnet“Read”响应功能

当BACnet软件或其它BACnet以太网设备收到转换器发出的“I am”回应报文后,发出查询该Modbus设备型号、数据等信息的 BACnet报文.当转换器收到该报文时,将报文中的NPCI网络报文头部中的Modbus设备地址信息解析出来,立即启动Modbus侧的查询任务,将查询该地址设备相关信息的Modbus报文发送出去.当收到查询结果时,封装为BACnet报文进行回复,实现对BACnet的“Read”响应功能.当转换器收到查询地址1 Modbus设备型号的报文时,回复的响应报文,如图5所示.

3 协议转换器的设计与实现

3.1 协议转换器的硬件设计

图6所示电路包括控制单元、以太网接口、串行接口和系统电源.控制单元采用TI的微控制器Lm3s6911+实现,用于路由定向、Modbus与BAC-net Ethernet报文的双向解析和封装.在通信方面,Lm3s6911+有3个可编程的UART,2个同步串行接口SSI和可编程MAC地址的10/100 MHz以太网控制器.其中2个同步串口做为Modbus的通信端口,MAX485CPA芯片分别与Lm3s6911+的PA2和PA3引脚连接,用于接收和发送封装好的Modbus网络数据.100 MHz以太网接口做为BACnet Ethernet通信端口.本设计中,系统电源提供标准5 V和3.3 V两种电压,5 V用于给接口电路供电,3.3 V用于给控制单元供电,再通过Lm3s6911+中可编程片内低压差稳压器调整到2.75 V以满足芯片的要求.

3.2 协议转换器软件设计

转换器软件为BACnet和Modbus通信协议的实现各分配一个独立任务,在两个任务之间建立路由关系,传递Modbus设备的通信协议地址和数据内容.为实现多任务功能,软件系统架构采用免费开源的嵌入式操作系统ucOSII,具有小巧、可裁减、实 时 的 特 点[5-6].将 ucOSII 移 植 到Lm3s6911+微控制器上,并根据转换器的需要对其内核进行配置,连同用ANSI C编写的应用程序一同编译下载到控制单元,实现了可同时侦听和处理BACnet Ethernet通信协议帧和Modbus通信协议帧的功能.

转换器Modbus侧的任务要同步跟随BACnet侧的需求,当BACnet侧查询某个地址的Modbus设备信息时,转换器的路由功能则唯一定向在这个地址上,启动Modbus侧的查询任务,并将查询结果BACnet封装后返回BACnet侧.为了实现上述任务的协同工作,转换器在软件设计上采用了“消息”机制,即在BACnet和Modbus通信协议处理任务中分别建立了“消息”标记,用来同步BACnet报文中的NPCI段和Modbus报文地址段,及BACnet报文的APDU段和Modbus报文数据段的相关信息.

需要注意的是,为了提高通信效率,转换器需要每次Modbus查询能回复该Modbus设备的全部寄存器表数据,因此Modbus设备必须支持批读查询指令,而且能够提供寄存器表内的全部数据值的固定格式,以便于解析封装为对应的BACnet点位AV或BV值.

图6 硬件电路原理图Fig.6 Hardware circuit principle diagram

4 实验测试

4.1 Modbus设备封装为BACnet设备测试

传统的 BACnet/Modbus网关,在 BACnet软件环境下只能显示该网关及其全部已经完成数据共享的Modbus数据,而无法看到每个Modbus设备的状态.笔者采用带 Modbus通信接口的YD2010数字电表做为Modbus设备,典型的Navigator楼宇自动化组态软件做为BACnet设备.图7所示,新型协议转换器直接将Modbus设备封装为具有BACnet对象属性的BACnet设备,Navigator软件将YD2010数字电表等同于BACnet DDC设备进行管理,并正常显示了读取的全部数据.

4.2 实时性测试分析

基于路由功能的BACnet/Modbus转换器,通过路由功能直接根据Modbus设备地址进行地址定向查询,无需将资源浪费在没有查询需求的Modbus设备数据上,保证了BACnet设备读取的均为实时值.图8为采用逻辑分析仪对查询-响应速度测试的结果,白色数据块为电表回复字节信息,可以看出回复内容本身需要100 ms左右的发送时间.白色数据块之间的黑色间隔时间长度加上白色数据块的时间长度则为软件发送查询命令的间隔时间,约为200 ms左右,达到了每秒钟查询5块Modbus电表内的所有电量值的速度.若采用传统的BACnet/Modbus网关,则无法保证实时性和效率.以集成30个联网的Modbus数字电表为例,每秒钟顺序查询5个Modbus电表内所有数据,则需要6 s完成网关内数据共享区的所有数据更新,从而导致BACnet设备通过网关读取的Modbus电表数据已经滞后实时值6 s,还未必都是BACnet侧所需查询数据.

5 结论

采用嵌入式技术实现基于路由功能的BAC-net/Modbus转换器,直接将Modbus设备封装为具有BACnet对象属性的BACnet设备,可以利用现有的各种BACnet软件进行管理和操作,弥补了传统Modbus网关管理不透明的缺陷,提高了实时性,方便了在BACnet环境中Modbus设备的调试和维护,提高了系统集成的价值.

[1]董春桥,刘贤德,惠晓实.楼宇自动控制网络通信协议BACnet实现模型的研究[J].计算机工程与应用2003,39(5):172 -174.

[2]廖方诚,周祖德.基于BACnet和Modbus协议转换器的设计[J].武汉理工大学学报.2009,31(23):89-91.

[3]ANSI/ASHARE Standard 135 -2001:BACnet-A Data Communication Protocol for Building Automation and Control Networks,USA 2001.

[4]线岩团,许江淳,鄢大鹏.基于单片机的MODBUS的协议实现[J].云南大学学报:自然科学版.2009,31(S2):120 -124.

[5]张桂,金国强,李辉.基于ARM平台Modbus RTU协议的研究与实现[J].电力科学与工程,2011,27(1):23 -27.

[6]邵贝贝.嵌入式实时操作系统ucOSII[M].北京:北京航空航天出版社,2006.

猜你喜欢

通信协议以太网报文
基于J1939 协议多包报文的时序研究及应用
低轨星座短报文通信中的扩频信号二维快捕优化与实现
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
车载网络通信协议标准化问题研究
三大因素驱动创新提速以太网快步迈入“灵活”时代
谈实时以太网EtherCAT技术在变电站自动化中的应用
电动汽车充电接口及通信协议新国标发布