资源描述:
《基于can总线分布式控制系统智能节点的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于CAN总线分布式控制系统智能节点的设计
2、第1...前言现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(ControllerAreaNetC68376、PoCP2510(具有SPI接口,方便MCU连接)等,使用独立的CAN控制器的潜在优势是,系统开发人员可以根据所需从众多种类的单片机中选择最理想的系统设计方案。设计的智能节点硬件电路图略(详见《电子产品世界》2002.10)。节点微控制器选用单片机80C196KC,CAN接口由独立控制器SJA10
3、00和CAN控制器接口芯片82C250组成。SJA1000在软件上和引脚上都是与它的前款PCA82C200独立控制器兼容的,并增加了许多新功能:标准帧数据结构和扩展帧数据结构,并且这两种帧格作为式都具有单/双接收过滤器;64字节的接收FIFO;可读写访问的错误计数器和错误限制报警以及只听方式等等。SJA1000有两种工作模式:BasicCAN模式和PeliCAN模式,其中PeliCAN模式全面支持CAN2.0B协议。SJA1000作为微控制器的片外扩展芯片,其片选引脚CS接在微控制器的地址译码器上,从而决定了CAN控制器各寄存器的地址。SJA1000通过CAN控制
4、器接口芯片82C250连接在物理总线上。82C250器件提供对总线的差动发送能力和对CAN控制器的差动接受能力,完全和“ISO11898”标准兼容。其引脚8允许选择三种不同的工作方式:高速、斜率控制和待机。在低速和总线长度较短时,一般采用斜率控制方式,限制上升和下降斜率,降低射频干扰,斜率可通过由引脚8至地连接的电阻进行控制。斜率正比于引脚8上的电流输出。为进一步提高系统抗干扰能力,在CAN控制器SJA1000和CAN控制器接口82C250之间加接6N137光电隔离芯片,并采用DC-DC变换器隔离电源。通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的
5、传输,因而总线两端接有终端电阻R1、R2,以消除反射信号,其阻值约等于传输电缆的特性阻抗。软件设计CAN总线节点要有效、实时地完成通信任务,软件的设计是关键,也是难点。它主要包括节点初始化程序、报文发送程序、报文接收程序以及CAN总线出错处理程序等等。CAN控制器芯片SJA1000的内部寄存器是以作为微控制器的片外寄存器存在并作用的。微控制器和SJA1000之间状态、控制和命令的交换都是通过在复位模式或工作模式下对这些寄存器的读写来完成的。在初始化CAN内部寄存器时注意使得各节点的位速率必须一致,而且接、发双方必须同步。报文的接收主要有两种方式:中断和查询接收方式
6、。为提高通信的实时性,文中采用中断接收方式,而且这样也可保证接收缓存器不会出现数据溢出现象。SJA1000的BasicCAN工作模式是与其前一款PCA82C200独立控制器相兼容的模式,而PeliCAN工作模式支持CAN协议中的更多功能,它的程序设计也与之有所不同。下面给出SJA1000工作在模PeliCAN式下的节点初始化、报文发送、报文接收的196汇编源程序。INITIALIZE:初始化子程序LDBAL,#09H;初始化模式寄存器进入复位模式STBAL,MODE;选择单滤波方式LDBAL,#88H;时钟分频器STBAL,CDR;选PeliCAN模式LDBAL,
7、#00HSTBAL,ACR0;初始化接收代码寄存器LDBAL,#60HSTBAL,ACR1LDBAL,#00HSTBAL,AMR0;初始化接屏蔽寄存器LDBAL,#3FH;只接收标识符为2,3的报文STBAL,AMR1LDBAL,#8FHSTBAL,IER;中断使能寄存器LDBAL,#01H;总线定时寄存器0、1的设置STBAL,BTR0;LDBAL,#1CH;在16MHz晶振情况下STBAL,BTR1;波特率设置为250LDBAL,#0AAHSTBAL,OCR;输出控制器寄存器设置LDBAL,#0H;接收缓存器起始地址设为0STBAL,RBSA;LDBAL,#0
8、1H;ORBAL,MODE;STBAL,MODE;返回工作模式RETTRANSMIT:;发送子程序LDBAL,SRSRCVE:JBSAL,4,SRCVE;正接收?STRSV:JBCAL,3,STRSV;发送成功?STBF:JBCAL,2,STBF;发送缓存器锁定否R;发送RETRECEIVE:;接收中断程序PUSHF;保护现场LDBAL,IRJBCAL,0,OTHER;接收中断否?LDBX,#RXB;接收缓存器首址LDBAL,[BX]+JBCAL,6,RCDATA;标识符的RTR=1?LDBAL,#04H;是远程帧,释放接收缓存区STBAL,CMR;LCALLTR
9、ANSMI