第5章CAN总线



内容提要

控制器局域网络(Controller Area Network,CAN)是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一,本章主要介绍CAN总线的主要特点、技术规范以及CAN总线的节点组成。重点介绍CAN总线控制器件SJA1000以及CAN总线收发器PCA82C250。

学习目标

◆了解CAN总线的性能特点。

◆掌握CAN的技术规范。

◆掌握CAN总线的节点组成。

重点内容

◆CAN的技术规范。

◆CAN总线的节点组成。

关键术语

帧、CAN、现场控制器、SJA1000。




基于 CAN 总线技术的测控系统在造纸过程中的应用


在造纸和化学制造中,大多数常规控制系统模式都使用DDC或DCS。通过模拟仪表采用1~5V或4~20mA的直流模拟信号,并且模拟信号的传输需要采用一对一的连接,因此结构复杂,同时信号转换慢,抗干扰能力差。随着计算机技术和网络通信技术的发展,基于现场总线控制技术的 FCS(现场总线控制系统)已广泛应用于过程控制。此系统使用具有数字通信能力的仪器作为现场设备,并使用双绞线对连接多个现场设备以形成总线分布式结构,其结构简单,抗干扰能力强,控制精度高。

系统软件由主控制软件和各种智能测控程序组成。通过模糊控制算法准确计算现场测量和控制的控制值,然后将指令发送到 CAN 网络上的各种例程以执行控制操作。

设计主控制程序的关键是设计通信程序。CAN 网络的通信程序主要由3部分组成: CAN 控制器的初始化程序、发送程序和接收程序。初始化程序包括设置SJA1000 CAN 控制器的控制部分寄存器的内容,以设置 CAN 网络的通信参数,包括工作模式、具体位置、接收代码、掩码代码、分段长度、总线定时和输出模式。

程序流程包括 CAN 控制器的初始化、传感器数据信息的发送与接收,以及控制量测量的执行。



智能测控子系统的模块结构由3部分组成: 单片机微控制器电路、信号采集电路和现场监控电路。单片机以 P80C592 为核心,由存储器扩展电路和PAC82C250 CAN 总线驱动器组成。P80C592 没有片内程序存储器,用户可以根据需要对其进行扩展。

现代过程工业中,造纸业在投资、能源消耗、原材料消耗和水消耗方面通常高于重工业。例如,所有的纸生产都需要水,并且纸生产过程中需要消耗大量原材料,通过计算机对制浆和造纸过程进行控制,不仅可以改善员工的工作条件,提高产品的性能和质量,还可以显著减少能源和原材料的消耗。因此,制浆和造纸过程自动化的经济优势十分显著。

该现场智能测控系统集检测、转换、计算、控制、通信等功能于一体,可以将常规系统的输入和输出功能以及控制站的控制功能分配给各种现场智能设备,例如,智能计算器的智能仪器以及独立的测量、校正、设置、诊断和其他功能。现场总线技术代表了从虚拟数字化到现场,从网络到现场,从控制功能到现场,以及从设备管理到现场的自动控制的发展方向。在工业生产领域,特别是造纸领域中,这种具有长时延的多参数过程控制将被越来越频繁地使用。
由于CAN总线技术高性能、高可靠性以及独特的设计,越来越受到人们的重视。CAN最初是由BOSCH公司为汽车监测、控制系统而设计的。由于CAN总线本身的特点,其应用范围已不再局限于汽车工业,而向过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械等领域发展。

5.1CAN总线工作原理

CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN总线与I2C总线的许多细节很类似,但也有一些明显的区别。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中的所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。

当一个站要向其他站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态; 当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其他站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。可以很容易地在CAN总线中加进一些新站而无须在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

51


CAN总线的性能特点


由于CAN总线采用了许多新技术及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。其特点可概括如下。 

(1) CAN为多主工作方式,网络上任意一个节点均可在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活,且无需站地址等信息。

(2) CAN网络上的节点信息分为不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134μs内得到传输。

(3) CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。

(4) CAN程序通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式发送和接收数据,无需专门的“调度”。

(5) CAN的直线通信距离最长可达10km(速率在5kb/s以下),通信速率最高可达1Mb/s(此时通信距离最长为40m)。

(6) CAN上的节点数主要取决于总线驱动电路,目前可达128个; 报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。

(7) 采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。

(8) CAN的每帧信息都有CRC(循环冗余校验)及其他检错措施,使数据出错率极低。

(9) CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。

(10) CAN节点在错误严重的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受限制。

5.2CAN的技术规范

随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。为此,1991年9月飞利浦半导体公司制定并发布了CAN技术规范(2.0版)。

CAN技术规范包括A和B两部分: CAN 2.0A和CAN 2.0B。CAN 2.0A给出了报文标准格式; CAN 2.0B给出标准和扩展的两种报文格式。同一网络内的所有CAN节点必须具有相同的物理层。应用CAN总线的设备既可与CAN 2.0A规范兼容,也可与CAN 2.0B规范兼容。

为了使设计透明,执行灵活,且遵循ISO/OSI参考模型,CAN分为数据链路层(包括逻辑链路子层和介质访问控制子层)和物理层,CAN协议的分层结构如图51所示。



图51CAN协议的分层结构


1. CAN的物理层

