魏萬根,張永俊,黃志剛
(廣東工業大學機電工程學院,廣東廣州 510006)
在我國蓬勃發展的基于PC的電火花線切割機床存在著嚴重不足之處。PC硬件結構復雜、可靠性差、體積大、功耗大,不僅影響了機床的運行穩定性,而且其硬件資源浪費嚴重。嵌入式系統的蓬勃發展,正好解決了這些問題。嵌入式系統為數控技術提供了一種靈活方便的,能夠嵌入在工業系統內部,在工業極端環境里能夠連續長期穩定可靠工作的微小型廉價的控制系統。文中深入研究基于32位ARM平臺和嵌入式Windows CE操作系統移植一個具有加工代碼檢查分析、插補計算、插補輸出、加工異常處理等多功能模塊的嵌入式控制系統CAWEP,既有專用性又有一定的通用性。該嵌入式線切割系統平臺可以滿足嵌入式系統的實時性要求,功能可以擴展和裁減,易移植,應用的范圍廣闊,具有很好的前景,對建立我國自己的工業控制體系將具有巨大的意義。
嵌入式系統一般指非PC系統,它是相對于通用計算機(微型、小型、大型計算機系統而言),嵌入式系統將自己隱身(嵌入)于各種設備或裝置內部,并根據設備、裝置的要求發揮其獨特的作用(如計算、處理、存儲、控制等),該系統有著與通用計算系統完全不同的技術要求和發展方向。
通用計算機采用標準化、模塊化的設計理念,技術要求是高速、兼容性好、海量信息處理;技術發展方向是處理速度、總線寬度和存儲容量的最大化。而嵌入式系統是針對性較強的設計,技術要求是滿足具體功能要求和高可靠性;技術發展方向是在保證功能要求和可靠性的前提下,追求低成本、小體積和低功耗。
嵌入式操作系統是一種支持嵌入式系統的操作系統,主要特點如下:
(1)可定制性
由于嵌入式系統環境的要求,嵌入式操作系統需要提供可添加或剪裁的內核和其他功能,即能夠讓用戶根據自己的需要對操作系統進行配置,以“需”定“求”。
(2)可移植性
由于嵌入式微處理器的種類繁多,每種處理器都有自己的應用領域,所以嵌入式操作系統要支持盡可能多的處理器,才能滿足用戶對硬件選擇的靈活性。為了使操作系統具有可移植性,嵌入式操作系統在硬件支持方面通常采用抽象硬件層(HAL)和板級支持包(BSP)的結構設計方法。
(3)實時性
實時性是一些嵌入式系統的實現要求,嵌入式操作系統必須滿足具體應用所需要的實時性要求。
(4)低資源占有性
低資源占有性是嵌入式系統環境的要求。相對通用計算機而言,嵌入式系統一般配有少量的存儲資源。這個特點決定了嵌入式操作系統必須盡可能的小。
常見的嵌入式操作系統有VxWorks、Linux、uClinux、RT-Linux、Windows CE.NET、Windows XP Embedded、eCos、Smartphone、Pocket PC、Symbian、Palm OS、Android。
CAWEP是一款以PC為硬件平臺,Windows為操作系統平臺的線切割輔助編程軟件。Windows CE可以看作是小型化的Windows操作系統,它是基于Win32 API重新開發的、新型的信息設備平臺。Windows CE不僅繼承了傳統Windows圖形界面,而且可以使用Windows95/98上的編程工具(如Visual Studio.NET、Visual C++)、使用同樣的函數、同樣的界面風格,使Windows上運行的絕大多數應用軟件經過修改和移植就可以在Windows CE平臺上繼續使用。開發周期短,節省人力、物力。正是因為Windows CE與Windows的一脈相承,使得CAWEP的移植成為可能。
相比于流行于市場的Linux,Windows CE開發周期短,內核完善,主要是應用層開發。而Linux的開發更適合在團隊合作下進行,Linux雖然開源,但是很多嵌入式驅動都需要根據硬件環境開發,需要較長的開發周期和人力;此外,Linux核心調試工具不全,調試不方便,尚沒有很好的用戶圖形界面,Windows CE的GUI豐富,開發工具強大;第三,Linux系統維護難度大。Windows CE系統類似桌面應用程序在開發簡便性方面具有較大優勢,在未來高性能便攜式設備領域,Windows CE系統的應用空間將十分巨大。
基于Windows CE嵌入式系統開發主要有系統設計、硬件設計、操作系統定制和應用程序開發4個階段,如圖1所示。

