1工位状态
根据上一节的分析,片盒、对中工位、清洗工位都可以作为一个整体,这个整体有几个状态,如图3所示,分别是工位空闲、工位进片、工位有片、工位工艺运行、工位工艺完成、工位出片,工位的状态在其运行中循环往复(见图3所示)。取片的过程;出片完成后工位的状态又回到了空闲状态。按照面向对象的设计方法,全自动单片清洗设备的对中工位、清洗工位可以抽象程序中的类,这些工位有基本相同的成员变量和成员函数。它们共同的成员变量为工位状态,共同的成员函数为工位进片,工位出片,工位工艺运行。由此可以设计出全自动单片清洗设备的类的静态图如图4所示。
2机械手的同步控制
机械手在设备运行的状态有机械手空闲、机械手工位n取片、机械手工位n放片等状态,当机械手处于空闲状态时,各工位需要竞争机械手的使用权,争取到使用权后机械手的状态就变为工位取放片状态,没有竞争到的机械手就需要等待下一次机械手空闲时再竞争机械手。因为各工位可能会同时竞争机械手,这就需要引入机械手的同步控制。Windows支持4种类型的同步对象,可以用来同步由并发运行的线程所执行的操作:临界区,互斥量,事件,信号量,这里使用事件来实现机械手的同步控制。机械手事件定义为机械手空闲事件,使用SetEvent()函数将事件设为有状态,使用WaitForSingleObject()函数查看事件的状态,查看到机械手空闲事件无状态时线程阻塞,机械手空闲事件有状态时程序向下运行同时机械手空闲事件自动变为无状态。通过机械手空闲事件,各工位竞争机械手的问题就得以解决。
3工位自控制
通过设备中工位的状态和机械手的状态,工位可以自己判断下一步的动作。工位的运行流程如图5所示。线程启动后,循环进行三个判断,分别为工位进片判断,工位工艺运行判断,工位出片判断。图5工位运行流程如果机械手状态为机械手工位进片,程序就进入工位进片分支,这时机械手被占用,其他工位竞争不到机械手。进入工位进片分支后首先设机械手状态为机械手工位进片,工位状态为工位进片,然后执行机械手进片程序,工位进片完成后置工位有片,置机械手空闲,工位进片程序分支结束,程序继续循环。当程序判断到工位有片时,程序进入工艺运行分支,首先置工位状态为工位工艺运行,然后运行工艺,工艺运行完成后置工位状态为工位工艺完成,工位进片程序分支结束,程序继续循环。当程序判断到下一工位空闲、工位工艺完成并且机械手空闲时,程序进入工位出片分支,首先设机械手状态为机械手工位出片,工位状态为工位出片,然后执行机械手出片程序,工位出片完成后置工位空闲,置机械手下一工位进片,工位出片程序分支结束,程序继续循环。每个工位都有线程循环判断工位状态和机械手的状态,控制自身的运行,这样就形成了工位自控制的自动运行情况。如果工位为两个,设备的运行时序如图6所示,从片盒出片到片盒进片完成是一个晶片的运行周期,在周期内又有晶片开始运行,形成了各工位并行的状态,这种运行时序充分的利用了机械手,提高了设备效率。
4结束语
使用工位自控制的方法完成全自动单片清洗设备的自动运行软件设计,可以减少主控程序的运行逻辑控制,将自动运行的控制分散到各个工位,使程序结构清晰、复杂度下降,各工位并行工作,有利于提高设备的效率。由于工位出片时需要判断下一工位是否空闲,需要工位的运行顺序是固定的,如果工位的运行顺序不固定,还需要做另外的处理以保证工位的自控制。
作者:高建利 单位:中国电子科技集团公司第四十五研究所