APP下载

一种基于图编程的AOI运动控制系统设计

2014-09-15陈国龙张正荣邬惠峰

机电工程 2014年1期
关键词:梯形图内存编程

陈国龙,钟 靖,张正荣,邬惠峰*

(1.杭州电子科技大学计算机学院,浙江杭州310018;2.浙江欧威科技有限公司,浙江温州325000)

0 引 言

PCB-AOI(automatic optic inspection)全称是自动光学检测,是基于光学原理来对焊接生产中遇到的常见缺陷进行检测的设备[1-2]。目前,国内外该设备的运动控制系统基本都采用基于PC机的运动控制系统。基于PC的运动控制系统采用的运动控制卡,具有控制简单、性能稳定、精密度高等优点[3-4],但其运动控制功能固定,不可编程,若设备需要实现一些特殊的运动功能,而原先系统基本不能达到要求,只有寻求新的具有该功能的运动控制卡。其次,其容易受PC机操作系统稳定性及线程调度等影响,导致在运动过程中出现死机、线程阻塞等,且目前电脑PCI插槽越来越少,这些因素导致PCB-AOI急需寻找一种更好的开放式运动控制系统[5-7]。

本研究提出一种基于图编程、4层程序架构的PCB-AOI运动控制系统的设计,该设计采用内存共享技术,在引擎中嵌入梯形图,使得用户可以嵌入自己的运动算法,这种设计模块化,结构清晰,易移植,用户可以轻松实现复杂或者特定的运动控制算法和多轴同步控制[8-9]。

控制系统硬件采用CASS嵌入式PLC,该嵌入式PLC采用双核ARM芯片,性能稳定,控制简单,定位精度高,同时配有CASS嵌入式开发平台,方便开发[10-11]。

1 系统硬件结构

该系统的硬件主要由控制主机、多轴运动控制器(CASS嵌入式PLC)、光源系统、镜面反射系统、相机系统等构成,控制系统的硬件结构如图1所示。

其中,多轴运动控制器采用双核ARM、CPLD技术,使其对电机具有优越的控制性能:①多种控制功能(逻辑控制、定时控制、计数控制、顺序控制等)、数据采集、存储与处理功能、通信联网功能、输入输出功能、在线调试功能、梯形图编程等;②可以根据运动过程和目标的需求,实现多轴的同步运动控制和插补运动控制;③能够实现全闭环运动控制,保证控制的精度;④能够及时处理运动过程中出现的异常情况等。光源系统采用LED,使用电流大小可调的恒流源驱动,保证了在不同环境下,为相机提供足够的亮度。

图1 控制系统的硬件结构

系统在开始扫描PCB电路板前,首先,对各轴进行复位,各轴回到其限位原点,相机系统进行初始化,待点击开始检测后,上位机根据电路板的厚度,光源系统,相机系统运动到预设位置,打开光源,将电路板的图像经镜面反射系统传送到CCD相机上,CCD相机将图像进行预处理后传回给主机进行分析,整个扫描流程结束。系统设计人员在平台Y轴方向加上光栅尺,一方面由于光栅尺的加入,与控制系统形成全闭环控制,控制系统对位置的采样点直接作用于工作平台,使得控制精度更高。另一方面,光栅尺给CCD相机检测系统提供脉冲反馈,相机根据该脉冲进行图像采集。

2 系统软件架构

在综合目前AOI运动控制系统的不足以及对现有硬件的充分了解下,本研究提出了4层程序架构的系统软件设计,控制系统的软件架构如图2所示。

图2 控制系统的软件架构

(1)视图界面层。视图界面层为用户提供交互式操作界面,同时处理各类数据,运动方式,由用户在软件Visual Studio 2008上开发。本研究也开发了Demo软件,方便用户进行系统的运动控制测试。

(2)DLL层为各运动函数、读写操作函数封装,在此设定了用户数据,用户命令,进行了串口设置,实现了对下位机的读写操作,用户在编写视图界面层时只需直接调用该层即可。

(3)逻辑控制层,即梯形图程序层,包含了I/O逻辑和运动控制逻辑,数据命令的接口封装,是实现运动控制功能的核心,由于这种多层结构将逻辑和驱动分开,使得运动逻辑和运动算法独立于硬件,保证了控制器软件开发的开放性。

