覃 喜
(廣西交通職業技術學院,廣西南寧 530023)
控制器局域網(Controller Area Network,CAN)是一種具備低成本、高可靠(誤碼率為4.7×10-11)、長距離(在5 kbit/s時通信距離可達10 km)、強抗干擾、能實時傳輸等特點并被廣泛應用于工業控制、醫療電子、家用電器、傳感器,以及安全防護等諸多領域的網絡總線。
CAN總線雖然擁有諸多優點,但由于受其硬件電氣特征的限制,且CAN總線本身缺少邏輯上的層級概念,因此往往難以直接構建大型、復雜的通信網絡。事實上,當前基于CAN總線的主要通信協議,大多只能直接構建不超過256個甚至不超過64個節點的小型網絡。雖然理論上可以將多個小型網絡及協議組合拼接成一個大型網絡,但這需要掌握并維護多個網絡協議,或需要開發不同網絡間的轉換協議,這勢必會增加開發和維護成本,同時降低網絡的通信效率和靈活性。以上各種原因,使得直接基于CAN總線和現有通信協議構建大型通信網絡變得更復雜,難度也更高。
CAN總線理論上可以同時掛接的節點數量,幾乎沒有限制,其本身具備直接構建大型網絡的潛質。基于這一前提并結合CAN總線本身的諸多優點,本文提出并設計實現一種基于CAN總線的千節點級大型虛擬樹網絡及其通信協議,可以搭建多達1576個節點數量的大型網絡,滿足大型分布式設備控制系統、大型分布式數據采集系統,以及二者相結合的大型分布式綜合測控系統的設計需要。
圖1所示為基于CAN總線的四層級大型樹狀網絡的拓撲結構。它由根級、一級、二級和葉級四個層級組成。其中,根級有一個節點,稱為根節點;根節點有1~7個直系子節點,稱為一級節點;每個一級節點又有1~7個直系子節點,稱為二級節點;而每個二級節點,又有1~31個直系子節點,稱為葉級節點。由此可見,該樹狀網絡的最大節點容量為:1個根節點,1×7=7個一級節點,7×7=49個二級節點,以及7×7×31=1519 個葉級節點,共計1+7+49+1519=1576個節點。

圖1 大型樹狀網絡的拓撲結構
在該大型樹狀網絡中,通過對各層級進行編層并對各節點進行編號的方式,能夠識別各層級和各節點的唯一性。其中,葉級不需要編層,而根級、一級和二級均使用位寬為2的二進制數nn進行編層,分別為01、10和11;根節點不需要編號,而一級、二級和葉級節點則分別使用位寬為3、6和11的二進制數xxx、xxx-yyy和xxx-yyy-zzzzz進行編號,分別為 001~111、xxx-001~xxx-111 和 xxxyyy-00001~xxx-yyy-11111;其中 ,xxx=000、yyy=000、zzzzz=00000的編號用于多播、廣播通信,其余編號用于單播通信。
圖1所示的大型樹狀網絡,被設計為虛擬的樹狀網絡。它僅要求網絡的物理通信鏈路在邏輯上是樹狀結構的,而不要求網絡的各物理節點也連接成樹狀結構。換言之,只要網絡的物理通信鏈路在邏輯上能夠形成圖1所示的樹狀結構,就可以依照圖1所示的層編碼和節點編號規則,將網絡映射為圖1所示的虛擬樹網絡。虛擬化設計大大增強了樹狀網絡的物理連接靈活性,使得該網絡至少能夠支持如下四種典型物理連接。
(1)節點并聯方式。如圖2所示,當網絡的節點較少,不超過CAN收發器電氣特征所能連接的數量上限時,可以將所有的CAN節點直接并接在同一條CAN總線上,然后通過圖1所示的層編碼和節點編號規則,將網絡映射為圖1所示的虛擬樹網絡。

圖2 節點直聯的虛擬樹網絡
(2)總線級聯方式。如圖3所示,當網絡的節點較多,超過CAN收發器電氣特征所能連接的數量上限時,也可將各CAN節點連接成多條CAN總線,并通過中繼器及其透明轉發功能,將各CAN 總線級聯成一條邏輯上的虛擬CAN總線,然后將虛擬CAN總線按照圖2所示的方法進一步映射為圖1所示的虛擬樹網絡。

圖3 節點直聯的虛擬樹網絡
(3)樹狀連接方式。當網絡的節點數量進一步增加時,為了避免過多的中繼級聯而導致網絡的通信產生太大的延遲,可以直接將所有的CAN節點在物理上連接成如圖1所示的虛擬樹網絡。
(4)復合連接方式。如果有必要,也可靈活組合前三種連接方式來構建圖1所示的虛擬樹網絡,或將虛擬樹網絡中的某些節點合并為同一個物理節點,以減少某些非必要的物理節點和中繼器,從而節約硬件成本和提升網絡通信效率。這時,合并后的物理節點應同時實現合并前的各節點的功能。
圖1所示的大型虛擬樹網絡主要用于分布式測控系統,其信息流被設計為僅能在不同層級的直系節點間縱向傳播。這使得通信雙方能充分利用通信節點在虛擬樹網絡中的位置信息來減少地址冗余,從而有效縮短通信地址的位寬。最終,虛擬樹網絡僅使用13位通信地址(不含方向碼),就能支持1576個節點的任意兩個層級的任意兩個直系節點間的雙向單播通信,下行多播和廣播通信,以及其他特殊通信。
虛擬樹網絡應為每個節點設置恰當的報文接收和轉發規則,使每個節點都能夠接收以自己為宿地址的通信數據,同時接收并無條件轉發那些以自己為中繼節點的通信數據。這樣設置后,虛擬樹網絡只需正確配置各節點的通信地址,就能夠實現任意直系節點間的縱向通信。進一步為每個節點分配獨立地址和恰當的共用地址,可使某些報文只能被特定的某個節點接收,而使另一些報文只能被特定的某些節點接收,從而在虛擬樹網絡中實現單播、多播和廣播通信鏈路。
完整的單播、多播和廣播通信地址分配方案如表1所示(按照仲裁優先級從高至低排列,并假設xxx ≠000,yyy≠ 000,zzzzz ≠ 00000)。表1中的單播、多播和廣播通信地址的具體實現,是彈性的、可剪裁的。實際的虛擬樹網絡,可根據需要,僅實現表中的部分或全部單播、多播和廣播通信地址。

