3090|0

1148

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

基于CAN总线的多视觉传感器测控系统的设计2 [复制链接]

5   CAN总线通讯
    CAN总线是一个多主站现场总线,各节点都有权向其他节点发送信息,其协议简单,实时性强,可靠性及抗干扰能力好,总线利用率高,硬件成本低。主要特点如下:
1)CAN总线的任一节点在任一时刻都主动向网络上其他节点发送数据而不分主从,通过优先级确定总线为哪一节点所占用,通信灵活。
2)CAN总线上的节点可通过设置分为不同的优先级,用来满足不同的实时性要求。
3)CAN总线采用非破坏性总线仲裁,当多个节点同时向总线发送数据时,优先级低的节点主动停止发送数据,退出竞争,而优先级高的节点将拥有总线使用权,继续发送数据。
4)CAN总线具有点对点,一点对多点及全局广播等多种数据通讯传送方式。
5)节点间通讯位速率与节点间距离有关,总线最远通讯距离为10km,此时通讯速率为5kbps,最大通讯速率能达到1Mbps(通讯距离40m内)。
6)可根据报文的ID决定接收或屏蔽该报文,发送的报文遭到破坏后可自动重发。
7)可靠的错误处理和检错机制,节点在错误严重的情况下具有自动退出总线的功能。
8)报文不包含源地址和目标地址,仅用报文标志符来来指示功能信息和优先级信息。
5.1  CAN节点硬件接口
     CAN总线接口硬件部分主要由微控制器、CAN控制器和CAN收发器构成。CAN控制器实现了CAN通讯中物理层和数据链路层的功能,提供了与微控制器和总线的物理线路接口,这样用户只需编写符合自己通讯和控制要求的应用层协议即可。本系统中微控制器使用Philips公司的8位增强型单片机P89C668,CAN控制器和总线驱动器用的分别是Philips公司的SJA1000、PCA82C250来构成典型的CAN通讯节点。其硬件电路图如图3所示:
电路的核心部分是P89C668单片机,它以80C51为内核,具有ISP(在系统编程)和IAP(在应用编程)功能的片内Flash存储器,片内Boot ROM包含底层FLASH编程子程序,以实现通过串行口下载升级程序,拥有8K字节RAM(可外扩到64K)和64K字节FLASH ,还有4个中断优先级、8个中断源和4个8位I/O口,可方便地进行各种片内操作和片外扩展。CAN控制器相对于微控制器来说相当于一个存储器I/O映象设备,SJA1000片内有模式寄存器、状态寄存器、命令寄存器、中断寄存器和收、发寄存器等。单片机就是通过读写这些寄存器来实现对SJA1000的控制,芯片的TX0、TX1、RX0、RX1引脚用于CAN总线的接口,SJA1000的12M晶振由P89C668的外部晶振产生电路同时提供;PCA82C250是控制器与物理总线的接口,可提供对总线的差动发送和接收功能,其TXD、RXD引脚分别接收和发送经驱动后的信号,再由CANH、CANL接至总线传输介质(这里采用双绞线)上,同时还要注意CANH、CANL之间要加上120欧姆的终端匹配电阻才能保证总线的正常通讯。
5.2  CAN节点的软件设计
     CAN总线智能节点的软件设计主要包括三个部分:CAN节点初始化、报文发送和报文接收。CAN节点的通讯实质上就是对CAN控制器内部各寄存器进行读写,由于这些寄存器或发送、接收缓冲器均有确定的地址,CPU可通过外设访问指令对它们进行读写操作。系统上电复位后,CPU对SJA1000的各个控制寄存器写入相应控制字信息,以完成CAN控制器的初始化。本例中,系统软件采用结构化程序设计方法,程序具有较好的模块性和可移植性,对于不同的检测系统和应用环境,可以方便地进行程序重组。编程语言采用单片机C语言Keil C51,它具有较高的效率,可读性好,能够有效减轻系统软件编程的工作量。