CAN的物理层用于定义信号怎样进行发送,因而涉及电气连接、驱动器/接收器的特性、位编码/解码、位定时及同步等内容。但对总线介质装置,诸如驱动器/接收器特性未做规定,以便今后在具体应用中进行优化设计。CAN的物理层选择灵活,没有特殊的要求,可以采用共地的单线制、双线制、同轴电缆、双绞线、光缆等。CAN总线的物理层设备理论上不受限制,取决于物理层的承受能力,实际可达110个。当总线长为40m时,最大通信速率为1Mb/s; 而当通信速率为5kb/s时,直接通信距离最大可达10km。

CAN总线具有两种逻辑状态: 隐性或显性。在隐性状态下,VCANH和VCANL被固定于平均电压电平,Vdiff近似为0。显性状态以大于最小阈值的差分电压表示。在显性期间,显性状态改变隐性状态并发送。总线上的位电平如图52所示。



图52总线上的位电平表示


当传输一个显性位时,总线上呈现显性状态; 当传输一个隐性位时,总线上呈现隐性状态。显性位可以改写为隐性位。当总线上两个不同节点在同一位的时间分别为显性和隐性位时,总线上呈现显性位,即显性位覆盖了隐性位。

2. CAN的数据链路层

在CAN2.0A中,数据链路层的逻辑链路子层和介质访问控制子层的服务和功能被描述为“目标层”和“传输层”。

逻辑链路子层的主要功能是为数据传送和远程数据请求提供服务,确认要发送的信息及接收到的信息,并为恢复管理和通知超载提供信息,为应用层提供接口。在定义目标处理时,存在许多灵活性。

介质访问控制子层的功能主要是传送规则,即控制帧结构、执行总线仲裁、错误检测、出错标定和故障界定。介质访问控制子层也要确认,当要开始一次新的发送时,总线是否开放或者是否马上接受。介质访问控制子层是CAN协议的核心,该子层特性不存在修改的灵活性。

CAN数据链路层由一个CAN控制器实现,采用了CSMA/CD方式,但不同于普通的以太网,它采用了非破坏性总线仲裁技术,网络上节点(信息)有高低优先级之分,以满足不同的实时需要。当总线上的两个节点同时向网上传送信息时,优先级别高的节点继续传输数据,而优先级别低的节点主动停止发送,从而有效地避免了总线冲突以及因负载过重导致网络瘫痪的情况出现。

CAN可实现点对点、一点对多点及全局广播等几种方式传送和接收数据,CAN采用短帧结构,每帧有效字节数为0~8字节,因此传输时间短,受干扰概率低,具有良好的检错效果。数据帧的CRC及其他检错措施保证了数据出错率极低。CAN节点在错误严重的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受限制。

3. 报文的传送及其帧结构

在进行数据传送时,发出报文的单元称为该报文的发送器,该单元在总线空闲或丢失仲裁前始终为发送器。如果一个单元不是发送器,并且总线不处于空闲状态,则该单元就是接收器。

对于报文发送器和接收器,报文的实际有效时刻是不同的。对于发送器而言,如果直到帧结束末尾一直未出错,则对于发送器报文有效。如果报文受损,将允许按照优先权顺序自动重发信息。为了能同其他报文进行总线访问竞争,总线一旦空闲,重发送立即开始。对于接收器而言,如果直到帧结束的最后一位一直未出错,则对于接收器报文有效。

CAN总线的报文传送由4种不同类型的帧表示和控制,数据帧携带数据由发送器至接收器; 远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧; 出错帧由检测出总线错误的任何单元发送; 超载帧用于提供当前的和后续的数据帧的附加延迟。数据帧和远程帧借助帧间空间和当前帧分开。

1) 数据帧

数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。数据长度可为0。CAN 2.0A中数据帧的组成如图53所示。



图53CAN 2.0A中数据帧的组成


图53中的帧间空间是每两帧之间必须间隔的时间,即传输完一帧之后,必须再经过帧间间隔的时间才能传输下一帧。

52


场


场(Field)作为一种科学术语,首先出现在物理学中,它是指连续介质中的能量参数。后来这个概念得到了延伸,扩大到其他领域。场实际上是物体,包括人体系统等实体的能量信息的一种表现; 场也可以是能量信息空间和时间的分布特征或者是能量的空间特征。现在场的概念得到了扩充,包括生态场和信息场等。场的概念扩展是科学的,任何物体都具有物质和能量两个基本特征。场就是能量的空间范围,场的性质、特征和状态的表征就是信息,因此也可以称为场信息。

在CAN 2.0B中存在两种不同的帧格式,其主要区别在于标识符的长度,具有11位标识符的帧称为标准帧,而包括29位标识符的帧称为扩展帧。标准格式和扩展格式的数据帧结构如图54所示。通过图54可知,扩展格式的仲裁场的标识符为29位,而标准格式的仲裁场的标识符为11位。



图54CAN 2.0B中标准格式和扩展格式的数据帧结构


下面对数据帧结构的每个部分进行详细介绍。

(1) 帧起始。

帧起始(SOF)标志数据帧和远程帧的起始,它仅由一个显性位构成,只有在总线处于空闲状态时才允许单元开始发送。所有单元都必须同步于首先开始发送的那个单元的帧起始前沿。

(2) 仲裁场。

仲裁场由标识符和远程发送请求(RTR)位组成,如图55所示。



图55仲裁场的组成


对于CAN 2.0A,标识符的长度为11位,这些位为从高位到低位的顺序发送,最低位为ID.0,其中最高7位不能全为隐性。RTR位在数据帧中必须为显性,而在远程帧中必须为隐性。

对于CAN 2.0B,标准格式和扩展格式的仲裁场不同,在标准格式中,仲裁场由11位标识符和远程发送请求(RTR)位组成,标识符为ID.28~ID.18; RTR位在数据帧中必须为显性,而在远程帧中必须为隐性。

