龐新法
摘 要: 為了對HiSLIP協議的網絡化儀器編程建立理論基礎并方便編程,通過分析該協議的結構和功能、消息格式、交互過程以及標志,提出了語法規則,參數含義,編程過程,初始化連接,請求鎖和釋放鎖,最大消息尺寸,傳輸數據請求,服務及狀態請求,消息可用標志等,在局域網環境下,實現了兩臺示波器之間的通信,從而解決了測量系統中網絡化儀器間難以協同工作,進而限制測量系統測量效率的問題。
關鍵詞: 網絡化儀器; HiSLIP協議; 通信; TCP連接
中圖分類號: TN915.04?34; TP312 文獻標識碼: A 文章編號: 1004?373X(2015)17?0041?04
Analysis on principle and mechanism of HiSLIP protocol
PANG Xinfa
(Department of Science and Technology Teaching?Research, Shaanxi Province Party School of the CPC, Xian 710061, China)
Abstract: The aim in this paper is to establish theoretical foundation for network instrument program of HiSLIP protocol and program conveniently. By analyzing the protocol′s structure, function, message format, interaction process and logo, the interaction process of HiSLIP protocol is proposed, which consists of grammar rules, parameters meaning, programming process, initializing connection, request and release locks, maximum message size, data transmission request, service and status requests, and message available marks. The communication between two oscilloscopes was realized in LAN environment. The problem that it is hard to work collaboratively among network instruments in measurement system was solved, and the efficiency of measurement system was improved.
Keywords: network instrument; HiSLIP protocol; communication; TCP connection
LXI(LAN eXtensions for Instrumentation)標準是測量儀器在網絡化過程中與計算機網絡結合的產物,促進了測量儀器在網絡化過程中更好的發展。為了滿足儀器在網絡化過程中對高速傳輸數據和高效控制的需求,IVI聯盟于2011年推出HiSLIP(High?Speed LAN Insturment Protocol)高速以太網儀器協議,專門用于儀器通信和儀器遠程控制的協議,并將這個協議作為LXI標準的擴展功能進行發布。該協議能夠很好地支持TCP/IP協議,可以為IPv4和IPv6提供服務,易于網絡組網和擴展。
1 HiSLIP協議的結構
1.1 協議簡述
HiSLIP[1]基于TCP的儀器控制協議,提供了與傳統儀器相同的測試和測量功能。協議的主要功能有設備清除、儀器的本地/遠程儀器狀態控制、儀器的鎖機制、儀器端到客戶端的服務請求、消息結束機制、錯誤檢測中斷時的消息交換機制。該協議本身結構清晰,形式簡單,易于實現,并支持虛擬儀器軟件結構中的鎖機制,便于儀器資源的控制與共享。
1.2 協議特點
HiSLIP協議的特點如下:
(1) 靈活的端口號。服務器端和客戶端既可使用IANA分配的建議端口號4880,也可以使用雙方約定的端口號。
(2) 創建兩個TCP連接。兩個連接一個作為同步通道,另一個作為異步通道,均采用既定格式傳輸消息。同步通道主要用于雙方通信時傳輸文本形式的控制命令(如SCPI命令等);異步通道主要用于傳輸突發事務請求(如中斷和錯誤等)。二者均由客戶端發起建立連接。
(3) 支持兩種不同的模式。為了實現對已有儀器的兼容性,協議需要支持重疊模式和同步模式。重疊模式[2?3],是指在客戶端和服務器端之間,輸入或者輸出的數據消息或者觸發消息可以任意緩存,而不需要等待前一個消息處理完畢。比如,相對獨立的一串請求消息從客戶端發送給服務器端,不需要每一個消息都處理完畢,服務器的響應消息按照接收消息順序發送給客戶端。由于服務器端和客戶端的處理速度會有不同,因此在重疊模式下還要控制消息發送的速率。同步模式[4?5]與重疊模式在機制上相反,即每一次發送請求消息時,都需要等待上一個消息處理完畢,如果客戶端處理出錯時,協議自身產生中斷操作清除之前發送的請求處理。
1.3 消息幀格式
HiSLIP幀格式[6]如圖1所示,幀首部為16 B,分別是消息標志“HS”、類型碼、控制碼、消息參數、數據長度。幀尾部為數據字段,每幀消息的長度等于16加上數據長度。
(1) 每幀消息第一、第二字節內容固定不變。第一字節是“H” 的ASCII碼值,第二字節是“S”的ASCII碼值,用于判斷收到的消息是否正確。如果不是“HS”,則說明在傳輸過程中發生了錯誤,應丟棄此消息。
(2) 消息類型(Message Type),大小為1 B,定義接收到的消息類型,用來對每一個HiSLIP協議的消息進行惟一識別。每一個消息類型,都在協議中確定了相應的含義,通過對消息類型的識別就可以對消息中的字段進行特定含義的解釋。
(3) 控制碼,大小為1 B,一般用于表示當前消息的響應參數,含義會根據消息類型的不同而不同。
(4) 消息參數,大小為4 B,在HiSLIP消息中有多種用途。
(5) 數據長度(Payload Length),占用8 B,標識數據字段中的字節數。
(6) 數據(Data),字節數不定,存放該消息所傳遞的數據信息。
1.4 消息分類
如表1所示,消息類型共26種。通信雙方通過發送相關消息進行交互,用以協調雙方的行為,達到數據傳輸等目的,完成協議功能。
其中,發送方C指協議客戶端(Client),S指協議服務器端(Server),B指通信客戶端和服務器端雙方(Both);通道中的S指同步通道消息(Synchronous channel message),A指異步通道消息(Asynchronous channel message),B指服務器端和客戶端都可發送;消息類型號,是指實際傳輸時對消息類型的邏輯編號。
2 HiSLIP協議交互過程
協議雙方通過約定的格式和順序發送特定消息類型的HiSLIP協議消息,協調通信雙方行為,配合完成協議的功能,為應用軟件和資源設備提供服務。在說明交互過程時,以“<消息類型><控制碼><消息參數><數據長度><數據>”的格式表示HiSLIP消息,通過每一個功能交互,具體說明協議的語法、語義和同步特性。
2.1 初始化HiSLIP連接
初始化連接消息交互過程如圖2所示。
(1) 在同步通道客戶端向服務器端發起建立TCP連接。
(2) 客戶端發送給服務器的初始化消息格式為: [<初始化>]<0><客戶端協議版本及客戶端廠商標識符> <客戶端子網地址>。
(3) 服務器端發送給客戶端的響應消息格式為:[<初始化響應>]<工作模式><服務器協議版本及設備會話號><0>。
(4) 在異步通道客戶端發起建立第二次TCP連接。
(5) 客戶端發送給服務器的異步通道初始化消息格式為:<異步初始化><0><設備會話號><0>。
(6) 服務器端發送給客戶端的響應消息格式為:[<異步初始化響應>]<0><服務器端廠商標識符><0>。
2.2 請求鎖和釋放鎖
加鎖請求過程如圖3所示。
(1) 客戶端發送給服務器的加鎖消息格式為:<異步鎖請求><1=請求鎖><超時時間><鎖描述串長度><鎖描述字符串>。超時時間,是客戶端允許等待服務器端發送響應的等待時間,如果超時時間為0,說明是請求立即加鎖操作。
(2) 服務器端發送給客戶端的響應消息格式為:[<異步鎖請求響應>]<0=加鎖失敗,1=加鎖成功,3=錯誤><0><0>。
釋放鎖請求過程如圖3所示。
(1) 客戶端發送給服務器的釋放鎖消息格式為:[<異步鎖請求>]<0=釋放鎖><消息編號><0>。消息編號是服務器端保存的已發送消息的編號。
(2) 服務器端發送給客戶端的響應消息格式為:[<異步鎖請求響應>]<1=釋放獨占鎖成功,2=釋放共享鎖成功,3=錯誤><0><0>。
2.3 最大消息尺寸
為了防止消息尺寸過大造成接收方緩存溢出導致數據丟失,通信雙方必須協商在同步通道上傳輸的最大消息尺寸,過程如圖4所示。
(1) 客戶端告知服務器端自己能夠接收的最大消息尺寸。客戶端發送給服務器的最大消息尺寸請求格式為:<最大消息尺寸請求><0><0><8><8>。
(2) 服務器端告知客戶端服務器能夠接收的最大消息尺寸。服務器端發送給客戶端的響應消息格式為:<最大消息尺寸請求><0><0><8><8>。
說明:<數據>字段的8 B給出消息長度(無符號整數)。
2.4 傳輸數據請求
數據消息發送過程如圖5所示。
客戶端向服務器端發送消息:
(1) 客戶端發送給服務器的數據消息格式為:<數據消息><交付標志><消息包編號><數據長度,單位是字節><數據內容>。
(2) 客戶端發送給服務器的數據結束消息格式為:<數據結束消息><交付標志><消息編號><數據長度,單位是字節><數據內容>。
服務器端向客戶端發送數據消息:
(1) 服務器端發送給客戶端的數據消息格式為:[<數據消息><0><消息編號><數據長度,][單位是字節>][<數據內容>。]
(2) 服務器端發送給客戶端的數據結束消息格式為:<數據結束消息><0><消息編號><數據長度,單位是字節><數據內容>。
客戶端向服務器端發送數據時,如果要發送的數據量不超過最大消息尺寸,數據會通過“數據結束消息”一次性發給服務器端;否則,先通過“數據消息”發送若干,再通過“數據結束消息”把剩余部分(不大于最大消息尺寸)發送給服務器端。服務器端向客戶端發送數據的機制與此類似,其方向相反。
交付標志,是服務器端進行維護并核實的一個標志,旨在保證服務器端的正常運行。
2.5 鎖信息交互
鎖信息交互的目的:在加鎖前,客戶端向服務器端發起鎖信息請求,獲取當前在儀器資源上連接的客戶端數目以及儀器資源擁有的鎖類型,消息序列如圖6所示。
說明:授權的獨占鎖(exclusive?locks?granted),1表示獨占鎖被授權,0表示其他。
授權的獨占鎖數(Locks?granted),表示當執行AsyncLockInfo(請求鎖信息)時,擁有鎖的客戶端數。
2.6 服務請求
服務請求消息交互的目的:服務器將自身的一些狀態值,通過服務請求發送給客戶端。本交互過程由服務器端主動向客戶端發起服務請求,交互消息序列如圖7所示。
說明:控制碼部分,是一個8 b的狀態值(status),用來表示服務器端運行的狀態。
2.7 狀態請求
狀態請求消息交互的目的:客戶端獲取服務器端的狀態值,交互過程消息序列如圖8所示。
說明:控制碼部分是一個8 b的狀態值,用來表示服務器端運行的狀態。
3 服務器端使用到的標志
3.1 交付標志和交付期待標志
為了保證雙方協調一致工作,在正常交互時,服務器端需要維護(核實和設置)兩個標志:交付標志(RTM?delivered)和交付期待標志(RTM?expected)。方法如下:
(1) 發送數據結束消息時,設置交付期待標志為“真”(True)。在接收到狀態查詢消息(AsyncStatusQuery)并且交付標志為“真”時,清空交付期待標志位。
(2) 接收到數據消息、 數據結束消息或觸發消息時,如果交付期待標志和交付標志同為“真”(True)或同為“假”(False)時,則清空交付期待標志位(RTM?expected),否則產生錯誤報告。
3.2 消息可用標志
MAV(Message Available Bit)消息可用標志,表明來自服務器的消息是否可用。該比特位的設置及狀態轉換如圖9所示。
MAV標志設置和轉換說明:
在設備啟動(Power?on)、設備清除(Device?clear)或者錯誤恢復(Error?recovery)時,設置MAV為“假”False。接收到消息類型為Data或者DataEND的HiSLIP消息時,把MAV從“假”(False)設置為“真”(True)。
在接收到消息類型為AsyncStatusQuery,Data,DataEND或者Trigger的HiSLIP消息,并且其中包含RTM?delivered時,設置MAV從“真”(True)到“假”(False)。
4 結 語
在網絡化測量系統中借助于HiSLIP協議的高效性、實時性和可靠性,減少網絡時延突發異常等對測控系統的影響,實現網絡化儀器間通信,使儀器間協同工作,以提高網絡化儀器測量系統的測量效率。另外,HiSLIP協議既支持IPv4也支持IPv6,具有良好的向后兼容性,便于網絡化測量系統的擴展。
參考文獻
[1] IVI Foundation. IVI?6.1: High?speed LAN instrument protocol (HiSLIP) [EB/OL]. [2011?05?25]. http://www.ivifoundation.org.
[2] 余成波,王士彬,李洪兵.網絡化儀器技術與實現[M].北京:清華大學出版社,2010.
[3] 林玉池.測量控制與儀器儀表前沿技術及發展趨勢[M].天津:天津大學出版社,2005.
[4] 董永清.Linux C編程實戰[M].北京:人民郵電出版社,2008.
[5] 宋寶華.Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.
[6] 李宥謀,劉釗遠,馬博.嵌入式系統開發[M].北京:清華大學出版社,2011.
[7] 陳莉君,康華.Linux操作系統原理與應用[M].北京:清華大學出版社,2006.