首页 理论教育 CAN总线及其应用详解

CAN总线及其应用详解

时间:2023-06-15 理论教育 版权反馈
【摘要】:CAN总线的物理层和数据链路层的功能在CAN控制器中完成。CAN总线基于下列5条基本规则进行通信协调。CAN控制器只能在总线空闲状态期间开始发送。

CAN总线及其应用详解

在十几种已出台的现场总线中,CAN总线也是一种很有应用前景的现场总线之一。CAN是德国Bosch公司在20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换问题而开发的一种串行数据通信协议。1991年9月PHILIP公司制定并颁布了CAN技术规范2.0A、2.0 B版本,2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,2.0B定义了标准的扩展的两种报文格式;1993年11月国际标准化组织(ISO)正式颁布了关于CAN总线的ISO 11898标准,为CAN总线标准化、规范化应用铺平了道路。世界半导体知名厂商推出了CAN总线产品,如CAN控制器有INTEL公司的82526、82527,PHILIP公司的82C200,NEC公司的72005。含CAN控制器的单片机有INTEL公司的87C196CACB,PHILIP公司的80C592、80C598,MOTOROLA公司的68HC05X4和68HC05X16等。

7.4.6.1 CAN总线的主要特点

(1)通信介质可以是双绞线、同轴电缆和光纤,通信距离最远可达10 km(5 kbps),最高速率可达1 Mbps(40 m)。

(2)用数据块编码方式代替传统的站地址编码方式,用一个11位或29位二进制数组成的标识码来定义不同的数据块,让各节点通过滤波的方法分别接收指定标识码的数据,这种编码方式使得系统配置非常灵活。

(3)网络上任意一个节点均可以主动地向其他节点发送数据,是一种多主总线,可以方便地构成多机备份系统。

(4)网络上的节点可以定义成不同的优先级,利用接口电路中的“线与”功能,巧妙地实现了无破坏性的基于优先权的仲裁,当两个节点同时向网络发送数据时,优先级低的节点会主动停止数据发送,而优先级高的节点则不受影响地继续传送数据,大大节省了总线冲突裁决时间。

(5)数据帧中的数据字段长度最多为8 B,这样不仅可以满足工控领域中传送控制命令、工作状态和测量数据的一般要求,而且保证了通信的实时性。

(6)在每一个帧中都有CRC校验及其他检错措施,数据差错率低。

(7)网络上的节点在错误严重的情况下,具有自动关闭总线的功能,退出网络通信后,能保证总线上的其他操作不受影响。

7.4.6.2 网络结构

CAN总线是开放系统,但没有严格遵循ISO开放系统互联的7层参考模型(OSI),出于对实时性和降低成本等因素的考虑,CAN总线只采用了其中最关键的两层,即物理层和数据链路层。

物理层的主要内容是规定了通信介质的机械电气功能和规程特性。在CAN2.0AB中对物理层的部分内容作出了规定,而在ISO 11898标准中的内容更加具体,但没有指明通信介质的材料,因此用户可以根据需要选择双绞线、同轴电缆或光纤。物理层规定了CAN总线的电平为两种状态:“隐性”(表示逻辑1)和“显性”(表示逻辑0);而且还规定了通过特定的电路逻辑上实现“线与”的功能。

数据链路层的主要功能是将要发送的数据进行包装,即加上差错校验位、数据链路协议的控制信息、头尾标记等附加信息组成数据帧,从物理信道上发送出去;在接收到数据帧后,再把附加信息去掉,得到通信数据。在通信过程中,收发双方都要对附加的控制信息进行检查判别,并做相应的处理,从而实现数据传输过程中的流量控制、差错检测,保证数据的无差错传输。CAN总线的数据链路层包括逻辑控制(Logical Link Control,LLC)子层和媒体访问控制(Medium Access Control,MAC)子层。其中MAC子层的主要功能是传输规则,它是CAN协议的核心,主要包括控制帧的结构、传输时的非归零(None Return to Zero,NRZ)编码方式(检测到连续5个数值相同位流后自动插入一个补码位)、执行仲裁、错误检测、出错标定和故障界定,同时还要确定总线是否空闲(出现连续7个以上的“隐性”位)或者能否马上接收数据(检测同步信号)。LLC子层的主要功能是报文滤波(根据数据块的编码地址进行选择性接收)和报文的处理。

CAN总线的物理层和数据链路层的功能在CAN控制器中完成。

7.4.6.3 CAN总线协议

CAN总线网络传输就像邮电系统一样,它并不关心每封信的内容,而只注意传输规则。CAN通信协议规定有4种不同的帧格式,即数据帧、远程帧、错误帧和超载帧。