为区别标准格式和扩展格式,将CAN 2.0A中的r1改记为标识符扩展(IDE)位,对于CAN 2.0B,在扩展格式中,仲裁场的29位标识符为ID.28~ID.0; 替代远程请求(SRR)位为隐性位; IDE位为隐性位; RTR位保持不变。

SRR是一个隐性位,它在扩展格式的标准帧RTR位上被发送,并代替标准帧的RTR位。因此,如果扩展帧的基本ID和标准帧的识别符相同,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。

对于扩展格式,IDE位属于仲裁场; 对于标准格式,IDE位属于控制场。标准格式里的IDE位为“显性”,而扩展格式里的IDE位为“隐性”。通过判别SRR和IDE为显性和隐性来判断该格式是标准格式还是扩展格式; 当SRR和IDE均为隐性时,则该格式被判断为扩展格式,否则被判断为标准格式。

CAN 2.0B的扩展帧和CAN 2.0A及CAN 2.0B的标准帧一样,在数据帧中RTR位必须为显性,而在远程帧中必须为隐性。

(3) 控制场。

控制场由6位组成,由图56可见,控制场包括数据长度码(DLC)和两个保留位,这两个保留位必须发送显性位,但接收器认可显性和隐性的全部组合。DLC指出数据场的字节数目。DLC为4位,在控制场中被发送,数据字节的允许使用的数目为0~8字节,不能使用其他数值。



图56控制场的组成


(4) 数据场。

数据场由数据帧中被发送的数据组成,它可包括0~8字节,每个字节为8位,首先发送的是最高有效位。

(5) CRC场。

CRC场包括CRC序列,后随CRC界定符。CRC场的结构如图57所示。CRC序列由循环冗余码求得的帧检查序列组成,最适用于位数小于127(BCH码)的帧。CRC序列之后是CRC界定符,包含一个单独的“隐性位”。



图57CRC场的结构



(6) 应答场。

应答(ACK)场为两位,包括应答间隙和应答界定符,如图58所示。在应答场中,发送器送出两个隐性位。一个正确地接收到有效报文的接收器,在应答间隙,将此信息通过发送一个显性位报告给发送器。所有接收到匹配CRC序列的站,通过在应答间隙内把显性位写入发送器的隐性位来报告。应答界定符是应答场的第二位,并且必须是隐性位。



图58应答场的组成


(7) 帧结束。

每个数据帧和远程帧均由7个隐性位组成的标志序列界定。

通过以上介绍可以总结出: 标准格式数据帧的最小位数为44,最大位数为108。一般地,将帧起始、仲裁场和控制场作为CAN头部(19位),CRC场、应答场和帧结束作为CAN尾部(25位)。而扩展格式数据帧的最小位数为62,最大位数为126。

2) 远程帧

需要被激活为数据接收器的站,可以借助传送一个远程帧,从而初始化各自源节点数据的发送。远程帧由6个不同位场组成: 帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧和数据帧的结构基本相同,其RTR位为隐性位,且不存在数据场。远程帧的组成格式如图59所示。



图59远程帧的组成格式


3) 出错帧

出错帧由两个不同的场组成,第一个由来自各站的错误标志叠加而得到,后随的第二个场是出错界定符(包括8个隐性位)。出错帧的组成如图510所示。



510出错帧的组成


错误标志有如下两种形式。 

(1) 激活错误标志(Active Error Flag): 由6个连续的显性位组成。

(2) 认可错误标志(Passive Error Flag): 由6个连续的隐性位组成,除非被来自其他节点的显性位覆盖。 

出错界定符包括8个隐性位。错误标志发送后,每个站都送出1个隐性位,并监视总线,直到检测到1个隐性位为止,然后开始发送剩余的7个隐性位。

4) 超载帧

超载帧包括两个位场: 超载标志叠加和超载界定符,如图511所示。存在两个导致发送超载标志的超载条件: 一个是要求延迟下一个数据帧或远程帧的接收器的内部条件; 另一个是在间隙场检测到显性位。超载标志由6个显性位组成,超载界定符由8个隐性位组成。



图511超载帧的组成


5) 帧间空间

数据帧、远程帧、出错帧或超载帧均以帧间空间的位场分开。而在超载帧和出错帧前面没有帧间空间,并且多个超载帧前面也不被帧间空间分隔。

帧间空间包括间歇场和总线空闲场,对于前面已经发送报文的“错误认可”站还有暂停发送场,如图512和图513所示。



图512非“错误认可”的帧间空间




图513“错误认可”的帧间空间



间歇场由3个隐性位组成,间歇期间不允许启动发送数据帧或远程帧,它仅起标注超载条件的作用。

总线空闲场周期可为任意长度,此时总线是开放的,因此任何需要发送的站均可访问总线。

暂停发送场是指错误认可站发送完一个报文后,在下一次报文发送认可总线空闲之前,它紧随间歇场后送出的8个隐性位。

5.3CAN总线的节点组成

一般说来,系统中的每个CAN模块都能够按照控制节点被分成不同的功能块,每个节点由51微处理器、CAN控制器、CAN收发器和计数器组成。对于每个控制节点(控制单元),首先是通过微处理器(CPU)读取外围设备、传感器和处理人机接口检查与控制信号,并对该信号进行局部控制调节,执行具体的计算及信息处理等应用功能; 同时,通过CAN总线控制器与其他控制节点或功能模块进行通信。CAN总线的节点模块装置如图514所示。



