电火花线切割加工数控系统向Windows CE平台移植的研究

2015-04-26 08:24魏万根张永俊黄志刚
机床与液压 2015年3期
关键词:嵌入式操作系统内存应用程序

魏万根,张永俊,黄志刚

(广东工业大学机电工程学院,广东广州 510006)

0 前言

在我国蓬勃发展的基于PC的电火花线切割机床存在着严重不足之处。PC硬件结构复杂、可靠性差、体积大、功耗大,不仅影响了机床的运行稳定性,而且其硬件资源浪费严重。嵌入式系统的蓬勃发展,正好解决了这些问题。嵌入式系统为数控技术提供了一种灵活方便的,能够嵌入在工业系统内部,在工业极端环境里能够连续长期稳定可靠工作的微小型廉价的控制系统。文中深入研究基于32位ARM平台和嵌入式Windows CE操作系统移植一个具有加工代码检查分析、插补计算、插补输出、加工异常处理等多功能模块的嵌入式控制系统CAWEP,既有专用性又有一定的通用性。该嵌入式线切割系统平台可以满足嵌入式系统的实时性要求,功能可以扩展和裁减,易移植,应用的范围广阔,具有很好的前景,对建立我国自己的工业控制体系将具有巨大的意义。

1 嵌入式系统

1.1 概念

嵌入式系统一般指非PC系统,它是相对于通用计算机(微型、小型、大型计算机系统而言),嵌入式系统将自己隐身(嵌入)于各种设备或装置内部,并根据设备、装置的要求发挥其独特的作用(如计算、处理、存储、控制等),该系统有着与通用计算系统完全不同的技术要求和发展方向。

通用计算机采用标准化、模块化的设计理念,技术要求是高速、兼容性好、海量信息处理;技术发展方向是处理速度、总线宽度和存储容量的最大化。而嵌入式系统是针对性较强的设计,技术要求是满足具体功能要求和高可靠性;技术发展方向是在保证功能要求和可靠性的前提下,追求低成本、小体积和低功耗。

1.2 嵌入式操作系统的特点

嵌入式操作系统是一种支持嵌入式系统的操作系统,主要特点如下:

(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。

2 Windows CE移植平台

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系统的应用空间将十分巨大。

3 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提供的模拟器开发的程序代码可以直接运行在真实的硬件设备上。

4 移植的关键技术

(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,需要全部清除改写。

5 移植后的效果图

计算机辅助线切割数控编程系统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 加工代码输出

未来的线切割数控软件将不仅仅是编程工具,它将覆盖更广泛的内容,其中一个重要方向将是加工过程的最佳化控制。由于线切割加工机制的复杂性,智能控制理论将在这个方面发挥重要作用,因此专家系统,模糊控制系统等也将成为未来线切割数控软件的重要模块。

6 结束语

正值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.

猜你喜欢
嵌入式操作系统内存应用程序
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
删除Win10中自带的应用程序
“春夏秋冬”的内存
典型实时嵌入式操作系统应用分析
谷歌禁止加密货币应用程序
计算机嵌入式操作系统分析
基于嵌入式操作系统的工业采集板设计
应用服务型人才培养体系下的嵌入式操作系统教学改革探索
基于内存的地理信息访问技术
三星电子将开设应用程序下载商店