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

多線程技術解決開放式數控係統實時性能的應用設計

星之球激光 來源:中國自動化網2012-01-05 我要評論(0 )   

1 引言 實時性是數控係統一項重要的性能指標。 在IPC(Industrial Personal Computer )+運動控製器構成的開放式數控係統開發平台上,雖然這種主從(cong) 式結構,確保了運動控...

1 引言
實時性是數控係統一項重要的性能指標。
在IPC(Industrial Personal Computer )+運動控製器構成的開放式數控係統開發平台上,雖然這種主從(cong) 式結構,確保了運動控製指令在運動控製器內(nei) 高速、實時的被執行,但在PC機上,仍需要完成諸如實時顯示、預處理計算、係統狀態監控等許多任務。為(wei) 了保證係統的實時性能,擬采用多線程技術,通過多任務並行處理的方式,提高係統實時性。
本開發平台采用IPC+運動控製器模式的開放式數控係統,主要的運動控製由固高公司的GT400-SV通用運動控製器完成。它提供C語言函數庫GT400sv.lib和Windows動態連接庫GT400.dll,能夠實現複雜的控製功能[2]。數控係統的開發是將這些控製函數與(yu) 自己控製係統所需的數據處理、界麵顯示、用戶接口等應用程序模塊集成在一起,建造符合特定應用要求的控製係統。

 

2 進程與(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級別),這樣快速係統的實時性就有了保障[3]。
要實現多線程編程,可建立輔助線程(worker Thread)和用戶界麵線程(User Interface Thread)。輔助線程主要用來執行數控程序、坐標顯示、動態仿真和數據預處理;用戶界麵線程用來處理用戶的輸入,響應用戶產(chan) 生的事件和消息。

3 數控係統實時性分析
3.1 線程的實時性
數控係統需要完成的任務有很多,這些任務中,優(you) 先級的要求級別不一樣。據此,可以利用Windows係統的多任務、搶占式的特點和多線程技術將各個(ge) 任務分給不同的線程,並賦予各個(ge) 線程不同的優(you) 先級,當高優(you) 先級的線程執行時,即實時性要求高的任務需要執行時,可以自動地終止其他線程的工作轉而執行這一線程[4]。通過這一方法,可以實現數控係統所要求的實時性。
3.2 輔助線程創建
本開發係統中所創建的輔助線程可大致劃分如下:
(1)坐標顯示線程
在手動脈衝(chong) 麵板、電動控製麵板和增量控製麵板中,可實時顯示X、Y、Z三個(ge) 運動軸的坐標。這樣可使操作人員直觀看到三軸的實際坐標。實時性要求較低,所以使用最低優(you) 先級:Lowest Normal。
(2)圖形顯示線程
圖像顯示線程用於(yu) 在動態仿真麵板中執行圖形繪製的指令。通過圖形顯示,操作者可以在動態仿真的同時,對人機界麵進行操作。這一線程實時性要求較低,等級為(wei) :Blow Normal。
(3)IO狀態控製線程
此線程用於(yu) 檢測由係統輸入的各個(ge) 離散量,以及從(cong) 數控程序得到的指令來輸出機床各離散量的狀態。此線程優(you) 先級比前兩(liang) 線程高,等級為(wei) :Normal。
(4)數據預處理線程
數據預處理線程主要負責完成編碼形式轉換、刀具長度補償(chang) 、刀具半徑補償(chang) 和公英製轉換等運動控製數據預處理函數的執行。等級為(wei) :Normal。
(5)運動控製線程
此線程主要用於(yu) 運動控製器執行數控代碼函數的運行。負責向緩衝(chong) 器輸入運動控製命令,清空緩衝(chong) 器和打開關(guan) 閉緩衝(chong) 器等操作。等級稍高:Above Normal。
(6)緊急控製線程
此線程處理一些需要機床立即做出反應的時間,如機床的急停等。優(you) 先級最高,等級為(wei) :Highest。
本係統中所創建的輔助線程可大致劃分如下表1所示。

  表1 線程的創建及優(you) 先級設置

 

 