CAN总线基于下列5条基本规则进行通信协调。

(1)总线访问。CAN控制器只能在总线空闲状态期间开始发送。所有CAN控制器同步于帧起始的前沿(硬同步)。

(2)仲裁。若有两个或更多的CAN控制器同时发送,总线访问冲突通过仲裁场发送期间位仲裁处理方法予以解决。

(3)编码/解码。帧起始、仲裁场、数据场和CRC序列使用位填充技术进行编码。

(4)出错标注。当检测到位错误、填充错误、形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。

(5)超载标注。一些CAN控制器发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。

由于现场总线是双向的,因此能够从中心控制室对现场智能仪表进行标定、调整及运行诊断,甚至可在故障发生前进行预测。远程维护和控制在采用数字通信和现场仪表后也将成为可能。

7.4.6.4 CAN总线的特点

(1)可建立1 024条虚拟链路。CAN控制器的ID号共有11位,其中1位作为优先级,其余作为数据标识符。其链路可在任意两点之间或一点至任意多个节点之间建立。

(2)数据长度有两种格式。小于8 B的数据可选用单页Page格式,大于8 B的数据可选用数据块Block格式。

(3)发送时将需要发送的数据填入发送信箱,并在信箱中置发送标志,CAN驱动程序循环查询此标志,带有发送标志的信箱会自动发送出去。接收时经硬件滤波后,从信中取出信箱号与本节点的接收信箱号逐一比较,若相符则把信件放入接收信箱中。

(4)数据的优先级根据信箱号而定,信箱号越小,优先级越高,同时还提供发送紧急数据的优先级。

CAN总线是一种有效支持分布式控制或实时控制的串行通信网络。CAN可实现全分布式多机系统,且无主、从机之分;CAN可以用点对点、一点对多点及全局广播几种方式传送和接收数据;CAN直接通信距离最远可达10 km(传输率为5 kbps),通信速率最高可达1 Mbps(传输距离为40 m);CAN总线上节点数可达110个。

7.4.6.5 CAN总线应用系统的一般组成

CAN总线应用系统的一般组成方式如图7-22所示。CAN总线网络由许多CAN节点组成。若干个CAN节点通过CAN总线收发器连接在一个网络中。通过相互的通信和协作,完成控制任务。

图7-22 CAN总线网络的一般组成方式

7.4.6.6 CAN总线网络设计步骤

在分布式自动化系统的开发过程中,一项基本的内容就是怎样安排和利用现场总线。既然位流传输和数据帧的构成通常由集成CAN器件完成,因此安排CAN网络的主要工作就是确定所谓的通信帧,通信帧规定了发送的CAN报文,以及发送或接收的网络节点。

首先要确定所有特定的应用信号,在分析的基础上,用敏感的优先级标识符对已确定的信号进行分组,由此来定义系统的CAN报文,即确定通信帧,如图7-23所示。为了最小化总线负载和管理开支,相关的信号应该被组合在一起,同时传送。

图7-23 合并有数个应用信号的CAN报文

然后要规范单个网络节点的行为。可以通过循环发送或通过更复杂的协议(对接收报文的反应)来规定节点报文的收发;通过估计总线负载和由此对高优先级报文造成的等待时间来确定波特率

因此在设计基于CAN的测控系统时一般分成以下3个阶段。

1.需求分析和网络系统设计

负责设计的团队要确定采用何种网络拓扑结构,不断改善建立在网络节点层面上的设计工作。这包括确定报文和选择总线波特率。为了进行更加精确的研究,需要创建整个系统的功能模型。这涉及规定带有输入/输出变量的网络节点行为,以及报文的接收和发送。

2.总线仿真测试

第一阶段工作完成之后,各个网络节点的设计和开发通常是独立进行的,可由项目的所有参加团体同时进行。对于开发出来的网络节点,可以通过其他网络节点的模型来模拟总线的其余部分,对其进行测试。某些CAN总线开发、测试和分析工具(如CANoe)有用作此目的的实际总线接口,采用这种智能工具可以分析实际网络节点之间的报文通信,确定节点是否满足规定的要求,而且,这样的仿真可在实时条件下进行,如图7-24所示。

图7-24 两个真实的和两个模拟的CAN节点组成的总线测试系统(www.xing528.com)

3.系统集成

在这一阶段,所有仿真的网络节点模型被真实的网络节点所取代。当仿真节点完全被取代时,一个实用的CAN总线网络就建成了。

7.4.6.7 基于CAN总线的远程工业电表抄表系统开发实例

