您的位置 首页 资料

怎么规划根据AT89C51型单片机的CAN总线智能节点?

1 引言CAN(Controller Area Network)是控制器局域网,主要用于各种设备检测及控制的现场总线。CAN总线是德国BOSCH公司20世纪80年代初为解决汽车中众多

1 导言

CAN(Controller Area Network)是操控器局域网,首要用于各种设备检测及操控的现场总线。CAN总线是德国BOSCH公司20世纪80年代初为处理轿车中很多操控与测验仪器间的数据交换而开发的串行数据通讯协议。这是一种多主总线,无论是在高速网络仍是在低成本的节点体系,使用都很广泛。因为选用了许多新技能及共同的规划,与一般的通讯总线比较,CAN总线的数据通讯具有杰出的可靠性、实时性和灵敏性,其首要特色如下:

●通讯方法灵敏,能够多主方法作业,网络上恣意一个节点均能够在恣意时间主意向网络上的其他节点发送信息,不分主从。

●CAN节点只需对报文的标识符滤波即可完结点对点、点对多点及大局播送方法发送和接纳数据,其节点可分红不同的优先级,节点的优先级可经过报文标识符进行设置,优先级高的数据最多可在134μs内传输,能够满意不同的实时要求。

CAN总线通讯格局选用短帧格局,每帧字节数量多为8个字节,可满意一般工业领域中操控指令、作业状况及测验数据的要求,一起,8个字节不会占用总线时间过长,确保了通讯的实时性。

●选用非破坏性总线裁定技能,当多个节点一起向总线发送信息呈现抵触时,优先级低的节点会主动退出数据发送,而优先级高的节点可不受影响地持续传输数据,大大节省了总线抵触裁定时间,在网络重载的情况下也不会呈现网络瘫痪。

●直接通讯间隔最大可达10 km (速率在5 kb/s以下),最高通讯速率可达1 Mb/s (此刻间隔最长为40 m);节点数可达110个,通讯介质能够是双绞线、同轴电缆或光导纤维。

●CAN总线选用CRC查验并可供给相应的过错处理功用,确保数据通讯的可靠性,其节点在过错严峻的情况下具有主动封闭输出功用,使总线上其他节点的操作不受影响。

2 CAN总线体系结构

因为CAN总线选用多主方法作业,所以具有与DCS(分布式操控体系)不一样的拓扑结构。其操控体系由计算机和智能节点组成,如图1所示。该体系最大的特色是一切的节点都能以相等的方位挂接在总线上。1个总线节点一般至少包含3部分:操控节点使命的单片机、总线操控器及总线驱动器。本文首要介绍CAN总线智能节点的简略规划。智能节点由89C5l型单片机、SJA1000型总线操控器、82C250型总线驱动器及PC构成。在实践使用中能够衔接不同的传感器材,完结数据的收集和传输。

3 硬件电路规划

笔者规划的CAN总线体系智能节点选用Intel公司的AT89C51型单片机作为节点的微处理器。AT89C51具有64KB的寻址空间。自身不带CAN操控器,所以要完结与CAN总线之间的通讯需外加CAN操控器和CAN驱动器。在本规划中选用SJAl000型CAN总线通讯操控器和AT82C250型总线驱动器。

CAN总线体系智能节点硬件电路如图2所示。从图2能够看出,硬件电路首要由AT89C51、SJAl000、AT82C250、6N137型高速光电耦合器和MAX202型电平转化器材组成。AT89C51担任SJAl000的初始化,操控SJAl000完结数据的接纳和发送等通讯使命。MAX202用于TTL电平与RS232电平的彼此转化,能够将接纳的数据显现在PC上。SJAl000的ADO-AD7衔接到AT89C51的P0口,CS衔接到AT89C51的P2.7。P2.7为0时,CPU片外存储器地址可选中SJA1000,CPU经过这些地址可对SJAl000履行相应的读/写操作。

SJAl000的RD、WR、ALE别离与AT89C51的相应引脚相连,SJAl000的INT接AT89C51的INTl,AT89C51也可经过中止方法拜访SJA1000。

为了增强总线节点的抗搅扰才能,SJAl000的TX0和RX0并不直接与82C250的TXD和RXD相接,而是经过6N137与AT82C250相接,这样,很好地完结了总线上各节点间的电气阻隔。不过,光耦电路用的2个电源VCC和VDD有必要阻隔。电源的彻底阻隔可选用小功率电源阻隔模块完结。这尽管增加了接口电路的复杂性,但却提高了节点的稳定性和安全性。

AT82C250与总线的接口也采取了必定的安全和抗搅扰办法。

AT82C250的CANH引脚和CANL引脚各自经过1只5 Ω的电阻器与总线相连,电阻器可起到必定的限流效果,维护AT82C250免受过电流冲击。CANH和CANL与地之间并联了2只30pF的小电容器,能够滤除总线上的高频搅扰并具有必定的防电磁辐射才能。别的,在2条CAN总线输入端与地之间别离接了1个防雷击管,当2个输入端与地之间呈现瞬变搅扰时,防雷击管的放电起到必定的维护效果。AT82C250的RS引脚接1只斜率电阻器,其阻值的巨细可根据总线通讯速度恰当调整,一般在16 kΩ~140 kΩ之间。

4 软件规划

4.1 网络通讯规矩

CAN总线为多主作业方法,网络就任一节点均可在恣意时间主意向网络上其他节点发送信息而不分主从,通讯方法灵敏。为制止总线抵触,CAN总线选用非破坏性总线裁定技能,根据需求将各个节点设定为不同的优先级,并以标识符ID标定,其值越小,优先级越高。总线的节点之间能够进行实时彼此通讯,当1个节点需求接纳另1个节点的数据时,只需把其代码寄存器的内容设置成和另1节点的标识符共同即可。假如关于标识符和其代码寄存器的内容设置不共同,则节点所发的数据不予理睬。

4.2 SJAl000的作业形式设置

SJAl000有二种作业形式:复位形式和作业形式。在复位形式下可对接纳代码、接纳屏蔽、总线时序寄存器O和1及输出操控寄存器进行设置。一般在CAN初始化时完结对以上寄存器的设置,当CAN进入作业形式后,它们的值就不再改变。在作业形式下可进行数据的发送和接纳。特别要注意的是:当硬件复位或操控器掉线时会主动进入复位形式,这样就不能进行正常的CAN通讯,这就要求对复位位进行监控。当产生硬件复位或操控器掉线而进入复位形式时,要求把复位方位为0并进入作业形式,这样CAN就能进行正常发送和接纳。

4.3 根据C言语的软件编程

体系软件的规划思维是体系上电后首要对AT89C51和SJAl000进行初始化,以确认作业主频、波特率、输出特性等。其间任一智能节点能够使用查询方法经过SJAl000从CAN总线上获取所需的数据并把该数据传送到PC上显现,一起能够向总线上发送数据以供其他智能节点接纳显现。以下是详细完结程序。

以上便是进行实验的程序,其间reg51.h是为AT89C52主操控器专门编写的库函数,它在Keil软件中是现成的,只要用#include句子包含进来即可;intrins.h是为今后调用空函数_nop_()作预备,它里边包含了类似于汇编言语的NOP句子;CAN_TOUWENJIAN.h是头文件,用于对相关寄存器的界说。Tx_DATA_CAN()函数用于向总线发送数据,REC_DATA_CAN()函数用于从总线接纳数据,SERIAL()用于PC与智能节点间的彼此通讯。限于篇幅,发送子程序和接纳子程序没有详细给出。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/150147.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部