(4)引擎驱动层主要实现硬件驱动、通信管理和命令处理。硬件驱动主要包括PWM驱动输出、I/O驱动、电机方向控制及电机位置信息采集的处理等。

3 图编程实现原理

本研究采用杭州电子科技大学智能与软件研究所开发的CASS嵌入式开发平台,根据AOI运动控制逻辑,用符合IEE61131-3标准的梯形图编程语言编写对应的梯形图程序。通过预编译器将梯形图程序编译成与目标CPU无关的中间代码;由代码生成器将中间代码翻译成目标CPU的C代码或汇编代码;再由编译链接程序调用该代码,编译生成对应硬件平台控制器的专用机器语言,嵌入到引擎驱动层中,构成系统运行程序。在CASS嵌入式PLC系统中,主CPU在其内存的全局变量区开辟一片空间CassMem,主卡CPU内存分配如图3所示,用于存放PLC运行程序的软元件,根据软元件的不同,分为M(辅助继电器)、X(输入继电器)、Y(输出继电器)、VD(数据存储器)、S(状态器)、T(定时器)、C(计数器),并用这些软元件来管理系统的内存分配。同时为了实现PLC对运动过程的控制,本研究还在CassMem中专门开辟一片区域用于存放运动控制相关的数据和命令,其中辅助继电器M用于存放运动控制命令和运动状态,数据寄存器D用于存放运动数据。CassMem中各软元件的功能说明如表1所示(其中,x代表轴号,其值为0~6)。

表1 运动参数内存对照表

有了这些运动控制指令和数据参数的支持,用户只需将相关参数和运动轨迹或者运动算法通过梯形图逻辑描述,便可定制各类运动,这极大地保证了该设计的可编程性和开放性。图编程是该设计的核心,其与各层间的交互方法在后文将会详细阐述。同时在该系统设计中加入各类错误检测逻辑,保证在系统遇到突发错误时能够及时检测,并做出相应动作,保证安全。如定点运动,上位机传递有关的控制参数(如坐标零点、起始位置、加减速度、目标位置、运动模式、操作等),AOI平台即完成指定的运动。电机运行的一个梯形图简例如图4所示。该简例展示了通过软元件编程实现的电机运行。

图3 主卡CPU内存分配

图4 电机运行

4 DLL层与逻辑控制层的交互

本研究利用串口通信模块使DLL层与逻辑控制层进行交互,即实现对梯形图层中软元件的读写。

交互的关键:①保证通信的稳定和安全性;②将梯形图中的各软元件与内存中的实际物理地址的转换。

串口通信采用主请求/从响应模式,ModBus协议,即保证了通信的安全和稳定性,其数据帧格式如表2、表3所示。地址转换则是根据内存分配方式计算其真实物理地址。一个两层间的交互过程图如图5所示。在DLL层中先寻找可用串口,初始化板卡,若有读写操作,则进行地址转换,改变梯形图层相应数据,进而执行相应动作。

表2 主站发送帧的格式

表3 从站发送帧的格式

图5 DLL层与逻辑控制层交互的实现

5 逻辑控制层与引擎驱动层的交互

逻辑控制层和引擎驱动层是通过内存共享来进行交互的,主要体现在两层之间的执行关系和数据交互上。两层程序分别储存在主卡CPU的Flash上,其中引擎驱动由Keil平台编译器编译成目标二进制文件,逻辑控制层程序经过一系列编译后,生成支持硬件控制平台的专用机器语言,嵌入到引擎驱动层中,完成系统运行程序。

逻辑控制层和引擎驱动层的执行关系如图6所示,其中BootLoader程序是系统程序下载的引导程序,其工作原理为:在上位机有更新系统软件程序的请求时,BootLoader程序首先通过串口接收待更新的程序,然后将程序写入指定的flash程序存储区;若上位机无更新软件程序的请求,则直接跳入主程序。

在进入主程序后,系统首先执行初始化程序,即对硬件端口初始化、参数初始化、内存空间分配等,然后进入主循环,等待触发任务。

