實時性是數控系統一項重要的性能指標[1]。在IPC(Industrial Personal Computer )+運動控制器構成的開放式數控系統開發平臺上,雖然這種主從式結構,確保了運動控制指令在運動控制器內高速、實時的被執行,但在PC機上,仍需要完成諸如實時顯示、預處理計算、系統狀態監控等許多任務。為了保證系統的實時性能,擬采用多線程技術,通過多任務并行處理的方式,提高系統實時性。
本開發平臺采用IPC+運動控制器模式的開放式數控系統,主要的運動控制由固高公司的GT400-SV通用運動控制器完成。它提供C語言函數庫GT400sv.lib和Windows動態連接庫GT400.dll,能夠實現復雜的控制功能[2]。數控系統的開發是將這些控制函數與自己控制系統所需的數據處理、界面顯示、用戶接口等應用程序模塊集成在一起,建造符合特定應用要求的控制系統。
2 進程與線程以及多線程技術
Windows操作系統既支持多進程,又支持多線程。一個進程就是應用程序的一個實例,一次執行過程也就是調入內存準備執行的程序,包括當前執行的應用程序的執行代碼和程序執行相關的一些環境信息。每個進程擁有整臺計算機的資源,無須知道其他進程在計算機中的信息。通常每個進程至少有一個線程在執行所屬地址空間中的代碼,該線程稱為主線程。如果該主線程運行結束,系統將自動清除進程及其他地址空間。
線程是進程內部執行的路徑,是操作系統分配CPU時間的基本實體,是程序運行的最小單位。每個進程都由主線程開始進行應用程序的執行。線程由一個堆棧、CPU寄存器的狀態和系統調用列表中的一個入口組成。每個進程可以包含一個以上的線程,這些線程可以同時獨立地執行進程地址空間中的代碼,共享進程中的所有資源。
Windows系統分配處理器時間的最小單位是線程,系統不停地在各個線程之間切換。在PC機中,同一時間只有一個線程在運行。通常系統為每個線程劃分的時間片很小(ms級別),這樣快速系統的實時性就有了保障[3]。
要實現多線程編程,可建立輔助線程(worker Thread)和用戶界面線程(User Interface Thread)。輔助線程主要用來執行數控程序、坐標顯示、動態仿真和數據預處理;用戶界面線程用來處理用戶的輸入,響應用戶產生的事件和消息。
3 數控系統實時性分析
3.1 線程的實時性
數控系統需要完成的任務有很多,這些任務中,優先級的要求級別不一樣。據此,可以利用Windows系統的多任務、搶占式的特點和多線程技術將各個任務分給不同的線程,并賦予各個線程不同的優先級,當高優先級的線程執行時,即實時性要求高的任務需要執行時,可以自動地終止其他線程的工作轉而執行這一線程[4]。通過這一方法,可以實現數控系統所要求的實時性。
3.2 輔助線程創建
本開發系統中所創建的輔助線程可大致劃分如下:
(1)坐標顯示線程
在手動脈沖面板、電動控制面板和增量控制面板中,可實時顯示X、Y、Z三個運動軸的坐標。這樣可使操作人員直觀看到三軸的實際坐標。實時性要求較低,所以使用最低優先級:Lowest Normal。
(2)圖形顯示線程
圖像顯示線程用于在動態仿真面板中執行圖形繪制的指令。通過圖形顯示,操作者可以在動態仿真的同時,對人機界面進行操作。這一線程實時性要求較低,等級為:Blow Normal。
(3)IO狀態控制線程
此線程用于檢測由系統輸入的各個離散量,以及從數控程序得到的指令來輸出機床各離散量的狀態。此線程優先級比前兩線程高,等級為:Normal。
(4)數據預處理線程
數據預處理線程主要負責完成編碼形式轉換、刀具長度補償、刀具半徑補償和公英制轉換等運動控制數據預處理函數的執行。等級為:Normal。
(5)運動控制線程
此線程主要用于運動控制器執行數控代碼函數的運行。負責向緩沖器輸入運動控制命令,清空緩沖器和打開關閉緩沖器等操作。等級稍高:Above Normal。
(6)緊急控制線程
此線程處理一些需要機床立即做出反應的時間,如機床的急停等。優先級最高,等級為:Highest。
轉載請注明出處。