閱讀 | 訂閱
閱讀 | 訂閱
數控機床

基於高檔數控的實時多任務實現

星之球激光 來源:中電網2012-01-13 我要評論(0 )   

引言 通信在IPC(Industrial Personal Computer)與(yu) 運動控製器構成的開放式數控係統開發平台上,雖然這種主從(cong) 式結構,確保了運動控製指令在運動控製器內(nei) 高速、實時的被執...

引言

通信在IPC(Industrial Personal Computer)與(yu) 運動控製器構成的開放式數控係統開發平台上,雖然這種主從(cong) 式結構,確保了運動控製指令在運動控製器內(nei) 高速、實時的被執行,但在PC平台上,仍需要完成諸如實時顯示、預處理計算、係統狀態監控等許多任務。為(wei) 了保證係統的實時性能,擬采用多線程技術,通過多任務並行處理的方式,提高係統實時性。

1 進程與(yu) 線程以及多線程技術

Windows操作係統既支持多進程,又支持多線程。一個(ge) 進程就是應用程序的一個(ge) 實例,一次執行過程也就是調入內(nei) 存準備執行的程序,包括當前執行的應用程序的執行代碼和程序執行相關(guan) 的一些環境信息。每個(ge) 進程擁有整台計算機的資源,無須知道其他進程在計算機中的信息。通常每個(ge) 進程至少有一個(ge) 線程在執行所屬地址空間中的代碼,該線程稱為(wei) 主線程,如果該主線程運行結束,係統將自動清除進程及其他地址空間。

線程是進程內(nei) 部執行的路徑,是操作係統分配CPU時間的基本實體(ti) ,是程序運行的最小單位。每個(ge) 進程都由主線程開始進行應用程序的執行。線程由一個(ge) 堆棧、CPU寄存器的狀態和係統調用列表中的一個(ge) 人口組成。每個(ge) 進程可以包含一個(ge) 以上的線程,這些線程可以同時獨立地執行進程地址空間中的代碼,共享進程中的所有資源。

Windows係統分配處理器時間的最小單位是線程,係統不停地在各個(ge) 線程之間切換。在PC機中,同一時間隻有一個(ge) 線程在運行。通常係統為(wei) 每個(ge) 線程劃分的時間片很小(ms級別),這樣快速係統的實時性就有了保障。

要實現多線程編程,可建立輔助線程(Worker Thread)和用戶界麵線程(User Interface Thread)。輔助線程主要用來執行數控程序、坐標顯示、動態仿真和數據預處理;用戶界麵線程用來處理用戶的輸入,響應用戶產(chan) 生的事件和消息。

2 實時多任務的實現

數控係統軟件具有實時性和多任務兩(liang) 大特點。數控係統中要管理和控製的任務很多,如當數控係統正處於(yu) 加工控製狀態時,為(wei) 了保證加工的連續性,在各個(ge) 程序段之間不停頓,各數控加工程序段的預處理、插補計算、位置控製和各種輔助控製任務都要及時進行;為(wei) 了使操作人員及時了解和幹預數控係統的工作狀態,係統在執行加工任務的同時還應該及時進行一些人機交互工作,即顯示加工狀態、接收操作人員通過操作麵板輸入的各種改變係統狀態的控製信號等。為(wei) 了及時檢查和預報軟、硬件的各種故障,係統在運行控製程序和人機交互程序同時還要及時運行診斷程序;此外,係統還可能被要求及時完成通信等其他任務。可見,理想的數控程序,應具有實時多任務的處理能力。

針對數控係統軟件的實時性和多任務性兩(liang) 大特點,采用分時並行處理技術來確定數控係統軟件結構。分時並行處理技術是指一個(ge) 處理器同時完成多種任務。係統用時間片輪換的方式處理和完成各任務,即按照某種輪換次序給每個(ge) 任務分配一段CPU時間進行各任務的處理。從(cong) 微觀上看,各任務分時占用CPU;從(cong) 宏觀的角度來看,在一段時間內(nei) ,CPU並行完成了多個(ge) 任務。在軟件設計中,利用Windows的多線程技術以“資源分時共享”為(wei) 原則,有效地解決(jue) CNC係統的實時多任務問題。應用優(you) 先級搶占方式來進行線程調度,以滿足係統的實時性要求,利用時間重疊和資源共享的方法來實現並行處理。