4 多線程的實現
在Windows操作係統中,多線程的實現需要調用一係列的API函數,如CreateThread、ResumeThread等,比較麻煩且容易出錯。使用新一代RAD開發工具C++ Builder中的TThread類,可以方便地實現多線程的編程,特別是對於(yu) 係統開發語言是C的Windows係列操作係統,它具有其它編程語言無可比擬的優(you) 勢。
4.1 線程的創建
在C++ Builder中雖然用TThread對象說明了線程的概念,但是TThread對象本身並不完整,需要在TThread下新建其子類,並重載Execute來使用線程對象。
在C++ Builder IDE環境下選擇菜單File|New,在New欄中選中Thread Object,按OK,在彈出的對話框中輸入TThread對象子類的名字CoordinateDisplyThread,自動創建了一個(ge) CoordinateDisply的TThread子類。同時在編輯器中創建了一個(ge) 名為(wei) CoordinateDisplyThread單元。
4.2 線程的實現
在創建的代碼中Execute()函數就是要在線程中實現的任務的代碼所在處。在原Unit1.cpp代碼中包含了CoordinateDisplayThread.h文件。使用時,動態創建一個(ge) TCoordinateDisplay對象,具體(ti) 執行的代碼就是Execute()方法重載的代碼。

由於(yu) Execute()中添加的線程運行時所需要執行的函數調用了VCL組件,而VCL對象不具有線程安全性,它們(men) 的特性和方法隻能在主線程中訪問,所以用Synchronize()函數將坐標顯示函數進行包裝。而坐標顯示函數需如下聲明:

void_fastcall Function().

下麵以坐標顯示線程即CoordinateDisplayThread的實現步驟為(wei) 例,說明線程實現的具體(ti) 方法。其他線程的實現需根據具體(ti) 情況,進行修正。

在CoordinateDisplayThread.cpp文件中的CoordinateDisplayThread::Execute()函數裏添加如下語句,實現X、Y、Z坐標顯示函數調用的一致性。

首先用switch語句判斷單軸運動中的哪一軸的坐標位置發生改變:
 


做好上述準備工作之後,需要在主單元中的適當的位置添加開始線程和掛起線程的命令。代碼如下所示:
 


.3 關(guan) 於(yu) 線程同步
線程同步在編程技術中非常重要,當一個(ge) 線程在訪問一個(ge) 進程對象時,如果另一個(ge) 線程要改變該對象,可能產(chan) 生錯誤的結果。在本例開發應用中,利用API函數,可以直接使用臨(lin) 界或互斥來達到同步的目的。為(wei) 了提高同步的可靠性和靈活性,同時用到了標誌變量和臨(lin) 界機製。隻需在程序中聲明一個(ge) TRTLCriticalSection類型的變量Sect1,並在主線程的構造函數中進行初始化。之後在某個(ge) 線程中,可以把相應的代碼標記為(wei) 臨(lin) 界部分,當在一個(ge) 線程中調用EnterCriticalSection()並傳(chuan) 遞Sect1時,就設置多個(ge) 數據成員,以表明臨(lin) 界部分進入活動狀態。如果另一個(ge) 線程要調用它自己的臨(lin) 界部分時,函數EnterCriticalSection()將發現有一個(ge) 臨(lin) 界部分正在使用,就讓第二個(ge) 線程處於(yu) 休眠狀態,直到第一個(ge) 線程退出臨(lin) 界部分為(wei) 止。#p#分頁標題#e#

 

5 結束語
本文將C++ builder多線程技術應用於(yu) 開放式數控係統的軟件設計中,有效的解決(jue) 了線程同步問題,保證了數控軟件係統的實時性要求,取得了較好的運用效果。

轉載請注明出處。

免責聲明

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

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