图514CAN总线的节点模块装置


CAN总线的连接一般是由CAN收发器建立的,CAN收发器增强了总线的驱动能力,它控制逻辑电平使信号从CAN控制器到达总线上的物理层,反之亦然。CAN收发器的下一层是CAN控制器,它主要用于系统通信,执行在CAN规约里定义的CAN协议。CAN控制器通常用于信息缓冲和验收滤波。因此,独立的CAN控制器总是位于微处理器和收发器之间,一般情况下该控制器是一个集成电路。


53


CAN总线的突出优点


CAN总线的突出优点是其在各个领域的应用得到了迅速发展,这使许多器件厂商推出CAN总线器件产品,已逐步形成系列。而品种丰富又价廉的CAN总线器件又进一步促进了CAN总线应用的迅速推广。目前,CAN总线已不仅是应用于某些领域的标准现场总线,它正在成为微控制器的系统扩展及多机通信接口。

5.3.1CAN总线控制器件SJA1000

SJA1000是一个独立的CAN控制器,它在汽车和普通的工业应用上有先进的特征。由于硬件和软件的兼容,它将会替代PCA82C200,特别适合轿车内电子模块、传感器、制动器的连接,此外,在通用工业应用中,尤其在系统优化、系统诊断和系统维护时特别重要。除此之外,还有不少微处理器和DSP把CAN总线控制器集成在同一个芯片中,对其操作更为方便。

SJA1000与它的前一款——PCA82C200独立控制器是兼容的。SJA1000具有很多新的功能,修改了两种模式: Basic CAN模式、PCA82C200兼容模式; 增加了Peli CAN模式,此模式支持CAN 2.0B协议规定的所有功能(29位的标识符)。

SJA1000主要有如下新功能。 


(1) 标准格式和扩展格式信息的接收和发送。   

(2) 具有64字节长度的接收队列。   

(3) 在标准格式和扩展格式中都有单/双接收过滤器(含屏蔽和代码寄存器)。  

(4) 具有读/写访问的错误计数器,能够进行可编程的错误限制报警,并且具有最近一次的误码寄存器。   

(5) 能够对每个CAN总线错误产生错误中断。   

(6) 有功能位定义的仲裁丢失中断功能。   

(7) 具有一次性发送功能(当错误或仲裁丢失时不重发)。   

(8) 具有只听模式功能(CAN总线监听,无应答,无错误标志)。   

(9) 支持热插拔(无干扰软件驱动位速检测)。   

(10) 硬件禁止CLKOUT输出。  

1. SJA1000硬件模块

CAN控制模块SJA1000的功能模块如图515所示,其引脚如图516所示。



图515SJA1000的功能模块框图




图516SJA1000的引脚图


SJA1000的引脚说明如下。 

(1) AD7~AD0: 地址数据复用线。

(2) ALE/AS: ALE输入信号(Intel模式)或AS输入信号(Motorola模式)。


(3) CS: 片选信号,低电平时允许访问SJA1000。

(4) RD/E: 来自微控制器的RD信号(Intel模式)或E使能信号(Motorola模式)。

(5) WR: 来自微控制器的WR信号(Intel模式)或RD/WR使能信号(Motorola模式)。

(6) CLKOUT: SJA1000产生的用于微控制器的时钟输出信号; 时钟信号由内置晶体振荡器通过可编程除法器产生; 时钟除法寄存器中的时钟停止位能使该引脚无效。

(7) VDD1和VSS1: 逻辑电路5V电源和逻辑电路地。

(8) XTAL1: 晶体振荡器放大器输入,外部晶体振荡器信号由该引脚输入。

(9) XTAL2: 晶体振荡器放大器输出,当使用外部晶体振荡器信号时,该输出引脚必须开路。

(10) VDD3和VSS3: 输出驱动5V电源和输出驱动地。

(11) TX0和TX1: CAN输出驱动器0和1输出到物理总线。

(12) INT: 中断输出,用于触发微控制器中断; 内部中断寄存器的任何位置位,INT将低电平输出; INT为开环输出; 该引脚为低电平将电路从睡眠状态激活。

(13) RST: 复位输入,用于复位CAN接口(低电平有效)。

(14) VDD2和VSS2: 输入比较器5V电源和输入比较器地。

(15) RX0和RX1: 从物理CAN总线输入到SJA1000的输入比较器。

SJA1000与微处理器的接口非常简单,微处理器以访问外部存储器的方式来访问SJA1000。由于SJA1000的内部寄存器分布在连续的地址内,所以完全可以把SJA1000当作外部RAM。在设计接口电路时,SJA1000的片选地址应与其他外部存储器的片选地址在逻辑上无冲突。

2. BasicCAN的工作模式原理

1) 地址分配

地址分配 SJA1000是一种I/O设备基于内存编址的微控制器。与其他控制器之间的操作是通过对像RAM一样的片内寄存器进行读写来实现的。SJA1000片内寄存器的地址分配表如表51所示。



表51SJA1000片内寄存器的地址分配表






CAN地址
寄存器名称(符号)
分
区
工 作 模 式
复 位 模 式
读
写
读
写


0
控制寄存器(CR)
1
命令寄存器(CMR)
2
状态寄存器(SR)
3
中断寄存器(IR)
4
接收码寄存器(ACR)
5
接收屏蔽寄存器(AMR)
6
总线定时寄存器0(RTR0)
7
总线定时寄存器1(RTR1)
8
输出控制寄存器(OCR)
9
测试寄存器(TR)
控
制
段
控制
控制
控制
控制
(FFH)
命令
FFH

