胥 嫏,叶玉堂,吴云峰,何景秋,张薿文,岳 松
(电子科技大学 光电信息学院 四川 成都 610054)
在现代工业自动化生产中,涉及到各种各样的检验、生产监控及零件测量、识别应用等环节,然而通常人眼很难连续、稳定地完成这些带有高度重复性和智能性的工作,一般物理量传感器也较难实现这些功能。而利用光电成像系统采集被检测目标的图像,并经计算机或专用的图像处理模块进行数字化处理。与一般图像处理系统相比,自动光学检测[1]更强调精度、速度,以及工业现场环境下的可靠性。因此,这里提出一种基于CAN总线的自动光学检测通信系统设计方案,该系统设计能够满足PCB自动光学检测控制系统的指标要求。
自动光学检测系统具有快速准确、可重复性强以及自动化程度高等特点。自动光学检测技术的出现极大地减轻了人工检测的压力,解决了传统人工检测中的许多问题,提高了产品的检测质量和速度,为工业领域自动检测提供了革命性的解决方案。
分布式的现场总线能同时满足过程控制和制造业自动化的需要,成为了该自动光学检测系统的最佳选择。分布式的现场总线控制系统比集散型控制系统更好地体现了“信息集中、控制分散”的特点[2]。且分布式控制系统在适用范围、可扩展性、控制速度、系统模块化、可维护性、抗单点故障等方面具有明显优势。
控制器局域网(CAN)总线是一种在工业控制中应用的总线,带宽利用率高,纠错能力强,并且废除了传统的站地址编码,采用对通信数据块进行编码,可以多主方式工作;运用非破坏性仲裁技术,有效避免了总线冲突;短帧结构,数据传输时间短,受干扰的概率低,重新发送的时间短;每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适用于高干扰环境下;节点在错误严重的情况下,具有自动关闭总线功能,使总线上其他操作不受影响;可以点对点,一对多及广播集中方式传送和接收数据。因此,CAN总线满足该控制系统的数据总线要求[3]。
本设计采用英飞凌开发的16位微控制器系列中的XC164CS为控制器,并成功地将其应用到PCB板面缺陷自动光学检测仪的控制系统。
自动光学检测系统由上板部分、扫描正面、扫描反面、分拣1、分拣2以及主机共6部分组成,整个系统使用的电机有5类共19个、气缸11个以及各类传感装置若干。整个系统架构如图1所示。
图1 系统组成原理Fig.1 Structure principle of system
由于整个控制系统对实时性、稳定性以及协调性要求很高,整个控制模式分为制作标准板模式、单步运行模式以及检测模式,对于模式间转换的灵活性要求也很高。而分布式控制系统因其具有高可靠性、开放性、灵活性、协调性、控制功能齐全和易于维护等特点,完全满足本控制系统的要求。
分布式控制系统使用较多的网络拓扑结构有星型、环型和总线型3种。其中星型结构 (中央控制型)中所有通信都经中央控制节点,若中央控制节点有故障,则整个系统就会瘫痪;环型结构中相邻控制节点顺序连接,形成环路,信息一般仅以一个方向在环上从源节点传送到目的节点,发生故障时可支持双向传输,但环路一般封闭,不利于节点的扩充;而总线型结构的所有节点都共享一个公共的物理通道 (即总线),因此网络上的任意一个节点均可在任意时刻主动向网络上的其他节点发送信息,且具有延迟小、速度快、易扩展、单个节点故障影响小的优点。因此,该控制系统采用总线型拓扑结构[4],如图2所示。
图2 CAN总线系统图Fig.2 Structure diagram of CAN Bus system
为了保证控制系统的技术指标,完成实时数据处理和电路保护功能,并考虑到系统的扩展性,采用16位微控制器系列中的XC164CS。该芯片尺寸小、运算速度高,并集成有TwinCAN模块,该模块用于控制帧的自动发送和接收。该模块有2个全功能的CAN节点共享模块的资源,提供32个报文对象,它们可独立分配给2个CAN节点中的任意一个,还可以组合构成FIFO结构。每个报文对象分别对应有利于滤波的验收屏蔽寄存器。
全CAN功能和FIFO结构的灵活组合可满足复杂嵌入式控制应用的实时要求。CAN总线监控功能的增强以及报文对象个数的增加使得CAN的总线通信处理更加精确和方便。网关功能允许在2个独立的CAN总线系统之间进行自动数据交换,减轻了CPU负载,提高了整个系统的实时性。2个CAN节点的位定时都从主时钟得到,可通过编程使数据速率达到1 Mb/s。
CAN总线收发器采用英飞凌公司的TLE6250G,支持传送速率高达1 Mb/s,具有抗瞬变、抗射频和抗电磁干扰的特性,并具有宽泛的工作范围(-40~150℃),以及短路保护和过温保护功能。具体的CAN总线节点原理图设计如图3所示。
图3 CAN总线节点原理图Fig.3 Schematic diagram of CAN node
另外,总线连接时两端各加一只120 Ω的电阻,它们对于匹配总线阻抗起着相当重要的作用,可减少信号反射干扰。
CAN总线节点软件设计与整个系统的实时性和可靠性密切联系。本系统中各部分间的数据交换比较频繁,CAN总线上传输的数据帧包括有:1)主机发送的控制指令帧,主机控制着整个系统的工作模式,通过PCB板为好板或坏板的信号来控制分拣1和分拣2的运作;2)各控制部分传给主机的状态信息,将正在上板中、正在出板中或者系统故障等消息传给主机,方便操作人员实时了角整个系统信息;3)各控制部分之间的信息交换,如上板部分检测到一批PCB板检测完成,通知分拣部分出板的信号,任何部分检测到故障通知报警信号等。
根据系统的实际情况未编写相应的软件程序。这里使用的XC164CS单片机的CAN控制器遵循CAN V2.0B规范。报文缓存单元最多保存32个报文对象,每个对象的最大数据长度为8字节。每个报文对象有一个标识符和自己的控制和状态位集。通过控制相应寄存器来存放通信时发出或者接收到的数据以及报文寄存器组的设置。对报文寄存器进行初始化之后,报文缓存单元无需CPU监控就能够处理数据的接收和发送,简化了软件代码的编写。而CPU通过访问CAN控制器状态寄存器或者由CAN控制器以中断的方式通知CPU,即可得到当前通信状态,从而节省了CPU的占用时间[5]。
2.3.1 CAN控制器的初始化
要实现CAN通信,首先要对CAN控制器进行正确初始化设置。初始化主要完成下面的工作:节点控制寄存器ACR/BCR的设定;CCE和INIT置位;错误计数器最大值的设定;节点输出管脚的设定;节点传输速率的设定;给节点配置发送、接收消息体[6]。对于XC164CS,CAN控制器的初始化可以使用DAVE进行配置,来自动生成代码,也可以用户自行编写[7]。初始化流程如图4所示。
图4 CAN控制器初始化流程Fig.4 Flow chart of CAN initialization
以下为相应的程序代码:
2.3.2 CAN控制器的发送和接收程序
CAN模块初始化成功后,就可以用其来传送报文。节点向总线上发送报文的过程是:将待发送的数据打包成符合CAN协议的帧格式,写入发送缓冲区,并自动发送。数据帧一帧最多只能传输8个字节,大于8个字节的按照每8个字节为一帧传送,剩下不足8个字节的补成8个字节。可以在程序中直接调用CAN_vTransmit函数即可实现发送数据,该函数定义如下:
接收数据有查询方式或中断方式。这里采用中断方式,要实现的功能是:进入中断接收程序,判断中断是否是接受中断;若是将数据读出缓存器并进行判断,再进入相应的命令和数据处理函数。控制器接收和发送流程如图5所示。
图5 CAN硬件节点控制器接收和发送流程Fig.5 Receive and transmit by CAN node hardware controller
该自动光学检测通信系统已经实现且通过了联调,数据传送稳定,并已应用于PCB板面缺陷自动光学检测仪的控制系统。该自动光学检测通信系统满足可靠性和灵活性的高要求,实现控制系统各单元相对独立,各单元之间的连线简洁,使系统操作简单,使用可靠,取得了良好的使用效果。
[1]刘泉,胡文娟.基于机器视觉的PCB缺陷检测系统设计与研究[J].电子器件,2007,30(2):550-553.LIU Quan,HU Wen-juan.Design and research of machine vision based defect inspection system on PCB[J].Chinese Journal of Electron Devices,2007, 30(2):550-553.
[2]赵君,刘卫国,谭博.基于CAN总线的分布式多电机控制研究[J].测控技术,2007,27(8):70-73.ZHAO Jun,LIU Wei-guo,TAN Bo.Research on distributed control system of multi-motor based on CAN[J].Measurement and Control Technology,2007,27(8):70-73.
[3]Szabo S,Oplustil V.Distributed CAN based control system for robotic and airborne applications[J].IEEE on Control Automation:Robotics and Vision,2002, 3(11):1233-1238.
[4]杨晓华,侯巍,王树新,等.基于CAN总线的分布式控制网络设计[J].低压电器,2006(1):40-47.YANG Xiao-hua,HOU Wei,WANG Shu-xin,et al,Design of distributed control network based on CAN Bus[J].Low-voltage Electrical Appliances,2006(1):40-47.
[5]Infenion Technoloyies AG.16-bit single-chip microcontroller with C166SV2 core user's manual[Z].2004.
[6]朱凝华,范会兵.AT90CAN的CAN通信模块驱动设计及C编程[J].单片机与嵌入式系统应用,2009(8):68-69.ZHU Ning-hua,FAN Hui-bing.The CAN communication module driven design and C programming on AT90CAN[J].Microcontrollers&Embedded Systems,2009(8):68-69.
[7]李光耀,郭迎清,王海泉.基于 CAN总线的航空发动机分布式控制系统通信研究[J].测控技术,2009,28(1):62-69.LI Guang-yao,GUO Ying-qing,WANG Hai-quan.Communication research on CAN based distributed aero-engine control system[J].Measurement and Control Technology,2009,28(1):62-69.