当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]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与智能节点间的相互通信。限于篇幅,发送子程序和接收子程序没有具体给出。[!--empirenews.page--]

5 结束语

在CAN总线的开发试验过程中,笔者掌握了CAN总线智能节点的设计,并在实践中进行了应用。通过应用证明,CAN总线具有以下优点:组网自由,扩展性强;自动错误界定,简化了通信的操作;可根据数据内容确定优先权,解决通信的实时性问题。此外,CAN网络已在众多工业控制系统中应用,尤其在传输速率较高而且对实时性及可靠性要求高的场合,CAN总线将有广阔的应用前景。本文来源于《某型控制系统信号信息传输改进研究》课题组,组长是刘永鸿教授,副组长是张文宏副教授,主要参与者有黄晨副教授、赵勇讲师、李金刚研究生。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。

关键字: can总线 通信 电子控制

CAN总线和485总线都是常见的串行通信协议,它们在工业自动化、机器人控制等领域被广泛应用。本文将从物理层、数据传输方式、网络拓扑结构、通信速率和应用范围等方面比较CAN总线和485总线的区别。

关键字: can总线 485总线

CAN总线是一种串行通信协议,能有效的支持具有很高安全等级的分布实时控制 应用范围十分广泛,从高速网络到低价位的多路接线都可以使用CAN,主要运用于汽车电子航天等行业,使用CAN连接发动机的控制单元等汽车部件,CAN总...

关键字: can总线 can总线原理

摘要:提出了一种基于LonWorks现场总线技术的智能家居系统的设计方案。该方案将LonWorks总线技术应用于智能家居系统,系统中的控制和采集节点由单片机和神经元芯片组成,单片机作为主控制器,神经元芯片作为通信协议处理...

关键字: LonWorks总线 智能家居 智能节点 单片机

CAN总线在设计之初,就规定了物理层CAN_H和CAN_L采用双绞线差分传输,这样做的目的是提高抗干扰能力,因为当总线上CAN_H与CAN_L遇到干扰可以“同上同下”变化,从而差分值保持不变。

关键字: can总线

CAN是Controller Area Network 的缩写,目前CAN总线被广泛的应用在汽车电子领域和工业的现场总线中。

关键字: can总线 电路设计

目前视频领域所采用的压缩技术大都是属于类似 MPEG系列的技术。虽然MPEG-4或H.264/AVC已经获得较高的压缩比,但想在2.5G甚至2G移动通信网路上采用这种压缩方式实现视频传送还是比较困难,

关键字: can总线 sae

随着电子控制系统单元(ecu)在汽车上广泛应用,汽车电子化程度越来越高。电控系统的增加虽然提高了汽车的动力性、经济性和舒适性,但随之增加的复杂电路,必然导致车身布线庞大而且复杂,安装空间短缺。同时,为

关键字: can总线 电子控制

引言   随着信息科学的快速发展, 人们对数据采集后的信号形式的要求越来越多, 单一的信号形式已经没有办法满足实际工程的需要。网络信号、USB总线信号、RS232总线信号以及CAN总线信

关键字: can总线 co2128

1 USB通信技术   USB(Universal Serial Bus)是一种目前通用的串行总线技术,它是通过PCI总线和PC的内部系统数据线连接,实现数据的传送,具有即插即用的功能,

关键字: usb总线 at89c51 usb通信
关闭
关闭