从任务角度来看,该系统的任务主要有3类:梯形图扫描任务、运动控制任务和通信任务。其中,梯形图层为周期扫描任务,由定时器触发,为了保证对运动控制命令的快速响应,本研究只在中断中置起事件标志位,而不进行周期扫描,具体的周期的扫描则在主循环中进行。运动控制任务和通信任务都由事件触发,运动控制任务由梯形图扫描程序触发,当程序检测到有运动任务时,就调用相关的运动指令,执行运动输出。通信任务则为梯形图根据逻辑过程进行触发,同理为了保证数据完整性,在中断处不处理数据,仅置起事件标志,所有数据都在循环中处理。

图6 逻辑控制层与引擎驱动层的执行关系

逻辑控制层和引擎驱动层之间的数据交互则是通过内存共享,如上所述,逻辑控制层用软元件来管理内存分配,即在主卡的内存中使用一段空间作为两层之间公共数据区CassMem,两层间数据处理都来自该公共数据区,实现内存共享。

6 系统应用

根据本研究的设计方法设计出来的基于图编程的运动控制系统AOI的实物图如图7所示。PCB-AOI在一般情况下扫描一块PCB板时的运动参数及误差精度表如表4所示。其中扫描来回一次称为一次扫描,一块小型PCB板要扫描3次才能完成,设定伺服驱动器每旋转一圈的脉冲为10 000,电机齿轮周长为20 mm,即脉冲比为500 p/mm(脉冲每毫米),从表4中可以看出,实际效果满足PCB-AOI运动精度要求,且运行稳定。

图7 基于图编程的运动控制系统AOI实物图

表4 实际扫描参数及误差精度表

7 结束语

针对当前AOI采用的基于PC机的运动控制系统,其运动控制功能固定,不可编程,本研究提出了一种基于图编程,4层程序架构的PCB-AOI运动控制系统的设计。该设计使得系统的开放性非常高,用户对于不同机型、不同运动方式,嵌入自己的运动算法,从而轻松达到运动需求。同时经实践证明,该系统运动控制精度高,运动功能全,实时性强,开放性高,具有很大的推广价值。

[1]姚利新,张武学,连军莉.AOI系统在PCB中的应用[J].电子工业专用设备,2004,33(5):25-27.

[2]胡跃明,谭 颖.自动光学检测在中国的应用现状和发展[J].微计算机信息,2006,22(4):143-145.

[3]丁 宁.基于PCI总线运动控制卡及WDM驱动程序设计[J].自动化技术与应用,2008,27(2):90-92.

[4]曹 旗.基于PCI总线机器人运动控制卡的研究与设计[J].仪器仪表用户,2007,14(6):30-31.

[5]李春木,章明众,郑新武,等.EtherCAT总线在伺服运动控制系统中的应用[J].机电工程,2011,28(11):1336-1338.

[6]李志洲,郑民欣,王锦锦,等.基于EtherCAT网络的三轴伺服控制系统设计[J].组合机床与自动化加工技术,2012(2):63-65,71.

[7]卫 光,郭 坤.三伺服枕式包装机电子凸轮控制系统的研究与应用[J].包装与食品机械,2012(6):57-59.

[8]SHI Xiao-juan.The Design and Implementation of Motion Control Card based on DSP[C]//2010 Global Conference on Digital Design and Manufacturing Technology.Hangzhou:[s.n.],2010:427-431.

[9]彭 胜,孙志刚,肖 力.一种基于DSP和CPLD的运动控制卡的设计[J].机电技术,2010,33(4):42-45.

[10]卢冠军,严 义,赵健勇.基于ARM的双CPU协调运动控制系统[J].机电工程,2012,29(8):985-988.

[11]陆小健,李 强,丁苗江.基于Cortex-M3的电动医疗床驱动与控制系统[J].机电工程,2012,29(8):954-957.

猜你喜欢

梯形图内存编程
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
“春夏秋冬”的内存
基于VC的梯形图编程软件开发技术
继电器电路转为梯形图教学经验浅谈
PLC梯形图程序设计技巧及应用
基于内存的地理信息访问技术