表1 大型虛擬樹網絡的單播、多播和廣播通信地址分配方案(不含方向碼)
為充分提高大型虛擬樹網絡的通信效率和靈活性,虛擬樹網絡將底層CAN通信協議的29位標識符定義為表2所示格式。該格式將單播通信的方向碼與優先級碼融合為2位特征碼,節約了仲裁標識符位。同時,考慮到CAN總線在仲裁時0比1優先,特規定:對于數據采集系統,上行報文的優先級為01,下行為10;對于設備控制系統,下行報文的優先級為01,上行為10;而對于測控相結合的綜合系統,則根據數據流的特征綜合考慮后設置。

表2 大型虛擬樹網絡底層CAN通信的29位仲裁標識符分配方案
某高校有一棟5層高的教學樓,每層有14個房間單元(10個教室、4個辦公室、2個公共衛生間)。每個教室有13個開關需要控制(8個照明燈開關、2個空調開關、1個投影儀開關、1個總控開關,以及1個走廊燈開關),每個辦公室有7個開關需要控制(4個照明燈開關,1個空調開關,1個總控開關,以及1個走廊燈開關),每個公共衛生間有2個開關需要控制(1個照明燈開關,1個走廊燈開關)。
本文的大型CAN虛擬樹網絡,可以輕松構建該教學樓的綜合控制系統,實現對該教學所有開關的可靠、精細和靈活控制。
(1)系統的節點拓撲。
該教學樓控制系統省略了根節點,使用1個一級節點作為教學樓節點,5個二級節點作為各樓層節點,每個分節點使用14個子節點作為房間節點,并規定:各樓層節點的1~10號、11~14號、15~16號子節點,分別用作該樓層教室、辦公室、公共衛生間等空間的子節點,控制系統節點拓撲如圖4所示。

圖4 某教學樓綜合控制系統節點拓撲
(2)節點地址分配。
根據教學樓的設備控制需求,從表1中選出表3所示的地址分配方案。在該方案中,每個房間節點都分配有6個下行通信地址,分別用于接收房間所在樓層節點和教學樓節點的下行單播和廣播報文。

表3 教學樓綜合控制系統的單播和廣播通信地址分配方案(不含方向碼)
(3)開關的分配方案。
每個房間節點連接并控制若干個開關。為了便于批量控制,規定:各房間節點的0~7號、8~9號、10~11號、12號、13號開關,分別控制該房間的照明燈、走廊燈、空調、投影儀、總閘。若某房間沒有相應設備(例如公共衛生間沒有投影儀),則對相應編號的開關進行虛擬控制。
(4)開關的控制策略。
教學樓節點和樓層節點都可以向直系房間節點發送攜帶指令的單播或廣播報文,從而單獨或批量控制目標房間節點的特定開關;當然,各房間節點也能夠直接控制本房間節點的開關。例如,在教學樓節點下行發送宿地址為10 001 100 00000,指令為“斷開8~9號開關”的報文,就可以批量關閉4樓的所有走廊燈;而在教學樓節點下行發送宿地址為10 001 000 00000,指令為“斷開1~7和10~13號開關”的報文,則可以關閉整個教學樓除走廊燈之外的所有設備的電源。
CAN總線具備低成本、高可靠(誤碼率4.7×10-11)、長距離(在5 kbit/s時通信距離可達10 km)、強抗干擾、能實時傳輸等諸多優點,非常適合應用在大型分布式可靠測控領域,發展潛力巨大。本文針對當下CAN總線及其通信協議不容易直接構建大型通信網絡的現狀,設計了一套可直接基于CAN總線構建大型虛擬樹網絡的方案,支持靈活的物理連接方式并能實現多達1576個網絡節點的組網規模,具備完善、靈活和豐富的單播、多播和廣播通信鏈路,能夠有效保障該大型網絡的通信效率和靈活性,足以滿足大型分布式設備控制系統、大型分布式數據采集系統的數據通信需求,以及二者相結合的大型分布式綜合測控系統的設計需要,具有一定的推廣價值。
該系統預留了寬度多達12位的指令碼設計空間,能夠實現豐富的指令功能設計。該系統在完善指令碼及上層通信協議的設計后,每個節點將能夠支持與管理多達160路設備,使整個網絡能夠測控的設備規模,多達25萬路以上,具有較大的拓展空間。