楊毅
(南京榕樹自動(dòng)化系統(tǒng)有限公司,江蘇 南京210000)
KNX 標(biāo)準(zhǔn)是唯一全球性的、開放型住宅和樓宇控制標(biāo)準(zhǔn),已經(jīng)被批準(zhǔn)為歐洲、國際、中國、美國標(biāo)準(zhǔn),標(biāo)準(zhǔn)包括TCP/IP、TP(雙絞線電纜)、RF(射頻)等介質(zhì)的通訊協(xié)議技術(shù),其中,應(yīng)用較為廣泛的是基于TP1 的KNX 系統(tǒng)[1]。
KNX 網(wǎng)絡(luò)中的每個(gè)設(shè)備具備獨(dú)立的物理地址,根據(jù)KNX 網(wǎng)絡(luò)拓?fù)涮攸c(diǎn),設(shè)備地址采用設(shè)備/線路/域三層描述方法,設(shè)備地址取值范圍為0~255,域地址取值范圍為0~15,線路地址取值范圍為0~15,一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)最多可配置設(shè)備數(shù)目為16×16×256=65536。
系統(tǒng)采用耦合器將線路和域關(guān)聯(lián)完成系統(tǒng)擴(kuò)展,滿足大型控制系統(tǒng)的需求,耦合器具備總線隔離和信號(hào)驅(qū)動(dòng)的功能[1]。但在一些大型項(xiàng)目應(yīng)用中,經(jīng)常會(huì)出現(xiàn)控制失敗、狀態(tài)指示錯(cuò)誤、操作響應(yīng)等待時(shí)間長等問題,經(jīng)過檢查主要是因?yàn)楝F(xiàn)場(chǎng)總線報(bào)文過多,總線長期被占用,部分模塊由于不能正確將報(bào)文即時(shí)發(fā)送到總線上而導(dǎo)致通信報(bào)文丟包。針對(duì)KNX總線報(bào)文過多導(dǎo)致的通訊可靠性下降問題,本文給出了以下改善策略。
線路是KNX 系統(tǒng)最小的結(jié)構(gòu)單元,一般情況下(使用一個(gè)640mA 總線電源),同一線路上最多可以安裝64 個(gè)總線元件。特殊場(chǎng)景下,如果同一線路上元件數(shù)目超過規(guī)定,可以計(jì)算線路長度和總線通訊負(fù)荷后,通過增加中繼設(shè)備來提高線路帶載能力,最多一條線路可以增加到256 個(gè)總線設(shè)備。
由于KNX 總線的電阻,電感等分布參數(shù)對(duì)總線供電和信號(hào)傳輸?shù)挠绊?,一條線路(包括所有分支)的導(dǎo)線長度不能超過1000m,總線設(shè)備與最近的電源之間的導(dǎo)線距離不能超過350m。為了確保避免報(bào)文碰撞,兩個(gè)總線裝置之間的導(dǎo)線距離不能超過700m[3]。
基于TP1 雙絞線的KNX 網(wǎng)絡(luò)通訊方式中,KNX 報(bào)文通常采用9600bps 的通訊速率,在大多數(shù)廠家的KNX 應(yīng)用案例中,多采用下圖中的拓?fù)浣Y(jié)構(gòu),IP 路由器作為區(qū)域耦合器,完成KNX 網(wǎng)絡(luò)與IP 網(wǎng)絡(luò)互連。線路耦合器作為支線耦合器,完成KNX 支路到主線連接,一條線路最多可以安裝64 個(gè)總線元件,主線上的報(bào)文匯總了各個(gè)支線上的報(bào)文,所以主線上報(bào)文數(shù)量較多,容易出現(xiàn)總線長期被占使得主線上的耦合器模塊接口報(bào)文無法發(fā)出而被丟棄的現(xiàn)象。
工程應(yīng)用中,在滿足業(yè)務(wù)需求的前提下,對(duì)于報(bào)文較多的支線可以拆分成多個(gè)支線,改善此問題。網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)中需要嚴(yán)格控制支路上元件數(shù)量與主線上線路耦合器數(shù)目,避免總線長期被占用導(dǎo)致的報(bào)文被丟棄現(xiàn)象。
線路耦合器采用MSP430 低功耗單片機(jī),主頻8M,負(fù)責(zé)KNX 線路上數(shù)據(jù)的處理和交換。路由器有專門的電源端子,采用ARM CORTEX-M0 內(nèi)核的32 微控制器,主頻32M,負(fù)責(zé)KNX 線路和IP 數(shù)據(jù)的處理和交換,可以以較高的速度來處理IP 側(cè)的數(shù)據(jù)包。采用下圖的方式的網(wǎng)絡(luò)結(jié)構(gòu),采用IP 路由器作為支線的耦合器,支線上的報(bào)文直接被轉(zhuǎn)發(fā)到以太網(wǎng)上,由于IP 側(cè)一般是10M或者100M的以太網(wǎng),其通訊速度遠(yuǎn)大于TP1總線上的報(bào)文速度,可以很大程度上減少由于總線繁忙而造成的報(bào)文丟包。
一般KNX 網(wǎng)絡(luò)中的線路耦合器、IP 路由器模塊都有報(bào)文過濾功能,此功能可以過濾總線上的報(bào)文,防止不必要的報(bào)文被轉(zhuǎn)發(fā)到上一層線路中,或者將上層線路中并非此支線中的報(bào)文接轉(zhuǎn)發(fā)的支線上去。
如下的總線拓?fù)浣Y(jié)構(gòu),其中組地址5/2/1,6/3/1 的分布情況如下圖陰影區(qū)域所示,在沒有開啟各個(gè)IP 路由器的路由功能時(shí),如果物理地址為1.2.1 的模塊向總線上發(fā)送了5/2/1 的組地址的報(bào)文,則網(wǎng)絡(luò)上的其它模塊都能接收到此報(bào)文,實(shí)際上支線1.1.0,2.1.0,2.2.0 上是不需要此報(bào)文的,此報(bào)文被傳送到這些支線上占用了通訊線路。同樣,物理地址為2.1.1 的模塊向總線上發(fā)送了6/3/1 的組地址報(bào)文,也通過IP 線路轉(zhuǎn)發(fā)到其它各個(gè)支線上去。通過ETS 軟件,可以開啟IP 路由器的路由功能,則組地址5/2/1 的報(bào)文只會(huì)被轉(zhuǎn)發(fā)到1.3.0 的支線上去,而組地址6/3/1 的報(bào)文不會(huì)被發(fā)到IP 網(wǎng)絡(luò)上,這樣可以減少支線和主線上通訊報(bào)文的數(shù)量。
KNX 廠家在設(shè)計(jì)KNX 模塊時(shí)為了產(chǎn)品的應(yīng)用更加廣泛,往往將模塊的功能參數(shù)盡可能地做得靈活可配置,項(xiàng)目調(diào)試人員在進(jìn)行現(xiàn)場(chǎng)模塊的配置時(shí)要先去分析各個(gè)通訊模塊的作用和模塊的配置方法。對(duì)于一些現(xiàn)場(chǎng)不需要使用的功能應(yīng)該關(guān)閉功能開啟開關(guān),對(duì)于一些定時(shí)發(fā)送的通訊對(duì)象要根據(jù)實(shí)際情況在不影響使用的前提下減少發(fā)送的頻度。
開關(guān)驅(qū)動(dòng)器是智能控制項(xiàng)目中最常用的元件之一,通常分為四路,八路等,開關(guān)驅(qū)動(dòng)器帶有電流檢測(cè)功能,并能夠?qū)z測(cè)電流值通過KNX 總線傳輸給其它設(shè)備。
項(xiàng)目中如果使用使用了大量開關(guān)驅(qū)動(dòng)器并開啟了電流檢測(cè)功能,必然給總線通訊帶來較大負(fù)擔(dān),可以采用定時(shí)發(fā)送方式和變化量門限發(fā)送的方式改善此功能。定時(shí)發(fā)送方式在現(xiàn)場(chǎng)應(yīng)用中可以不去啟用或者采用較長時(shí)間的定時(shí)發(fā)送。變化量門限方式是設(shè)置一個(gè)變化量,當(dāng)變化量超過此門限后,就會(huì)將當(dāng)前的電流值發(fā)送到總線上去。此電流可以根據(jù)現(xiàn)場(chǎng)負(fù)載的大小實(shí)測(cè)后確定。
KNX 產(chǎn)品開發(fā)廠家設(shè)計(jì)時(shí)就要去優(yōu)化模塊的設(shè)計(jì)??紤]到TP1 總線的通訊速率較低,要盡量去減少非必要數(shù)據(jù)的發(fā)送頻率。如開關(guān)驅(qū)動(dòng)器中電流檢測(cè)功能,在現(xiàn)場(chǎng)經(jīng)查配置了按照變化率的大小來觸發(fā)其發(fā)送,在設(shè)計(jì)時(shí)為了減少總線上的報(bào)文,需要將模塊的穩(wěn)定值發(fā)送到總線上,而不需要將變化中間的值發(fā)送到總線上。在項(xiàng)目實(shí)際應(yīng)用中,燈具打開啟動(dòng)之后的一段時(shí)間內(nèi)電流并不穩(wěn)定,這一段時(shí)間的電流是不斷變化的,如果模塊按照變化量的大小不斷更新電流指示的報(bào)文,就會(huì)造成總線報(bào)文的沖突。所以模塊在處理采集的電流值時(shí)必須先對(duì)電流穩(wěn)定情況進(jìn)行判斷,如果連續(xù)多次電流的相對(duì)變化值比較大,說明電流還未穩(wěn)定,可以暫時(shí)不更新電流值,連續(xù)多次電流的相對(duì)變化值比較小,則電流值趨向穩(wěn)定,在電流穩(wěn)定后再把電流指示發(fā)到總線上去。對(duì)于未變化到穩(wěn)定值的電流暫時(shí)不予以更新,這可以減少燈具啟動(dòng)時(shí)的報(bào)文數(shù)量。
當(dāng)批量控制設(shè)備打開時(shí),系統(tǒng)中模塊的每個(gè)通道都會(huì)發(fā)送報(bào)文并等待確認(rèn)報(bào)文,是最容易出現(xiàn)總線堵塞的時(shí)候,采用模塊級(jí)確認(rèn)方法代替原有通道級(jí)確認(rèn)方法,可有效減少堵塞的發(fā)生。
現(xiàn)代綠色建筑,智能家居,建筑能源管理系統(tǒng)的建設(shè)對(duì)建筑內(nèi)各個(gè)強(qiáng)弱電子系統(tǒng)提出了更高的集成需求。KNX 網(wǎng)絡(luò)作為建筑物智能控制系統(tǒng)的主要控制網(wǎng)絡(luò)之一,需要具備更大的系統(tǒng)容量和承載更多的通信負(fù)載能力。通過多年項(xiàng)目實(shí)踐,本文總結(jié)了提高KNX 總線通訊可靠性的若干方法,通過上述方法在產(chǎn)品設(shè)計(jì)、系統(tǒng)規(guī)劃和工程調(diào)試等階段分別對(duì)KNX 網(wǎng)絡(luò)及設(shè)備進(jìn)行性能調(diào)優(yōu),能夠使控制網(wǎng)絡(luò)的可靠性、健壯性得到較大提升,為建筑的最終用戶提供一個(gè)安全、綠色、智能的建筑智能控制系統(tǒng)。