魏萬根,張永俊,黃志剛
(廣東工業(yè)大學機電工程學院,廣東廣州 510006)
在我國蓬勃發(fā)展的基于PC的電火花線切割機床存在著嚴重不足之處。PC硬件結構復雜、可靠性差、體積大、功耗大,不僅影響了機床的運行穩(wěn)定性,而且其硬件資源浪費嚴重。嵌入式系統(tǒng)的蓬勃發(fā)展,正好解決了這些問題。嵌入式系統(tǒng)為數(shù)控技術提供了一種靈活方便的,能夠嵌入在工業(yè)系統(tǒng)內部,在工業(yè)極端環(huán)境里能夠連續(xù)長期穩(wěn)定可靠工作的微小型廉價的控制系統(tǒng)。文中深入研究基于32位ARM平臺和嵌入式Windows CE操作系統(tǒng)移植一個具有加工代碼檢查分析、插補計算、插補輸出、加工異常處理等多功能模塊的嵌入式控制系統(tǒng)CAWEP,既有專用性又有一定的通用性。該嵌入式線切割系統(tǒng)平臺可以滿足嵌入式系統(tǒng)的實時性要求,功能可以擴展和裁減,易移植,應用的范圍廣闊,具有很好的前景,對建立我國自己的工業(yè)控制體系將具有巨大的意義。
嵌入式系統(tǒng)一般指非PC系統(tǒng),它是相對于通用計算機(微型、小型、大型計算機系統(tǒng)而言),嵌入式系統(tǒng)將自己隱身(嵌入)于各種設備或裝置內部,并根據(jù)設備、裝置的要求發(fā)揮其獨特的作用(如計算、處理、存儲、控制等),該系統(tǒng)有著與通用計算系統(tǒng)完全不同的技術要求和發(fā)展方向。
通用計算機采用標準化、模塊化的設計理念,技術要求是高速、兼容性好、海量信息處理;技術發(fā)展方向是處理速度、總線寬度和存儲容量的最大化。而嵌入式系統(tǒng)是針對性較強的設計,技術要求是滿足具體功能要求和高可靠性;技術發(fā)展方向是在保證功能要求和可靠性的前提下,追求低成本、小體積和低功耗。
嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)的操作系統(tǒng),主要特點如下:
(1)可定制性
由于嵌入式系統(tǒng)環(huán)境的要求,嵌入式操作系統(tǒng)需要提供可添加或剪裁的內核和其他功能,即能夠讓用戶根據(jù)自己的需要對操作系統(tǒng)進行配置,以“需”定“求”。
(2)可移植性
由于嵌入式微處理器的種類繁多,每種處理器都有自己的應用領域,所以嵌入式操作系統(tǒng)要支持盡可能多的處理器,才能滿足用戶對硬件選擇的靈活性。為了使操作系統(tǒng)具有可移植性,嵌入式操作系統(tǒng)在硬件支持方面通常采用抽象硬件層(HAL)和板級支持包(BSP)的結構設計方法。
(3)實時性
實時性是一些嵌入式系統(tǒng)的實現(xiàn)要求,嵌入式操作系統(tǒng)必須滿足具體應用所需要的實時性要求。
(4)低資源占有性
低資源占有性是嵌入式系統(tǒng)環(huán)境的要求。相對通用計算機而言,嵌入式系統(tǒng)一般配有少量的存儲資源。這個特點決定了嵌入式操作系統(tǒng)必須盡可能的小。
常見的嵌入式操作系統(tǒng)有VxWorks、Linux、uClinux、RT-Linux、Windows CE.NET、Windows XP Embedded、eCos、Smartphone、Pocket PC、Symbian、Palm OS、Android。
CAWEP是一款以PC為硬件平臺,Windows為操作系統(tǒng)平臺的線切割輔助編程軟件。Windows CE可以看作是小型化的Windows操作系統(tǒng),它是基于Win32 API重新開發(fā)的、新型的信息設備平臺。Windows CE不僅繼承了傳統(tǒng)Windows圖形界面,而且可以使用Windows95/98上的編程工具(如Visual Studio.NET、Visual C++)、使用同樣的函數(shù)、同樣的界面風格,使Windows上運行的絕大多數(shù)應用軟件經過修改和移植就可以在Windows CE平臺上繼續(xù)使用。開發(fā)周期短,節(jié)省人力、物力。正是因為Windows CE與Windows的一脈相承,使得CAWEP的移植成為可能。
相比于流行于市場的Linux,Windows CE開發(fā)周期短,內核完善,主要是應用層開發(fā)。而Linux的開發(fā)更適合在團隊合作下進行,Linux雖然開源,但是很多嵌入式驅動都需要根據(jù)硬件環(huán)境開發(fā),需要較長的開發(fā)周期和人力;此外,Linux核心調試工具不全,調試不方便,尚沒有很好的用戶圖形界面,Windows CE的GUI豐富,開發(fā)工具強大;第三,Linux系統(tǒng)維護難度大。Windows CE系統(tǒng)類似桌面應用程序在開發(fā)簡便性方面具有較大優(yōu)勢,在未來高性能便攜式設備領域,Windows CE系統(tǒng)的應用空間將十分巨大。
基于Windows CE嵌入式系統(tǒng)開發(fā)主要有系統(tǒng)設計、硬件設計、操作系統(tǒng)定制和應用程序開發(fā)4個階段,如圖1所示。
圖1 Windows CE產品開發(fā)流程
(1)系統(tǒng)設計
系統(tǒng)設計階段應分析嵌入式系統(tǒng)的具體需求,制定出完善的實施方案。主要包括性能指標分析、可靠性分析、硬件設計、成本核算、人員安排等。
(2)硬件設計
硬件是軟件的載體,軟件是為硬件服務的,沒有好的硬件,再好的軟件也是無用的。硬件設計主要任務是根據(jù)系統(tǒng)的功能要求,為目標平臺選擇適當?shù)腃PU和其它功能硬件,如果有滿足功能要求的成熟商業(yè)用品,也可直接使用。在開發(fā)初期,作者推薦盡可能使用成熟的商業(yè)產品,以便將開發(fā)的主要精力放在系統(tǒng)功能的實現(xiàn)上,加速開發(fā)進度。如果硬件選擇了商業(yè)產品,那么BSP包和驅動支持都可以從OEM商獲得。如果沒有可供利用的商業(yè)產品,也應盡可能選擇功能相近的產品,并在此基礎上加以改進,設計出滿足系統(tǒng)需求的目標硬件。在這種情況下,開發(fā)者只需對BSP包和驅動進行適當?shù)男薷募纯?。鑒于課題基于應用層的程序移植,為加速開發(fā),則選擇市場成熟的ARM9系列S3C2440微處理器。
(3)Windows CE操作系統(tǒng)定制
硬件設計完成后,可以按預定方案進行操作系統(tǒng)的定制,根據(jù)需要對功能模塊進行裁剪,配置針對特定硬件平臺的Windows CE操作系統(tǒng),并進行仿真調試,完成操作系統(tǒng)的功能性測試。最后導出SDK,供應用程序開發(fā)使用。
(4)應用程序開發(fā)
第3階段完成后,可進行應用程序的移植、編寫和調試。使用Windows CE提供的模擬器開發(fā)的程序代碼可以直接運行在真實的硬件設備上。
(1)Microsoft Win32 API&MFC和Windows CE APIs&MFC的不同點
Windows CE MFC類庫是桌面系統(tǒng)類庫的一個子集,有些類Windows CE完全支持,如文檔類CArchive。有些類不完全支持,指的是類中的某些函數(shù)被Windows CE支持,有些不支持,不支持函數(shù)經過修改后能得到支持,例如設備描述表類CDC,不支持坐標函數(shù)、區(qū)域函數(shù);有區(qū)別的功函數(shù)如位圖函數(shù)、文本函數(shù),這些需要改寫,以獲得支持,像TextOut函數(shù)在Windows CE中使用失效,以函數(shù)Ex-TextOut、DrawText替代輸出文本,使用中參數(shù)個數(shù)要改變,用不到的使用NULL代替。另外,有些類完全不支持,主要包括數(shù)據(jù)直接訪問DAO(Data Access Objects)、開放數(shù)據(jù)庫互連ODBC(Open Database Connectivity)、多文檔接口MDI(Multiple Document Interface)、對象連接與嵌入OLE(Object Linking and Embedding)、OLE復合文檔、OLE拖放特征、元文件(Metafile)等。最后,Windows CE自身有一些專用類,如命令條類CCeCommandBar、數(shù)據(jù)庫類CCeDBDatabase??傊谝浦策^程中,要找到與Windows CE不兼容的MFC或API,替換、修改,甚至重新編寫它們。
(2)存儲器的限制
考慮存儲器的限制,開發(fā)Windows CE.NET應用程序時,需嚴格控制程序對內存的消耗。主要手段包括:定制系統(tǒng)時或設計應用程序時,去除冗余的組件或代碼,節(jié)省內存;控制程序本身的大小,盡可能減少程序文件所占用的內存空間,如:減少程序中的資源文件的大小,從而使程序能在這樣少的內存環(huán)境中正確運行;盡量避免或簡化大量消耗內存的操作,如:盡量避免遞歸調用,否則容易造成堆棧溢出這種極難發(fā)現(xiàn)的錯誤,Windows CE.NET為每個線程分配的??臻g較小,而堆空間則相對較大,若確實需要大量使用內存時,可以采用在堆上動態(tài)申請的方法來替代,盡量控制靜態(tài)數(shù)組和靜態(tài)變量的大小,以減小程序占用的內存,使程序運行得更快;增加對WM_HIBERNATE消息的處理邏輯,WM_HIBERNATE消息是當內存嚴重不足時由Windows CE.NET系統(tǒng)產生的,是為防止內存不足問題的一種應急機制,程序在收到此消息后應立即釋放暫時不用的內存。
(3)字符集
CAWEP在VC編程環(huán)境下使用的ASCII文本需修改為Windows CE系統(tǒng)環(huán)境下使用的Unicode碼。通常使用前綴“L”來定義一個Unicode字符和字符串,如L“a”,L“GDUT&EDM”。在C++、C編程中,用WCHAR數(shù)據(jù)類型定義Unicode字符常量,如WCHAR wch;用WCHAR*定義字符串指針,如WCHAR*wcstr;用WCHAR name[n]定義字符串數(shù)組,如WCHAR wcStr[128]。雙模式字符和字符串可以使源代碼中的字符和字符串可以同時適應Unicode和ANSI編碼的操作系統(tǒng),通常使用TEXT()、_T()宏定義,使得兩者兼容。如TEXT(“string”)、_T(“string”)。宏定義在SDK的tchar.h頭文件中。字符的轉換總結如下表,如圖2所示。
圖2 字符轉換總結表
此外,數(shù)據(jù)類型不匹配也會導致錯誤,如需將char szFilter[]=“DXF文檔(*.DXF)|*.DXF||”改成TCHAR szFilter[]=_T(“DXF文檔(*.DXF)|*.DXF||”);在應對ANSI與Unicode字符串之間轉換時,使用比MultiByteToWideChar和WideCharToMultiByte更簡單的ATL字符串轉換宏:CT2A、CA2T、T2W、W2T、W2CT等。
(4)界面
由于Windows CE存在大量不同的硬件特性和限制(BSP),如測試和調試過程不同,界面大小,觸摸屏不同的操作方式,屏幕上沒有光標,系統(tǒng)只能讀到觸摸產生的位置信息,不支持鼠標中鍵、右鍵和滾輪消息。
因此,在設計Windows CE.NET應用程序時必須合理地設置消息讀取機制,窗口的位置、大小和風格。Windows CE設計了以長按代替右鍵,引入了一些為特定環(huán)境重新設計的窗體控件,新的控件包括菜單欄控件,能夠在一行的空間中同時提供菜單和工具欄功能,有效節(jié)省Windows CE設備較小屏幕空間。另外,Windows CE支持Windows上大多數(shù)控件,甚至有些比Windows好用,例如日期時間選擇控件和日歷控件,它們更適合手持設備使用。
此外,還需將VC上多文檔程序轉化為Windows CE支持的單文檔程序。重新編寫CAWEP的Main-Fram,Windows CE不支持多文檔接口,CAWEP采用多文檔CMDIChildWnd、CMultiDocTemplate、CMDIFrameWnd,需要全部清除改寫。
計算機輔助線切割數(shù)控編程系統(tǒng)CAWEP在Windows上運行的界面、功能模塊及結構關系如圖3、4所示。在將程序運行至硬件開發(fā)板前,先要完成設備同步,它是嵌入式應用程序開發(fā)的一個重要環(huán)節(jié)。采用基于PC的仿真器作為輔助開發(fā)工具時,由于仿真器的運行環(huán)境包括芯片類型和內存模式都是基于PC的,有些問題可能不會及時暴露出來,程序只有在下載到Windows CE.NET設備上時才能被發(fā)現(xiàn)。
圖3 CAWEP在Windows上運行的界面
圖4 CAWEP系統(tǒng)功能設計
移植完成后的CAWEP運行在Windows CE上,基本上繼承了在Windows環(huán)境下運行的絕大部分功能,能夠實現(xiàn)在設備屏幕上創(chuàng)建和編輯2D圖形、文件轉換、保存、仿真加工、模擬軌跡、生成輸出3B及ISO代碼(G代碼)。在線切割數(shù)控加工中,由于不能忽略電極絲直徑和放電間隙的存在,電極絲中心的行走軌跡往往與零件的設計輪廓并不重合,再加上一些特殊工藝,需要人為的對零件設計輪廓進行偏移,如圖5所示。在用戶選擇加工起點、加工方向后,生成走刀輪廓,如圖6所示。之后,即可點擊菜單欄中的“代碼生成”功能,選擇生成代碼類別,3B或者ISO代碼,將代碼文件保存,用文本文檔打開,如圖7所示。實驗結果表明CAWEP系統(tǒng)在Windows CE環(huán)境下運行穩(wěn)定,高效可靠。
在后續(xù)的研究中,主要任務是不斷完善CAWEP可以在Windows CE上實現(xiàn)的功能。考慮添加加工工藝參數(shù)庫,幫助用戶合理地選擇加工參數(shù),使得輸出的加工代碼更加精確化,再使用點對點協(xié)議(PPP)和串行線路互聯(lián)協(xié)議(SLIP)進行直接或撥號連接,傳輸代碼至解釋模塊,從而實現(xiàn)一體化控制線切割機床加工工件,形成價值產品,這種新型的加工控制方式,也將給用戶帶來全新的創(chuàng)意體驗。
圖5 加工偏移量選擇
圖6 加工軌跡生成
圖7 加工代碼輸出
未來的線切割數(shù)控軟件將不僅僅是編程工具,它將覆蓋更廣泛的內容,其中一個重要方向將是加工過程的最佳化控制。由于線切割加工機制的復雜性,智能控制理論將在這個方面發(fā)揮重要作用,因此專家系統(tǒng),模糊控制系統(tǒng)等也將成為未來線切割數(shù)控軟件的重要模塊。
正值Windows CE操作系統(tǒng)被嵌入式領域廣泛應用的數(shù)字時代,于其平臺上應用軟件的開發(fā)需求已成為不可抵擋的趨勢。在掌握Windows CE與Windows應用程序之間的聯(lián)系和區(qū)別之后,將對Windows CE應用軟件的開發(fā)提供方便與科學依據(jù)。文中以天嵌TQ2440開發(fā)板為目標設備,研究了在Windows CE操作系統(tǒng)下利用Visual Studio 2005移植線切割數(shù)控編程軟件CAWEP,并對移植過程中的關鍵技術做了總結。希望對基于Windows CE應用程序移植者提供經驗借鑒。
[1]任重.Windows CE.NET與桌面Windows應用程序開發(fā)差異研究[J].電腦編程技巧與維護,2011,18(14):4-8.
[2]邵昌旭,陳默,趙萬生.嵌入式電火花線切割加工數(shù)控系統(tǒng)原型[J].電加工與模具,2012,150(2):17-20.
[3]吳文君,顧琳,徐笠云,等.基于ARM及嵌入式Linux的線切割數(shù)控系統(tǒng)開發(fā)[J].制造業(yè)自動化,2009,31(2):75-78.
[4]周振喜,戴國駿.Windows應用程序移植到Windows CE下的策略[J].計算機工程與設計,2004(9):1560-1562,1571.
[5]何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學出版社,2006.
[6]李尚柏,鐘睿,栗思科.基于ARM的嵌入式Windows CE系統(tǒng)高級開發(fā)技術[M].北京:清華大學出版社,2011.
[7]汪兵,李存斌,陳鵬,等.EVC高級編程及其應用開發(fā)[M].北京:中國水利水電出版社,2005.
[8]黃志剛.電火花線切割計算機輔助數(shù)控編程系統(tǒng)的研究和開發(fā)[D].廣州:廣東工業(yè)大學,2003.
[9]郭磊.基于ARM的嵌入式線切割系統(tǒng)設計與實現(xiàn)[D].南昌:南昌大學,2008.