近年來,開放式的數控系統在工業領域得到廣泛應用,但目前在世界機床業中占統治地位的仍是基于專用硬件的數控系統。這種系統的內部細節一般屬于企業機密,是不開放的。以Windows和運動控制器構建的數控系統近年得到較大的發展,但是在數據處理的實時性上卻無法滿足數控加工的要求。因此,本文選擇了這種上、下位機的結構,上位機主要分擔加工中的弱實時部分,下位機則負責強實時部分。在Windows環境下,利用VC++6.0開發了數控軟件,并通過二維繪圖實驗平臺進行了實驗驗證,系統具備了良好的實時性和開放性。
1 系統構成及工作過程
Computer為通用PC機,充當系統的上位機,主要承擔數控加工中的弱實時部分(如:參數設置、G代碼編輯與編譯、圖形仿真、狀態診斷等)。下位機則選用了固高科技(深圳)公司研發的GT4∞SV型四軸通用運動控制器。該控制器上的DSP充當了下位機的CPU,由于DSP芯片具有很強的數字信號處理能力,因此,承擔數控加工中的強實時部分是能夠滿足要求的。
運行在上位PC機中的系統管理軟件是人機交互的媒介。一方面它將系統的各種信息以數據或圖形的方式顯示給用戶,另一方面又接收來自用戶輸入的各種數據(如:參數、加工代碼、工件圖形等)。并交由軟件的相關模塊進行處理,處理后的數據被保存在PC內存上指定的緩沖區中。一般來說,運動控制器廠家已在DSP中開發好了一系列的功能函數,并將它們封裝成一個動態鏈接庫文件。上位機系統軟件就是通過這個動態鏈接庫來實現與運動控制器的數據交換的。
2 軟件的模塊化設計思想與實例
2.1 模塊化設計思想
系統軟件的開發以Windows 2000為操作系統,在VC++6.0開發環境中,采用C++語言。結合MFC、Windows API和GT400SV API來實現。根據開放式數控系統的要求與思想。通過類的定義、封裝和繼承技術來實現模塊化開發。
圖中越靠近圓心的模塊表示核心度越高,最核心的任務調度代表系統的主用戶界面,它負責整個系統的任務調度工作,被分配予應用程序的主線程,因此它的產生與銷毀就代表著應用程序的生與死。中間環分為7個子功能模塊,每個子功能模塊又包含著數目不等的子模塊,各模塊皆由一個單獨的類來進行標識和處理,在這砦類中設計和封裝了一系列的成員函數和成員變量,用以完成各個相應的子任務。
模塊間的通信主要通過兩種方式來實現,環狀的同層通信和線狀的越層通信。同層通信負責同一核心層中各模塊之間的通信工作。第一層主要通過對象和指針操作來實現。第二層主要通過開辟數據緩沖區和創建結構體來實現。越層通信則負責同一類別不同核心層模塊間的通信工作。所謂同一類別的模塊即是處于同一個扇形域內的模塊。主要通過菜單管理和視圖管理來實現。
對于這樣一個同心圓環結構的模塊化通信框架,任意兩個模塊間可方便地進行通信。當應用場合發生改變,需要修改其中的某個或某幾個模塊時,只需將其單獨抽取出來進行修改。當需要添減系統的模塊時,也無需對代碼做太大的改動,因為某個模塊的改動對其他模塊問的通信并不會造成很大的干擾,增強了系統的可伸縮性。
2.2 主要模塊的分析與實例
考慮到本系統在操作上的一些特點,如:不會同時編輯多個文檔、需要同時顯示多項數據、后臺運算與前臺操作必須支持同步等。因此系統軟件采用了單文檔、多視圖和多線程的結構。主程用于處理用戶界面的操作和管理。如:菜單切換、參數設置、代碼編輯等。子線程則處理一些純運算性質的工作,如:代碼編譯、插補運算、圖形仿真等。
2.2.1 任務調度模塊
任務調度模塊是系統的主用戶界面。它是操作人員與機器之間進行交流的媒介,~個好的用戶界面能使操作人員心情愉快,并在較短時間內通過屏幕上所顯示的信息,了解到機器當前各主要模塊的工作狀態。本文的人機界面設計遵循以下原則:①“一致性”,系統的界面外觀、布局、交互方式及顯示格式與市場主流產品相符合,便于操作人員輕易上手。②“信息反饋”,對操作人員的操作能做出及時響應,通過文本、圖形、聲音等方式。⑧“布局合理”,空間布局應合理,豎床加以橫線搭配,尺寸分配適當運用黃金分割比例0.618,顯示表放置于水平視線以下0—30°,垂直視野左右各15°范圍內。(緲“合理運用色彩和圖形”,整體界面顏色應不超過3-5種,色調搭配不宜過于刺激或興奮或沉悶,以純度低而明度高為宜。面板上的按鈕顏色按用途分類,如:紅色表示危險、停止和報警;綠色代表正常和安全運行;黑白色代表文字、符號和編碼。⑤“字體、字型合適”,字符的高寬比應為2:1或1:1。
主用戶界面由四個視圖、系統菜單和狀態欄構成。圖形顯示區主要用于實時顯示刀具的運動軌跡;參數顯示區主要用于顯示當前系統的若干重要參數值;系統菜單負責在各功能模塊間進行切換;實時數據顯示區主要用于實時顯示不同參考下的坐標值;輔助面板為一個虛擬的機床操作面板。通過菜單欄F5可以控制其顯示或消隱;狀態欄主要用于顯示一些基本信息,如:開發單位、系統時間、已加工工件數等。
2.2.2數據管理模塊
數據管理模塊掌管著整個系統的數據流向,通過自定義一個類,專門處理數據文件的打開、關閉、讀取、寫入等動作,并將數據按類別保存到一系列的數據結構中,這些數據結構是文件與用戶界面、模塊與模塊之間進行數據交換的容器。
CFileDeal類中定義了一系列的成員函數和成員變量,他們的作用主要是針對數據文件進行操作。白箭頭表示讀入,CFileDeaf類將數據從文件中讀取出來,并通過自己在C)(x.App類中的一個對象將數據加載到指定的數據結構StructData中,當某個模塊需要使用這些數據時,它的關聯類C×X便通過一個指向CXX.App的指針pApp調用Struct Data的一個對象來對Struct Data進行操作,將數據提取出來,并在特定的成員函數里引用這些數據進行運算處理,處理后的數據或顯示到視圖面板中或發送到另一個數據結構中保存起來。黑色箭頭則表示了數據的存儲過程。
2.2.3通信模塊
通信模塊包括系統上、下位機間的通信和系統間的網絡通信,其中最重要的是系統軟件與運動控制器間的通信。本文定義和封裝了一個類CCardFunc,結合運動控制器的API函數來編寫各成員函數,用于處理所有與運動控制器發生交互的工作。
2.2.4 狀態診斷模塊
狀態診斷模塊中最核心的部分是錯誤診斷機制。一個良好的錯誤診斷機制能夠在系統軟件發生錯誤時,迅速定位到錯誤發生處。本文考慮到錯誤可能會出現在任一核心層下的任一模塊中,因此將錯誤診斷機制設定為全局函數。例如可以采用如下形式來定義。
在編寫關鍵功能模塊的代碼時,可為某些關鍵函數的調用定義一個狀態返回值,并隨后調用該錯誤診斷機制.雖然這樣做會加大代碼編寫的工作量,但卻可以在錯誤發生時大大地減少錯誤排除的工作時間,提高工作效率。
3 結束語
本文介紹了一種基于PC機與運動控制器構建的開放式數控系統,描述了這種系統的基本構成及工作原理,及系統軟件設計上的若干關鍵問題。為了驗證系統的實際運行性能,將一臺二維繪圖實驗平臺接入系統,并對其進行了自動運行、手動運行、點位控制及多種速度規劃模式下的實驗。繪制的圖形輪廓完整、數據的反饋和試驗臺的響應迅速。
(審核編輯: 智匯胡妮)
分享