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