覃 喜
(廣西交通職業(yè)技術(shù)學(xué)院,廣西南寧 530023)
控制器局域網(wǎng)(Controller Area Network,CAN)是一種具備低成本、高可靠(誤碼率為4.7×10-11)、長距離(在5 kbit/s時通信距離可達(dá)10 km)、強抗干擾、能實時傳輸?shù)忍攸c并被廣泛應(yīng)用于工業(yè)控制、醫(yī)療電子、家用電器、傳感器,以及安全防護(hù)等諸多領(lǐng)域的網(wǎng)絡(luò)總線。
CAN總線雖然擁有諸多優(yōu)點,但由于受其硬件電氣特征的限制,且CAN總線本身缺少邏輯上的層級概念,因此往往難以直接構(gòu)建大型、復(fù)雜的通信網(wǎng)絡(luò)。事實上,當(dāng)前基于CAN總線的主要通信協(xié)議,大多只能直接構(gòu)建不超過256個甚至不超過64個節(jié)點的小型網(wǎng)絡(luò)。雖然理論上可以將多個小型網(wǎng)絡(luò)及協(xié)議組合拼接成一個大型網(wǎng)絡(luò),但這需要掌握并維護(hù)多個網(wǎng)絡(luò)協(xié)議,或需要開發(fā)不同網(wǎng)絡(luò)間的轉(zhuǎn)換協(xié)議,這勢必會增加開發(fā)和維護(hù)成本,同時降低網(wǎng)絡(luò)的通信效率和靈活性。以上各種原因,使得直接基于CAN總線和現(xiàn)有通信協(xié)議構(gòu)建大型通信網(wǎng)絡(luò)變得更復(fù)雜,難度也更高。
CAN總線理論上可以同時掛接的節(jié)點數(shù)量,幾乎沒有限制,其本身具備直接構(gòu)建大型網(wǎng)絡(luò)的潛質(zhì)?;谶@一前提并結(jié)合CAN總線本身的諸多優(yōu)點,本文提出并設(shè)計實現(xiàn)一種基于CAN總線的千節(jié)點級大型虛擬樹網(wǎng)絡(luò)及其通信協(xié)議,可以搭建多達(dá)1576個節(jié)點數(shù)量的大型網(wǎng)絡(luò),滿足大型分布式設(shè)備控制系統(tǒng)、大型分布式數(shù)據(jù)采集系統(tǒng),以及二者相結(jié)合的大型分布式綜合測控系統(tǒng)的設(shè)計需要。
圖1所示為基于CAN總線的四層級大型樹狀網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。它由根級、一級、二級和葉級四個層級組成。其中,根級有一個節(jié)點,稱為根節(jié)點;根節(jié)點有1~7個直系子節(jié)點,稱為一級節(jié)點;每個一級節(jié)點又有1~7個直系子節(jié)點,稱為二級節(jié)點;而每個二級節(jié)點,又有1~31個直系子節(jié)點,稱為葉級節(jié)點。由此可見,該樹狀網(wǎng)絡(luò)的最大節(jié)點容量為:1個根節(jié)點,1×7=7個一級節(jié)點,7×7=49個二級節(jié)點,以及7×7×31=1519 個葉級節(jié)點,共計1+7+49+1519=1576個節(jié)點。
圖1 大型樹狀網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
在該大型樹狀網(wǎng)絡(luò)中,通過對各層級進(jìn)行編層并對各節(jié)點進(jìn)行編號的方式,能夠識別各層級和各節(jié)點的唯一性。其中,葉級不需要編層,而根級、一級和二級均使用位寬為2的二進(jìn)制數(shù)nn進(jìn)行編層,分別為01、10和11;根節(jié)點不需要編號,而一級、二級和葉級節(jié)點則分別使用位寬為3、6和11的二進(jìn)制數(shù)xxx、xxx-yyy和xxx-yyy-zzzzz進(jìn)行編號,分別為 001~111、xxx-001~xxx-111 和 xxxyyy-00001~xxx-yyy-11111;其中 ,xxx=000、yyy=000、zzzzz=00000的編號用于多播、廣播通信,其余編號用于單播通信。
圖1所示的大型樹狀網(wǎng)絡(luò),被設(shè)計為虛擬的樹狀網(wǎng)絡(luò)。它僅要求網(wǎng)絡(luò)的物理通信鏈路在邏輯上是樹狀結(jié)構(gòu)的,而不要求網(wǎng)絡(luò)的各物理節(jié)點也連接成樹狀結(jié)構(gòu)。換言之,只要網(wǎng)絡(luò)的物理通信鏈路在邏輯上能夠形成圖1所示的樹狀結(jié)構(gòu),就可以依照圖1所示的層編碼和節(jié)點編號規(guī)則,將網(wǎng)絡(luò)映射為圖1所示的虛擬樹網(wǎng)絡(luò)。虛擬化設(shè)計大大增強了樹狀網(wǎng)絡(luò)的物理連接靈活性,使得該網(wǎng)絡(luò)至少能夠支持如下四種典型物理連接。
(1)節(jié)點并聯(lián)方式。如圖2所示,當(dāng)網(wǎng)絡(luò)的節(jié)點較少,不超過CAN收發(fā)器電氣特征所能連接的數(shù)量上限時,可以將所有的CAN節(jié)點直接并接在同一條CAN總線上,然后通過圖1所示的層編碼和節(jié)點編號規(guī)則,將網(wǎng)絡(luò)映射為圖1所示的虛擬樹網(wǎng)絡(luò)。
圖2 節(jié)點直聯(lián)的虛擬樹網(wǎng)絡(luò)
(2)總線級聯(lián)方式。如圖3所示,當(dāng)網(wǎng)絡(luò)的節(jié)點較多,超過CAN收發(fā)器電氣特征所能連接的數(shù)量上限時,也可將各CAN節(jié)點連接成多條CAN總線,并通過中繼器及其透明轉(zhuǎn)發(fā)功能,將各CAN 總線級聯(lián)成一條邏輯上的虛擬CAN總線,然后將虛擬CAN總線按照圖2所示的方法進(jìn)一步映射為圖1所示的虛擬樹網(wǎng)絡(luò)。
圖3 節(jié)點直聯(lián)的虛擬樹網(wǎng)絡(luò)
(3)樹狀連接方式。當(dāng)網(wǎng)絡(luò)的節(jié)點數(shù)量進(jìn)一步增加時,為了避免過多的中繼級聯(lián)而導(dǎo)致網(wǎng)絡(luò)的通信產(chǎn)生太大的延遲,可以直接將所有的CAN節(jié)點在物理上連接成如圖1所示的虛擬樹網(wǎng)絡(luò)。
(4)復(fù)合連接方式。如果有必要,也可靈活組合前三種連接方式來構(gòu)建圖1所示的虛擬樹網(wǎng)絡(luò),或?qū)⑻摂M樹網(wǎng)絡(luò)中的某些節(jié)點合并為同一個物理節(jié)點,以減少某些非必要的物理節(jié)點和中繼器,從而節(jié)約硬件成本和提升網(wǎng)絡(luò)通信效率。這時,合并后的物理節(jié)點應(yīng)同時實現(xiàn)合并前的各節(jié)點的功能。
圖1所示的大型虛擬樹網(wǎng)絡(luò)主要用于分布式測控系統(tǒng),其信息流被設(shè)計為僅能在不同層級的直系節(jié)點間縱向傳播。這使得通信雙方能充分利用通信節(jié)點在虛擬樹網(wǎng)絡(luò)中的位置信息來減少地址冗余,從而有效縮短通信地址的位寬。最終,虛擬樹網(wǎng)絡(luò)僅使用13位通信地址(不含方向碼),就能支持1576個節(jié)點的任意兩個層級的任意兩個直系節(jié)點間的雙向單播通信,下行多播和廣播通信,以及其他特殊通信。
虛擬樹網(wǎng)絡(luò)應(yīng)為每個節(jié)點設(shè)置恰當(dāng)?shù)膱笪慕邮蘸娃D(zhuǎn)發(fā)規(guī)則,使每個節(jié)點都能夠接收以自己為宿地址的通信數(shù)據(jù),同時接收并無條件轉(zhuǎn)發(fā)那些以自己為中繼節(jié)點的通信數(shù)據(jù)。這樣設(shè)置后,虛擬樹網(wǎng)絡(luò)只需正確配置各節(jié)點的通信地址,就能夠?qū)崿F(xiàn)任意直系節(jié)點間的縱向通信。進(jìn)一步為每個節(jié)點分配獨立地址和恰當(dāng)?shù)墓灿玫刂?,可使某些報文只能被特定的某個節(jié)點接收,而使另一些報文只能被特定的某些節(jié)點接收,從而在虛擬樹網(wǎng)絡(luò)中實現(xiàn)單播、多播和廣播通信鏈路。
完整的單播、多播和廣播通信地址分配方案如表1所示(按照仲裁優(yōu)先級從高至低排列,并假設(shè)xxx ≠000,yyy≠ 000,zzzzz ≠ 00000)。表1中的單播、多播和廣播通信地址的具體實現(xiàn),是彈性的、可剪裁的。實際的虛擬樹網(wǎng)絡(luò),可根據(jù)需要,僅實現(xiàn)表中的部分或全部單播、多播和廣播通信地址。
表1 大型虛擬樹網(wǎng)絡(luò)的單播、多播和廣播通信地址分配方案(不含方向碼)
為充分提高大型虛擬樹網(wǎng)絡(luò)的通信效率和靈活性,虛擬樹網(wǎng)絡(luò)將底層CAN通信協(xié)議的29位標(biāo)識符定義為表2所示格式。該格式將單播通信的方向碼與優(yōu)先級碼融合為2位特征碼,節(jié)約了仲裁標(biāo)識符位。同時,考慮到CAN總線在仲裁時0比1優(yōu)先,特規(guī)定:對于數(shù)據(jù)采集系統(tǒng),上行報文的優(yōu)先級為01,下行為10;對于設(shè)備控制系統(tǒng),下行報文的優(yōu)先級為01,上行為10;而對于測控相結(jié)合的綜合系統(tǒng),則根據(jù)數(shù)據(jù)流的特征綜合考慮后設(shè)置。
表2 大型虛擬樹網(wǎng)絡(luò)底層CAN通信的29位仲裁標(biāo)識符分配方案
某高校有一棟5層高的教學(xué)樓,每層有14個房間單元(10個教室、4個辦公室、2個公共衛(wèi)生間)。每個教室有13個開關(guān)需要控制(8個照明燈開關(guān)、2個空調(diào)開關(guān)、1個投影儀開關(guān)、1個總控開關(guān),以及1個走廊燈開關(guān)),每個辦公室有7個開關(guān)需要控制(4個照明燈開關(guān),1個空調(diào)開關(guān),1個總控開關(guān),以及1個走廊燈開關(guān)),每個公共衛(wèi)生間有2個開關(guān)需要控制(1個照明燈開關(guān),1個走廊燈開關(guān))。
本文的大型CAN虛擬樹網(wǎng)絡(luò),可以輕松構(gòu)建該教學(xué)樓的綜合控制系統(tǒng),實現(xiàn)對該教學(xué)所有開關(guān)的可靠、精細(xì)和靈活控制。
(1)系統(tǒng)的節(jié)點拓?fù)洹?/p>
該教學(xué)樓控制系統(tǒng)省略了根節(jié)點,使用1個一級節(jié)點作為教學(xué)樓節(jié)點,5個二級節(jié)點作為各樓層節(jié)點,每個分節(jié)點使用14個子節(jié)點作為房間節(jié)點,并規(guī)定:各樓層節(jié)點的1~10號、11~14號、15~16號子節(jié)點,分別用作該樓層教室、辦公室、公共衛(wèi)生間等空間的子節(jié)點,控制系統(tǒng)節(jié)點拓?fù)淙鐖D4所示。
圖4 某教學(xué)樓綜合控制系統(tǒng)節(jié)點拓?fù)?/p>
(2)節(jié)點地址分配。
根據(jù)教學(xué)樓的設(shè)備控制需求,從表1中選出表3所示的地址分配方案。在該方案中,每個房間節(jié)點都分配有6個下行通信地址,分別用于接收房間所在樓層節(jié)點和教學(xué)樓節(jié)點的下行單播和廣播報文。
表3 教學(xué)樓綜合控制系統(tǒng)的單播和廣播通信地址分配方案(不含方向碼)
(3)開關(guān)的分配方案。
每個房間節(jié)點連接并控制若干個開關(guān)。為了便于批量控制,規(guī)定:各房間節(jié)點的0~7號、8~9號、10~11號、12號、13號開關(guān),分別控制該房間的照明燈、走廊燈、空調(diào)、投影儀、總閘。若某房間沒有相應(yīng)設(shè)備(例如公共衛(wèi)生間沒有投影儀),則對相應(yīng)編號的開關(guān)進(jìn)行虛擬控制。
(4)開關(guān)的控制策略。
教學(xué)樓節(jié)點和樓層節(jié)點都可以向直系房間節(jié)點發(fā)送攜帶指令的單播或廣播報文,從而單獨或批量控制目標(biāo)房間節(jié)點的特定開關(guān);當(dāng)然,各房間節(jié)點也能夠直接控制本房間節(jié)點的開關(guān)。例如,在教學(xué)樓節(jié)點下行發(fā)送宿地址為10 001 100 00000,指令為“斷開8~9號開關(guān)”的報文,就可以批量關(guān)閉4樓的所有走廊燈;而在教學(xué)樓節(jié)點下行發(fā)送宿地址為10 001 000 00000,指令為“斷開1~7和10~13號開關(guān)”的報文,則可以關(guān)閉整個教學(xué)樓除走廊燈之外的所有設(shè)備的電源。
CAN總線具備低成本、高可靠(誤碼率4.7×10-11)、長距離(在5 kbit/s時通信距離可達(dá)10 km)、強抗干擾、能實時傳輸?shù)戎T多優(yōu)點,非常適合應(yīng)用在大型分布式可靠測控領(lǐng)域,發(fā)展?jié)摿薮?。本文針對?dāng)下CAN總線及其通信協(xié)議不容易直接構(gòu)建大型通信網(wǎng)絡(luò)的現(xiàn)狀,設(shè)計了一套可直接基于CAN總線構(gòu)建大型虛擬樹網(wǎng)絡(luò)的方案,支持靈活的物理連接方式并能實現(xiàn)多達(dá)1576個網(wǎng)絡(luò)節(jié)點的組網(wǎng)規(guī)模,具備完善、靈活和豐富的單播、多播和廣播通信鏈路,能夠有效保障該大型網(wǎng)絡(luò)的通信效率和靈活性,足以滿足大型分布式設(shè)備控制系統(tǒng)、大型分布式數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)通信需求,以及二者相結(jié)合的大型分布式綜合測控系統(tǒng)的設(shè)計需要,具有一定的推廣價值。
該系統(tǒng)預(yù)留了寬度多達(dá)12位的指令碼設(shè)計空間,能夠?qū)崿F(xiàn)豐富的指令功能設(shè)計。該系統(tǒng)在完善指令碼及上層通信協(xié)議的設(shè)計后,每個節(jié)點將能夠支持與管理多達(dá)160路設(shè)備,使整個網(wǎng)絡(luò)能夠測控的設(shè)備規(guī)模,多達(dá)25萬路以上,具有較大的拓展空間。