沈 沉,宋彥鋒,楊 芳
(許繼電氣技術中心,河南 許昌 461000)
在工業領域,聯網設備不多、來自不同供應商且聯網接口存在多樣性的微型網絡較為常用[1-2]。例如,設備A和設備B通過專用通道1直接連接,設備B和設備C通過專用通道2直接連接,而通道1、2可能是以太網、 RS-485網絡、CAN總線等相同或不同的物理層[3]。對于這樣的情況,三個設備的應用層如果要進行報文交互,就必須作一些特殊、繁瑣的處理。
本文設計的微型復合網絡實時數據報交換系統,可在包含有限網絡節點的網絡上,實現各網絡節點上應用程序之間透明的、點對點的實時數據通信,而無需關心網絡節點間不同的物理層、鏈路層互聯方式[4]。
該數據報交換系統通信層次分為應用層、網絡層、鏈路層、物理層,如圖1所示。

圖1 系統通信層次示意圖
物理層是網絡節點之間的物理連接,可以是串口、以太網、CAN總線等各種介質。鏈路層是工作于不同物理層介質的鏈路控制。本文涉及節點互聯的物理層和鏈路層被封裝在網絡層的鏈路層接口中,網絡層只看到鏈路層接口,卻看不到物理層和鏈路層的具體細節。
網絡層是實現該數據報交換系統的核心。該層定義了數據報交換模塊、數據報管理模塊、鏈路層接口模塊等,并且實現了基于服務質量(quality of service,QoS)[5-8]的數據傳輸層,為不同優先級的數據提供了不同的實時處理性能。
應用層主要完成特定的通信報文處理。網絡層向應用層提供了應用程序編程接口(application programming interface,API),使應用層可以直接基于網絡層工作,降低了網絡通信層次的復雜度,提高了通信的效率和可靠性。
網絡層定義并實現了以下協議功能。
①數據報交換協議。該協議是通用協議,可以映射到以太網、RS-485、CAN等數據協議,在協議上支持應用層數據的透明傳輸。數據報交換協議及其在以太網報文上的映射,如圖2所示。