圖1 Windows CE產品開發流程
(1)系統設計
系統設計階段應分析嵌入式系統的具體需求,制定出完善的實施方案。主要包括性能指標分析、可靠性分析、硬件設計、成本核算、人員安排等。
(2)硬件設計
硬件是軟件的載體,軟件是為硬件服務的,沒有好的硬件,再好的軟件也是無用的。硬件設計主要任務是根據系統的功能要求,為目標平臺選擇適當的CPU和其它功能硬件,如果有滿足功能要求的成熟商業用品,也可直接使用。在開發初期,作者推薦盡可能使用成熟的商業產品,以便將開發的主要精力放在系統功能的實現上,加速開發進度。如果硬件選擇了商業產品,那么BSP包和驅動支持都可以從OEM商獲得。如果沒有可供利用的商業產品,也應盡可能選擇功能相近的產品,并在此基礎上加以改進,設計出滿足系統需求的目標硬件。在這種情況下,開發者只需對BSP包和驅動進行適當的修改即可。鑒于課題基于應用層的程序移植,為加速開發,則選擇市場成熟的ARM9系列S3C2440微處理器。
(3)Windows CE操作系統定制
硬件設計完成后,可以按預定方案進行操作系統的定制,根據需要對功能模塊進行裁剪,配置針對特定硬件平臺的Windows CE操作系統,并進行仿真調試,完成操作系統的功能性測試。最后導出SDK,供應用程序開發使用。
(4)應用程序開發
第3階段完成后,可進行應用程序的移植、編寫和調試。使用Windows CE提供的模擬器開發的程序代碼可以直接運行在真實的硬件設備上。
(1)Microsoft Win32 API&MFC和Windows CE APIs&MFC的不同點
Windows CE MFC類庫是桌面系統類庫的一個子集,有些類Windows CE完全支持,如文檔類CArchive。有些類不完全支持,指的是類中的某些函數被Windows CE支持,有些不支持,不支持函數經過修改后能得到支持,例如設備描述表類CDC,不支持坐標函數、區域函數;有區別的功函數如位圖函數、文本函數,這些需要改寫,以獲得支持,像TextOut函數在Windows CE中使用失效,以函數Ex-TextOut、DrawText替代輸出文本,使用中參數個數要改變,用不到的使用NULL代替。另外,有些類完全不支持,主要包括數據直接訪問DAO(Data Access Objects)、開放數據庫互連ODBC(Open Database Connectivity)、多文檔接口MDI(Multiple Document Interface)、對象連接與嵌入OLE(Object Linking and Embedding)、OLE復合文檔、OLE拖放特征、元文件(Metafile)等。最后,Windows CE自身有一些專用類,如命令條類CCeCommandBar、數據庫類CCeDBDatabase。總之在移植過程中,要找到與Windows CE不兼容的MFC或API,替換、修改,甚至重新編寫它們。
(2)存儲器的限制
考慮存儲器的限制,開發Windows CE.NET應用程序時,需嚴格控制程序對內存的消耗。主要手段包括:定制系統時或設計應用程序時,去除冗余的組件或代碼,節省內存;控制程序本身的大小,盡可能減少程序文件所占用的內存空間,如:減少程序中的資源文件的大小,從而使程序能在這樣少的內存環境中正確運行;盡量避免或簡化大量消耗內存的操作,如:盡量避免遞歸調用,否則容易造成堆棧溢出這種極難發現的錯誤,Windows CE.NET為每個線程分配的棧空間較小,而堆空間則相對較大,若確實需要大量使用內存時,可以采用在堆上動態申請的方法來替代,盡量控制靜態數組和靜態變量的大小,以減小程序占用的內存,使程序運行得更快;增加對WM_HIBERNATE消息的處理邏輯,WM_HIBERNATE消息是當內存嚴重不足時由Windows CE.NET系統產生的,是為防止內存不足問題的一種應急機制,程序在收到此消息后應立即釋放暫時不用的內存。
(3)字符集
CAWEP在VC編程環境下使用的ASCII文本需修改為Windows CE系統環境下使用的Unicode碼。通常使用前綴“L”來定義一個Unicode字符和字符串,如L“a”,L“GDUT&EDM”。在C++、C編程中,用WCHAR數據類型定義Unicode字符常量,如WCHAR wch;用WCHAR*定義字符串指針,如WCHAR*wcstr;用WCHAR name[n]定義字符串數組,如WCHAR wcStr[128]。雙模式字符和字符串可以使源代碼中的字符和字符串可以同時適應Unicode和ANSI編碼的操作系統,通常使用TEXT()、_T()宏定義,使得兩者兼容。如TEXT(“string”)、_T(“string”)。宏定義在SDK的tchar.h頭文件中。字符的轉換總結如下表,如圖2所示。

