張玉杰 鄭培
(陜西科技大學(xué)電氣與信息工程學(xué)院,陜西 西安 710021)
KNX-TCP/IP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)
張玉杰 鄭培
(陜西科技大學(xué)電氣與信息工程學(xué)院,陜西 西安 710021)
隨著樓宇自動(dòng)化技術(shù)的不斷發(fā)展,控制設(shè)備之間傳遞的信息量日益增加,對(duì)互操作性、互聯(lián)也提出了更高的需求。選用Cortex-M0架構(gòu)的微控制器SN32F707實(shí)現(xiàn)KNX通信協(xié)議棧。該協(xié)議棧不依賴(lài)于某種硬件,移植便利且通用性強(qiáng)。在此基礎(chǔ)上設(shè)計(jì)一種基于KNX通信協(xié)議的網(wǎng)關(guān),實(shí)現(xiàn)KNX協(xié)議和TCP/IP協(xié)議的轉(zhuǎn)換,使KNX網(wǎng)絡(luò)可以與以太網(wǎng)快速互聯(lián),從而實(shí)現(xiàn)樓層之間、樓宇之間KNX設(shè)備的互聯(lián),推動(dòng)樓宇建設(shè)向數(shù)字化、智能化方向發(fā)展。
Cortex-M0 KNX協(xié)議 TCP/IP協(xié)議 網(wǎng)關(guān) 樓宇建設(shè) 智能化
作為新一代現(xiàn)場(chǎng)總線(xiàn)技術(shù),KNX(Konnex)憑借良好的互操作性和開(kāi)放性、完善的通信機(jī)制以及支持多種通信介質(zhì)等優(yōu)勢(shì),在建筑設(shè)備自動(dòng)監(jiān)控領(lǐng)域取得了廣泛應(yīng)用。但是,當(dāng)前對(duì)KNX技術(shù)的研究主要集中于總線(xiàn)節(jié)點(diǎn)設(shè)備的開(kāi)發(fā),而對(duì)基于該技術(shù)的通信內(nèi)核的研究還很少。KNX通信協(xié)議核心技術(shù)仍然只被少量外國(guó)企業(yè)掌握,尤其是KNX產(chǎn)品核心芯片BCU、BIM、SIM等仍被少數(shù)國(guó)外大公司所壟斷,這無(wú)形中大大增加了KNX產(chǎn)品的成本和價(jià)格,嚴(yán)重阻礙了KNX技術(shù)在國(guó)內(nèi)的發(fā)展與應(yīng)用[1]。因此,對(duì)KNX的通信內(nèi)核的研究是目前國(guó)內(nèi)的主要研究方向,這對(duì)KNX技術(shù)在國(guó)內(nèi)的發(fā)展與普及有重要意義。
隨著樓宇自動(dòng)化技術(shù)的不斷發(fā)展,控制設(shè)備之間傳遞的信息量日益增加,對(duì)互操作性、互聯(lián)也提出了更高的需求。以太網(wǎng)作為廣域網(wǎng)基礎(chǔ)骨干網(wǎng)絡(luò)已經(jīng)非常普遍,如果實(shí)現(xiàn)KNX協(xié)議與TCP/IP協(xié)議的轉(zhuǎn)換,KNX總線(xiàn)信號(hào)可以在高速以太網(wǎng)上傳輸,KNX系統(tǒng)的擴(kuò)展將不再受傳輸距離的影響,從而突破了KNX系統(tǒng)遠(yuǎn)距離擴(kuò)展的瓶頸;而數(shù)據(jù)的傳輸量和傳輸速度也不再成為KNX系統(tǒng)的問(wèn)題,從而實(shí)現(xiàn)了樓層與樓層之間、樓宇與樓宇之間的KNX設(shè)備的互聯(lián),為KNX網(wǎng)絡(luò)擴(kuò)展提供了保障[2]。
系統(tǒng)主要分為KNX通信模塊和TCP/IP通信模塊兩部分,KNX通信模塊和TCP/IP通信模塊之間通過(guò)串口USART進(jìn)行通信,實(shí)現(xiàn)KNX總線(xiàn)數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的交換。
選擇兩片基于ARM Cortex-M0的微控制器SN32F707,分別作為KNX通信模塊控制器和TCP/IP通信模塊控制器。SN32F707提供32位的運(yùn)算能力。其主要功能特性有:①32 kB內(nèi)置Flash可編程存儲(chǔ)器,8 kB的SRAM,4 kB的Boot ROM;②43個(gè)可配置為上拉/下拉模式的GPIO引腳,可響應(yīng)邊沿或電平中斷源觸發(fā);③2個(gè)16位和2個(gè)32位通用定時(shí)器;④10通道12位SAR ADC;⑤2個(gè)I2C控制器,2個(gè)帶有波特率發(fā)生器的USART控制器,2個(gè)SPI控制器;⑥具有普通模式、睡眠模式、深度睡眠模式和深度掉電模式4種工作模式。
KNX總線(xiàn)收發(fā)器選擇FZE1066。FZE1066是專(zhuān)用于KNX總線(xiàn)的收發(fā)模塊,通信介質(zhì)為雙絞線(xiàn)。其特性如下:①支持收發(fā)功能,提供直接連接通信控制芯片的端口;②能夠?qū)NX總線(xiàn)上的29 V電壓轉(zhuǎn)化為3.3 V/ 5 V電壓供通信控制芯片使用;③能為通信控制芯片提供上電復(fù)位和掉電保存信號(hào);④可監(jiān)測(cè)KNX總線(xiàn)的電壓。
收發(fā)器模塊FZE1066和KNX總線(xiàn)直接連接,通過(guò)硬件完成KNX報(bào)文的物理層信號(hào)處理。通信控制器即SN32F707和收發(fā)器連接,由專(zhuān)用的發(fā)送(SEND)和接收(RECEIVE)端口處理KNX報(bào)文,同時(shí)接收來(lái)自FZE1066的復(fù)位信號(hào)和保存信號(hào)。SN32F707具有內(nèi)部高速16 MHz晶振,所以不需要外部晶振,且SN32F707具有兩組USART串行接口。USART0與收發(fā)器相連實(shí)現(xiàn)與KNX總線(xiàn)的通信;USART1與TCP/IP通信模塊相連,實(shí)現(xiàn)KNX總線(xiàn)數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的交換。SN32F707的順利運(yùn)行還需要外部輔助電路,如程序仿真接口SN-LINK、測(cè)試端口和外部復(fù)位電路等。
TCP/IP通信模塊的網(wǎng)絡(luò)接口芯片選擇RTL8019AS。RTL8019AS芯片是一款高集成度的以太網(wǎng)控制器,它為實(shí)現(xiàn)即插即用的兼容NE2000網(wǎng)絡(luò)適配器的全雙工以太網(wǎng)提供了良好的解決方案[3]。網(wǎng)絡(luò)變壓器選擇PM44-11BP,網(wǎng)絡(luò)接口芯片的雙絞線(xiàn)接口與網(wǎng)絡(luò)連接時(shí),在二者之間放置網(wǎng)絡(luò)濾波變壓器,不僅起到濾波的作用,還具有隔離作用,使得網(wǎng)絡(luò)上的信號(hào)不至于因竄入噪聲而影響網(wǎng)絡(luò)接口芯片的正常工作。RTL8019AS芯片與控制器SN32707之間的接線(xiàn)主要包括[3]:16根數(shù)據(jù)總線(xiàn)(D0~D15)、5根地址總線(xiàn)(A0~A4)、3根總線(xiàn)I/O操作的讀寫(xiě)時(shí)序控制引腳(IOWB、IORB和AEN)、軟啟動(dòng)RTL8019AS控制引腳(RSTDRV)。RTL8019AS芯片與網(wǎng)絡(luò)變壓器PM44-11BP之間只用4根連線(xiàn),即用雙絞線(xiàn)傳送和接收差分信號(hào)時(shí)的接線(xiàn)引腳(TPIN+、TPIN-、TPOUT+、TPOUT-)。網(wǎng)絡(luò)濾波器的4個(gè)引腳TX+、TX-、RX+、RX-則與網(wǎng)絡(luò)接口RJ45的對(duì)應(yīng)引腳相連。
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 Overall structure of the system
2.1 系統(tǒng)軟件架構(gòu)
根據(jù)系統(tǒng)的設(shè)計(jì)要求,軟件部分主要實(shí)現(xiàn)的功能包括:①按照KNX協(xié)議的要求與KNX總線(xiàn)通信,即正確接收和發(fā)送KNX總線(xiàn)報(bào)文,并處理通信對(duì)象;②按照TCP/IP協(xié)議的要求與以太網(wǎng)通信,即正確接收和發(fā)送TCP/UDP報(bào)文;③實(shí)現(xiàn)KNX總線(xiàn)與以太網(wǎng)數(shù)據(jù)的交換,即將從KNX總線(xiàn)接收的數(shù)據(jù)轉(zhuǎn)換為T(mén)CP/UDP的報(bào)文格式發(fā)送至以太網(wǎng),將從以太網(wǎng)接收的數(shù)據(jù)轉(zhuǎn)換為KNX報(bào)文格式并發(fā)送至KNX總線(xiàn)。
結(jié)合系統(tǒng)的硬件設(shè)計(jì)以及功能需求,本系統(tǒng)的軟件架構(gòu)圖由硬件驅(qū)動(dòng)層、網(wǎng)絡(luò)協(xié)議層和程序應(yīng)用層組成,如圖2所示。
圖2 系統(tǒng)軟件架構(gòu)圖Fig.2 Architecture of the system software
KNX通信模塊的硬件驅(qū)動(dòng)層主要包括FZE1066收發(fā)器模塊驅(qū)動(dòng)以及串口驅(qū)動(dòng)。網(wǎng)絡(luò)協(xié)議層主要實(shí)現(xiàn)數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層以及傳輸層的相應(yīng)功能,實(shí)現(xiàn)KNX報(bào)文的裝配和分解以及KNX報(bào)文的發(fā)送和接收。TCP/IP通信模塊的硬件驅(qū)動(dòng)層包括RTL8019AS網(wǎng)卡模塊驅(qū)動(dòng)以及串口驅(qū)動(dòng)。由于SN32F707有限的資源,本系統(tǒng)對(duì)傳統(tǒng)的TCP/IP協(xié)議棧進(jìn)行了適當(dāng)?shù)牟眉?實(shí)現(xiàn)了一種精簡(jiǎn)的TCP/IP協(xié)議棧[4],主要包括ARP協(xié)議、ICMP協(xié)議、IP協(xié)議、TCP協(xié)議與UDP協(xié)議。KNX協(xié)議棧與TCP/IP協(xié)議棧通過(guò)串口交換應(yīng)用層的應(yīng)用數(shù)據(jù)。
2.2 協(xié)議轉(zhuǎn)換的實(shí)現(xiàn)
2.2.1 KNX協(xié)議轉(zhuǎn)TCP/IP協(xié)議的實(shí)現(xiàn)
KNX協(xié)議轉(zhuǎn)TCP/IP協(xié)議的數(shù)據(jù)傳輸框圖如圖3所示。
圖3 KNX轉(zhuǎn)TCP/IP框圖Fig.3 The flowchart of KNX to TCP/IP
系統(tǒng)從KNX總線(xiàn)上收到KNX報(bào)文數(shù)據(jù)后,將KNX報(bào)文按照物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層到網(wǎng)絡(luò)層的順序,逐層進(jìn)行分解。得到應(yīng)用協(xié)議控制信息對(duì)應(yīng)的服務(wù)類(lèi)型及其之后的用戶(hù)數(shù)據(jù)后,通過(guò)串口將服務(wù)類(lèi)型及用戶(hù)數(shù)據(jù)發(fā)送到TCP/IP通信處理模塊。TCP/IP通信處理模塊收到串口數(shù)據(jù)后,按照TCP/IP標(biāo)準(zhǔn)協(xié)議,將數(shù)據(jù)進(jìn)行IP發(fā)送處理和ARP處理后,將數(shù)據(jù)幀打包發(fā)送[5]。
2.2.2 TCP/IP協(xié)議轉(zhuǎn)KNX協(xié)議的實(shí)現(xiàn)
TCP/IP通信時(shí)采用了逐層調(diào)用的策略,每一層協(xié)議被調(diào)用時(shí),都是先讀取本層數(shù)據(jù)報(bào)頭信息,經(jīng)過(guò)校驗(yàn)處理后,將數(shù)據(jù)提供給上層協(xié)議。TCP/IP協(xié)議轉(zhuǎn)KNX協(xié)議的數(shù)據(jù)傳輸框圖如圖4所示。
當(dāng)系統(tǒng)收到從以太網(wǎng)服務(wù)器發(fā)來(lái)的TCP/UDP報(bào)文數(shù)據(jù)后,網(wǎng)絡(luò)接口層對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)校驗(yàn)、去報(bào)頭等工作,將數(shù)據(jù)傳給網(wǎng)絡(luò)層IP協(xié)議。IP協(xié)議同樣對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)、去報(bào)頭,然后依據(jù)報(bào)頭信息將數(shù)據(jù)包提供給傳輸層協(xié)議(TCP協(xié)議或UDP協(xié)議)。TCP協(xié)議或UDP協(xié)議讀取相應(yīng)的報(bào)頭信息、對(duì)端口和地址進(jìn)行驗(yàn)證,確認(rèn)信息無(wú)誤后,取出用戶(hù)數(shù)據(jù),并調(diào)用串口發(fā)送程序,將用戶(hù)數(shù)據(jù)發(fā)送到KNX通信處理模塊[6]。KNX通信處理模塊收到串口數(shù)據(jù)后,先統(tǒng)計(jì)待發(fā)送的字節(jié)總數(shù),然后封裝校驗(yàn)字節(jié)、裝配報(bào)文,將數(shù)據(jù)發(fā)送到KNX總線(xiàn)[7]。
圖4 TCP/IP轉(zhuǎn)KNX框圖Fig.4 The flowchart of TCP/IP to KNX
為了測(cè)試開(kāi)發(fā)的KNX-TCP/IP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的功能,設(shè)計(jì)了一個(gè)簡(jiǎn)單的測(cè)試網(wǎng)絡(luò)。測(cè)試網(wǎng)絡(luò)包括1個(gè)KNX傳感器節(jié)點(diǎn)、1個(gè)KNX執(zhí)行器節(jié)點(diǎn)、待測(cè)網(wǎng)關(guān)、電源供應(yīng)和PC機(jī)。
測(cè)試網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 KNX-TCP/IP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)測(cè)試網(wǎng)絡(luò)Fig.5 The test network of KNX-TCP/IP protocol conversion gateway
測(cè)試網(wǎng)絡(luò)通過(guò)1個(gè)KNX傳感器節(jié)點(diǎn)(開(kāi)關(guān)按鈕)來(lái)測(cè)試KNX報(bào)文的發(fā)送,通過(guò)1個(gè)KNX執(zhí)行器節(jié)點(diǎn)(LED)來(lái)檢驗(yàn)KNX報(bào)文的接收,通過(guò)PC機(jī)上的Windows超級(jí)終端來(lái)接收和發(fā)送TCP/UDP報(bào)文數(shù)據(jù)。
圖5中,左邊的PC機(jī)為KNX節(jié)點(diǎn)的上位機(jī)管理系統(tǒng)。利用PC機(jī)上的ETS配置軟件配置KNX節(jié)點(diǎn)的物理地址和組地址,并下載通信對(duì)象表、關(guān)聯(lián)表以及地址表。右邊的PC機(jī)為T(mén)CP數(shù)據(jù)管理終端,待測(cè)網(wǎng)關(guān)的網(wǎng)絡(luò)接口與服務(wù)器的網(wǎng)絡(luò)接口相連,利用PC機(jī)上的超級(jí)終端設(shè)置好服務(wù)器IP地址以及服務(wù)器端口即可進(jìn)行通信測(cè)試。當(dāng)KNX傳感器節(jié)點(diǎn)的開(kāi)關(guān)按鈕閉合時(shí),通過(guò)TCP數(shù)據(jù)管理終端接收經(jīng)待測(cè)網(wǎng)關(guān)轉(zhuǎn)換后的TCP/UDP報(bào)文數(shù)據(jù);反之,當(dāng)TCP數(shù)據(jù)管理終端發(fā)送一個(gè)LED控制命令時(shí),經(jīng)待測(cè)網(wǎng)關(guān)轉(zhuǎn)換為KNX報(bào)文數(shù)據(jù),KNX執(zhí)行器節(jié)點(diǎn)收到命令后將LED點(diǎn)亮。經(jīng)過(guò)測(cè)試,本文開(kāi)發(fā)的KNX-TCP/IP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)可以實(shí)現(xiàn)以下功能:①正確接收和發(fā)送KNX總線(xiàn)報(bào)文,并處理通信對(duì)象;②正確接收和發(fā)送TCP/UDP報(bào)文;③可實(shí)現(xiàn)KNX總線(xiàn)數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的交換。
本文以?xún)善琒N32F707控制器分別作為KNX通信處理模塊和TCP/IP通信處理模塊,并以FZE1066作為KNX總線(xiàn)收發(fā)模塊。RTL8019AS作為網(wǎng)絡(luò)接口芯片,構(gòu)建了KNX-TCP/IP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的硬件平臺(tái),并在此平臺(tái)上實(shí)現(xiàn)了KNX通信協(xié)議棧、精簡(jiǎn)的TCP/IP協(xié)議棧,以及KNX協(xié)議與TCP/IP協(xié)議的轉(zhuǎn)換。最后經(jīng)過(guò)應(yīng)用測(cè)試,驗(yàn)證了系統(tǒng)實(shí)現(xiàn)KNX總線(xiàn)數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)相互交換的功能。
[1] 韓俊玲.KNX總線(xiàn)通信內(nèi)核研究與開(kāi)發(fā)[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2012(1):34-37.
[2] 伍亞虎.KNX現(xiàn)場(chǎng)總線(xiàn)技術(shù)研究及其節(jié)點(diǎn)開(kāi)發(fā)[D].北京:北京林業(yè)大學(xué),2011.
[3] 李廣威.基于TCP/IP協(xié)議棧的工業(yè)以太網(wǎng)控制器的研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2013.
[4] 張丁丁,孫志毅.TCP/IP協(xié)議棧的實(shí)現(xiàn)方法[J].工業(yè)控制計(jì)算機(jī),2013(9):35-36.
[5] 孫萍.基于KNX協(xié)議的智能家居網(wǎng)關(guān)研究與實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),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
西安市科技計(jì)劃基金資助項(xiàng)目[編號(hào):CX1259(2)]。
修改稿收到日:2014-04-26。
張玉杰(1966-),男,1989年畢業(yè)于西北大學(xué)半導(dǎo)體物理專(zhuān)業(yè),獲碩士學(xué)位,教授;主要從事信息采集與處理、模式識(shí)別、嵌入式系統(tǒng)開(kāi)發(fā)等研究。