圖2 數據報交換協議及其映射示意圖
從應用層數據報進入網絡層時,會添加由一個報文交換協議類型符標志(0x9000)和一個報文頭形成的一個新報文進入鏈路層。報文頭包含數據報目的節點ID、源節點ID、數據報的生存周期(time to live,TTL)、報文端口號、應用數據長度以及數據優先級等信息。當報文從網絡層進入應用層時,該報頭會被剝離,傳遞至應用層的僅為應用數據。
②數據報交換模塊。該模塊主要負責完成數據報的實時轉發。模塊內部定義了一個目標節點ID表,表中的每一個條目依次對應一個網絡節點ID,且每個條目都存儲了可以訪問到對應網絡節點的本地鏈路層接口的接口編號。當向其他節點轉發數據報時,直接以ID為下標遍歷訪問表,取得對應的鏈路層接口,然后通過對應接口將報文轉發出去,以達到快速交換報文的目的。該處理方式采用了以太網交換機根據MAC地址表進行數據報交換的原理[9]。表的條目數等于通信網絡內除了本地節點以外的所有節點數。系統內如果要增加通信節點,則必須更新所有節點的ID表配置數據。
③數據報管理模塊。該數據報交換系統定義了八個數據報緩沖區。八個實時任務分別對應其中一個緩沖區,并對其進行管理。不同優先級的數據報進入不同的緩沖區,以實現對不同優先級數據的分流和隔離。每個任務的運行優先級不同,可以被高優先級任務搶占,或者是搶占低優先級的任務。當數據報緩沖區內沒有數據報時,實時任務處于掛起狀態;當數據報進入對應緩沖區后,會喚醒對應的實時任務進行數據處理。當低優先級的數據報正在被處理時,高優先級的數據報進入緩沖區,則低優先級數據報的處理會被中斷,優先處理高優先級的數據報;當高優先級的處理完成以后,低優先級的繼續處理。根據以上的功能特點,該數據報管理模塊實現了數據報的QoS功能[10-12]。如果數據報是發給本地節點的,調用本地處理接口進行處理;處理完成以后,該數據報的生命期結束。如果數據報是發給其他節點的,處理任務會對報文的TTL減1。如果TTL變成0,則丟棄報文;否則檢索目標節點ID表,通過數據報交換模塊,將數據報從表項中對應的鏈路層接口發出(數據報交換模塊)。該模塊通過TTL的機制,抑制了網絡風暴的形成。
④數據報流入接口。節點的鏈路層接口可以通過調用數據報流入接口,將收到的數據報傳遞到數據報管理模塊對應優先級的緩沖區中,激活對應的管理任務后返回。管理任務被激活后,完成對數據報的處理。數據報的流入和處理是異步進行的。
⑤鏈路層接口。抽象的接口(包括初始化、數據報發送函數入口),可適應基于不同鏈路層、物理層的網絡接口的互聯,例如以太網、RS-422/485串口網絡、CAN總線等。接口對網絡層隱藏了具體互聯網絡物理層、鏈路層的實施細節,以實現不同網絡節點的網絡層間的透明通信。初始化接口完成接口的初始化工作;數據報發送接口用于將數據報發送到接口連接的網絡上。在網絡層中定義了一個鏈路層接口表,每個表項對應節點和外部網絡連接的一個接口。節點初始化時,向節點的鏈路層接口表注冊所有和外部互聯的接口。所有注冊的接口按注冊順序編號。
應用層完成特定的通信報文處理。網絡層提供了應用層API,使應用層可以直接基于網絡層工作,降低了網絡通信層次的復雜度,提高了通信的效率和可靠性。網絡層主要提供了以下兩種應用層API。
①基于回調模式的應用層API。在每個網絡節點中,定義一個數據報處理函數表。每個表項包含一個端口號、一個數據報處理函數以及一個函數參數。通過向應用層提供回調函數注冊接口,使應用層可以向數據報處理函數表注冊處理函數,以實現數據報的直接、快速處理。當收到發送給本地節點的數據報時,數據報管理模塊會在函數表中查找對應端口數據報的處理函數。如果找到,即直接調用處理函數來完成對數據進行處理;否則丟棄。
②基于句柄模式的應用層API。其包括創建句柄、發送數據和接收數據三個接口。可以根據數據報的端口號、數據報緩沖區大小來創建本地的處理句柄。發送接口可以通過創建的句柄向目標節點發送指定優先級的數據報,發出的數據報的端口和句柄的端口號一致。接收接口可以收到別的網絡節點發到本地的句柄對應端口的數據報。句柄模式的應用層API是基于回調模式的應用層API實現的。創建句柄時,在數據報處理函數表中注冊了指定端口的處理函數。當注冊的處理函數被調用時,會將收到的數據報加入句柄內部的緩沖區中;在通知應用層數據準備好后,返回函數。句柄模式的應用層的發送和接收接口具備阻塞功能,調用時可以設定阻塞時間。如果阻塞期間接口響應了請求,則返回結果;否則,返回超時。阻塞時間可以設置為0,此時數據收發接口工作在非阻塞模式。
通過以上兩種應用層API進行通信,不同網絡節點的應用層能夠建立透明的點對點會話。會話的兩端使用相同的數據報端口,不分別處理源端口和目的端口,簡化了端口處理,提高處理性能。會話隱藏了不同的物理層、鏈路層、網絡層影響實現細節,使應用程序不再受復雜的網絡關系的影響。
以一個3節點最小網絡為例,說明本交換系統的特點和使用方法,如圖3所示。節點之間可以通過以太網、串口網絡或者CAN總線連接。不同的網絡需要在鏈路層接口作抽象處理,因此交換系統的上層接口無需關心具體的物理連接方式。

圖3 最小系統示例圖
(1)整個網絡需要靜態分配網絡節點ID。交換網絡具備三個節點,其節點連接如圖4所示。對每個節點靜態地分配一個節點ID。每個節點ID在網絡中必須是唯一的。