状态
—
状态
—
(FFH)
—
中断
—
(FFH)
—
接收代码
接收代码
(FFH)
—
接收屏蔽
接收屏蔽
(FFH)
—
总时序0
总时序0
(FFH)
—
总时序1
总时序1
(FFH)
—
输出控制
输出控制
测试
测试
测试
测试


10
识别码(ID10~ID3)
11
识别码(ID2~ID0)+RTR和DLC
12~19
数据字节1~8
20
识别码(ID10~ID3)
发送信息缓冲区
ID10~ID3
ID10~ID3
(FFH)

ID2~ID0

+RTR和DLC
ID2~ID0

+RTR和DLC
(FFH)
—
数据字节1~8
数据字节1~8
(FFH)
—
ID10~ID3
ID10~ID3
ID10~ID3
ID10~ID3

21
识别码(ID2~ID0)+RTR和DLC
22~29
数据字节1~8
30

31
时钟分频器(CDR)

接收信息缓冲区
ID2~ID0

+RTR和DLC
ID2~ID0

+RTR和DLC
ID2~ID0

+RTR和DLC
ID2~ID0

+RTR和DLC
数据字节
1~8
数据字节
1~8
数据字节
1~8
数据字节
1~8
(FFH)
—
(FFH)
—

时钟分频器
时钟分频器
时钟分频器
时钟分频器


由表51可见,SJA1000的地址包括控制段和发送/接收信息缓冲区三大部分。

① 控制段: 在初始化加载期间,控制段可通过编程配置通信参数,在以下两种不同的模式中访问寄存器,其内容是不相同的。 

复位模式: 当硬件复位或控制器掉线时会自动进入复位模式。

工作模式: 通过置位控制寄存器的复位请求位激活。

② 发送信息缓冲区: 要发送的信息首先被写入发送缓冲器,再向总线上串行送出。

③ 接收信息缓冲区: 从总线上成功接收信息后,微控制器从接收器中读取接收的信息,然后释放空间做下一步应用。

2) 控制段及主要寄存器

(1) 控制段。

SJA1000具有I/O设备基于内存编址的特性,其他微控制器与SJA1000之间状态/控制和命令的交换都是在控制段中完成的。只有控制寄存器的复位位被置高时,才可以访问这些寄存器。在初始化时,包括CLKOUT信号也可以由微控制器指定一个值。但是初始化后,寄存器的接收代码、接收屏蔽、总线时序寄存器0和1以及输出控制就不能改变了。SJA1000中共有10字节的控制寄存器,地址分别为0~9。

(2) 主要寄存器。

控制寄存器: 控制寄存器的内容是用于改变CAN控制器的行为。这些位可以被微控制器设置或复位,微控制器可以对控制寄存器进行读写操作。控制寄存器各位的功能说明如表52所示。



表52控制寄存器各位的功能说明






位
符号
名称
值
功 能 说 明

CR.7
—
—
—
保留
CR.6
—
—
—
保留
CR.5
—
—
—
保留


CR.4
OIE
溢出中断使能
1
使能: 如果置位数据溢出位,微控制器接收溢出中断信号
0
禁能: 微控制器不从SJA1000接收溢出中断信号

CR.3
EIE
错误中断使能
0
禁能: 微控制器不从SJA1000接收错误中断信号
1
使能: 如果出错或总线状态改变,微控制器接收错误中断信号

CR.2
TIE
发送中断使能
0
禁能: 微控制器不从SJA1000接收发送中断信号
1
使能: 当信息被成功发送或发送缓冲器又被访问时,微控制器接收SJA1000发出的一个发送中断信号

CR.1
RIE
接收中断使能
0
禁能: 微控制器不从SJA1000接收发送中断信号
1
使能: 信息被无错误接收时,SJA1000发出一个接收中断信号到微控制器

CR.0
RR
复位请求
1
当前: SJA1000检测到复位请求后,忽略当前发送/接收的信息,进入复位模式
0
空缺: 复位请求位接收到一个下降沿后,SJA1000回到工作模式

命令寄存器: 命令寄存器的各个命令位用于确定SJA1000传输层上的动作。命令寄存器对微控制器来说是只写存储器。如果去读这个地址,返回值是11111111。两条命令之间有一个内部时钟周期。内部时钟周期是外部振荡频率的1/2。命令寄存器各位的功能说明如表53所示。



表53命令寄存器各位的功能说明






位
符号
名称
值
功 能 说 明

CMR.7
—
—
—
保留
CMR.6
—
—
—
保留
CMR.5
—
—
—
保留

CMR.4
CTS
睡眠
1
睡眠: 如果没有CAN中断等待和总线活动,SJA1000进入睡眠模式
0
唤醒: SJA1000正常工作模式
CMR.3
CDO
清除数据溢出
0
无动作
1
清除: 清除数据溢出状态位
CMR.2
RRB
释放接收缓冲器
0
无动作
1
释放: 接收缓冲器中存放信息的内存空间将被释放
CMR.1
AT
忽略发送
0
无动作
1
当前: 如果不是在处理过程中,等待发送的请求将取消
CMR.0
TR
发送请求
1
当前: 信息被发送 
0
空缺: 无动作 
状态寄存器: 状态寄存器的内容反映了SJA1000的各种工作状态。状态寄存器对微控制器来说也是只读存储器。状态寄存器各位的功能说明如表54所示。



表54状态寄存器各位的功能说明






位
符号
名称
值
功 能 说 明