CAN总线通讯的成功与否重点是SJA1000的初始化设置,初始化程序通过将CAN控制器的寄存器写入控制字,确定CAN的工作方式。用P89C668的P2.7作为片选信号与SJA1000的CS引脚相连,SJA1000的片内寄存器和P89C668单片机寄存器是重叠编址的,因此SJA1000寄存器寻址时要定义成片外RAM寻址。下面给出了CAN节点的初始化程序:
Init_Can (void)
   {   MODE = 0x09;  file://进入复位模式,对SJA1000进行初始化;
       CDR = 0x88;   file://选择PeliCan;
       CMR = 0x0C;  file://清除数据溢出和释放接收缓冲器;
       IER = 0x03;   file://开放接收中断和发送中断;
       ACR0 = 0x66; 
       ACR1 = 0x66;
       ACR2 = 0x66; 
       ACR3 = 0x66;  file://根据具体的协议定义设置验收码寄存器;
       AMR0 = 0xFF; 
       AMR1 = 0xFF; 
       AMR2 = 0xFF; 
       AMR3 = 0xFF; file://根据具体的协议定义设置验收屏蔽寄存器;
       BTR0 = 0x41;  
       BTR1 = 0x1B; file://12MHz晶振下,设置波特率为200kbps;            
       OCR  = 0XAA;       
       EWLR =0x60;       
 RBSA = 0x00; file://RX缓存器起始地址寄存器设置为0;
       TXERR= 0x00; file://发送错误接收器设置为0;  
   ECC =0x00; ?   
MODE= 0x08; file://单向滤波方式,进入正常模式,初始化完毕;
由于视觉传感器测控系统要进行视觉检测多为在线检测,实时性要求较强,这里各传感器节点采用中断接收方式接收上位机的控制命令,节点初始化后,当一帧信息经过出错检测确认为正确信息后装入接收缓冲器,SJA1000的INT脚会产生中断信号,该信号连接到单片机P89C668的外边中断0引脚,在外部中断0中断处理程序中判别该信息的标志符如果是本节点地址,便读出接收缓冲器的数据并保存在RAM中,中断接收程序框图如下:
系统中发送报文采用查询方式,传感器节点在收到主控机的数据请求命令后发送数据,发送模块首先进行状态查询,判定总线是否空闲,如空闲,则将目的节点地址写入发送标志符寄存器,数据写入发送缓冲器,完成一帧CAN信息发送。
CAN信息格式分为信息和数据两部分,头两个字节是信息部分,其前11位为标志符,标志符的前八位用作接收判断,应包含本信息包的目的节点地址,然后是一位RTR位(0为数据帧,1为远程帧,本例使用数据帧),最后是四位的DLC。其余八个字节为是数据部分,存有实际要发送的数据。本例中只用到前两个数据,第一个表示传感器地址,第二个字节表示选择传感器里的两路摄像机中的哪一路采集图像。
CAN节点之间通讯成功的另一个关键是波特率的设置,不仅CAN总线上的各下位机节点要设置相同的波特率,总线与上位PC机相连的USBCAN接口卡也要有相同的波特率,这样才能保证通讯畅通。由于USBCAN接口卡内的CAN控制器SJA1000用的是16M晶振,而各传感器节点内的SJA1000与P89C668使用12M晶振,因此对于不同的通讯速率一定要计算出两种晶振都相一致的BTR0、 BTR1来设置总线波特率。
6   结束语
    本文主要着重于多视觉传感器控制系统的设计研究,目前系统软硬件已初步调试完成,并能做到各个视觉传感器的快速切换传输视频图像,且切换是图像抖动较小,效果较好。在系统应用于视觉检测之前还必须对各视觉传感器进行标定以及系统的总体标定,系统标定完成后即可投入使用。本系统的精度主要由硬件决定,选用高精度、高分辨力的CCD摄像机和激光器,激光器投射出的线结构光越细光强分布越均匀,则测量精度越高。测量精度高必然导致测量视场范围小,而传感器有效视场大小又与相机同激光器的摆放夹角以及摄像机的内部参数有关,限于篇幅这里不再赘述。
    鉴于CAN网络的优良性能,能够快速、可靠的交换信息,特别适合多通讯节点的互连,形成多主机控制器局部网。本文探索了它在多视觉传感器测控系统上的控制应用,本视觉系统不仅要有较好的网络扩展能力,在系统工作过程中增减一些传感器节点不会影响系统工作,只需对软件进行少量修改即可,针对不同测量目标,视觉传感器里的激光器还可以换成卤素灯(传感器电路中预先留有电源接口),这样系统可很方便地面对不同测量任务。CAN总线驱动能力强、网络性能恰好,能满足不同测量系统的要求,系统节点数可灵活调整而不影响系统的可靠性。CAN总线网络性价比较高,可移植性强,本文所设计的多视觉传感器测控系统,已经成功应用于汽车车身在线视觉检测,而且稍作修改后能够适用于工业自动化领域中其他测量控制系统。
此帖出自汽车电子论坛
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表