0 引言
隨著計算機技術、通信技術、控制技術的迅速發展,出現了 IPC 工控機以及大量的智能儀表,其應用使得工業生產過程的自動化水平得到了很大的提高。過程分析技術( Process Analytical Technology,PAT) 的出現,促使裝備制造業引入該技術來提高產品的精度以及生產過程自動化的水平。遠程監控是指利用計算機通過網絡系統實現對遠程工業生產過程控制系統的監視和控制。工業生產過程的監控信息接入 Internet,在一定條件下就可以通過 Internet 監控生產系統和現場設備的運行狀態和各種參數,控制者就不必親臨現場,這能夠節省大量的人力物力。
本文采用硬件抽象層、共享內存以及 I/O 多路復用技術實現對數控系統加工過程的遠程監控。數控系統加工過程中軸位置、軸速等信息通過共享內存技術與服務器進行交互,以 C/S 模式構成遠程監控系統,client 可以通過運行客戶端應用程序監控數控系統加工過程的狀態信息。
1 相關技術
1.1 硬件抽象層( Hardware Abstract Layer,HAL)
數控系統作為一個復雜的嵌入式系統,具有專用性強、外圍設備多樣的特性,這決定了其應用的硬件環境差異性較大。系統軟件模塊與硬件之間的接口是系統設計過程中的必需環節,也是影響數控系統應用前景的關鍵問題之一。HAL 的引入可有效的解決該問題,HAL 是將硬件平臺與應用軟件隔離開來的的軟件層次,通過硬件抽象層技術實現硬件相關和硬件無關兩部分程序代碼的隔離,為應用程序提供一個沒有硬件特性的接口。硬件抽象層的引入不僅是系統體系結構設計方法的改進,更直接關系到整個系統的開發模式以及嵌入式操作系統的可移植性。硬件抽象層的引入大大推動了嵌入式系統開發的規范化進程。
EMC2 中設計硬件抽象層的目的是使 EMC2 可以快速的針對不同的硬件進行配置而不需要改變上層程序,實現在 I/O 接口和其他底層模塊之間傳輸實時數據。HAL 的設計采用了傳統的電路設計的模式,I/O設備以軟元件的形式存在于 HAL 中,HAL 軟元件和傳統元件類似,包括引腳( pin) 、參數( parameter) 等信息。可以通過 HAL 中軟元件的加載和相連形成復雜多樣的控制系統,如圖 1 所示,利用 HAL 組件構建并口輸出 PWM 信號驅動 X-Y 軸的直流伺服電機的連接圖。
圖 1 井口輸出 PWM 信號驅動 X-Y 軸的直流伺服電機 HAL 連接圖
1.2 I/O 多路復用
在 Linux 服務器編程中,系統資源的利用率是一個令人關注的問題。本系統通過采用單進程 I/O 多路復用的方式解決了傳統的創建子進程方式帶來的系統資源消耗,并極大地提高了 CPU 的利用率,同時也可以方便的支持多個客戶端,理論上,在一個線程中可支持 63 個客戶端; 可以采用多線程支持更大數量的 clients。
I/O 多路復用,即一個進程需要在多個 I/O 端口上等待讀取或寫入數據,可選擇將自己掛起,如果一個或多個 I/O 滿足數據操作時,進程將被通知,繼續運行,并作相應的判斷處理和 I/O 操作。select( ) 方法可以對多路 I/O 進行阻塞式查詢。它提供同時對多個 I/O 描述符進行阻塞式查詢方法,可以方便地實現 I /O多路復用。
2 系統設計
遠程監控工具利用模塊化的設計思想,從縱向來看總體框架自底向上包含 linux 操作系統、RTAI 模塊、硬件抽象層模塊、數據采集程序和客戶端程序。RTAI模塊和硬件抽象層模塊運行在內核空間,數據采集程序和客戶端程序運行在用戶空間,它們之間的數據通信利用 rtai 提供的共享內存和 I/O 多路復用技術來實現的,總體結構如 2 圖所示。
圖 2 遠程監控工具總體結結構圖
2.1 數據結構設計
數據采集方法的設計以 RTAI 的共享內存為數據傳輸介質。共享內存在內核空間和用戶空間之間進行數據傳輸,具有較高的靈活性,所以在數控系統中應用廣泛,因此提高共享內存的管理效率對各種使用共享內存的應用具有很重要的意義。采用兩級數據管理結構,能夠有效的分配和釋放共享內存,使用 C 語言實現的該共享內存管理層具有很好的可移植性,能夠減少共享內存分配和釋放時間,同時互斥量的使用也能保證共享內存的并發訪問。數控系統加工過程遠程監控工具的設計是基于一個共享內存的管理工具來實現的。使用共享內存池和共享內存塊這兩種結構來完成對共享內存管理工具的設計,共享內存管理工具的結構如圖 3 所示。
圖 3 共享內存管理工具結構圖
2.2 遠程監控工具設計
主要是描述利用 I/O 多路復用技術實現多個客戶端的登錄服務器的流程,登陸處理流程圖如圖4 所示。
圖 4 客戶端登陸流程圖
客戶端登陸服務器端,首先需要打開遠程調試模式,并利用 I/O 多路復用技術創建 TCP 并發服務器;客戶端登陸成功后,可以通過終端輸入 halcmd 命令,實現遠程查看數控系統運行狀態。當輸入 exit 或 quit命令時,客戶端終止這一次的連接。
利用 I/O 多路復用技術設計的服務器端架構大致如下:
初始化( socket,bind,listen) ; while( 1) { 設置監聽讀寫文件描述符; 調用 select; 如果是監聽套接字就緒,說明一個新的連接請求 建立。 { 建立連接( accept) ; 加入到監聽文件描述符中 } 否則說明是一個已經連接過的描述符 { 進行 read 或 write 操作 }}
與多進程并發方式相比,采用 I/O 復用技術的最大優勢是服務器只需要一個進程來處理所有的客戶機請求,所有程序沒有創建和管理進程的開銷,減少了系統運行中的系統開銷,提高了服務質量; 同時服務器運行在單一進程上下文中,因此每個邏輯流都能訪問該進程的全部地址空間使得在流之間共享變量很容易。
3 系統實現
3.1 關鍵數據結構
在內核空間和用戶空間之間的通信主要是嵌入硬件抽象層來實現的,硬件抽象層的設計又采用了共享內存技術。共享內存結構體 hal_data_t 的主要組成為:
typedef struct { . . . . . . int comp_free_ptr; / / 存儲空閑的 comp 地址 int pin_free_ptr; / / 存儲空閑的 pin 地址 int param_free_ptr; . . . . . . unsigned long mutex; / /該結構互斥訪問信號量地址 int shmem_bot; int shmem_top; / / 共享內存的首地址和尾地址 int comp_list_ptr; / /已加載的 comp 模塊的首地址 int pin_list_ptr; / /已加載的 comp 模塊的首地址 . . . . . . } hal_data_t;
該結構作為全局變量,halcmd 的命令是通過獲取互斥信號量來對該內存區域進行訪問的。以 loadrtsiggen 為例,流程圖 5 如所示。
圖 5 處理 loadrt siggen 命令流程圖
用戶輸入 loadrt siggen 命令時,該命令的功能是實現加載軟元件 siggen,通過 halcmd _commands 查找loadrt 對應的操作函數 do _loadrt _cmd ( ) ,如果 siggen模塊尚未插入,則利用 insmod siggen. ko 將該模塊插入。并將 siggen 加入到 hal_data - > pin_list_ptr 的鏈表中。命令執行完畢,返回 halcmd 命令行。
3.2 遠程監控工具的實現
遠程監控工具是 halcmd 應用程序的一部分,它的主要任務是完成對輸入命令的讀入,解析命令,執行命令,返回命令執行結果。
具體的代碼實現:
if( rmonitoring = = 1) / /監測是否開始遠程監控模塊 { / / 創建遠程監控模塊 createTCPServer( ) ; / /創建本地 select 并發服務器; select( maxfdp1,readfds,writefds,NULL,tvptr) ; / /查找接入的 socket 連接 read( sockfd,buf,BUFSIZE) ; halcmd_parse _cmd ( tokens) ; / /在服務器端處理遠程輸入命令 / /關閉 halcmd 應用程序 halcmd_shutdown( ) ; / /關閉 socket 連接 shutdown_socket( ) ; } else / /啟用本地調試模式 { get_input( srcfile,raw_buf,MAX_CMD_LEN) ; / /從終端獲取輸入的命令 halcmd_parse_cmd( tokens) ; / /執行命令,并將結果輸出到終端 / /關閉 halcmd 應用程序 halcmd_shutdown( ) ; }
其中 halcmd_parse_cmd( tokens) 主要是根據 to-kens,按照命令索引跳轉到相應的命令函數中執行。可以實現加載模塊,模塊互聯,模塊信息讀取等命令功能; print_info( ) 根據 tokens 執行的結果將命令反饋信息發送給相應的客戶端程序,從而實現對數控系統的加工狀態的遠程監測過程。
4 實驗
在 pc1 上運行數控系統仿真軟件 EMC2,打開終端,使用 halcmd -kfr 啟用加工過程遠程監測模式。分別在 pc2 和 pc3 上運行. /monitor 192. 168. 2. 14,連接到 pc1 服務器端。查看 pc2 和 pc3 的輸出情況,同時也可以執行 halcmd 命令。實驗結果如圖 6 所示。
圖 6
上圖是在 pc2 和 pc3 上顯示的對引腳變化的圖形化顯示的結果,顯示了三種不同的引腳曲線: 正弦,余弦和方形曲線。用戶可以方便使用該工具遠程查看各個引腳的變化情況。
5 總結與展望
本文使用硬件抽象層技術和 I/O 多路復用技術,提出了一個數控系統加工過程遠程監測工具的設計方案,并利用 EMC2 開源數控軟件對數控數控加工過程進行仿真,運用該遠程監測工具進行對其進行遠程監測,能夠獲得數控加工過程中的軸的速度、軸的當前位置、軸的位置反饋等信息,表明了該設計方案在對加工過程遠程監控方面是可行的。
(審核編輯: 智匯胡妮)
分享