SR.7
BS
总线状态
1
总线关闭: SJA1000退出总线活动
0
总线开启: SJA1000加入总线活动
SR.6
ES
出错状态
1
出错: 至少出现一个错误计数器满或超过CPU报警限制
0
OK: 两个错误计数器都在报警限制以下
SR.5
TS
发送状态
1
发送: SJA1000在传送信息
0
空闲: 没有要发送的信息
SR.4
RS
接收状态
1
接收: SJA1000正在接收信息
0
空闲: 没有要接收的信息
SR.3
TCS
发送完毕状态
0
未完毕: 当前请求未处理完毕
1
完毕: 最近一次发送请求被成功处理
SR.2
TBS
发送缓冲器状态
0
锁定: CPU不能访问发送缓冲器; 有信息正在等待发送或正在发送
1
释放: CPU可以向发送缓冲器写信息
SR.1
DOS
数据溢出状态
0
空缺: 无数据溢出
1
溢出: 信息丢失
SR.0
RBS
接收缓冲器状态
1
满: RXFIFO中有可用信息
0
空: 无可用信息

中断寄存器: 中断寄存器能够识别有关的中断源。当寄存器的某一位或多位被置位时,INT(低电平有效)引脚被激活。该寄存器被微控制器读过之后,所有会导致INT引脚上的电平漂移的位被复位。中断寄存器对微控制器来说是只读存储器。中断寄存器各位的功能说明如表55所示。



表55中断寄存器各位的功能说明






位
符号
名称
值
功 能 说 明

IR.7
—
—
—
保留
IR.6
—
—
—
保留
IR.5
—
—
—
保留
IR.4
WUI
唤醒中断
1
置位: 退出睡眠模式时此位被置位
0
复位: 微控制器的任何读访问将清除此位
IR.3
DOI
数据溢出中断
0
复位: 微控制器的任何读访问将清除此位
1
设置: 当数据溢出中断使能位被置为1时向数据溢出状态位传送0~1,此位被置位
IR.2
EI
错误中断
0
复位: 控制器的任何读访问将清除此位
1
置位: 错误中断使能时,错误状态位或总线状态位的变化会置位此位
IR.1
TI
发送中断
0
复位: 微控制器的任何读访问将清除此位
1
置位: 发送缓冲器状态从0变为1和发送中断使能时,置位此位
IR.0
RI
接收中断
1
置位: 当接收FIFO存储器不为空和接收中断使能时,置位此位
0
复位: 微控制器的任何读访问将清除此位

复位值: CAN控制器检测到有复位请求后,将忽略当前接收/发送的信息而进入复位模式; 一旦向复位位传送了1~0的下降沿,将返回工作模式。置位复位位为高时,对控制寄存器、命令寄存器、状态寄存器和中断寄存器的各位都有影响。

3) 数据缓存区

数据缓存区包括发送和接收信息缓冲区两部分,各占10字节,它被分为描述符区(2字节的标识符)和数据区(8字节)。

(1) 发送信息缓冲区。

发送缓冲器位于CAN地址的10~20,用来存储需要使SJA1000发送的数据。发送缓冲器的读/写只能由微控制器在工作模式下完成。发送缓冲器主要包括以下内容。 

① 识别码: 共11位(ID0~ID10),ID10是最高位,在仲裁过程中是最先被发送到总线上的。识别码就像信息的名字,它在接收器的接收过滤器中被用到,也在仲裁过程中决定总线访问的优先级。识别码的二进制值越低,其优先级越高。同时,在仲裁过程中,也决定了总线访问的优先级。

② RTR位: 如果此位置1,总线将以远程结构发送数据。这意味着此段中没有数据字节。如果RTR位没有被置位,数据将以数据长度码规定的长度来发送。

③ 数据长度码: 信息数据区的字节数根据数据长度码编制。在远程结构传送中因为RTR被置位,数据长度码不被考虑,这就迫使发送/接收数据字节数为0,总之数据长度码必须正确设置,以避免两个CAN控制器用同样的识别机制启动远程结构传送而发生总线错误。数据字节数是0~8,用以下方法计算: 

数据字节数=8·DLC.3+4·DLC.2+2·DLC.1+DLC.0

④ 数据区: 传送的数据字节数由数据长度码决定。发送的第一位是地址12单元的数据字节1的最高位。

(2) 接收信息缓冲区。

接收缓冲器的识别码、RTR位和数据长度码与发送缓冲器的相同,只不过是地址为21~29,用来存储SJA1000从总线上接收到的信息。

4) 接收过滤器

为了识别信息帧的目标地址特征,CAN控制器SJA1000设计了一个多功能的接收滤波器,由接收码寄存器和接收屏蔽寄存器组成。该滤波器允许自动检查ID和数据字节。使用这种有效的滤波方法,对于某个节点来说,CAN控制器能够允许RXFIFO只接收相同的识别码和接收过滤器中与预设值相一致的信息。无效的信息可被存储在接收缓冲器里,因此降低了主控制器的处理负载。

5) 其他寄存器

总线时序寄存器0: 定义了传输速率预设值和同步跳转宽度的值。

总线时序寄存器1: 定义了每个位周期的长度、采样点的位置和每个采样点的采样数目。

输出控制寄存器: 实现了由软件控制不同输出驱动配置的建立。


时钟分频寄存器: 时钟分频寄存器可以控制输出给微控制器CLKOUT的频率以及它可以使CLKOUT引脚失效。而且它还控制着TX1上的专用接收中断脉冲、接收比较通道,以及BasicCAN模式和PeliCAN模式的选择。硬件复位后,该寄存器的默认状态在Motorola模式下是12分频,而在Intel模式下是2分频。