圖4 節點連接示意圖
(2)網絡中的各個節點通過硬件接口依次連接。接口編號是節點自身的通信接口的編號。通信接口物理層可以是以太網口、CAN節點或者串口。兩個直連的通信接口物理層必須相同,沒有直連的通信接口物理層可以不同。
①節點1的接口1和節點2的接口0直連,這兩個通信接口必須一致。
②節點2的接口3和節點3的接口1直連,這兩個通信接口必須一致。
③其他沒有直連的通信接口可以不同。
(3)每個節點維護一個目標節點ID表。該表用來維護目標節點和本節點鏈路接口編號的映射。比如圖4中:節點2的接口3直連到節點3的接口1,節點1的數據可以通過節點2傳遞到節點3的接口1。因此,節點3的目標節點ID表中目的節點1和目的節點2映射的鏈路接口編號都為1。其他節點的目標節點ID表同理。
(4)每個節點還需要維護一個應用回調注冊表,以接收或者丟棄數據報的選擇。每個節點的應用回調注冊表可以有多個條目。
(5)節點應用層利用本交換系統發送數據時,需要明確以下關鍵參數。
①目標節點ID:交換系統需要根據目標節點ID找到鏈路接口編號,然后通過相應鏈路接口發送數據。
②數據報文端口號:接收端需要根據該端口號選擇應用回調函數。在應用的角度,該端口號具備應用數據類型的含義。
③數據報優先級:接收端根據數據報的優先級作相應的處理,實現QoS功能,優先處理優先級高的數據報,保證數據實時性。
本文提出了數據包優先級的概念,并基于該概念實現了微型復合網絡實時交換系統的QoS功能,保證了本網絡交換系統在多種類型數據報共網時,能在規定的時間內處理各類數據報。交換系統提供的接口對網絡層隱藏了具體互聯網絡的物理層、鏈路層的實施細節,以實現不同網絡節點的網絡層間的透明通信。該系統適用于有限節點的網絡互連、對報文實時性要求高的微型網絡系統。系統中物理層的各個設備可以通過各種以太網、交換機、現場總線等連接。
參考文獻:
[1] 張學輝.基于以太網和現場總線的工業控制網絡實訓系統設計[J].自動化儀表,2017,38(3):41-43.
[2] 楊曉華,侯巍,王樹新,等.基于CAN總線的分布式控制網絡設計[J].低壓電器,2006,38(1):40-42.
[3] 沈航,徐紅泉,蔡慧,等.工業以太網和現場總線[J].工業儀表與自動化裝置,2015,38(1):6-9.
[4] 曹健,劉瓊,王遠.基于數據流轉發的實時數據交換系統設計[J].計算機應用,2016,36(3):596-600.
[5] 王瑾瑤.以太網協議模型的演進分析[J].機械管理開發,2013,133(3):106-107.
[6] 劉正藍,朱淼良,姜明,等.QoS協議及體系結構研究綜述[J].浙江大學學報(工業版),2003,37(3):288-294.
[7] 鐘川,黃陶明.分層QoS關鍵技術分析[J].現代計算機,2009(1):111.
[8] 林闖,王元卓,任豐原.新一代網絡QoS研究[J].計算機學報,2008,31(9):1525-1535.
[9] 李研,周明輝,李瑞超,等.一種考慮QoS數據可信性的服務選擇方法[J].軟件學報,2008,19(10):2620-2627.
[10]王延年,鄭曉慶.基于數據優先級的Ad hoc網絡MAC協議研究[J].鄭州大學學報(工業版),2011,32(2):93-96.
[11]王春霞.基于數據和能量優先等級改進WSN中S-MAC協議的研究[J].河南科技,2015,33(4):569-573.
[12]楊璽,劉少強,樊曉平,等.實時監測的混合式無線傳感器網絡多路徑路由研究[J].計算機應用研究,2008,25(4):1237-1239.