2.1 係統線程的總體(ti) 設計

Windows提供兩(liang) 種線程,輔助線程和主線程。主線程有窗口,因此它有自己的消息循環,可以處理消息,使程序能夠迅速響應命令和其他事件;輔助線程沒有窗口,所以它不需要處理消息。它可用於(yu) 完成一些費時的工作,以免在由主線程處理這些工作時阻礙程序消息的處理。軟件設計時有並行要求的模塊置於(yu) 獨立的線程中,以實現係統的多任務並行工作。根據對係統實時多任務的分析,將軟件係統中的線程設計為(wei) :

(1)主線程

主線程是應用係統啟動時創建的第一個(ge) 線程,其他線程都是由主線程直接或間接創建。主線程主要負責創建客戶界麵、數據顯示、與(yu) 客戶交互、係統初始化以及對其他線程進行監控。

(2)譯碼線程

譯碼線程是由主線程創建的,負責程序的譯碼,並將計算結構存入公共數據區,為(wei) 通信線程提供數據來源。

(3)通信線程

通信線程負責上下位機間的數據傳(chuan) 輸。上下位機間的傳(chuan) 輸以一來一回的形式進行。通信線程接收到下位機傳(chuan) 來的數據,根據事先定義(yi) 好的協議對它進行識別,並根據識別的結果來判斷是否需要將插補命令等傳(chuan) 給下位機,還需要通知主線程來處理異常情況。

通信線程所承擔的任務是強實時周期性任務,譯碼線程所承擔的任務是弱實時性任務,主線程承擔的是實時突發性任務。因此根據係統任務實時性強弱不同,可為(wei) 各個(ge) 線程設置相應的優(you) 先級來確保實時性。主線程與(yu) 進程的優(you) 先級相同,通信線程的優(you) 先級高於(yu) 主線程,而譯碼線程的優(you) 先級高於(yu) 主線程低於(yu) 通信線程。

在線程優(you) 先級設置中,通信線程的優(you) 先級最高,這使得通信線程在需要CPU時間片等資源時,能夠順利的搶占其他線程的資源,保證上下位機的通信順暢,使下位機在加工時能夠平穩的實現進程,並且使下位機在出現異常情況時能及時通知上位機。由於(yu) 通信這一動作是依照某種頻率進行的,因此通信線程不會(hui) 一直占用CPU資源,從(cong) 而不會(hui) 因為(wei) 它的優(you) 先級高使其他線程無法運行。

具體(ti) 實現原理架構如圖1所示。



2.2 係統線程的具體(ti) 實現

Delphi提供了許多與(yu) 多線程編程相關(guan) 的組件,其中最重要的是Tthread類,本文就是利用它來實現多線程編程。該類封裝了大多數與(yu) 線程相關(guan) 的方法,使用Tthread類大大簡化了多線程程序的開發步驟。Tthread類是一個(ge) 抽象類,不可以直接創建它的實例,但是可以創建它的派生類。創建方法在Delphi菜單中依次選擇“File”→“New”→“Other”→“New”,選擇“Thread Object”項,在對話框中輸入新的線程類的名稱,確認後即創建了一個(ge) 新的線程類:





其中:“private”及“protected”用來定義(yi) 變量和程序函數,“procedure Execute;override;”是線程函數,用來編寫(xie) 線程的執行部分。同時Delphi還提供了各種函數用來運行和終止線程等。創建了線程的派生類後可以生成該類的對象,來表示應用程序的執行線程。各個(ge) 線程創建好後將NC的解釋程序、通信程序等放在各自線程函數內(nei) ,再創建線程的對象,設置幾個(ge) 線程就生成幾個(ge) 對象,在對象內(nei) 編寫(xie) 打開或終止線程等函數來控製線程的運行。

3 結語

本課題下步的目標是將此實時係統的設計實現在Windows XPEmbedded平台上,使其具備高檔數控係統需要的嵌入式設備的特性。#p#分頁標題#e#

 

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