5.3.2CAN总线收发器——PCA82C250

PCA82C250是CAN协议控制器和物理总线的接口。此器件对总线提供差动发送能力,对CAN控制器提供差动接收能力。PCA82C250又称为总线驱动器,其主要特性如下。 

(1) 符合ISO 11898标准,最高速率为1Mb/s。 

(2) 抗汽车环境瞬间干扰,具有保护总线的能力。 

(3) 斜率控制,降低射频干扰(RFI)。 

(4) 有热保护以及电源和地短路保护。 

(5) 有低电流待机模式。 

(6) 未上电的节点对总线无影响。 

(7) 可连接110个节点。 

(8) 工作温度-40℃~+125℃。

PCA82C250的内部具有限流电路,可防止发送输出级对电源、地或负载短路。虽然短路出现时功耗会增加,但不至于损坏器件。若结温超过160℃,则两个输出端电流将减小,从而限制了芯片温升。器件的所有其他部分将继续工作。双线差分驱动有助于抑制汽车等恶劣电器环境下的瞬变干扰。PCA82C250的功能框图如图517所示。



图517PCA82C250的功能框图


51

CAN总线在变电站高压开关柜在线检测系统中的应用


高压开关柜主要使用在电力系统发电和输配电以及电能转换过程中,起到开关、控制与保护的作用。高压开关柜当前的构成涉及了断路器以及柜体两个基础部分。高压开关柜依照柜体自身的结构一般能够将其分成间隔式的开关柜以及敞开式的开关柜,以及金属封闭箱式的开关柜等几种比较常使用的类型。高压开关柜中的空间十分有限,可是因为电气设备使用的种类与数量相对较多,所以导致内部的布局比较紧凑,所以在一般的情况下无法快速地对开关柜进行检测,因此也产生了一些安全上的问题。

高压开关柜在线检测系统的具体结构如图518所示。



图518高压开关柜在线检测系统结构图


整个系统使用 CAN 总线串联连接多个采集单元模块和监视计算机单元,以形成分布式结构现场控制网络。在网络中,计算机和多个检测单元模块具有自己的 ID,并且它们还需要相互保护。ID 似乎没有重复。单元模块开关柜的各种信号参数的收集通过数据完成,可以使用CAN总线将其传输到系统的监视单元,从而可以成为变电站高压开关柜的数据库。计算机完成对整个 CAN 总线系统的监视和控制。管理功能使其具有系统参数设置和数据传输、数据接收和本地状态查询,以及节点状态查询和中断状态查询等功能。系统监视单元由带有 CAN 总线通信接口卡的工业控制单元组成。它接收由数据采集单元模块发送的数据,然后通过计算机计算和处理高压开关设备的每个参数的值。根据各种参数及其波形等相关特性可以分析得出高压开关柜的工作状态。CAN总线通信接口卡使工业计算机可以轻松地连接到CAN总线。它由 CAN 接口电路和与计算机串行端口的连接电路组成,以确保数据可以在 CAN 总线和计算机之间准确地流通。

由于计算机串行端口本身属于相对标准的RS232接口,因此发出的数据信号主要以字节为单位完成传输,而CAN总线信号主要以帧为单位进行传输,因此,如果想要在计算机串行端口和CAN总线之间传输数据,则必须具有CAN总线通信接口卡。CAN总线接口卡的功能是完成计算机串行端口发送的信号和CAN总线发送的信号的格式转换。任一方都可以识别另一方发送的信号,从而可以快速地完成数据循环。

系统使用的开发语言是 C 语言。多个CAN总线节点和AT89C51需要进行有效的实时数据通信。另外,软件设计也是需要注意的核心内容。可以说,有设计难度,但也是设计的重点。软件设计主要包括计算机串口通信程序、AT89C51通信程序和 CAN节点的初始化程序。此外,它还包括CAN数据发送和接收程序以及 CAN 总线错误处理程序。CAN控制器SJA1000的内部寄存器是CNSBOT芯片的片外寄存器。AT89C51与SJA1000之间的状态和控制以及数据交换主要由 SJA1000 在复位模式或工作模式下使用。寄存器这部分的读写已完成。初始化 CAN内部寄存器时,有必要保持多个节点的比特率一致,此外,UV 接收方和发送方还需要保持同步。数据接收主要包括两种不同的方式,如中断和查询接收。为了提高通信本身的实时性能,通常采用中断接收的形式,这也可以保证接收信息缓冲区不会引起数据溢出。

CAN总线技术的使用使形成变电站高压开关设备在线检测系统成为可能。当前,它已被应用在许多不同类型的变电站中。通过特定的操作,它具有很好的可靠性和抗干扰性,因此除了及时完成设备维护外,还可以很好地掌握高压开关柜本身的工作状态,另外还能够有效地进行设备检修,从而防止事故产生。

52

基于CAN总线的实验室模块化监测系统


1. 概述

随着经济的迅速发展,我国的教育水平日益提高,国家对学生的动手能力也越来越重视,而实验室作为提高学生实践能力的重要场所,在学习和教学中扮演着重要的角色。所以我们国家也在大力加强对实验室的建设。而实验室内的电器设备非常多,甚至包括大量高压电器,所以对实验室中电器的合理控制变得尤为重要。这需要每位实验室管理者积极面对并设法解决。就目前而言,绝大多数高校及其他教育场所内的实验室设备还是靠人工来控制开关,这不但在管理方面十分烦琐,而且还蕴含着极大的安全隐患,稍有疏忽就会造成不可挽回的损失。所以,研究一个实验室电器智能控制系统是非常有必要和有意义的事。

