KNX-TCP/IP协议转换网关的设计与实现
2014-05-25张玉杰郑培
张玉杰 郑培
(陕西科技大学电气与信息工程学院,陕西 西安 710021)
KNX-TCP/IP协议转换网关的设计与实现
张玉杰 郑培
(陕西科技大学电气与信息工程学院,陕西 西安 710021)
随着楼宇自动化技术的不断发展,控制设备之间传递的信息量日益增加,对互操作性、互联也提出了更高的需求。选用Cortex-M0架构的微控制器SN32F707实现KNX通信协议栈。该协议栈不依赖于某种硬件,移植便利且通用性强。在此基础上设计一种基于KNX通信协议的网关,实现KNX协议和TCP/IP协议的转换,使KNX网络可以与以太网快速互联,从而实现楼层之间、楼宇之间KNX设备的互联,推动楼宇建设向数字化、智能化方向发展。
Cortex-M0 KNX协议 TCP/IP协议 网关 楼宇建设 智能化
0 引言
作为新一代现场总线技术,KNX(Konnex)凭借良好的互操作性和开放性、完善的通信机制以及支持多种通信介质等优势,在建筑设备自动监控领域取得了广泛应用。但是,当前对KNX技术的研究主要集中于总线节点设备的开发,而对基于该技术的通信内核的研究还很少。KNX通信协议核心技术仍然只被少量外国企业掌握,尤其是KNX产品核心芯片BCU、BIM、SIM等仍被少数国外大公司所垄断,这无形中大大增加了KNX产品的成本和价格,严重阻碍了KNX技术在国内的发展与应用[1]。因此,对KNX的通信内核的研究是目前国内的主要研究方向,这对KNX技术在国内的发展与普及有重要意义。
随着楼宇自动化技术的不断发展,控制设备之间传递的信息量日益增加,对互操作性、互联也提出了更高的需求。以太网作为广域网基础骨干网络已经非常普遍,如果实现KNX协议与TCP/IP协议的转换,KNX总线信号可以在高速以太网上传输,KNX系统的扩展将不再受传输距离的影响,从而突破了KNX系统远距离扩展的瓶颈;而数据的传输量和传输速度也不再成为KNX系统的问题,从而实现了楼层与楼层之间、楼宇与楼宇之间的KNX设备的互联,为KNX网络扩展提供了保障[2]。
1 硬件平台设计
系统主要分为KNX通信模块和TCP/IP通信模块两部分,KNX通信模块和TCP/IP通信模块之间通过串口USART进行通信,实现KNX总线数据与以太网数据的交换。
选择两片基于ARM Cortex-M0的微控制器SN32F707,分别作为KNX通信模块控制器和TCP/IP通信模块控制器。SN32F707提供32位的运算能力。其主要功能特性有:①32 kB内置Flash可编程存储器,8 kB的SRAM,4 kB的Boot ROM;②43个可配置为上拉/下拉模式的GPIO引脚,可响应边沿或电平中断源触发;③2个16位和2个32位通用定时器;④10通道12位SAR ADC;⑤2个I2C控制器,2个带有波特率发生器的USART控制器,2个SPI控制器;⑥具有普通模式、睡眠模式、深度睡眠模式和深度掉电模式4种工作模式。
KNX总线收发器选择FZE1066。FZE1066是专用于KNX总线的收发模块,通信介质为双绞线。其特性如下:①支持收发功能,提供直接连接通信控制芯片的端口;②能够将KNX总线上的29 V电压转化为3.3 V/ 5 V电压供通信控制芯片使用;③能为通信控制芯片提供上电复位和掉电保存信号;④可监测KNX总线的电压。
收发器模块FZE1066和KNX总线直接连接,通过硬件完成KNX报文的物理层信号处理。通信控制器即SN32F707和收发器连接,由专用的发送(SEND)和接收(RECEIVE)端口处理KNX报文,同时接收来自FZE1066的复位信号和保存信号。SN32F707具有内部高速16 MHz晶振,所以不需要外部晶振,且SN32F707具有两组USART串行接口。USART0与收发器相连实现与KNX总线的通信;USART1与TCP/IP通信模块相连,实现KNX总线数据与以太网数据的交换。SN32F707的顺利运行还需要外部辅助电路,如程序仿真接口SN-LINK、测试端口和外部复位电路等。
TCP/IP通信模块的网络接口芯片选择RTL8019AS。RTL8019AS芯片是一款高集成度的以太网控制器,它为实现即插即用的兼容NE2000网络适配器的全双工以太网提供了良好的解决方案[3]。网络变压器选择PM44-11BP,网络接口芯片的双绞线接口与网络连接时,在二者之间放置网络滤波变压器,不仅起到滤波的作用,还具有隔离作用,使得网络上的信号不至于因窜入噪声而影响网络接口芯片的正常工作。RTL8019AS芯片与控制器SN32707之间的接线主要包括[3]:16根数据总线(D0~D15)、5根地址总线(A0~A4)、3根总线I/O操作的读写时序控制引脚(IOWB、IORB和AEN)、软启动RTL8019AS控制引脚(RSTDRV)。RTL8019AS芯片与网络变压器PM44-11BP之间只用4根连线,即用双绞线传送和接收差分信号时的接线引脚(TPIN+、TPIN-、TPOUT+、TPOUT-)。网络滤波器的4个引脚TX+、TX-、RX+、RX-则与网络接口RJ45的对应引脚相连。
系统总体结构如图1所示。
图1 系统总体结构图Fig.1 Overall structure of the system
2 系统软件设计
2.1 系统软件架构
根据系统的设计要求,软件部分主要实现的功能包括:①按照KNX协议的要求与KNX总线通信,即正确接收和发送KNX总线报文,并处理通信对象;②按照TCP/IP协议的要求与以太网通信,即正确接收和发送TCP/UDP报文;③实现KNX总线与以太网数据的交换,即将从KNX总线接收的数据转换为TCP/UDP的报文格式发送至以太网,将从以太网接收的数据转换为KNX报文格式并发送至KNX总线。
结合系统的硬件设计以及功能需求,本系统的软件架构图由硬件驱动层、网络协议层和程序应用层组成,如图2所示。
图2 系统软件架构图Fig.2 Architecture of the system software
KNX通信模块的硬件驱动层主要包括FZE1066收发器模块驱动以及串口驱动。网络协议层主要实现数据链路层、网络层以及传输层的相应功能,实现KNX报文的装配和分解以及KNX报文的发送和接收。TCP/IP通信模块的硬件驱动层包括RTL8019AS网卡模块驱动以及串口驱动。由于SN32F707有限的资源,本系统对传统的TCP/IP协议栈进行了适当的裁剪,实现了一种精简的TCP/IP协议栈[4],主要包括ARP协议、ICMP协议、IP协议、TCP协议与UDP协议。KNX协议栈与TCP/IP协议栈通过串口交换应用层的应用数据。
2.2 协议转换的实现
2.2.1 KNX协议转TCP/IP协议的实现
KNX协议转TCP/IP协议的数据传输框图如图3所示。
图3 KNX转TCP/IP框图Fig.3 The flowchart of KNX to TCP/IP
系统从KNX总线上收到KNX报文数据后,将KNX报文按照物理层、数据链路层、网络层、传输层到网络层的顺序,逐层进行分解。得到应用协议控制信息对应的服务类型及其之后的用户数据后,通过串口将服务类型及用户数据发送到TCP/IP通信处理模块。TCP/IP通信处理模块收到串口数据后,按照TCP/IP标准协议,将数据进行IP发送处理和ARP处理后,将数据帧打包发送[5]。
2.2.2 TCP/IP协议转KNX协议的实现
TCP/IP通信时采用了逐层调用的策略,每一层协议被调用时,都是先读取本层数据报头信息,经过校验处理后,将数据提供给上层协议。TCP/IP协议转KNX协议的数据传输框图如图4所示。
当系统收到从以太网服务器发来的TCP/UDP报文数据后,网络接口层对数据进行数据校验、去报头等工作,将数据传给网络层IP协议。IP协议同样对数据进行校验、去报头,然后依据报头信息将数据包提供给传输层协议(TCP协议或UDP协议)。TCP协议或UDP协议读取相应的报头信息、对端口和地址进行验证,确认信息无误后,取出用户数据,并调用串口发送程序,将用户数据发送到KNX通信处理模块[6]。KNX通信处理模块收到串口数据后,先统计待发送的字节总数,然后封装校验字节、装配报文,将数据发送到KNX总线[7]。
图4 TCP/IP转KNX框图Fig.4 The flowchart of TCP/IP to KNX
3 应用测试
为了测试开发的KNX-TCP/IP协议转换网关的功能,设计了一个简单的测试网络。测试网络包括1个KNX传感器节点、1个KNX执行器节点、待测网关、电源供应和PC机。
测试网络结构如图5所示。
图5 KNX-TCP/IP协议转换网关测试网络Fig.5 The test network of KNX-TCP/IP protocol conversion gateway
测试网络通过1个KNX传感器节点(开关按钮)来测试KNX报文的发送,通过1个KNX执行器节点(LED)来检验KNX报文的接收,通过PC机上的Windows超级终端来接收和发送TCP/UDP报文数据。
图5中,左边的PC机为KNX节点的上位机管理系统。利用PC机上的ETS配置软件配置KNX节点的物理地址和组地址,并下载通信对象表、关联表以及地址表。右边的PC机为TCP数据管理终端,待测网关的网络接口与服务器的网络接口相连,利用PC机上的超级终端设置好服务器IP地址以及服务器端口即可进行通信测试。当KNX传感器节点的开关按钮闭合时,通过TCP数据管理终端接收经待测网关转换后的TCP/UDP报文数据;反之,当TCP数据管理终端发送一个LED控制命令时,经待测网关转换为KNX报文数据,KNX执行器节点收到命令后将LED点亮。经过测试,本文开发的KNX-TCP/IP协议转换网关可以实现以下功能:①正确接收和发送KNX总线报文,并处理通信对象;②正确接收和发送TCP/UDP报文;③可实现KNX总线数据与以太网数据的交换。
4 结束语
本文以两片SN32F707控制器分别作为KNX通信处理模块和TCP/IP通信处理模块,并以FZE1066作为KNX总线收发模块。RTL8019AS作为网络接口芯片,构建了KNX-TCP/IP协议转换网关的硬件平台,并在此平台上实现了KNX通信协议栈、精简的TCP/IP协议栈,以及KNX协议与TCP/IP协议的转换。最后经过应用测试,验证了系统实现KNX总线数据与以太网数据相互交换的功能。
[1] 韩俊玲.KNX总线通信内核研究与开发[J].仪器仪表标准化与计量,2012(1):34-37.
[2] 伍亚虎.KNX现场总线技术研究及其节点开发[D].北京:北京林业大学,2011.
[3] 李广威.基于TCP/IP协议栈的工业以太网控制器的研究与设计[D].武汉:武汉理工大学,2013.
[4] 张丁丁,孙志毅.TCP/IP协议栈的实现方法[J].工业控制计算机,2013(9):35-36.
[5] 孙萍.基于KNX协议的智能家居网关研究与实现[D].南京:南京航空航天大学,2012.
[6] Cavalieri S.Modelling and analysing congestion in KNXnet/IP[J]. Computer Standards&Interfaces,2012,34(3):305-313.
[7] Anonymous.KNXprotocol stack for in-building low power communications[J]. Electronics Weekly,2013(2537): 23.
Design and Implementation of KNX-TCP/IP Protocol Conversion Gateway
In pace with the continuous development of building automation technology,the amount of information transferring among control equipment is also increasing,and higher demands for interoperability and interconnection are put forward.Microcontroller SN32F707 with Cortex-M0 architecture is selected to implement KNX communication stack.This protocol stack is independent on any hardware,and features convenient transplantation and high universality.On this basis,the gateway based on KNX protocol is designed,to realize protocol conversion for LNX protocol and TCP/IP protocol,and to make KNX network easily interconnects with Ethernet.Thus interconnection among KNX equipment of each floor and each building can be implemented,and the building construction can be promoted towards digitization and intellectualization.
Cortex-M0 KNX protocol TCP/IP protocol Gateway Building construction Intellectualization
TN915
A
西安市科技计划基金资助项目[编号:CX1259(2)]。
修改稿收到日:2014-04-26。
张玉杰(1966-),男,1989年毕业于西北大学半导体物理专业,获硕士学位,教授;主要从事信息采集与处理、模式识别、嵌入式系统开发等研究。