CAN总线是国内最早研究和投入应用的现场总线之一,基于CAN总线的控制系统已经在我国得到广泛应用,技术也日趋成熟。作为国内最早进行CAN总线技术研究与开发的单位,北京航空航天大学现场总线及工业测控技术研究室已经完成了多个基于CAN总线的测控系统的开发。在此,仅以为某单位开发的工业电表抄表系统为例,介绍一般CAN总线系统的构建及开发。其中,重点介绍远程采集单元CAN通信模块硬件设计,让读者在实例中进一步体会前面提及的CAN协议的一些概念。

1.远程抄表系统概述

基于CAN总线协议的远程抄表系统分为中央控制室的中央监控单元和现场的远程采集单元两个层次。远程采集单元负责对现场电能表进行实时脉冲采集,同时完成数据的统计、存储;中央监控单元可以定期或不定期地从远程采集单元获取所需数据,并完成数据统计、报表打印及数据库的管理。中央监控单元与远程采集单元之间通过CAN总线连接在一起。在这个网络中,中央监控单元处于主控位置,远程采集单元可以随时响应中央监控单元的命令。基于CAN总线的远程工业电表抄表系统总体结构图如图7-25所示。

图7-25 基于CAN总线的远程抄表系统结构图

远程采集单元涉及CAN通信方面的一些功能特点如下:

(1)手动设定远程采集单元地址。

(2)用电量和时段可以通过中央监控单元设置,每个远程采集单元各自具有内部实时时钟,可以通过通信方式统一校正时钟。

(3)可随时响应中央监控单元的查询命令,在与上位机进行数据通信的同时不影响脉冲计数。

(4)远程采集单元主要由单片机80C552及采集、存储、显示、遥控和通信接口等模块组成,每个采集单元能采集和处理16块电表的电脉冲信号。远程采集单元的功能较多,本节主要介绍远程采集单元CAN通信模块的软件和硬件设计。

2.远程采集单元CAN通信模块硬件设计

远程采集单元CAN通信模块采用SJA1000+光耦+82C250的常用结构,SJA1000和82C250分别使用物理隔离的电源供电,是为了增强系统的抗干扰能力和可靠性,如图7-26所示。

SJA1000的RX0与RX1为一对比较器输入端,如果RX0的电平高于RX1,则SJA1000读回一个隐性电平,反之读回一个显性电平。RX1的电平可由82C250的Vref(基准电压输出端)提供,但对于隔离设计而言,通常使用2个电阻从电源分压得到,效果是一致的。

另外一种方法,如果将SJA1000时钟分频寄存器中的CBP位置位,则只有RX0是活动的,RX0引脚上的高电平解释为隐性电平,低电压解释为显性电平。RX1连接至任一确定电平即可。

SJA1000的MODE引脚选择芯片工作在Intel模式还是Motorola模式。对于51系列单片机系统而言,将该引脚接高电平(选择Intel模式)后,芯片的读写时序满足单片机的要求。除此之外,将数据/地址总线、控制总线一一连接即可。

该系统单独使用一根单片机的I/O口线控制SJA1000的RST复位引脚。因而可以在任意时刻(上电或出错等时刻),对SJA1000进行复位,而不会影响其他功能模块的正常工作。

7.4.6.8 基于CAN总线的电机直接转矩控制节点设计实例

1.直接转矩控制系统的结构和原理

直接转矩控制(DTC)系统由磁链位置检测单元、磁链调节器、转矩调节器、转速调节器、电机模型和电压状态选择单元组成,如图7-27所示。

(1)磁链位置检测单元:电压状态的选择不仅依靠转矩和磁链信号,而且和磁链所在区段有关。这一单元根据磁链的α和β分量,判断磁链的位置。

(2)磁链调节器:为了控制磁链在给定值附近变化,DTC采用BANG-BANG控制,输出磁链控制信号。

(3)转矩调节器:实现对转矩的直接控制。

(4)转速调节器:给定转速和反馈转速的差值经PI调节器输出转矩给定值,实现对转速的控制。在不考虑速度环时,转矩给定值也可直接给出。

(5)电机模型:电流电压反馈按照电机模型,计算出电机的转矩、磁链。

图7-26 CAN通信模块硬件设计

(6)电压状态选择单元:根据磁链、转矩和磁链位置,输出合适的电压状态,控制电机正确运行。

DTC系统是建立在静止坐标系下的,首先电机定子相电压相电流反馈值经3/2坐标变换,得到α-β坐标下的分量,再按照电机的磁链和转矩模型计算出实际转矩T和磁链的两个分量Ψ,Ψ,这样就得到了磁链幅值Ψs和磁链位置θ。将转速调节器输出的转矩给定Te*和Te送入转矩调节器,得到转矩控制信号。

