基于CAN总线的机械手通信协议的设计与实现
2014-07-04刘玉倩刘永进宋文超
刘玉倩,刘永进,宋文超
(中国电子科技集团公司第四十五研究所,北京101601)
机械手可在空间抓放物体,动作灵活,广泛应用于工业自动化设备。目前许多商品化的机械手大都采用封闭结构的专用控制系统,一般采用专用计算机作为上层主控计算机,使用专用语言作为离线编程工具,采用专用微处理器,并将控制算法固化在EPROM 中,这种专用系统很难进行扩展、修改或再集成外部硬件和软件。本文所研究的机械手以半导体设备为应用实例,开发了气、电混合驱动的三自由度圆柱坐标型机械手,并根据其控制要求设计了基于CAN 总线的机械手通信协议,可实现自动运送硅片或晶圆片到各个工艺位置,并且可根据晶圆片尺寸及工艺要求更改相关控制参数。
1 系统结构
在自动化生产线上,机械手一般由控制系统,驱动系统以及机械本体执行系统组成。执行和驱动系统主要是通过启动或其他动力来驱动机械部件的运转来实现取件的功能。控制系统是通过对驱动系统进行控制,使执行系统按照预定的工艺进行操作。本文所研究的机械手结构如图1所示。
图1 机械手结构图
本文所研究的机械手采用安川MP2300 运动控制卡作为下位机,与上位机之间采用CANopen 总线通讯,其控制系统通信拓扑结构如图2所示。
2 CAN 总线通信协议的设计与实现
图2 机械手CAN 总线通信原理图
CANopen 为基于CAN 总线的高层协议,它基于CAN 总线的数据链路层和物理层,对应用层做出了相应的规定。一个CANopen 设备模型分成三部分:通讯接口、对象字典、应用程序。通讯接口提供在总线上发送和接收通讯对象的服务。对象字典描述了所有的数据类型、通讯对象以及设备制定的对象,是连接应用和通讯之间的媒介。应用层提供了内部控制功能,也提供了与硬件连接的接口。本文基于CANopen 协议实现机械手的通讯。
2.1 通信协议设计原理
根据机械手的功能要求,设计PC 机与下位机之间的通信连接线,需要12 个输入信号和12 个输出信号来完成通信功能,具体的通信协议见下所述。PC 机输出信号如表1所示。
PC 机输入信号如表2所示。
2.2 软件程序实现
软件编程的实现,在Windows 平台下,使用VC++6.0 作为开发工具。Copley 公司提供了功能强大的复层运动控制库。本文主要使用CANopen类、IOModule 类以及Error 类来实现。主要的功能实现函数如下:
CANOpen 总线通信程序,打开CAN 卡并进行相关参数设置:
表1 上位机-〉下位机指令
表2 下位机-〉上位机指令
上位机输出执行函数:
int Down_QuickStop(); //机械手紧急停止
int Down_DontMove(); //机械手不动作
int Down_LoadBoxGetWafer(UINT uLayer,UINT nSize); //送片盒取片
int Down_UnloadBoxSetWafer(UINT uLayer,UINT nSize); //放片盒放片
int Down_AjustGetWafer(UINT nSize); //定位机构取片
int Down_AjustSetWafer(UINT nSize); //定位机构放片
int Down_QiangGetWafer(UINT nSize); //腔体卡盘取片
int Down_QiangSetWafer(UINT nSize); //腔体卡盘放片
int Down_SearchHome(); //寻原点
int Down_GoHome(); //回原点
int Down_ScanWafer(UINT nSize); //硅片扫描
int Down_ALarmReset(); //报警复位
int Down_Vacum(bool m_bValue); //开关真空
上位机输入信号状态函数:
int Up_Error(); //机械手发生故障
int Up_Busy(); //机械手忙,不接受新指令
int Up_LoadBoxGetWaferSucess(UINT uLayer,UINT nSize); //送片盒取片成功
int Up_UnloadBoxSetWaferSucess(UINT uLayer,UINT nSize); //放片盒放片成功
int Up_AdjustGetWaferSucess(UINT nSize); //定位机构取片成功
int Up_AdjustSetWaferSucess(UINT nSize); //定位机构放片成功
int Up_QiangGetWaferSucess(UINT nSize); //腔体卡盘取片成功
int Up_QiangSetWaferSucess(UINT nSize); //腔体卡盘放片成功
int Up_SeachHomeSucess(); //寻原点成功
int Up_GoHomeSucess(); //回原点成功
int Up_ScanWaferSucess(UINT nSize); //硅片扫描成功
int Up_AlarmResetSucess(); //报警复位成功
int Up_ScanWaferResult(UINT nLayer); //硅片扫描结果
int Up_VacumSucess(bool m_bValue); //开关真空成功标志
4 结束语
利用CAN 总线技术,在Windows 环境下使用VC++6.0 进行软件编程,提高了控制系统的实时性和可靠性。当机械手工艺位置增加时可增加IO节点,扩展通信协议,满足设备工艺要求。通过在半导体设备中的应用表明,该机械手运行可靠,能够完全满足设计要求。
[1]阳宪惠.现场总线技术及应用[M].北京:清华大学出版社,2008.
[2]邬宽明.CAN 总线原理与应用系统设计[M].北京:北京航空航天大学出版社,1996.