现在传统实验室管理采用人工值守,但是由于实验室环境复杂,并拥有大量珍贵仪器以及精密仪器,所以实现更方便、安全地进行实验室管理是不同专业实验室管理人员共同面临的问题,但是由于人的精力有限,不可能对每个实验室都进行全天的监控和维护,传统的依靠人力的方法已经不足以满足现在对实验高效而安全的管理需求。因而,集中实现实验室的安全维护和管理存在较大困难,基于CAN总线的实验室智能监控系统设计是一种解决这类困难的有效途径。

在当前多种流行的现场总线中,CAN 总线技术异军突起,它是 BOSCH 公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。在自动化仪表、工业生产现场、数控机床等系统中也越来越多地使用了 CAN 总线,CAN 总线在未来的发展中依然充满活力,有着巨大的发展空间。目前,实验室的安全性受到各高校的普遍关注,一套使用方便、可全天候工作的实验室模块化监测系统可以增加实验室的安全性。

本文研究的实验室模块化监测系统主要以 CAN 总线作为通信方式,以 STC89C52 单片机作为主控制元件,利用温湿度、烟雾、红外三种传感器进行环境监测,最终把监测数据送入单片机处理,把处理的数字量在数码管显示,同时具有继电器报警装置和在一定程度上保密的电子密码锁,为实际应用打下良好基础。

2. 工作原理

本系统采用环境监测的几种传感器对实验室环境进行实时的监测,利用单片机、CAN 控制器、CAN 驱动器一起完成。系统有几个功能,一是运用温度传感器和烟雾传感器收集实验室的环境信息,并经由数码管显示; 二是可以对实验室防盗安全进行监控,运用热释红外传感器监测实验室内人员的活动情况。一旦发现异常,立即控制继电器,使其工作,并通知管理部门实施有关措施,实现对实验室安全的实时监控和管理。

3. 系统硬件的设计

本系统硬件部分的系统总体方案如图519所示,主控单片机选用 STC89C52,通信总线选用 CAN 总线,CAN控制器选用 SJA1000,温度传感器选用 DS18B20 传感器,红外传感器选用热释红外传感器,烟雾传感器选用 MQ2 烟雾传感器,显示模块为液晶显示,选用LCD1602,电子密码锁为一个4×4键盘和一个继电器。



图519系统总体方案


1) 通信模块

本系统需要实现从实验室到监控部门的较远距离传输,因此选用 CAN 总线作为本系统的通信方案。其主要功能是实时、准确地传输温度传感器、红外传感器和烟雾传感器的检测数据,以及电子密码锁的密码。CAN 控制器的数据引脚接单片机的P0,复位引脚 RST 接主控单片机P23,片选信号 CS 接主控单片机 P20。

2) 显示模块

数码管选用 LCD1602数码管,由于本设计要显示的内容中字母、数字、符号均有,不适合选用LED数码管,故选择了微功耗、体积小、用起来方便的 LCD1602这款数码管作为本设计的显示数码管。LCD1602数据传输引脚和 CAN控制器数据传输引脚一样接单片机P0,RS接单片机P27,RW接单片机P26,E接单片机P25。

3) 温度检测模块

温度传感器选用 DS18B20 温度传感器,它接线方便,适用性强,并且输出数字信号,对于没有 AD 转换功能的STC89C52 单片机作为主控制器的系统来讲十分合适。输出引脚接单片机的P21口。

4) 红外检测模块

红外检测模块选用的是热释红外传感器。这种传感器功耗小,价格低廉,并且隐蔽性好,技术性能稳定。它主要用于检测人体发出的特定波长红外线,并且辐射照面覆盖有特殊的滤光片,可增强红外线,有抗干扰的作用,用来检测人员活动十分实用。本系统中利用热释红外传感器来检测人员的活动情况,输出引脚接在单片机的 P24 口。

5) 烟雾检测模块

烟雾传感器选用 MQ2 烟雾传感器。MQ2 烟雾传感器原理是,根据不同物体被气体吸收时光谱的不同来区分气体类别。通过检测气体对光的波长和强度的不同情况,便可以确定气体的浓度。在检测可燃性气体方面具有较好的精度及稳定性。本系统中输出端接单片机 P22 口。

4. 结束语

本文所设计的实验室模块化监测系统是一个针对实验室环境的实时检测和控制系统,为的是能适应未来实验室监测的各种需求。将数据 CAN 总线传输和传感器检测技术相结合,打造了新的便捷型、实用型、准确型、多样型的模块化实验室监管系统。

本章小结

本章介绍了CAN总线的特点,重点描述了CAN总线的技术规范,讲述了物理层、数据链路层的功能,介绍了报文传送及帧的结构,还重点介绍了CAN总线的节点组成,对CAN总线控制器SJA1000做了重点描述,对总线收发器PCA82C250也做了简述,方便读者学习这方面的知识。

综合练习

一、 简答题

1. CAN总线的特点有哪些?

2. CAN总线的技术规范有哪几种?

3. CAN协议分为哪几层?各层功能都是什么?

4. CAN总线报文传送的优先级是如何确定的?

5. 独立的CAN控制器SJA1000共有多少个片内寄存器?

6. CAN总线驱动器PCA82C250 的主要特性如何?

二、 思考题

简述CAN总线技术的发展以及应用领域。

三、 观察题

根据所学知识,谈谈CAN总线在汽车控制上的应用。