田德偉,陶耀東,焦廣勝
(1.中國科學院 沈陽計算技術研究所,沈陽 110004;2.中國科學院 研究生院,北京 100039 )
隨著計算機技術、通信技術、控制技術的迅速發展,出現了IPC 工控機以及大量的智能儀表,其應用使得工業生產過程的自動化水平得到了很大的提高。過程分析技術(Process Analytical Technology,PAT)的出現,促使裝備制造業引入該技術來提高產品的精度以及生產過程自動化的水平。遠程監控是指利用計算機通過網絡系統實現對遠程工業生產過程控制系統的監視和控制。工業生產過程的監控信息接入Internet,在一定條件下就可以通過Internet 監控生產系統和現場設備的運行狀態和各種參數,控制者就不必親臨現場,這能夠節省大量的人力物力[1]。
本文采用硬件抽象層、共享內存以及I/O 多路復用技術實現對數控系統加工過程的遠程監控。數控系統加工過程中軸位置、軸速等信息通過共享內存技術與服務器進行交互,以C/S 模式構成遠程監控系統,client 可以通過運行客戶端應用程序監控數控系統加工過程的狀態信息。
數控系統作為一個復雜的嵌入式系統,具有專用性強、外圍設備多樣的特性,這決定了其應用的硬件環境差異性較大。系統軟件模塊與硬件之間的接口是系統設計過程中的必需環節,也是影響數控系統應用前景的關鍵問題之一。HAL 的引入可有效的解決該問題,HAL 是將硬件平臺與應用軟件隔離開來的的軟件層次,通過硬件抽象層技術實現硬件相關和硬件無關兩部分程序代碼的隔離,為應用程序提供一個沒有硬件特性的接口。硬件抽象層的引入不僅是系統體系結構設計方法的改進,更直接關系到整個系統的開發模式以及嵌入式操作系統的可移植性。硬件抽象層的引入大大推動了嵌入式系統開發的規范化進程[2]。
EMC2 中設計硬件抽象層的目的是使EMC2 可以快速的針對不同的硬件進行配置而不需要改變上層程序,實現在I/O 接口和其他底層模塊之間傳輸實時數據。HAL 的設計采用了傳統的電路設計的模式,I/O設備以軟元件的形式存在于HAL 中,HAL 軟元件和傳統元件類似,包括引腳(pin)、參數(parameter)等信息。可以通過HAL 中軟元件的加載和相連形成復雜多樣的控制系統,如圖1 所示,利用HAL 組件構建并口輸出PWM 信號驅動X-Y 軸的直流伺服電機的連接圖[2]。
在Linux 服務器編程中,系統資源的利用率是一個令人關注的問題。本系統通過采用單進程I/O 多路復用的方式解決了傳統的創建子進程方式帶來的系統資源消耗,并極大地提高了CPU 的利用率,同時也可以方便的支持多個客戶端,理論上,在一個線程中可支持63 個客戶端;可以采用多線程支持更大數量的clients。
I/O 多路復用,即一個進程需要在多個I/O 端口上等待讀取或寫入數據,可選擇將自己掛起,如果一個或多個I/O 滿足數據操作時,進程將被通知,繼續運行,并作相應的判斷處理和I/O 操作。select()方法可以對多路I/O 進行阻塞式查詢。它提供同時對多個I/O 描述符進行阻塞式查詢方法,可以方便地實現I/O多路復用[3]。

圖1 井口輸出PWM 信號驅動X-Y 軸的直流伺服電機HAL 連接圖
遠程監控工具利用模塊化的設計思想,從縱向來看總體框架自底向上包含linux 操作系統、RTAI 模塊、硬件抽象層模塊、數據采集程序和客戶端程序。RTAI模塊和硬件抽象層模塊運行在內核空間,數據采集程序和客戶端程序運行在用戶空間,它們之間的數據通信利用rtai 提供的共享內存和I/O 多路復用技術來實現的,總體結構如2 圖所示。

圖2 遠程監控工具總體結結構圖
數據采集方法的設計以RTAI 的共享內存為數據傳輸介質。共享內存在內核空間和用戶空間之間進行數據傳輸,具有較高的靈活性,所以在數控系統中應用廣泛,因此提高共享內存的管理效率對各種使用共享內存的應用具有很重要的意義。采用兩級數據管理結構,能夠有效的分配和釋放共享內存,使用C 語言實現的該共享內存管理層具有很好的可移植性,能夠減少共享內存分配和釋放時間,同時互斥量的使用也能保證共享內存的并發訪問。數控系統加工過程遠程監控工具的設計是基于一個共享內存的管理工具來實現的。使用共享內存池和共享內存塊這兩種結構來完成對共享內存管理工具的設計[4],共享內存管理工具的結構如圖3 所示。

