微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的自动光学检测仪通信系统设计

基于CAN总线的自动光学检测仪通信系统设计

时间:12-13 来源:互联网 点击:

干扰。

2.3 CAN总线节点软件设计

CAN总线节点软件设计与整个系统的实时性和可靠性密切联系。本系统中各部分间的数据交换比较频繁,CAN总线上传输的数据帧包括有:1)主机发送的控制指令帧,主机控制着整个系统的工作模式,通过PCB板为好板或坏板的信号来控制分拣1和分拣2的运作;2)各控制部分传给主机的状态信息,将正在上板中、正在出板中或者系统故障等消息传给主机,方便操作人员实时了角整个系统信息;3)各控制部分之间的信息交换,如上板部分检测到一批PCB板检测完成,通知分拣部分出板的信号,任何部分检测到故障通知报警信号等。

  根据系统的实际情况未编写相应的软件程序。这里使用的XCl64CS单片机的CAN控制器遵循CAN V2.0B规范。报文缓存单元最多保存32个报文对象,每个对象的最大数据长度为8字节。每个报文对象有一个标识符和自己的控制和状态位集。通过控制相应寄存器来存放通信时发出或者接收到的数据以及报文寄存器组的设置。对报文寄存器进行初始化之后,报文缓存单元无需CPU监控就能够处理数据的接收和发送,简化了软件代码的编写。而CPU通过访问CAN控制器状态寄存器或者由CAN控制器以中断的方式通知CPU,即可得到当前通信状态,从而节省了CPU的占用时间。

2.3.1 CAN控制器的初始化

要实现CAN通信,首先要对CAN控制器进行正确初始化设置。初始化主要完成下面的工作:节点控制寄存器ACP/BCR的设定;CCE和 INIT置位;错误计数器最大值的设定;节点输出管脚的设定;节点传输速率的设定;给节点配置发送、接收消息体。对于XCl64CS,CAN控制器的初始化可以使用DAVE进行配置,来自动生成代码,也可以用户自行编写。初始化流程如图4所示。

以下为相应的程序代码:

2.3.2 CAN控制器的发送和接收程序

CAN模块初始化成功后,就可以用其来传送报文。节点向总线上发送报文的过程是:将待发送的数据打包成符合CAN协议的帧格式,写入发送缓冲区,并自动发送。数据帧一帧最多只能传输8个字节,大于8个字节的按照每8个字节为一帧传送,剩下不足8个字节的补成8个字节。可以在程序中直接调用 CAN_vTransmit函数即可实现发送数据,该函数定义如下:

接收数据有查询方式或中断方式。这里采用中断方式,要实现的功能是:进入中断接收程序,判断中断是否是接受中断;若是将数据读出缓存器并进行判断,再进入相应的命令和数据处理函数。控制器接收和发送流程如图5所示。

3 结束语

该自动光学检测通信系统已经实现且通过了联调,数据传送稳定,并已应用于PCB板面缺陷自动光学检测仪的控制系统。该自动光学检测通信系统满足可靠性和灵活性的高要求,实现控制系统各单元相对独立,各单元之间的连线简洁,使系统操作简单,使用可靠,取得了良好的使用效果。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top