基于Windows CE的數(shù)控軟件開發(fā)與實現(xiàn)
摘要:本文介紹了嵌入式Windows CE 系統(tǒng)在數(shù)控加工應用領域的平臺定制,提出了在Windows CE 下的嵌入式數(shù)控加工系統(tǒng)的軟件架構,探討了嵌入式數(shù)控軟件主要功能模塊及其關鍵實現(xiàn)技術。
本文引用地址:http://2s4d.com/article/148591.htm0 引言
傳統(tǒng)的數(shù)控系統(tǒng)是一種專用的、封閉體系結構的CNC系統(tǒng)。各數(shù)控廠家出于商業(yè)利益的需要,在數(shù)控系統(tǒng)的設計上形成各自獨立的標準和體系,造成數(shù)控系統(tǒng)硬件平臺的專用性,軟件結構的不可移植性。這種封閉型和單一性嚴重影響了數(shù)控技術的發(fā)展和普及。嵌入式設備及其操作系統(tǒng)的出現(xiàn),有利于打破現(xiàn)有數(shù)控系統(tǒng)的封閉性,形成開放式數(shù)控
系統(tǒng)設計模式。嵌入式系統(tǒng)的種類有很多,應用較廣的有Windows CE、Linux等。WinCE 是一種為多種嵌入式系統(tǒng)和產(chǎn)品設計的緊湊、高效、可升級的操作系統(tǒng)。WinCE 采用標準模式,其最主要的特征是為有限的硬件資源提供了多線程、多任務和完全優(yōu)先級的計算環(huán)境 [1]。本文探討了在Windows CE系統(tǒng)下,如何開發(fā)高效穩(wěn)定的嵌入式數(shù)控系統(tǒng)。
1 Windows CE系統(tǒng)內(nèi)核的定制
嵌入式系統(tǒng)上應用軟件的開發(fā)離不開底層系統(tǒng)的支持,Windows CE 系統(tǒng)下應用程序架構如圖1 所示。
圖1 Windows CE系統(tǒng)下應用程序架構
由于應用環(huán)境的多樣性,需要對Windows CE 系統(tǒng)做不同的內(nèi)核定制。可采用微軟公司的Platform. Builder 集成開發(fā)環(huán)境,針對數(shù)控加工應用的特點,添加、刪除和修改某些系統(tǒng)模塊,包括添加串口通信支持,F(xiàn)AT 文件支持(以支持U 盤快速傳送G 代碼文件),ActiveSync 支持(與PC 宿主機的通信支持)等。此外,還應將注冊表模式修改為HIVE 模式,以備掉電后將數(shù)據(jù)存放到FLASH 中保存。
2 嵌入式數(shù)控系統(tǒng)軟件結構
采用模塊化設計有助于構建清晰的程序框架,提高協(xié)同開發(fā)能力和編程效率,增強代碼的復用率。嵌入式數(shù)控系統(tǒng)軟件模塊劃分如圖2所示。
圖2 上/下位機軟件模塊劃分
數(shù)控系統(tǒng)使用者首先在PC 機上完成零件模型建立和編輯,生成加工代碼文件。然后將NC 代碼文件傳輸至嵌入式數(shù)控平臺。在嵌入式平臺上完成對NC 代碼的數(shù)據(jù)挖掘,提取數(shù)控加工信息并傳送至下位機處理器。下位控制器利用其高速運算的能力,完成插補運算和伺服電機控制。
Windows CE 系統(tǒng)在上位機運行。Windows CE 系統(tǒng)非強實時性系統(tǒng),因此實時性要求較高的任務(如刀補運算,插補運算),均放在下位機運行。而像人機交互這種實時性要求不高,但事件機制較復雜的任務,則放在上位機實現(xiàn),以Windows CE 系統(tǒng)的內(nèi)核支持來降低交互式操作開發(fā)的難度。
3 主要功能模塊及其關鍵實現(xiàn)技術
3.1 人機界面模塊
人機界面模塊是用戶與數(shù)控加工平臺交互的接口。人機界面包括如下操作:加工代碼的編輯和保存;各種系統(tǒng)參數(shù)的設定;加工過程的同步動態(tài)仿真;獲取數(shù)控設備的位置,速度,故障信息,反饋給用戶;文件操作等。
Windows CE出于精簡內(nèi)核的需要,對傳統(tǒng)的WIN32 圖形庫改動較大,較多圖形類API被移除。在實際開發(fā)中為滿足圖形顯示需要,需要自寫繪圖函數(shù)。數(shù)控仿真用到的繪圖函數(shù)主要有:曲線繪圖類(圓弧,拋物線繪制)、繪圖區(qū)動態(tài)縮放、圖形的保存與重繪??蓪⒁陨虾瘮?shù)通過測試后封裝成庫,在主程序中調(diào)用。
3.2 加工指令編譯模塊
數(shù)控加工指令主要是由完成各種準備功能的G 代碼和輔助功能的M 代碼組成。譯碼器的作用是讀入已編輯好的數(shù)控代碼,對指令進行詞法和語法檢查,提取刀位特征,生成刀位文件,最終轉(zhuǎn)換為驅(qū)動加工模型運動的數(shù)據(jù)。譯碼的方式可分為兩類:解釋模式和編譯模式。
解釋模式:將G 代碼分割為若干小段,每段包括3-4行。以段為單位,解釋完本段G代碼后,隨即調(diào)用刀具補償模塊,完成刀具補償。之后把這段經(jīng)過處理的代碼發(fā)送下位機,進行插補控制。解釋模式具有簡單、易行的特點,能夠方便地在加工過程中動態(tài)插入指定代碼。其不足之處在于譯碼效率較低,代碼的串行發(fā)送又極大地限制了加工效率,而且人為地分割G 代碼也破壞了代碼原有的統(tǒng)一性。
編譯模式:預先對整個G代碼文件進行編譯,生成臨時代碼文件。之后將整個代碼文件發(fā)送到下位機。在下位機上調(diào)用刀具補償模塊,對代碼進行刀具補償。編譯模式能夠較好地解決固定循環(huán)指令,子程序以及各種跳轉(zhuǎn)指令的問題,維護代碼自身的統(tǒng)一性[2]。由于是統(tǒng)一編譯,統(tǒng)一執(zhí)行,加工效率也比解釋模式高,故譯碼器的設計上采用編譯模式。譯碼器的編譯流程如圖3 所示。
(1)詞法分析:掃描NC 程序,判別是否有不可識別字符。如果有,則給出錯誤信息。
圖 3 譯碼器編譯流程圖
(2)語法分析:規(guī)則與匹配的問題。針對數(shù)控程序特點,檢查輸入代碼合理性。若檢查出錯誤組合,則給出錯誤信息。若檢查出無效組合,則設定其無效。例如:F 指令只對G01,G02,G03有效,對G00 無效。
(3)語義分析和譯碼:設計一個加工信息類CDrawInfo,用于保存譯碼得到的數(shù)據(jù)。為了保存整個代碼信息,還需要設計一個鏈表類CListInfo。CDrawInfo 類的設計如下:
class CDrawInfo: public CObject{
public:
CDrawInfo();
virtual ~CDrawInfo();
UINT m_SerialNum; //加工序號
CPoint m_ptPrev; //前一點坐標
CPoint m_ptNext; //后一點坐標
CPoint m_ptCenter; //圓心坐標
UINT m_gcodeFun; //G 代碼類型
CDrawInfo perator=(CDrawInfo); //賦值運算符重載
};
譯碼程序執(zhí)行時,首先建立一個CDrawInfo 類的臨時對象drawtemp。而后逐行提取代碼的數(shù)據(jù)信息,并將其賦值到drawtemp 對象中。本行讀取完畢,再把drawtemp保存到鏈表CListInfo。CListInfo 的聲明如下:
伺服電機相關文章:伺服電機工作原理
評論