李曉俊 李宥謀 閆海卿 李延峰
(西安郵電大學計算機學院 西安 710100)
隨著人工智能和大數(shù)據(jù)的發(fā)展,未來領域儀器和測控技術(shù)的完美結(jié)合將使儀器變得更加網(wǎng)絡化、智能化和數(shù)字化[1]。儀器使用起來也會更加方便,對于剛?cè)腴T的新手來說只要按照說明書,就可以簡單方便地使用儀器設備,更快地融入工作中。
目前虛擬化的測量和儀器有很多優(yōu)點,主要是用戶可以自定義測量,結(jié)構(gòu)簡單,轉(zhuǎn)換靈活[2]。虛擬化已經(jīng)應用在全世界的各個領域中,包括每個國家最看重的軍事領域都能隨時看到虛擬化的儀器,包括軍用的武裝直升機、坦克、軍艦和航空母艦等都配備了這種先進的設備。
基于μC/OS-II 系統(tǒng)和HISLIP 協(xié)議實時性及精簡性能,提出了基于μC/OS-II 系統(tǒng)的HISLIP 遠程測控的設計方案[3~6]。它融合了自動控制技術(shù)、現(xiàn)代電子技術(shù)、計算機技術(shù)等多種技術(shù),結(jié)合了信息化和自動化的特點,把以前不能連網(wǎng)的設備通過代理接入網(wǎng)絡中,使工作人員可以通過代理來對設備進行控制和管理。測控人員通過控制臺界面的一些簡單的操作就可以把監(jiān)控現(xiàn)場的監(jiān)控信息通過計算機網(wǎng)絡傳輸?shù)焦芾斫缑?,從而達到遠程測控的目的。本課題以μC/OS-II 系統(tǒng)下HISLIP 遠程測控通信為研究對象,硬件方面采用LPC1768為微處理器的開發(fā)板,操作系統(tǒng)采用μC/OS-II 系統(tǒng),這兩者結(jié)合為我們提供了一個嵌入式環(huán)境;HISLIP 協(xié)議為測控協(xié)議,提高了數(shù)據(jù)的可靠性和安全性。本課題設計的軟件系統(tǒng)開發(fā)維護容易、功能完備,很好地實現(xiàn)傳統(tǒng)工業(yè)設備改造升級,具有一定的現(xiàn)實意義和應用價值。實現(xiàn)的遠程測控代理模塊,使用數(shù)字化的測控方式能夠?qū)崿F(xiàn)從遠程到終端的具體控制,而且能夠在處理中得到實時可靠準確的數(shù)據(jù)。
實時操作系統(tǒng),即RTOS(Real-Time Operating System),是指當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應,并控制所有實時任務協(xié)調(diào)一致運行的操作系統(tǒng)。在軍事領域?qū)ο到y(tǒng)都有超高要求。尤其是實時性方面更是戰(zhàn)場致勝的關(guān)鍵因素,所以實時性對它們而言是非常重要的。因此,RTOS 主要用于對響應時間具有較高實時性要求的嵌入式系統(tǒng)中。
操作系統(tǒng)運行時,如果占用的CPU內(nèi)存非常低且實時性較好,有可剝奪的內(nèi)核可以及時處理緊急任務,那么它就是一個性能良好的內(nèi)核。我們本次使用的μC/OS-II,滿足以上幾點要求。
μC/OS-II 操作系統(tǒng)與其他系統(tǒng)的主要區(qū)別是μC/OS-II 操作系統(tǒng)它沒有進程和線程,μC/OS-II操作系統(tǒng)采用的是為每一個任務建立優(yōu)先級。它的任務采用可剝奪的形式,高優(yōu)先級的任務可以打斷低優(yōu)先級的任務,高優(yōu)先級的任務有優(yōu)先執(zhí)行的權(quán)利。μC/OS-II操作系統(tǒng)的內(nèi)核包含了任務調(diào)度、信號量、消息隊列、郵箱等,可以實現(xiàn)任務之間同步通信與異步通信。同時還提供了中斷服務、內(nèi)存管理等功能。如果想要準確的預測、能夠及時判斷、有效控制在預定時間內(nèi)完成所設定的目標,因此需要可預測的執(zhí)行時間,所以當想運行速度快時,只要選擇一個速度合適的CPU即可,這個需要的速度在μC/OS-II 系統(tǒng)中是可以精確算出來。因此,μC/OS-II操作系統(tǒng)稱為實時操作系統(tǒng)。
現(xiàn)在,我們看到的多數(shù)嵌入式系統(tǒng)都不是免費的,比如Vx work系統(tǒng)等;而且操作系統(tǒng)對硬件支持要求較高,比如要有快速運行的CPU、CPU 內(nèi)部要有MMU單元和較大的存儲空間等。操作系統(tǒng)本身費用和開發(fā)工具價格也比較昂貴,所以開源的實時操作系統(tǒng)在價格方面有了明顯的優(yōu)勢,目前選擇較多的操作系統(tǒng)有l(wèi)inux和μC/OS-II系統(tǒng)。
μC/OS-II系統(tǒng)具有較好的可擴展性、程序代碼免費開源、資料豐富、技術(shù)成熟、簡單易用、易于維護、優(yōu)化和移植等特點,適合用于教學科研和一些實時系統(tǒng)的應用。μC/OS 面世的這幾十年來,在雷達系統(tǒng)、POS 機、人工智能等領域的都有應用[7],這些實踐證明μC/OS-II實時系統(tǒng)的實用性、無誤性是非常好的,綜合了多種因素,綜合考慮選擇了μC/OS-II實時操作系統(tǒng)。
HISLIP 協(xié)議與傳統(tǒng)儀器作比較的話,HISLIP協(xié)議可以為我們提供相同的測量功能,并且它可以實現(xiàn)遠程控制[8]。HISLIP 在通信時創(chuàng)建兩個TCP連接到相同的服務器端口[端口分配HISLIP IANA 4880]來建立同步通道和異步通道。這兩條通道為HISLIP 消息的數(shù)據(jù)收發(fā)和異常處理的提供通道。
同步通道以同步的方式來執(zhí)行SCPI 和類似GPIB 的類似元消息。同步通道主要用來實現(xiàn)正常狀態(tài)下的命令的收發(fā)與信息傳輸,同時也可以將消息保存在同步緩沖區(qū)。
異步通道完成的主要功能是為有較高優(yōu)先級的鎖機制、中斷、異步中斷、設備清除、未知錯誤等消息提供傳輸通道,并在來自同步通道的消息之前對其執(zhí)行操作。同步和異步通道都是頭部消息為16 字節(jié)的固定格式,消息負載在頭部之后,具體消息的大小有頭部中的負載長度來說明。
所有HISLIP 客戶端和服務器在默認情況下使用IANA 分配的端口號4880。這并不排除配置為在其他端口上使用HISLIP協(xié)議的HISLIP客戶端和服務器。
HISLIP幀格式如圖1所示。
圖1 HISLIP協(xié)議的幀格式
1)由圖1 我們可以看到 HISLIP 協(xié)議的一、二字節(jié)分別是“H”“S”的 ASCII 碼值。“H”“S”為我們提供了消息驗證機制,如果接收到的前兩個字節(jié)消息不是“H”“S”,這該消息應被舍棄。
2)幀格式中的第三個字節(jié)是消息類型(Message Type),是我們收發(fā)消息的識別碼,用來表示消息的類型。不同消息類型負載不同,可以根據(jù)消息的類型來解析出需要的信息。
3)第四個字節(jié)為隨消息類型的變化而變化控制碼(Control Code),該字段表明當前消息的響應參數(shù)。
4)消息參數(shù)(Message Parameter)用4 個字節(jié)來說明在不同類型的消息中起到的不同作用。
5)隨后的八個字節(jié)是數(shù)據(jù)長度(Payload Length),它表明消息的負載長度,個別類型的消息負載為0。
6)最后是可變長度的數(shù)據(jù)段(Data),負載內(nèi)容是根據(jù)具體消息類型的實際數(shù)據(jù)來決定。
首先,將HISLIP 協(xié)議的服務器端與設備進行連接。然后,HISLIP 服務器開啟,監(jiān)聽HISLIP 客戶端的請求。當服務器端收到客戶端的請求后,客戶端與服務器通過TCP協(xié)議三次握手建立連接后,阻塞等待客戶端請求[9~12]。客戶端與服務器建立連接后,將消息封裝進行傳輸[13]。HISLIP 客戶端通過網(wǎng)絡發(fā)送數(shù)據(jù)給HISLIP 服務器。當服務器端接收到相應的數(shù)據(jù)包后,對數(shù)據(jù)包的頭部消息進行分析處理,根據(jù)不同的消息類型得到不同的信息。通過簡析消息負載,將得到的命令對設備進行對應的操作。最后,服務器將由子模塊返回來的HISLIP 包發(fā)送給客戶端,并且刪除剛創(chuàng)建的新任務,這樣就實現(xiàn)了對設備的遠程測量控制。流程圖如圖2 所示。
圖2 HISLIP總體架構(gòu)設計圖
3.2.1 HISLIP協(xié)議的數(shù)據(jù)結(jié)構(gòu)
在程序設計中消息格式的數(shù)據(jù)結(jié)構(gòu):
3.2.2 HISLIP建立連接
1)服務器處于監(jiān)聽狀態(tài),監(jiān)聽客戶端的請求并與之建立同步通道;
2)客戶端發(fā)送初始化消息:<初始化><0><客戶端協(xié)議版本+客戶端廠商標識符><客戶端的ip地址>;
3)服務器端發(fā)送響應消息:<初始化響應><工作模式><服務器協(xié)議版本+設備會話號><0>;
4)客戶端再次請求建立連接,主要是為了建立異常消息的異步通道;
5)客戶端發(fā)送異步通道初始化消息:<異步初始化><0><設備會話號><0>;
6)服務器端發(fā)送的響應消息:<異步初始化響應><0><服務器端廠商標示符><0>。
3.2.3 消息析構(gòu)模塊設計與實現(xiàn)
服務器將接收到的客戶端消息按照協(xié)議結(jié)構(gòu)體以字節(jié)來進行解包。
1)先對前16 字節(jié)中的前兩個字節(jié)進行分析,查看消息頭的prolong 是否是ASCII 碼的“HS”,如果不是的話,消息出錯;
2)判斷HISLIP 消息的頭部是否是16 字節(jié),大于或小于16字節(jié),都是錯誤消息;
3)將HISLIP協(xié)議賦值給局部變量;
4)使用switch……case語句對消息類型字段進行判斷,匹配后調(diào)用對應模塊處理,進行處理;
5)將得到的數(shù)據(jù)返回改客戶端。
3.2.4 消息處理模塊設計與實現(xiàn)
消息處理模塊包含的模塊有:異步通道初和同步通道始化信息響應模塊、異步通道最大數(shù)據(jù)響應模塊、鎖信息響應模塊、鎖信息查詢響應模塊、設備清楚完成告知模塊、遠程本地控制模塊、數(shù)據(jù)結(jié)束消息響應模塊、鎖請求響應模塊等多個模塊,根據(jù)不同的需求實現(xiàn)不同的功能。實現(xiàn)對設備的遠程通信及控制,具體用一下幾個模塊來說明。
static int server_initialize(void)
實現(xiàn)服務器的初始化操作,創(chuàng)建socket,綁定端口和服務器端IP地址,監(jiān)聽客戶端的請求信息。
static int handle_async_message_size()
服務器與客戶端協(xié)商和約定消息式尺寸的函數(shù)。
static int recv_message_handle()
服務器用來處理接收到消息,主要完成數(shù)據(jù)包的解析。判斷是否是HISLIP 消息,頭部消息是否滿足要求,消息類型的分析以及相應模塊函數(shù)的選取。
static int communicate_device()
實現(xiàn)服務器與設備間的直接通信。
static int handle_async_lock()
為設備的進行鎖操作,針對客戶端進行權(quán)限設置,可以有效保證資源的安全性。
void send_data()和 void send_dataend()
send_data()用來傳輸可以一次性把數(shù)據(jù)傳輸完成的消息,而send_dataend()是傳輸需要分為多次傳輸?shù)南ⅰ?/p>
本節(jié)主要介紹了遠程測控代理的硬件和軟件設計方案,硬件平臺主要包括了核心處理器、外圍電路以及各種接口,例如采用了恩智浦公司LPC1768 芯片為處理器為核心,以DP83640 為以太網(wǎng)物理芯片,并且使用了USB接口、串口、IIC接口、CAN 總線等多種接口的開發(fā)板。在此硬件基礎上進行軟件系統(tǒng)的方案設計,以及敘述HISLIP 服務端架構(gòu)設計。
本課題設計的遠程測控系統(tǒng)代理模塊主要組成如下,遠端儀器管理模塊、儀器代理模塊和各類儀器設備等[14~15]。模型如圖3所示。
圖3 測控總體設計方案
為了使不能上網(wǎng)的傳統(tǒng)的儀器設備(不具有以太網(wǎng)的接口的設備)能夠?qū)崿F(xiàn)網(wǎng)絡通信功能,本文選擇了處理器響應速度快、外設接口豐富、超低功耗、尺寸小、性價比高的LPC1768 處理器為核心,DP83640為以太網(wǎng)物理芯片的開發(fā)板。
如果硬件平臺是設計骨架的話,那么軟件平臺的就是設計的血肉。所以,我們需要符合設計的軟件平臺。本次軟件管理平臺采用了SNMP(Simple Network Management Protocol)協(xié)議對遠程測控代理模塊進行配置[17],由 trap 來發(fā)送告警信息;采用自動發(fā)現(xiàn)協(xié)議得到代理模塊是否在線信息;利用HISLIP協(xié)議來采集模塊數(shù)據(jù)、控制相應的硬件模塊。
圖4 代理的軟件設計
本文研究的是遠程測控代理的設計與實現(xiàn),為了對本課題所開發(fā)的軟件進行測試,搭建如下的測試環(huán)境。需要的設備有遠程控制PC 機,路由器,LPC1768 開發(fā)板,儀器包括US-100 傳感器、GY-80傳感器、示波器等,整個測控系統(tǒng)的硬件連接圖如圖5 所示。首先將傳感器、示波器以及信號發(fā)生器與代理相連,之后將代理與局域網(wǎng)路由器相連,同時PC機也與路由器相連組成一套設備測量系統(tǒng)。
硬件平臺完成后,我們開始搭建軟件平臺。首先,開啟HISLIP 服務器,服務器端監(jiān)聽客戶端的請求。如果沒有客戶端連接請求,則一直在循環(huán)監(jiān)聽,直到有客戶端連接。當服務器與客戶端建立連接之后,創(chuàng)建第二個任務處理來處理接收到的數(shù)據(jù)包。根據(jù)協(xié)議的要求將數(shù)據(jù)包進行解包操作,完成相應的命令處理,將處理結(jié)果返回給客戶端,同時刪除此任務。服務器繼續(xù)監(jiān)聽其他客戶端的連接請求。
客戶端運行HISLIP 客戶端程序,在有需求時向服務器端發(fā)送請求,客戶端與命令行中的IP 地址所指的服務器端建立連接。HISLIP 協(xié)議的通信模式有兩種,分別是重疊模式和同步模式。本文就針對這兩個模式來進行測試。示波器的SCPI 命令*IDN?命令是取波命令,為與示波器的命令(SCPI命令)進行統(tǒng)一,自定義一個SCPI 命令為命令行中的*IDN1?。所以本文設置*IDN1?為取傳感器US-100測室內(nèi)溫度的命令。
同步模式就是指客戶端需要接收到每一個發(fā)送上來的請求結(jié)果之后才能發(fā)送下一個請求,不能連續(xù)發(fā)送,就是發(fā)送一個命令處理一個結(jié)果及時的返回。從圖5中可以看出室內(nèi)的溫度為19°。
同步模式時,傳感器的測量結(jié)果如圖5所示。
圖5 同步模式
重疊模式可以一次連續(xù)發(fā)送多個SCPI 命令,等待服務器端全部處理完之后再把所有的結(jié)果全部返回,這剛好與同步模式相反,圖6 是測量后全部返回的結(jié)果。
重疊模式測量結(jié)果如下。
圖6(a)中,客戶端在重疊模式下,同時發(fā)送3個請求命令,6(b)中顯示服務器端在同時接收多個命令后返回處理結(jié)果,分別是23°,23°與22°。
圖6 重疊模式
本文主要研究的是基于μC/OS-II 系統(tǒng)的HISLIP代理的設計與實現(xiàn)。因此首先對代理環(huán)境的搭建進行了說明;其次在整個系統(tǒng)環(huán)境搭建完成后,對遠程測控代理中實現(xiàn)的各個模塊功能進行測試,測試完成后通過截取客戶端和服務器端的信息交互圖進行具體的分析。整個測試結(jié)果表明代理能夠為客戶端提供儀器數(shù)據(jù)的采集以及對儀器設備的實時監(jiān)控管理。