圖2 字符轉換總結表
此外,數據類型不匹配也會導致錯誤,如需將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),如測試和調試過程不同,界面大小,觸摸屏不同的操作方式,屏幕上沒有光標,系統只能讀到觸摸產生的位置信息,不支持鼠標中鍵、右鍵和滾輪消息。
因此,在設計Windows CE.NET應用程序時必須合理地設置消息讀取機制,窗口的位置、大小和風格。Windows CE設計了以長按代替右鍵,引入了一些為特定環境重新設計的窗體控件,新的控件包括菜單欄控件,能夠在一行的空間中同時提供菜單和工具欄功能,有效節省Windows CE設備較小屏幕空間。另外,Windows CE支持Windows上大多數控件,甚至有些比Windows好用,例如日期時間選擇控件和日歷控件,它們更適合手持設備使用。
此外,還需將VC上多文檔程序轉化為Windows CE支持的單文檔程序。重新編寫CAWEP的Main-Fram,Windows CE不支持多文檔接口,CAWEP采用多文檔CMDIChildWnd、CMultiDocTemplate、CMDIFrameWnd,需要全部清除改寫。
計算機輔助線切割數控編程系統CAWEP在Windows上運行的界面、功能模塊及結構關系如圖3、4所示。在將程序運行至硬件開發板前,先要完成設備同步,它是嵌入式應用程序開發的一個重要環節。采用基于PC的仿真器作為輔助開發工具時,由于仿真器的運行環境包括芯片類型和內存模式都是基于PC的,有些問題可能不會及時暴露出來,程序只有在下載到Windows CE.NET設備上時才能被發現。

圖3 CAWEP在Windows上運行的界面

圖4 CAWEP系統功能設計
移植完成后的CAWEP運行在Windows CE上,基本上繼承了在Windows環境下運行的絕大部分功能,能夠實現在設備屏幕上創建和編輯2D圖形、文件轉換、保存、仿真加工、模擬軌跡、生成輸出3B及ISO代碼(G代碼)。在線切割數控加工中,由于不能忽略電極絲直徑和放電間隙的存在,電極絲中心的行走軌跡往往與零件的設計輪廓并不重合,再加上一些特殊工藝,需要人為的對零件設計輪廓進行偏移,如圖5所示。在用戶選擇加工起點、加工方向后,生成走刀輪廓,如圖6所示。之后,即可點擊菜單欄中的“代碼生成”功能,選擇生成代碼類別,3B或者ISO代碼,將代碼文件保存,用文本文檔打開,如圖7所示。實驗結果表明CAWEP系統在Windows CE環境下運行穩定,高效可靠。
在后續的研究中,主要任務是不斷完善CAWEP可以在Windows CE上實現的功能。考慮添加加工工藝參數庫,幫助用戶合理地選擇加工參數,使得輸出的加工代碼更加精確化,再使用點對點協議(PPP)和串行線路互聯協議(SLIP)進行直接或撥號連接,傳輸代碼至解釋模塊,從而實現一體化控制線切割機床加工工件,形成價值產品,這種新型的加工控制方式,也將給用戶帶來全新的創意體驗。

圖5 加工偏移量選擇

圖6 加工軌跡生成

圖7 加工代碼輸出
未來的線切割數控軟件將不僅僅是編程工具,它將覆蓋更廣泛的內容,其中一個重要方向將是加工過程的最佳化控制。由于線切割加工機制的復雜性,智能控制理論將在這個方面發揮重要作用,因此專家系統,模糊控制系統等也將成為未來線切割數控軟件的重要模塊。
正值Windows CE操作系統被嵌入式領域廣泛應用的數字時代,于其平臺上應用軟件的開發需求已成為不可抵擋的趨勢。在掌握Windows CE與Windows應用程序之間的聯系和區別之后,將對Windows CE應用軟件的開發提供方便與科學依據。文中以天嵌TQ2440開發板為目標設備,研究了在Windows CE操作系統下利用Visual Studio 2005移植線切割數控編程軟件CAWEP,并對移植過程中的關鍵技術做了總結。希望對基于Windows CE應用程序移植者提供經驗借鑒。
[1]任重.Windows CE.NET與桌面Windows應用程序開發差異研究[J].電腦編程技巧與維護,2011,18(14):4-8.
[2]邵昌旭,陳默,趙萬生.嵌入式電火花線切割加工數控系統原型[J].電加工與模具,2012,150(2):17-20.
[3]吳文君,顧琳,徐笠云,等.基于ARM及嵌入式Linux的線切割數控系統開發[J].制造業自動化,2009,31(2):75-78.
[4]周振喜,戴國駿.Windows應用程序移植到Windows CE下的策略[J].計算機工程與設計,2004(9):1560-1562,1571.
[5]何宗鍵.Windows CE嵌入式系統[M].北京:北京航空航天大學出版社,2006.
[6]李尚柏,鐘睿,栗思科.基于ARM的嵌入式Windows CE系統高級開發技術[M].北京:清華大學出版社,2011.
[7]汪兵,李存斌,陳鵬,等.EVC高級編程及其應用開發[M].北京:中國水利水電出版社,2005.
[8]黃志剛.電火花線切割計算機輔助數控編程系統的研究和開發[D].廣州:廣東工業大學,2003.
[9]郭磊.基于ARM的嵌入式線切割系統設計與實現[D].南昌:南昌大學,2008.