| 目的ID | 通信媒介 | 鏈路標(biāo)識 | 對應(yīng)目的地址 | 優(yōu)先紡 | 鏈路狀態(tài) |
| 000001 | ''U'' | 0001 | 192.169.0.1 | 1 | NO |
目的ID是節(jié)點的全網(wǎng)唯一標(biāo)總值,通信媒介用字符標(biāo)識,鏈路標(biāo)識是鏈路的唯一標(biāo)識。對應(yīng)目的地址為下一層(特定通信媒介)的地址:若基于UDP/IP或TCP/IP,則為IP地址;若基于短波或者別的通信媒介,則為在下一層約定的地址。優(yōu)先級表示與同一目的ID通信時優(yōu)先采用哪條鏈路。與同一節(jié)點間的鏈路可能有數(shù)條,它們互相獨立且對等,只是優(yōu)先級不相同。鏈路狀態(tài)包括中止和激活兩種。中止?fàn)顟B(tài)指鏈路保持在偵聽?wèi)B(tài),能接收數(shù)據(jù)幀關(guān)上報鏈路管理組件,而發(fā)送線程中止運行;激活狀態(tài)指兩節(jié)點在此鏈路上進行通信。鏈路由中止?fàn)顟B(tài)到激活狀態(tài)轉(zhuǎn)換的過程稱為激活,包括啟動發(fā)送線程,通過發(fā)送握手幀和接收握手成功幀與目的ID進行握手等過程。
鏈路表包括了所有可能使用的鏈路,在本節(jié)點啟動時,只激活優(yōu)先級最高的鏈路。若優(yōu)先級最高鏈路無法激活,則激活次高的鏈路,以此類推,直到連接上。若激活了非最高優(yōu)先級鏈路,則保持高優(yōu)先級鏈路的“試圖連接狀態(tài)”。若均無法激活,則停止主動激活,等待被動激活。在所有激活的鏈路上,服務(wù)器主動發(fā)出“心跳信號”,偵測鏈路狀態(tài),包括鏈路是否中斷、心跳信號回應(yīng)時間等,并實時反映到鏈路表上。
圖3 鏈路切換(自動切換、非自動切換)流程圖
本節(jié)點與主服務(wù)器(即主父節(jié)點)和備份服務(wù)器(如有)之間的鏈路必須在本節(jié)點運行之前配置,與各客戶端(子節(jié)點)之間的鏈路可在運行中動態(tài)配置,由客戶端主動發(fā)起,申請加入。
2.2 鏈路間切換
在與一個節(jié)點通信的過程中,當(dāng)主用鏈路(優(yōu)先級高)斷鏈或擁塞時,必須自動切換到備用鏈路上進行數(shù)據(jù)通信,稱為自適應(yīng)切換;亦可禁止自適應(yīng)切換而由上層控制,稱為非自動切換。在許多網(wǎng)絡(luò)中,父節(jié)點備用鏈路通信是公用的,無法由某兩個節(jié)點永久占用,只能在需要時申請激活。
在自動切換模式下,切換原則是:盡量使用高優(yōu)先級鏈路進行通信。分五種情況討論:(1)網(wǎng)絡(luò)層交給鏈路層一系列待發(fā)送消息,此消息結(jié)構(gòu)中包含了目的ID。鏈路層通過鏈路列表打到此目的ID對應(yīng)的已經(jīng)激活的鏈路中優(yōu)先級最高者進行通信。(2)當(dāng)正在通信的鏈路中斷時,保持該鏈路的試圖連接狀態(tài)。激活優(yōu)先級次之的鏈路,若無,則再次之(此鏈路應(yīng)在切換鏈路集內(nèi))。如果沒有鏈路可以被激活,則認為通信中斷;若激活優(yōu)先級鏈路,則從未被ACK的消息開始發(fā)送。(3)在通信中,高優(yōu)先級的鏈路被激活時,中斷正在使用的鏈路,轉(zhuǎn)移到高優(yōu)先級的鏈路上,從未被ACK的消息開始發(fā)送。(4)末在通信中的鏈路中斷時(由心跳信號偵測得知),保持該鏈路試圖連接狀態(tài),激活優(yōu)先級次之的鏈路,若無,則再次之(在切換鏈路信內(nèi))。如果沒有鏈路可以被激活,則認為通信中斷。(5)末在通信中,高優(yōu)先級的鏈路被激活時,中斷低優(yōu)先級鏈路。
非自動切換模式下的要點是保證在切換過程中數(shù)據(jù)的安全性,不丟失也不重復(fù)。向上層提供的非自動切換接口提供三個功能:a.激活某條鏈路;b.將當(dāng)前通信切換至某條鏈路;c.中止(disable)某條鏈路。在產(chǎn)生通信動作前,上層可以指定目前激活的鏈路(同時中止其它鏈路,使激活鏈路保持在1);如果不能激活指定鏈路,則報告到上層,由上層繼續(xù)進行調(diào)度。激活鏈路只有一條,有通信動作產(chǎn)生時,鏈路層自然采用條鏈路進行通信。如果需要從鏈路A切換到鏈路B,上層必須先激活鏈路B,此時有A/B兩條鏈路激活。但是通信仍在鏈路A進行;然后上層將當(dāng)前通信切換至鏈路B;鏈路管理層待上條消息發(fā)送成功或失敗后,再切換至鏈路B;最后上層disable鏈路A,使激活鏈路仍然只保持一條。在這種模式下,盡管是非自動切換,但是鏈路管理層仍然對其過程進行干預(yù),保證了數(shù)據(jù)的安全性。鏈路切換流程如圖3。
2.3 節(jié)點動態(tài)加入
新的節(jié)點希望成為某節(jié)點的子節(jié)點時,配置與該節(jié)點(服務(wù)器)之間的鏈路,并向該節(jié)點發(fā)出加入申請幀,等待對應(yīng)回傳,從回傳信息中判斷對方是否允許本節(jié)點加入。與服務(wù)器之間有可能多鏈路,申請幀中必須包含所有這些鏈路的信息。
本節(jié)點收到新的客戶端加入本網(wǎng)絡(luò)的申請幀時,由服務(wù)器操作員審核是否允許該客戶端加入。若允許,從申請幀中獲得與該節(jié)點間所有鏈路的信息寫入鏈路表,并把對方發(fā)送申請幀所使用的鏈路設(shè)為激活狀態(tài),然后發(fā)送“成功”應(yīng)答幀至該節(jié)點,至此,即加入了一個新的子節(jié)點。若未通過審核,則發(fā)送“失敗”應(yīng)答幀至該節(jié)點。
本系統(tǒng)的優(yōu)點在于:(1)基于超鏈思想,對點到點的多種類型鏈路、多條鏈路進行統(tǒng)一管理,使具體通信事務(wù)不必關(guān)心鏈路調(diào)度;對外接口簡單,易于二次開發(fā);(2)基于COM技術(shù)和OPC規(guī)范設(shè)計思想,把協(xié)議、媒介驅(qū)動、鏈路管理作為獨立的組件,使系統(tǒng)的可擴展性大大增強,可以在基本不改變其他要素的情況下,獨立地升級或增加協(xié)議或媒介驅(qū)動協(xié)議,系統(tǒng)的靈活性和適用范圍大大增加。





