楊毅
(南京榕樹自動化系統有限公司,江蘇 南京210000)
KNX 標準是唯一全球性的、開放型住宅和樓宇控制標準,已經被批準為歐洲、國際、中國、美國標準,標準包括TCP/IP、TP(雙絞線電纜)、RF(射頻)等介質的通訊協議技術,其中,應用較為廣泛的是基于TP1 的KNX 系統[1]。
KNX 網絡中的每個設備具備獨立的物理地址,根據KNX 網絡拓撲特點,設備地址采用設備/線路/域三層描述方法,設備地址取值范圍為0~255,域地址取值范圍為0~15,線路地址取值范圍為0~15,一個網絡結構最多可配置設備數目為16×16×256=65536。
系統采用耦合器將線路和域關聯完成系統擴展,滿足大型控制系統的需求,耦合器具備總線隔離和信號驅動的功能[1]。但在一些大型項目應用中,經常會出現控制失敗、狀態指示錯誤、操作響應等待時間長等問題,經過檢查主要是因為現場總線報文過多,總線長期被占用,部分模塊由于不能正確將報文即時發送到總線上而導致通信報文丟包。針對KNX總線報文過多導致的通訊可靠性下降問題,本文給出了以下改善策略。
線路是KNX 系統最小的結構單元,一般情況下(使用一個640mA 總線電源),同一線路上最多可以安裝64 個總線元件。特殊場景下,如果同一線路上元件數目超過規定,可以計算線路長度和總線通訊負荷后,通過增加中繼設備來提高線路帶載能力,最多一條線路可以增加到256 個總線設備。
由于KNX 總線的電阻,電感等分布參數對總線供電和信號傳輸的影響,一條線路(包括所有分支)的導線長度不能超過1000m,總線設備與最近的電源之間的導線距離不能超過350m。為了確保避免報文碰撞,兩個總線裝置之間的導線距離不能超過700m[3]。

基于TP1 雙絞線的KNX 網絡通訊方式中,KNX 報文通常采用9600bps 的通訊速率,在大多數廠家的KNX 應用案例中,多采用下圖中的拓撲結構,IP 路由器作為區域耦合器,完成KNX 網絡與IP 網絡互連。線路耦合器作為支線耦合器,完成KNX 支路到主線連接,一條線路最多可以安裝64 個總線元件,主線上的報文匯總了各個支線上的報文,所以主線上報文數量較多,容易出現總線長期被占使得主線上的耦合器模塊接口報文無法發出而被丟棄的現象。
工程應用中,在滿足業務需求的前提下,對于報文較多的支線可以拆分成多個支線,改善此問題。網絡拓撲設計中需要嚴格控制支路上元件數量與主線上線路耦合器數目,避免總線長期被占用導致的報文被丟棄現象。

線路耦合器采用MSP430 低功耗單片機,主頻8M,負責KNX 線路上數據的處理和交換。路由器有專門的電源端子,采用ARM CORTEX-M0 內核的32 微控制器,主頻32M,負責KNX 線路和IP 數據的處理和交換,可以以較高的速度來處理IP 側的數據包。采用下圖的方式的網絡結構,采用IP 路由器作為支線的耦合器,支線上的報文直接被轉發到以太網上,由于IP 側一般是10M或者100M的以太網,其通訊速度遠大于TP1總線上的報文速度,可以很大程度上減少由于總線繁忙而造成的報文丟包。
一般KNX 網絡中的線路耦合器、IP 路由器模塊都有報文過濾功能,此功能可以過濾總線上的報文,防止不必要的報文被轉發到上一層線路中,或者將上層線路中并非此支線中的報文接轉發的支線上去。
如下的總線拓撲結構,其中組地址5/2/1,6/3/1 的分布情況如下圖陰影區域所示,在沒有開啟各個IP 路由器的路由功能時,如果物理地址為1.2.1 的模塊向總線上發送了5/2/1 的組地址的報文,則網絡上的其它模塊都能接收到此報文,實際上支線1.1.0,2.1.0,2.2.0 上是不需要此報文的,此報文被傳送到這些支線上占用了通訊線路。同樣,物理地址為2.1.1 的模塊向總線上發送了6/3/1 的組地址報文,也通過IP 線路轉發到其它各個支線上去。通過ETS 軟件,可以開啟IP 路由器的路由功能,則組地址5/2/1 的報文只會被轉發到1.3.0 的支線上去,而組地址6/3/1 的報文不會被發到IP 網絡上,這樣可以減少支線和主線上通訊報文的數量。

KNX 廠家在設計KNX 模塊時為了產品的應用更加廣泛,往往將模塊的功能參數盡可能地做得靈活可配置,項目調試人員在進行現場模塊的配置時要先去分析各個通訊模塊的作用和模塊的配置方法。對于一些現場不需要使用的功能應該關閉功能開啟開關,對于一些定時發送的通訊對象要根據實際情況在不影響使用的前提下減少發送的頻度。
開關驅動器是智能控制項目中最常用的元件之一,通常分為四路,八路等,開關驅動器帶有電流檢測功能,并能夠將檢測電流值通過KNX 總線傳輸給其它設備。
項目中如果使用使用了大量開關驅動器并開啟了電流檢測功能,必然給總線通訊帶來較大負擔,可以采用定時發送方式和變化量門限發送的方式改善此功能。定時發送方式在現場應用中可以不去啟用或者采用較長時間的定時發送。變化量門限方式是設置一個變化量,當變化量超過此門限后,就會將當前的電流值發送到總線上去。此電流可以根據現場負載的大小實測后確定。
KNX 產品開發廠家設計時就要去優化模塊的設計。考慮到TP1 總線的通訊速率較低,要盡量去減少非必要數據的發送頻率。如開關驅動器中電流檢測功能,在現場經查配置了按照變化率的大小來觸發其發送,在設計時為了減少總線上的報文,需要將模塊的穩定值發送到總線上,而不需要將變化中間的值發送到總線上。在項目實際應用中,燈具打開啟動之后的一段時間內電流并不穩定,這一段時間的電流是不斷變化的,如果模塊按照變化量的大小不斷更新電流指示的報文,就會造成總線報文的沖突。所以模塊在處理采集的電流值時必須先對電流穩定情況進行判斷,如果連續多次電流的相對變化值比較大,說明電流還未穩定,可以暫時不更新電流值,連續多次電流的相對變化值比較小,則電流值趨向穩定,在電流穩定后再把電流指示發到總線上去。對于未變化到穩定值的電流暫時不予以更新,這可以減少燈具啟動時的報文數量。
當批量控制設備打開時,系統中模塊的每個通道都會發送報文并等待確認報文,是最容易出現總線堵塞的時候,采用模塊級確認方法代替原有通道級確認方法,可有效減少堵塞的發生。
現代綠色建筑,智能家居,建筑能源管理系統的建設對建筑內各個強弱電子系統提出了更高的集成需求。KNX 網絡作為建筑物智能控制系統的主要控制網絡之一,需要具備更大的系統容量和承載更多的通信負載能力。通過多年項目實踐,本文總結了提高KNX 總線通訊可靠性的若干方法,通過上述方法在產品設計、系統規劃和工程調試等階段分別對KNX 網絡及設備進行性能調優,能夠使控制網絡的可靠性、健壯性得到較大提升,為建筑的最終用戶提供一個安全、綠色、智能的建筑智能控制系統。