东北大学信息科学与工程学院/ 关守平、鲍芳
E-mail:Internet16@163.com
针对半导体行业的IC/晶圆划片机,基于PC机开发了软件系统,实现了对划片机的精确实时控制和数据管理。采用C++ Builder6.0作为软件开发环境,应用ActiveX组件和多线程等技术,并提出一种在缩放坐标系中精确绘制图形的算法—误差搜集算法,使开发的划片机软件系统满足了工业生产的需要。
IC(Integrated Circuit)/晶圆划片设备是集成电路半导体加工后封装工艺中的重要组成部分[1][2],它广泛用于厚膜电路、铌酸锂、石英等脆硬材料的开槽划片加工,也适用于划片和切割各种晶体、陶瓷、玻璃、矿石和金属等。自20世纪70年代初划片机问世以来,诸多国家都积极投身于这一领域的研究。我国起步时间较晚,直到1982年才研制成功第一台国产划片机,在此之前,我国的划片机完全依赖进口。现如今,虽然我国划片设备的硬件水平已有了很大程度的提高,但对划片机的软件控制和管理水平,与国外相比还很落后。因此,开发先进实用的划片机的控制与管理一体化的软件系统,进一步提高划片机的控制精度和管理水平,显得必要而又非常迫切。
基于PC机控制的划片系统结构
按照物理结构可以分为三部分:上位机、下位机和执行机械[3][4],各部分间关系见图1。
上位机主要由建立在Windows(98、2000、XP)操作系统上的控制软件构成,用户通过人机交互界面下达加工指令,与下位机即控制器通过串行通信来交换数据。上位机发出的指令到达控制器后,经过控制器中的单片机进行计算后,驱动步进电机的进行精确划片或切割。
上位机控制软件的设计
◎总体结构设计
考虑到与硬件联系紧密、可靠性要求高、需具有可移植性等特点,采用Borland公司的快速开发工具C++ Builder6.0作为开发平台[5][6]。软件主要由算法与图形显示模块、多线程处理模块和串口通信模块组成。
算法与图形显示模块能够根据用户的给定条件进行计算,并应用误差搜集算法进行图形的精确显示。它可使用户看到完整的刀具运动轨迹和切割的过程,如刀尖的即时位置、被切割下的晶片脱落情况等,解决了以往大部分控制软件的图形显示过快、已切割掉的部分与待切割部分连接在一起、图形不能显示真实加工情况的问题。
多线程能够完成多事件的处理[7][8],该处理模块主要完成在切割运行时,软件仍能响应用户合理操作的任务,但这种操作必须是符合逻辑的。如加工进行时可以暂停、暂停后继续和紧急停止等,但像修改原料的尺寸、加工片宽和改变电机转速等操作要求则不予响应。多线程的实现采用VCL中的TThread类来实现,调用了一些相关的API,说明如下:
// 建立新线程FirstThread,该新线程应用于TMyThreadUnit单元文件中
TThread *FirstThread;
FirstThread= (TThread*) new TMyThread (true);
//开始运行新线程
FirstThread->Resume ();
//把线程挂起,可以用Resume唤起
FirstThread->Suspend ();
//终止线程,不能够用Resume唤起
FirstThread->Terminate ();
串口通信模块主要完成与串行口的数据接收和发送。与串口的通信方式实现有很多方法,本系统采用第三方控件完成串口通信。控件选用MOXA 公司的Pcomm,它兼有API函数和MSComm控件两种方法的优点[9]。Pcomm有关通信函数及使用方法如下:
//串口打开函数
void __fastcall TCommForm:: OpenClick (TObject *Sender)
{
sio_open(1); //打开com1口
sio_ioctl(1, B2400,P_NONE|BIT_7|STOP_1); //设置波特率、奇偶校验、数据位、停止位
if (sio_open (1)! =0) //判断串口打开是否成功
ShowMessage(“串口打开失败!”);
}
//数据发送函数
void __fastcall TCommForm1:: SendClick (TObject *Sender)
{
String SendData;
SendData=Memo1->Text;
sio_write (1, SendData.c_str (), SendData.Length ());
}
//数据接收函数
void __fastcall TCommForm1::ReceiveClick (TObject *Sender)
{
int rLen;
char *buf=new char [1024];
String Buf;
rLen=sio_read (1, buf, 1024);
if (rLen==0) return;
Buf=AnsiString (buf, rLen);
Memo2->Text=Memo2->Text+Buf;
Memo2->SelStart=Memo2->Text. Length ();
Memo2->SelLength=0;
}
//串口关闭函数
void __fastcall TForm1:: CloseClick (TObject *Sender)
{
sio_close(1); //关闭com1口
exit (0);
}
◎功能模块设计
软件系统的功能模块包括加工文件定制、系统参数设定、计算与加工、数据库管理和用户管理,各模块间关系如图2所示。
加工文件定制模块包括文件导入和参数设定两部分。文件导入主要是满足对用户已经形成DXF格式的加工文件进行导入,系统能够自动识别其中的加工指令标记。另外,对于以前使用本软件时建立的加工文件,只要用户进行过存储,同样可以通过导入功能加载该文件。这样就大大提高了加工效率,用户不必花时间重复建立相同加工文件。参数定制则是用户按照软件给出的交互界面输入各种加工参数,如:原料尺寸、片宽、刀片厚度等,系统会自动计算可加工出的片数,并生成加工文件。
系统参数设定模块主要完成对电机、通信端口的参数设置及硬件的测试。加工过程中有四个电机,一个主轴旋转电机,三个步进电机,只有对它们的转速进行正确的设置,加工出的晶片才能符合要求。系统根据专家经验提供了几组匹配的给定值,便于用户使用,当然用户也可以根据自己的实际要求对电机参数进行设置。由于上位机与下位机通过串口通信,需要设置串口的通信端口号,软件同样提供了一些端口供用户选择。补偿参数设定是对精度控制的重要环节,其中设置了后冲补偿、丝杠误差和齿轮啮合误差等参数,用于保证加工精度。为了检测对有关硬件的设置是否有效,可以通过硬件测试来完成。在这一部分,用户能够看到原料被加工的模拟图形和硬件通信是否正常的显示,非常直观。
计算与加工模块是软件的核心,它能够完成对输入参数的精确计算,包括英制尺寸与公制尺寸的转换、包含加工补偿在内的计算并给出原料的加工剩余。用户可以自由选择加工方式,自动加工就是系统可以根据已经导入的文件或设置好的参数进行全过程的自动加工,只要按下“加工”按钮后如无紧急情况就不再需要人工干预;在自定义加工中,用户可以自由选择加工到哪个位置后停止、是否在停车位置继续加工还是运动到另一位置,使用起来灵活、方便。
数据库管理主要是对加工文件所存储的数据库进行定期的整理和数据备份、恢复等[10]。系统能够按照一定的规律提取出加工文件的特征,根据这些特征和加工文件最近的使用记录进行综合考虑,定期删除一些冗余的文件。除了系统的定期数据库备份外,用户可以根据自己的需要随时或指定日期备份和恢复数据库。
用户管理主要包括用户常规管理和权限管理。常规管理完成增加、删除用户和修改用户密码;权限管理完成对各级权限的分配和调度,如哪些用户可以修改系统的硬件参数、哪些用户可以对数据库进行维护、哪些用户只能修改自己的登录密码等。另外系统还有登录日志和加工记录等辅助功能。
误差搜集算法
◎算法的提出
划片机要求控制软件能够实时显示刀具的运动轨迹,但目前许多类似的控制软件,都不能精确地显示出具体的加工过程,往往只是显示合理性范围内的一种尺寸示意。
众所周知,显示器的屏幕大小有限,不可能按照实物的规格来显示,因此需要改变坐标系上的刻度单位来实现缩放,但因此会使显示器屏幕上的每个像素点代表的长度大小有所变化。如用50个像素点代表0.5mm,那么一个像素点就代表0.01mm,表示图形显示能达到的精度是0.01mm;如用50个像素点代表10mm,那么一个像素点就代表0.2mm,表示图形显示能达到的精度是0.2mm。(注意:图形显示能达到的精度并不代表加工系统切割物件能达到的精度。)从以上的实际数字举例可以看出,随着被加工物体的增大,坐标系的单位刻度应该增大,那么每一像素代表的长度就会增加,图形显示能达到的精度就会下降。
然而在实际应用的过程中,往往要求的精度是百分之几个毫米,也就是说,要满足实际应用的精确度,仅用坐标缩放的方法来进行图形绘制的处理是远远不够的,它的具体表现就是,每切割一刀,小于一个像素所代表的小数部分的数据就会被系统截掉,随着加工片数的增加,截掉的小数部分造成的累积误差越来越大,达到人眼的分辨率时就能看出图形显示不合理的程度。
◎算法的实现
为了解决以上遇到的累积误差问题,可以采用误差搜集的算法。该算法的原理就是将每次切割产生的小于一个像素所代表的小数部分的数据保存起来,进行累加,用这个累加结果与一个像素所代表的长度大小进行比较;如果这个累加结果大于或等于一个像素所代表的长度,就在显示图形时多显示一个像素,并在累加总和中减去一个像素所代表的长度,剩下的部分继续与每次切割产生的小于一个像素所代表的小数部分的数据进行累加;如果这个累加结果小于一个像素所代表的长度,则持续累加过程。
下面用具体数学表达式详细说明这一过程。
设每一像素代表的长度为UnitLength,切割的刀数序号为CutNo(CutNo=1,2,3…),切割的总刀数为TotalCutNo,每刀切割的片宽为CutWidth(假设片宽大于一个像素代表的长度,即CutWidth>UnitLength),每片误差(即每次切割产生的小于一个像素所代表的小数部分的数据)为UnitFraction,累积误差为Fraction,可写为:UnitFraction=CutWidth-UnitLength
当CutNo=1时,Fraction=UnitFraction;
如果Fraction> UnitLength,显示图形时多显示一个像素,Fraction=Fraction- UnitLength;如果Fraction< UnitLength,不做任何操作。
当CutNo=2时,
Fraction=Fraction+UnitFraction;
如果Fraction> UnitLength,显示图形时多显示一个像素,Fraction=Fraction- UnitLength;如果Fraction< UnitLength,不做任何操作。
当CutNo=3时,
Fraction=Fraction+UnitFraction;
如果Fraction> UnitLength,显示图形时多显示一个像素,Fraction=Fraction- UnitLength;如果Fraction< UnitLength,不做任何操作。
依此类推,直到CutNo=TotalCutNo过程结束。图3表示了这一流程:
以上讨论的前提是假设片宽大于一个像素代表的长度,如果片宽小于一个像素代表的长度,使用该算法可能会产生一些局限,如有时会看到刀具反复在一条直线上运动,切割数刀后,才能看到有切割出的片宽。这是由于被加工的物体较大,需要切割出的片非常薄(小于一个像素代表的长度)造成的,只有累积数片的长度达到一个像素后,才能看到明显的片宽。这种情况极少遇到,因此该算法足以满足大部分精密加工的要求。
结语
IC/晶圆划片机软件系统采用面向对象的RAD开发工具,应用了ActiveX组件和多线程等先进技术进行开发。系统中实际应用的误差搜集算法,可以保证图形的显示尺寸误差最大不超过一个像素,也解决了大部分控制软件的图形显示仅限于示意程度的问题,基本达到了“实时显示”的要求。上述先进技术的应用,保证了划片机控制与管理软件系统的先进性和可靠性,受到了划片机应用厂家的好评。
参考文献:
[1]冯晓国,张景和,张承嘉,何惠阳. IC封装设备划片机的研制[J]. 仪器仪表学报,2003(S1)
[2]袁惠珠. 划片机定位精度的设计[J]. 仪表技术与传感器,2003(7)
[3]Man Lin. Synthesis of Control Software in a Layered Architecture from Hybrid Automata [J]. Lecture Notes in Computer Science, Volume 1569/1999:152
[4]Manfred Dresselhaus, Jörg Kirchhof. Object-Oriented Design in Real-Time Embedded Robot Control Software [J]. Lecture Notes in Computer Science, Volume 1840/2004:271-281
[5]庞启明,田云辉,谢驰. 基于C++ Builder的活塞环外圆轮廓仪控制软件[J]. 计算机应用,2000(8)
[6]王凯宇. 略谈用Delphi开发工业控制软件[J]. 机械设计与制造工程,2000(3)
[7]骆斌,费翔林. 多线程技术的研究与应用[J]. 计算机研究与发展,2000(4)
[8]石玗,樊丁,黄勇,顾玉芬. 基于DOS系统的实时多任务控制软件设计方法研究[J]. 甘肃工业大学学报,2001(4)
[9]朱午光,周斌,李文印,贺金鑫,佟志臣. 基于组件技术(COM)的工业控制软件的开发与应用[J]. 工矿自动化,2004(5)
[10]吴剑强,荣冈. 先进控制软件集成实时数据平台的分析与设计[J].