圖3 共享內存管理工具結構圖
主要是描述利用I/O 多路復用技術實現多個客戶端的登錄服務器的流程,登陸處理流程圖如圖4 所示。

圖4 客戶端登陸流程圖
客戶端登陸服務器端,首先需要打開遠程調試模式,并利用I/O 多路復用技術創建TCP 并發服務器;客戶端登陸成功后,可以通過終端輸入halcmd 命令,實現遠程查看數控系統運行狀態。當輸入exit 或quit命令時,客戶端終止這一次的連接。
利用I/O 多路復用技術設計的服務器端架構大致如下:

與多進程并發方式相比,采用I/O 復用技術的最大優勢是服務器只需要一個進程來處理所有的客戶機請求,所有程序沒有創建和管理進程的開銷,減少了系統運行中的系統開銷,提高了服務質量;同時服務器運行在單一進程上下文中,因此每個邏輯流都能訪問該進程的全部地址空間使得在流之間共享變量很容易[1]。
在內核空間和用戶空間之間的通信主要是嵌入硬件抽象層來實現的,硬件抽象層的設計又采用了共享內存技術。共享內存結構體hal_data_t 的主要組成為:

該結構作為全局變量,halcmd 的命令是通過獲取互斥信號量來對該內存區域進行訪問的。以loadrt siggen 為例,流程圖5 如所示。
用戶輸入loadrt siggen 命令時,該命令的功能是實現加載軟元件siggen,通過halcmd_commands 查找loadrt 對應的操作函數do_loadrt_cmd(),如果siggen模塊尚未插入,則利用insmod siggen. ko 將該模塊插入。并將siggen 加入到hal_data - >pin_list_ptr 的鏈表中。命令執行完畢,返回halcmd 命令行。

圖5 處理loadrt siggen 命令流程圖
遠程監控工具是halcmd 應用程序的一部分,它的主要任務是完成對輸入命令的讀入,解析命令,執行命令,返回命令執行結果。

其中halcmd_parse_cmd(tokens)主要是根據tokens,按照命令索引跳轉到相應的命令函數中執行。可以實現加載模塊,模塊互聯,模塊信息讀取等命令功能;print_info()根據tokens 執行的結果將命令反饋信息發送給相應的客戶端程序,從而實現對數控系統的加工狀態的遠程監測過程。
在pc1 上運行數控系統仿真軟件EMC2,打開終端,使用halcmd -kfr 啟用加工過程遠程監測模式。分別在pc2 和pc3 上運行. /monitor 192.168.2.14,連接到pc1 服務器端。查看pc2 和pc3 的輸出情況,同時也可以執行halcmd 命令。實驗結果如圖6 所示。

圖6
上圖是在pc2 和pc3 上顯示的對引腳變化的圖形化顯示的結果,顯示了三種不同的引腳曲線:正弦,余弦和方形曲線。用戶可以方便使用該工具遠程查看各個引腳的變化情況。
本文使用硬件抽象層技術和I/O 多路復用技術,提出了一個數控系統加工過程遠程監測工具的設計方案,并利用EMC2 開源數控軟件對數控數控加工過程進行仿真,運用該遠程監測工具進行對其進行遠程監測,能夠獲得數控加工過程中的軸的速度、軸的當前位置、軸的位置反饋等信息,表明了該設計方案在對加工過程遠程監控方面是可行的。
[1]于海晨,仲崇權. 基于Ineternet 的控制系統遠程監控方案與實例[J]. 計算機自動測量與控制,2001,9(5):14-16.
[2]許軍,李華. EMC2 中的HAL 實現機理和應用研究[J].自動化與控制,2009(5):62 -64.
[3]胡書,衛陸培倫. 一種基于Linux 的嵌入式視頻監控系統實現[J]. 安防科技,2009(1):7 -9.
[4]王煜,林滸,陶耀東,等. 一種高效RTAI 共享內存管理層的研究與實現[J]. 組合機床與自動化加工技術,2013(1):27 -30.
[5]侯鳳媛. 數控技術的研究現狀與發展方向[J]. 機電技術,2012(6):167 -169.
[6]吳文江,王興舉,秦承剛,等.基于RTAI 的數控系統跟蹤調試模型的設計與實現[J]. 小型微型計算機,2011,32(5):850 -853.
[7]陶耀東,林滸. 高性能開放式數控系統框架設計[J].小型微型計算機系統,2009,30(9):1911 -1916.
[8]Torrisi NM,de Oliveira J F G. Remote monitoring for high -speed CNC processes over public IP networks using CyberOPC[J]. The International Journal of Advanced Manufacturing Technology,2012,60:191-200.