图7-27 直接转矩控制系统框图

2.CAN总线接口硬件设计

采用TI公司的TMS320F240实现DTC控制算法。TMS320F240 DSP控制器是TI公司专为基于控制的应用而设计的,它将高性能的DSP内核和丰富的微控制器外设功能集于单片机中,有每秒执行20兆条指令的运算能力,几乎所有的指令都可在50 ms的单周期内完成,使TMS320F240控制器能提供比传统16位微控制器和处理器强大得多的性能。CAN控制器采用PHILIPS公司的SJA1000,CAN控制器接口采用82C520、SJA1000 CAN控制器符合CAN2.0B协议,完全兼容PCA82C200,支持29位标识符,有64字节的接收缓冲区,能通过验收屏蔽码寄存器和验收码寄存器对标准帧和扩展帧进行单向/双向接收滤波,对CAN总线上的每一个错误可进行错误中断,可通过检测具体位来仲裁丢失中断,具有较强的通信能力。82C250是CAN控制器和物理总线间的接口,它可以提供对总线的差动发送和差动接收。

关于CAN总线接口电路以TMS320F240为CPU。CAN控制器SJA1000的存储空间映射在微控制器DSP的I/O空间中,对SJA1000存储空间的寻址必须用IN和OUT指令。SJA1000的地址线和数据线为分时复用。DSP的地址线A0、A1、A2、A15为译码器的输入,译码器输出地址8001H和8002H用于SJA1000地址空间和数据空间的选通。在CPU和SJA1000之间的总线间接了74LS373锁存器和74LS244双向缓冲器,分别对地址和数据进行锁存和选通缓冲。SJA1000的控制线ALE、都用DSP的通用I/O线控制,具体读/写一个字节的全部时序是通过软件控制实现的,这样做的目的是为了保证DSP和SJA1000的总线读/写时序能很好地配合。为了保证总线传输的质量,提高抗干扰能力,可以在SJA1000和82C250之间加接两个高速光耦。

3.软件设计

CAN总线的物理层和数据链路层的功能由SJA1000自动完成,因此软件开发主要在应用层软件的设计上。应用层软件的核心部分是CPU和SJA1000的数据接收和发送程序,即CPU把待发的数据传送给SJA1000,然后由SJA1000发送到总线上,而当SJA1000从总线上接收到数据后,需要CPU把数据取走。软件设计的基本思路是:系统上电之后,由CPU完成对SJA1000的初始化,然后执行主程序等待中断。中断来自SJA1000,当PC机发送数据或命令后,引起SJA1000中断,SJA1000向F240发出中断请求,在满足一定的中断响应条件后,CPU执行中断服务程序。在中断服务程序中,CPU首先判断为何种中断,再转入相应子程序处理不同的事务。中断服务程序的流程图如图7-28所示。

图7-28 应用层中断服务程序流程图

在本系统设计中,上位机和下位机是一种主从关系,即只有上位机发送命令给下位机,下位机才可以向上位机上传命令,以此来完成上位机对电机的控制和监督。在中断服务程序中,核心部分是对上位机下载命令的判断处理。按照电机控制的基本要求,在上位机要做到对电机的如下控制功能:启动/停止、正转/反转、速度设定。此外,根据该系统设计,上位机还要对电机定子电流的过电流情况进行监控,并实时地显示电机的速度响应、定子电流。在接收到上位机下载的命令后,由DSP调用相应的子程序完成相应的功能。对于直接转矩控制而言,启动/停止速度设定的功能比较容易在下位机实现,对于电机的反转,是通过计算的定子磁链、定转子磁链的夹角以及转矩3个参数来选择不同的电压矢量,然后查开关状态表。所以对应电机的正转和反转就有不同的开关状态表,要实现电机正转/反转的切换,就要根据不同的命令去查相应的表。在上传定子电流和转速时,要考虑发送多少个采样点的问题,这取决于每一次调速的过渡时间,可以通过控制算法计算得到。如果发送的数据量很大,可以在发送一个数据包后进行软件延时,避免总线在一段时间内100%加载,从而保证通信的实时性和可靠性。本系统设置的一些命令码及相应的报文ID见表7-18。

表7-18 命令码及相应的报文

续表

系统运行表明,尽管存在通信周期相对较长、实时控制性尚需要进一步完善等问题,CAN总线技术已可成功地应用在运动控制领域中。它必将以其低成本、高可靠性及开放性推动我国自动化技术的发展。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