CAN总线节点 篇1
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网络,已成为工业数据总线的一个新热点[1]。
CAN总线技术属于现场总线的范畴。它是20世纪80年代初德国的BOSCH公司用来解决汽车内部的复杂硬件信号接线问题的一种串行通信网络。它以实时性、高可靠性、强抗干扰性、低成本等特点得到了人们的重视[2]。CAN总线与其它几种现场总线比较而言,是最容易实现、价格最为低廉的一种,但其性能并不比其它现场总线差。这也是CAN总线在众多领域被广泛采用的原因。目前,其应用范围已不再局限与汽车行业,而向过程控制、纺织机械、机器人、数控机床、医疗器械等领域发展[3]。
本文对基于CAN控制器SAJ1000的智能节点硬件和软件设计做一个全面的介绍。
2 硬件设计
本文的硬件设计主要是高精度信号采集电路设计以及CAN通信控制器与单片机和CAN总线收发器与物理总线之间的硬件接口电路设计。
2.1 信号调理电路设计
本电路是将Burr Brown公司的电流环接收器RC V420和HP公司的高线性模拟光电藕合器HIC NR201结合在一起构成的信号调理电路。它主要完成信号的转换、模拟信号的线形隔离以及低通滤波等功能,实现了4~20m A的电流信号到。0~5V电压信号的线性转换[4]。
RCV420是1个精密电流环接收器,内部包含1个高性能的运算放大器、1套精密电阻网络以及1个精密的l OV的参考电压源,其总转换精度为0.1%,共模抑制比CMR达86d B,共模输入范围达±40V。其应用电路如图1所示。
在图1中,取输入电压为Vin,输入电流为Iin,输出电压为Vo,如果取RCV420中引脚12和引脚15的结合点电压为V0,根据基尔霍夫电流定律,流向电路中任何一个节点的电流的总和为零,有如下的等式:
图1 RCV420应用电路
再根椐运放“虚短路”特性得如下公式:
由公式(1)、(2)、(3)得:
由式(4)可以看出,当输入电流为4m A时,有V0=312.5×0.004-1.25=0当输入电流为20m A时有V0=5(V),从而说明,该芯片能够将4~20m A的电流信转成比例地转化为0~5V的电压信号。
HCNR201是一种高线性度的模拟光电藕合器。其线形性随温度变化范围很小其应用电路如图2所示
其电路公式为:
。输出和输入成正比,并且比例系数只由K 3和R 1、R 2确定。在这里选R1=R2=32KΩ到只隔离不放大的目的。LMV321运放芯片R3=5V/25m A=200Ω,Vcc=5V,K3=1。
2.2 节点电路设计
本次设计的C A N总线系统智能节点采用I n t e l公司的AT89C51型单片机作为节点的微处理器。AT89C51具有64KB的寻址空间。本身不带CAN控制器,所以要实现与CAN总线之间的通信需外加C A N控制器和C A N驱动器。在本设计中采用SJA1000型CAN总线通信控制器和AT82C250型总线驱动器。CAN总线系统智能节点硬件电路如图3所示。
从图3可以看出,硬件电路主要由AT89C51、SJA1000、PCA82C250、6N137型高速光电耦合器和型电平转换器件组成。AT89C51负责SJA1000的初始化,控制SJA1000实现数据的接收,CPU片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读/写操作SJA1000的RD、WR、ALE分别与AT89C51的相应引脚相连。为了增强总线节点的抗干扰能力.SJA1000的TX0和RX0并不直接与PCA 82C250的TXD和RXD相接,而是通过6N137与PCA82C250相接,这样好地实现了总线上各节点间的电气隔离。不过,光耦电路用的电源VCC和VDD必须隔离。PCA82C250的CANH引脚和CANL引脚各自通过1只5欧的电阻器与总线相连,电阻可起到一定的限流作用,保护PCA82C250免受过电流冲击[5]。
3 软件设计
基于AT89C51和SAJ1000的CAN接口模块通过CAN总线建立通信的过程包括系统上电和正常运行两个阶段。其应用程序可以分为SAJ1000初始化程序、报文发送程序和报文接收程序三个部分。
当SAJ1000在上电复位或硬件复位后,在复位模式下,单片机AT89C51对SAJ1000的控制寄存器进行配置;配置时钟分频寄存器确定BASICCAN模式、使能CLKOUT管脚;配置验收码寄存器和验收屏蔽寄存器,定义接收报文的验收码、对报文和验收码进行比较的相关位定义验收屏蔽寄存器;以及其他一些相关寄存器配置[6],其初始化流程图如图4所示。
当初始化完成后,系统进入工作模式,CAN控制器的中断被使能,开始正常的发送或接收报文。
接收报文有两种方式:查询方式和中断方式。本次设计采用查询方式。单片机AT89C51通过读取SJA1000的状态寄存器,检查接收缓冲器状态标志RBS,查看是否有新的报文。当RBS为0时表示没有收到新的报文,继续查询。当RBS为1时,表示接收到新的报文,单片机释放接收缓冲器读取新的报文。其接收程序流程图如图5所示。
当单片机AT89C51有信息要发送时,首先检查状态寄存器的发送缓冲器状态标志TBS。如果TBS为1说明缓冲器被锁,等待发送缓冲器被释放,继续查询。如果TBS为0说明发送缓冲器已释放,单片机将信息发送给发送缓冲器,并置位命令寄存器中发送请求标志TR,此时SJA1000开始发送数据。发送程序流程图如图6所示。
4 结束语
本文根据工业现场的特点,采用了一种高精度信号调理电路的CAN总线智能节点设计,增强了节点抗干扰性和稳定性,并且采用了新型CAN总线控制器SJA1000提高了节点和总线
经实验验证:该节点可以作为总线系统中的I/O模块采集数据,并且可以接收总线上其他节点的数据信息,能及时针对其他节点的要求发送数据包。
参考文献
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社.1996
[2]肖海荣,周风余.基于SJA100的CAN总线系统智能节点设计[J].计算机自动测量与控制.2001.9(2)
[3]饶家明,田作华.CAN总线节点设计与实现[J].工业仪表与自动化装置.2002(5):
[4]张维,史铭德,刘隆祉.一种高精度信号调理电路[J].自动化仪表.2001(12):
[5]PHILIPS PCA82C250 CAN controller interface DATASHEET.2000
CAN总线节点 篇2
摘要:介绍了一种用单片机ADμC812、CAN总线控制器SJA1000和CAN总线驱动器POA82C250组成的CAN总线智能节点的设计方案,给出了该节点的硬件结构和软件设计方法,同时介绍了CAN总线的主要特点。
关键词:CAN总线;ADμC812;数据采集卡
1 引言
CAN(Controller Area Network)总线协议最初是以研发和生产汽车电子产品著称的德国BOSCH公司开发的,它是一种支持分布式实时控制系统的串行通信局域网。目前,CAN总线以其高性能、高可靠性、实时性等优点,而被广泛应用于控制系统中的检测和执行机构之间的数据通信中。CAN总线具有以下一些技术特性:
●多主方式工作,采用非破坏性的基于优先权的总线仲裁技术;
●借助接收滤波可实现多地址的帧传送;
●数据采用短帧结构,抗干扰性强,数据帧的信息CRC校验及其它错误检测措施完善;
●发送期间丢失仲裁或由于出错而遭破获的帧可以自动重发;
●严重错误时可自动关闭总线功能,以使总线其它操作不受影响。
CAN总线符合ISO11898标准,最大传输速率为1MB/s时?传输距离最大为40m;传输速率为5kB/s时的最大传输距离为10km。CAN总线的传输介质可为双绞线、同轴电缆等。由于CAN总线是一种很有发展前景的现场总线,因此?得到了国际上很多大公司的支持,加之基于CAN总线的硬件接口简单,编程方便,系统容易集成。因此?它特别适用于系统分布比较分散、实时性要求高、现场环境干扰大的场合。
2 系统结构
由于CAN总线采用多主方式工作,所以它具有与DCS控制系统不一样的拓扑结构。其控制系统的构成由计算机和智能节点组成,图1所示是其系统结构。该系统最大的特点就是所有的节点(包括上位PC机)都能以平等的地位挂接在总线上。一个CAN总线节点通常至少包括三个部分,即负责节点任务控制的单片机、CAN总线控制器以及CAN总线收发器。本文给出的就是一个可完成数据采集功能的CAN节点的设计方法。
3 CAN节点的硬件设计
本CAN节点的电路原理简图如图2所示。该电路的三个核心器件是单片机ADμC812?1?、独立的CAN总线控制器SJA1000和CAN总线驱动器PCA82C250。其中SJA1000?2?和PCA82C250两者的组合应用已经在很多CAN总线节点的设计中用到,而本设计的特点就在于,它是根据要完成数据采集功能这一具体要求来选用微控制器ADμC812。图2中的串行接口芯片MAX232作为ADμC812与PC机的串口连接,它的使用是由该单片机的调试特点决定的。
ADμC812是高度集成、高精度12位数据采集系统,该产品在其内核中集成了带有片内可重编程非易失性闪速/电擦除程序存储器的高性能8位(与8051兼容)MCU和多通道(8个输入通道)12位ADC。
由于ADμC812只需要通过其串口模块和计算机的串口进行连接,而不需要额外的仿真器,因而可利用ADI公司的QUICKSTART软件来实现程序的在线下载、在线调试和在线仿真,从而极大地提高了工作效率。这也是本设计使用MAX232的原因。
该系统在工作时,首先将从前面传感器送来的工业标准信号(4~20mA或1~5V)通过调理电路变为0~2.5V的模拟电压信号输入至ADμC812的P0.0~P0.7 (AD0~AD7)引脚(根据实际情况确定所需AD端口的数量),然后通过程序控制,再将A/D转换所得的数字信息通过SJA1000和PCA82C250送到CAN总线上的相关节点。
SJA1000作为微控制器的片外扩展芯片,其片选引脚CS应接在微控制器的P2.0上,以用于决定CAN控制器各寄存器的地址。SJA1000通过CAN总线驱动器PCA82C250连接在物理总线上。PCA82C250器件可提供对总线的差动发送能力和对CAN控制器的差动接受能力,它同时完全和“ISO11898”标准兼容。为进一步提高系统的抗干扰能力,一般在CAN总线控制器SJA1000和CAN总线驱动器PCA82C250之间加接6N137光电隔离芯片,只不过在图2中没有表示出来。由于通信信号传输到导线的端点时会发生反射,而且反射信号会干扰正常信号的传输,因此,总线两端应接有终端电阻R1、R2,以消除反射信号,其阻值应当与传输电缆的特性阻抗大致相当。
4 CAN节点的软件设计
本节点的软件编程主要包括A/D转换(ADC)、CAN控制器的初始化、CAN总线数据的发送和接收等几个部分。主程序的流程图如图3所示。
下面分别对这几个主要部分的程序设计做一介绍。
4.1 A/D转换部分
笔者在本设计中采用的是单步A/D转换模式,并将A/D转换结果存入指定的数据存储区。具体步骤如下:
(1)通过设置ADC控制寄存器(ADCCON1和ADCCON2)的值来确定A/D转换的工作状态和采样通道号;
(2)使能ADC中断,置位SCONV位以启动单步A/D转换;
(3)等待响应ADC中断,并进入中断服务程序;
(4)把采样所得的数据从ADCDATAL和ADC-DATAH两个特殊寄存器中取出,并存入预设的片内数据存储器中,然后退出中断服务程序;
(5)判断所需通道是否采样完毕,如果未完成,则设置采样通道号并返回步骤(2),若完成则退出A/D转换子程序。
通过该程序可随时根据实际需要更改采样通道数,并将采样结果直接存入指定数据存储区,以为今后向CAN总线发送所得数据提供便利。
4.2 SJA1000的初始化
CAN的通信协议主要是由CAN控制器完成的.,因此,要想实现CAN节点的数据传送,对CAN控制器的初始化是十分关键的。这个步骤直接决定着该CAN网络系统各节点所共同遵守的协议。对SJA1000进行初始化实际上就是通过单片机向其片内的各个寄存器写入控制字的过程,其寄存器包括以下几个:
REG CONTROL―内部控制寄存器地址;
REG COMMAND―内部命令寄存器地址;
REG STATUS ―内部状态寄存器地址;
REG INTERRUPT―内部中断寄存器地址;
REG ACR―内部验收代码寄存器地址;
REG AMR―内部验收屏蔽寄存器地址;
REG BTR0―总线定时寄存器0;
REG BTR1―总线定时寄存器1;
REG OCR―输出控制寄存器。
其中:BTR0、BTR1寄存器的内容可用于决定系统通信的波特率和CAN协议物理层中的同步跳转宽度,因此,对于一个系统中的所有节点,这两个寄存器的内容必须相同(包括上位机),否则将无法进行通信;OCR寄存器的内容用于决定CAN控制器的输出方式;而写入ACR、AMR寄存器的内容则要根据实际的网络系统和报文标志符来决定。本设计中,笔者采用的是BasicCAN模式。
完成初始化后,CAN控制器就能正常运行了,但是要实现具体的数据收发任务,还必须编制特定的收、发程序。
4.3 CAN总线数据的发送和接收
(1)发送部分的程序设计
用CAN总线发送数据的流程图如图4所示。实际上,在程序运行过程中,常常会在发送某一帧数据时发现上一帧的数据还没有完全发送完毕(可以通过查询状态寄存器REG STATUS的第4位BIT TCS的显、隐状态可了解上次数据的发送情况)。因此,笔者采用的处理方法是:通过指令启动本次发送之后,就不停地查询状态寄存器,以判断本次发送是否完成,直到确定完成为止。这样可以为下次发送提供便利,同时也有利于程序的顺利执行,从而避免出现错误。
(2)接收部分的程序设计
图5所示是该系统接收部分的软件流程图。
实际上,在对响应速度要求不太高的场合,以查询方式来设计接收子程序是最简单、最可靠的方式。如果总线上有数据发往本节点,则通过查询状态寄存器的第1位BIT_RBS的位状态,便可得知接收缓冲区(RXFIFO)中的可用信息,然后通过软件将RXFIFO中的数据逐个“移入”到指定的片内存储空间即可。对于这
样一个主要以数据采集功能为主的CAN节点,这些数据多半是由CAN网络中的“控制中心”发来的控制信号,设计时把它们留给ADμC812进一步处理就可以了。
还应注意的是:在接收查询过程中,要“观察”是否有总线关闭、总线出错、接收缓冲器超载等状态,如果有的话,必须要进行相应的“错误”处理,否则也不能正常进行数据接收,还有一个问题是关于远程帧的处理。限于篇幅,本文不作介绍。
5 结束语
总线技术及CAN总线技术简介 篇3
1.现场总线技术简介
1.1 什么是现场总线
现场总线是20世纪90年代发展形成的,用于过程自动化、制造自动化、楼宇自动化、家庭自动化等领域的现场设备互连的通信网络,是现场通信网络与控制系统的集成。
1.2 现场总线的特点
1.2.1 现场总线的结构特点
与传统的控制系统在设备之间采用一对一的连线,测量变送器、控制器、执行器、开关、电机之间均为一对一的物理连接,而在现场总线系统中,个现场设备粉笔作为总线上的一个网络节点,设备之间采用网络式连接是现场总线系统在结构上最显著的特征之一。在两根普通导线制成的双绞线上,挂着几个、十几个自控设备。总线在传输多个设备的多宗信号,如运行参数、设备状态、故障、调校与维护信息等的同时,还可以为总线上的设备提供直流工作电源。
1.2.2 现场总线的技术特点
现场总线是控制系统运行的命脉、通讯的枢纽,因而应关注系统的开放性、互可操作性、通讯的实时性、以及对环境的适应性等问题:
(1)系统的开放性
系统的开放性体现在通信协议公开,不同制造商提供的设备之间可实现网络互连与信息交换。这里的开放是指对相关规范的一致与公开,强调对标准的共识与遵从。一个开放系统,是指它可以与世界上任何一家制造商提供的、遵守相同标准的其他设备或体统相互连接。用户可以根据自己的需要,把来自不同制造商的商品组合成适合自己控制应用需要的系统。
(2)互可操作性
互可操作性,是指网络中互连的设备之间可实现数据信息传送与交换。也意味着,对不同生产厂家的性能类似的设备可以相互交替换。
(3)通讯的实时性与确定性
现场总线系统的基本任务是实现测量和控制,而有些测控任务是有严格的时序和实时性要求的,达不到这个要求或因时间同步问题影响了网络节点间的动作时序,有时会造成灾难性的后果,这就要求现场总线系统能提供相应的通信机制,提供时间发布于时间管理功能,满足控制系统的实时性要求。
1.3 总线技术的分类
(1)CAN总线
CAN总线(Controller Area Network)是控制器局域网的简称,是德国Bosch公司在1986年为解决现代汽车中众多的测量控制部件之间的数据交换而开发的一种串行数据通信总线。现在已经成为ISO国际标准ISO11898。
(2)基金会现场总线FF
基金会现场总线FF(Foundation Fieldbus)的主要组织研发者是现场总线基金会,已被列入IEC61158标准。这是为与自动化系统更好的衔接,特别是为了满足自动化系统在功能、环境与技术上的需要而设计的。FF适合在流程的工业的生产现场工作,能适应安全防爆的需要,还可通过通信总线为现场设备供电。
(3)PROFIBUS
PROFIBUS是Process Fieldbus的缩写,是面向工厂自动化和流程自动化的一种国际性的现场总线标准。它已被广泛应用于制造业自动化(汽车制造、装瓶系统、仓储系统)、过程自动化(石油化工、造纸和纺织品工业企业)、楼宇自动化(供热空调系统)、交通管理自动化、电子工业和电力输送等行业[7]。
2.CAN总线技术简介
2.1 CAN总线技术简介
CAN全称为Controller Area Network,即控制器局域网,CAN总线是国际上应用最为广泛的现场总线之一。最初,CAN总线技术被应用到汽车环境中的微控制器通信,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
2.2 CAN技术的发展历史
1986年2月,Robert Bosch公司在汽车工程协会的大会上介绍了一种新型的串行总线—CAN,那是CAN诞生的标志。今天,在欧洲几乎每一辆新的轿车上均配有CAN总线。
在1980年的早些时候,Bosch公司的工程师就开始论证当时的串行总线用于客车系统的可能性,因为没有一种现成的网络方案能够满足汽车工程师们的要求。于是,这种新的总线系统被称为“汽车串行控制器局域网”。这种多网络的方案基于非破坏性的仲裁机构,能够确保高优先级报文的无延迟传输,并且,不需要在总线上设置主控制器。此外,Bosch公司以及实现了数种在CAN中的错误检测机制。该错误检测也包括自动断开故障节点功能,以确保能继续进行剩余节点之间的通信。传输的报文并非根据报文发送器/接收器的节点地址识别,而是根据报文的内容识别。同时,用于识别报文的标识符也规定了该报文在系统中的优先级[2]。
3.CAN局域网的技术特点
3.1 CAN的性能特点
国际标准ISO11898定义的CAN(Controller Area Network)总线全称是全数字式现场控制设备互连总线,它是有效的支持分布式控制以及实时控制的串行通信网络。与其他总线比较起来,CAN总线的数据通讯具有突出的可靠性、实时性和灵活性。其主要特点是:
CAN以多主机方式工作,网络上任一节点均可在任意时刻主动地向网络上其他几点发送信息,而不分主从,通信方式灵活,且无需站地址等节点信息。利用这一特点可以方便的构成多机备份系统[8]。
CAN网络上的节点信息分为不同的优先级,可满足不同的实时要求,优先级的数据最快可在134μs内得到传输。
通信的硬件接口相对比较简单,通信线少,通信线可以为同轴电缆、双绞线或光缆,甚至可以通过滑环进行信息传输[4]。
3.2 CAN总线应用层协议
CAN总线协议本身只定义了物理层和数据链路层的规范,这使得CAN能够更广泛的适应不同的应用条件,但也给用户使用CAN带来了不便。用户在应用CAN协议时,必须根据实际需要自行定义CAN高层协议。
4.结束语
现场总线控制系统FCS采用了现代计算机技术中的网络技术、微处理技术以及软件技术,实现了现场仪表之间的数字连接及现场仪表的数字化,给工业生产带来了巨大的效益,降低了现场仪表的初始安装费用,节省了电缆以及材料费和人工成本,不但曾强对现场控制的控制更为灵活,信号传递的精度更是提高了不少,同时还减少了系统运行维护的工作任务。现场总线技术的不断发展,带动了一次工厂生产中应用的自动化系统及信息集成技术的一次飞跃,新的现场总线技术已经在自动化监控系统中已经初露端倪。CAN总线及其他总线技术一定会在以后的工业生产中发挥更大的作用。
参考文献
[1]姜秉梁.县级自来水供水控制系统的研究[D].石家庄:河北农业大学,2007:1-58.
[2]仲科.基于DSP的印刷套色控制系统[D].杭州:浙江大学,2006.
[3]张晓鸣.CAN网桥的设计与实现[D].上海:华东师范大学,2007.
[4]赵兴炳.温室环境控制智能节点的开发[D].北京:中国农业大学,2004.
[5]于立.现场总线系统在化工物流园区应用[J].上海化工,2011,36(5):24-29.
[6]王清明.基于DSP的μC/OS-II移植及CAN构件设计[D].成都:西华大学,2008:1-75.
[7]唐濟扬.基于现场总线技术的先进控制系统[J].制造业自动化,2000,22(7)31-35.
[8]王影.油田大型中央润滑站监控设备输入系统设计[D].沈阳:沈阳理工大学,2009.
基于CAN总线的通信节点设计 篇4
在20世纪80年代初,德国的BOSCH公司提出了用CAN总线(Controller Area Network,控制器局域网)来解决汽车内部的复杂硬件信号接线。CAN总线以其低成本、高可靠性、实时性、抗干扰能力强等特点得到了广泛的应用。1993年ISO正式颁布了ISO11898CAN高速应用标准和ISO11519CAN低速应用标准,这为CAN总线的标准化、规范化铺平了道路。CAN总线主要具有以下特性:
(1) CAN采用多主方式工作,网络上任意节点均可以在任意时刻主动地向网络上的其他节点发送信息而不分主从,通讯方式灵活且无需站地址等节点信息。
(2) CAN网络上的信息可分成不同的优先级,满足不同的实时性要求;高优先级的数据最多可在134 μm内得到传输。
(3) CAN的直接通信距离最远可达10 km(速率5 kb/s以下);通讯速率最高可达1 Mb/s(此时通信距离为40 m)。
(4) CAN只需通过报文滤波即可以实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。
(5) CAN采用非破坏性总线裁决技术(CSMA/CD),在多个节点对总线发送信息出现冲突时,低优先级的节点会主动退出发送而保证高优先级的节点的信息传输,因此大大节省了总线冲突裁决时间,最重要的是在网络负载很重的情况下也不会出现网络瘫痪情况(以太网则可能)。
(6) CAN协议废除了传统的站地址编码,而对通讯数据块进行编码,使网络中的节点个数在理论上不受限制。
(7) CAN总线具有极好的检错效果,CAN的每帧信息都具有CRC校验和其他检错措施,保证了错误的输出率极低。
(8) CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线以上其他节点的操作不受影响。
2 基本硬件介绍
本文所涉及的通信系统相关工业控制系统框图如图1所示。
其中,CAN总线通过PC适配卡与上位机相连,各CAN节点都可与上位机通信,同时互相之间也可以通信。考虑到系统的可靠性与安全性,建议上位机采用工控机,当然在要求可靠性与安全性相对较低的场合也可以考虑采用PC机。CAN总线控制器是以在一块可编程芯片上的逻辑电路的组合来提供与微处理器的物理线路的接口。通过对他的编程,CPU可以设置他的工作方式,控制他的工作状态,进行数据的发送和接收,把网络应用层建立在他的基础之上。CAN控制器目前主要有两大类:一类是独立控制器,如PHILIPS公司的PCA82C200,SJA1000,INTEL公司的82526,82527等;另外一类是内部带有CAN控制器的微处理器,如P8XC591等。我们采用的是PHILIPS公司的SJA1000控制器以及TJA1050总线驱动器。
2.1 SJA1000特性及内部结构
SJA1000是一种独立控制器,是PHILIPS公司的PCA82C200的替代产品。他增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特点的CAN 2.0B协议。SJA1000主要具有如下特点:
(1) 与PCA82C200独立CAN控制引脚和电气兼容;
(2) 仍然具有PCA82C200模式(即默认的BasicCAN模式);
(3) 扩展的接收缓冲器(64 B FIFO);
(4) 同时支持11位和29位标识符且与CAN 2.0B兼容;
(5) 位速率可达1 Mb/s;
(6) 具有详细位号(bit position)的仲裁丢失中断;
(7) 只听模式(无确认、无激活的出错标志);
(8) 可编程的CAN输出驱动器配置;
(9) 可以和不同处理器接口。
2.2 TJA1050特性
TJA1050是PHILIPS公司生产的,用以替代PCA82C250的高速总线收发器。该器件提供了CAN控制器与物理总线之间的接口以及对CAN总线的差动发送和接收功能。TJA1050的主要特性如下:
(1) 与ISO11898标准完全兼容;
(2) 总线与电源及地之间的短路保护;
(3) 优化了输出信号CANH和CANL之间的耦合,大大降低了信号的电磁辐射;
(4) 具有强电磁干扰下,宽工模范围的差动接收能力;
(5) 未上电节点不会干扰总线(对此类节点性能做了优化);
(6) 总线至少可连接110个节点。
3 CAN节点硬件电路设计
3.1 CAN节点硬件电路设计的原理
图2为硬件电路设计的原理框图。其中主控制器选用ATMEL公司的ATmega128单片机,总线收发器为TJA1050。其中ATmega128为ATMEL公司生产的基于RISC结构的高性能低功耗的新一代8位单片机,其主要功能如下:
(1) 具有先进的RISC结构,具有预取指令功能,大多数指令可在一个时钟周期内完成;
(2) 内置128 kB可擦写10 000次以上的可编程FLASH;
(3) 具有独立锁定位,可选择的启动代码区具有多重密码保护锁死功能;
(4) 内置模拟比较器,具有8路10位ADC,I/O口可做AD转换用;
(5) 内部有标定的RC振荡器,同时具有独立片内震荡器的可编程看门狗定时器;
(6) 6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式;
(7) 有2个异步串行通讯口UART,不占用定时器和SPI传输功能;
(8) 具有多个片内/外中断源。
3.2 节点硬件设计的部分说明
(1) SJA1000选用PeliCAN模式,与微控制器连接后,其片选地址即操作SAJ1000内部寄存器的基址用户可以自行设定。
(2) TJA1050采用了最新的EMC技术,比PCA82C250/251的抗电磁干扰能力提高了20 dB。引脚S用于选定TJA1050的工作模式。有两种工作模式可以选择:如果引脚S接地,则TJA1050进入高速模式。当S端悬空时,其默认工作模式也是高速模式。高速模式是TJA1050的正常工作模式,也是我们所选用的模式。如果引脚S接高电平,则TJA1050进入静音模式,该模式可防止由于CAN控制器失控而造成的网络阻塞,同时由于TJA1050支持的CAN信号有良好的对称性,所以不像前代产品需要专门的斜率控制模式。
(3) 在CAN控制器和总线驱动器的物理输出输入线路中,可根据情况适当加入保护电路,以增加数据传输的稳定性。
4 CAN节点软件设计流程
CAN应用节点的程序设计主要分为3部分:SJA1000初始化子程序、发送子程序、接收子程序。可以说所有CAN通信程序设计都是遵循这3个基本步骤的,所以熟练掌握这3部分子程序的设计对于应用CAN总线的工程技术人员来说是非常有必要的。下面就这3个子程序分别加以说明。
4.1 SJA1000初始化子程序
微控制器和SJA1000之间状态、控制和命令信号的交换都是在控制段中完成的。初始化加载后,寄存器的接收代码、接收屏蔽、总线定时寄存器0和1以及输出控制就不能改变了。SJA1000共有2种工作模式:复位模式和工作模式。当硬件复位或控制器掉电时会自动进入复位模式,只有在复位模式下才可以对SJA1000进行初始化。初始化主要包括工作方式的设定、接收屏蔽寄存器和接收代码寄存器的设定、总线时序寄存器的设置、输出模式寄存器和中断使能寄存器的设置等。在初始化完成以后,CAN总线就可以开始进行数据的接收与发送工作,其初始化流程图见图3。
4.2 发送与接收子程序
首先与CAN控制器连接的微处理器必须将要发送的数据从其数据存储区中取出,与主机的ID地址一起组成信息帧按CAN报文结构发送到发送缓冲器中,并置位命令寄存器中的发送请求标志,接收到发送请求后发送过程由CAN控制器自动完成。在检测到接收缓冲器中存在有效报文后,接收程序将接收缓冲器中的内容读入CPU的数据存储区。接收完毕后检查总线状态及溢出情况等并做相应处理,发送与接收程序流程图见图4。
5 结 语
采用了多主工作方式及CSMA/CD的CAN总线以其显著优于传统“一主多从”式多机串行通讯模式而得到了广泛应用。实践表明,由于CAN总线结构简单,器件容易购置,开发技术易于掌握,且具有统一的国际标准,故在现场总线的发展中占有了重要位置。本文所介绍的基于CAN总线的通信节点可在大部分中短距离传输信息的控制现场发挥良好的作用。
参考文献
[1]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[2]李正军.现场总线及其应用技术[M].北京:机械工业出版社,2005.
[3]耿德根,宋建国,马潮,等.AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,2001.
CAN总线扩充器MCP25050 篇5
MicroChip公司生产的CAN(Controller Area Net-work)总线I/O扩充器MCP25050,可用于在CAN总线系统中扩充CAN总线节点,它可以独立构成一个CAN节点而不需要再加微控制器。该器件采用14脚小型封装和低功耗CMOS工艺技术,可在2.7~5.5V电压范围内正常工作。它能够支持的`CAN2.0B标准位速率可达1Mbit/s;NCP25050内含一个可编程的屏蔽器、二个可编程的接收过滤器、4路10位A/D转换器、两路PWM输出、三个自动传送数据缓冲区、两个接收数据缓冲区及低功耗工作方式;其芯片配置信息可通过CAN总线在线修改,并可工作在1-WireCAN总线工作模式;同时,它还可使系统具有远程输入和输出功能。因此,在扩充简单的瘦客户CAN总线远程节点时,使用它会带来意想不到的便利。
2 MCP25050内部结构
MCP25050内部功能图如图1所示,引脚图如图2所示。从图中可看出:该器件主要由用户存储区、时钟产生器、控制逻辑、CAN协议模块、A/D转换和PWM模块组成。以下分别介绍:
控制逻辑部分主要起着把其它几部分接合在一起的作用,另外它还控制数据的传送和接收以及在上电初始化时对内部寄存器的控制操作。
时钟产生器部分可为其它芯片提供时钟脉冲。
用户存储区是一块ROM区,主要是一些控制寄存器,利用它可以先对用户存储区进行编程,以使MCP25050在上电复位后工作在用户事先定义的模式。这些寄存器可通过CAN总线来访问。
A/D部分主要是对输入的模拟信号自动进行A/D转换。
CAN协议模块主要是对要发送的数据进行CAN数据包的封装,或是对接收到的CAN数据包进行解包。它有二个彼此独立的接收缓冲区,且每个接收缓冲区都有自己的接收过滤器。同时,错误管理逻辑也位于此模块内。因此,CAN协议模块是MCP25050的核心模块。
利用GPIO模块可对八个输入输出引脚进行管理,并可通过设置寄存器来使每个引脚工作在不同的方式。MCP25050各引脚功能说明如表1所列。
表1 MCP2505的引脚功能说明
引脚名称脚 号功 能
复用功能
GP0/AN01
CAN总线在航空系统中的应用 篇6
【摘要】进入21世纪以来,飞行器在军事、民用和科学研究等方面得到了越来越多的应用,其功能越来越复杂,综合化程度越来越高。本文在分析CAN总线航天应用的基础上,从硬件原理设计、CPU与CAN总线接口实现以及CAN总线通信软件设计等方面进行了论述。
【关键词】CAN总线:航空系统:应用
【中图分类号】V243.1 【文献标识码】A 【文章编号】1672-5158(2013)04-0213-02
1、引言
CAN(Controller Area Network)一控制器局域网。它是一种有效支持分布式控制或实时控制的串行通信网络。CAN总线最早是由德国Bosch公司在80年代初为解决航空系统中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆、光导纤维,通信速率可达1M/s。CAN总线通信接口中集成了CAN协议的物理层,数据链路层功能,可完成对通信数据的成帧处理,包括位填充,数据块编码,循环冗余校验,优先级判别等项工作。
2、CAN总线工作原理及其特点
2.1 CAN总线工作原理
当CAN总线上的一个节点发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不存在有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。
当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
由于CAN总线是一种面向内容的编址方案,所以很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而不必在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而不必每个控制器都有自己独立的传感器。
2.2 CAN总线的特点
(1)具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;(2)可靠的错误处理和检错机制;(3)具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CAN-bus上,形成多主机局部网络;(4)发送的信息遭到破坏后,可自动重发;(5)可根据报文的11)决定接收或屏蔽该报文;(6)节点在错误严重的情况下具有自动退出总线的功能;(7)采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;(8)报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
3、CAN总线航天系统中应用分析
esa开展的CAN、1553b、spacewire技术研究表明以差分信号传输的高速串行总线用于星载设备之间的数据传输能保证通信的瞬时性,有助于降低星载设备的功耗,有利于获得低噪声、emi低、抗电磁干扰性强、信号不受电源开关状态变化影响等优势,具有良好的航天系统应用前景。
isoll898建议的CAN总线的物理电气性能,能够保证在总线发生某些故障时不至于中断通信,而且可以为故障的定位提供可能。表1列出了CAN总线可能发生的各种开路和短路故障,以及在该故障模式下CAN总线受影响的情况。
CAN总线具有安全可信性。从协议分析,CAN总线的每个eeu具备错误检测、标定和自检的强有力措施。检测错误包括“发送自检、eye校验、位填充和报文格式检验”。其错误检测具有如下特性:(1)所有全局错误都可以检测;(2)没有检测出的已损报文的剩余错误概率为报文出错率的4.7×10-11。(3)报文中5个以内的随机分布错误都可以被检测到;(4)发送器的所有局部错误都可以被检测;(5)报文中任何奇数个错误都可以被检测得到;(6)报文中长度小于15的突发性错误都可以被检测得到;
4、航空系统中的双冗余容错CAN总线设计
多节点之间CAN总线的智能通信 篇7
CAN总线具有结构简单、设计灵活、经济实惠的特点,在系统数据传输量不大且速度要求不是很高的情况下,是一种不错的选择。在这种方法中,总线以其结构简单、设计灵活、易于扩展和开发周期短的特点,越来越受到市场的欢迎和设计者的青睐。目前很多单片机都带有I2C接口,直接把CPU和总线相连,使得电路设计更加简单、经济。智能通信的多CPU系统也是基于I2C总线的一种通信系统,控制器通信信息量不大,且内部数据处理比较简单,因此选用ds PIC30f4011单片机即可。
1 CAN 总线的基本设计
采用CAN现场总线和多CPU通信技术实现了上位机和多台CAN现场智能测控装置相连,从而研制出一种自由式CAN现场总线的通信系统。
1.1 CAN 总线的特点
CAN为多自主工作方式,网络上任何一个节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从。
在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134us内得到传输。CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动地退出发送,而优先级高的节点可以不受影响的继续传输数据,从而大大节省了总线冲突的仲裁时间。尤其是网络负载很重的情况下,也不会出现网络瘫痪情况 ( 以太网则可能 )。
CAN节点只需通过报文的标识符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。
CAN的直接通 信距离最 远可达10km( 速率5kbps以下 ) ;通信速率最高可达1Mbps( 此时通信距离最长为40m)。
CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧的报文标识符有11位,而在扩展帧的报文标识符 (29位 ) 个数几乎不受限制。
报文采用短帧格式,传输时间短,受干扰概率低,保证了数据出错率极低。
CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。
CAN的通讯介质可以为双绞线、同轴电缆或光纤,选择灵活。
CAN节点在错误帧的情况下具有自动关闭输出功能,而总线上其它节点的操作不受影响。
CAN总线具有较高的性能价格比。它结构简单,器件容易购置,每个节点的价格较低,而且开发技术容易掌握,能充分利用现有的单片机开发工具。
1.2 CAN 总线接口电路的设计
目前,市场上流 行的CAN总线器件有 两大类 :一类是独 立控制器,如PHILIPS公司的PCA82C200,SJA1000,INTEL公司的82526、82527。另一类是内 部带有CAN控制器的 微处理器,如P8XC59等等。我们采用的是PHILIPS公司的MCP2551收发器,主要原因是支持CAN2.0A,CAN2.0B协议,而且MCP2551有112个节点。为了增强节点的抗干扰能力,防止线路间串扰,MCP2551的CANH和CANL引脚可以各自通过一个热敏电阻与CAN总线相连,当过流时电阻发热,保护MCP2551免受过流的冲击,CANH和CANL与地之间也可以并联两个小电容用来滤除总线上的高频干扰,地磁干扰以及电磁干扰等等。
1.3 dsPIC30F4011 简介及选用
dsPIC30f4011是Microchip公司新推出dsPIC30f系列16位单片机。它是一种具有单片机和DSP综合功能的16位高性能改进型RISC CPU,该器件不但保留了单片机的基本性能、丰富的外围模块,同时还兼具DSP的引擎特性和高速运算能力。dsPIC30f4011单片机上集成的CAN模块,使其能够与其它CAN模块或数字信号控制器进行通信,其上的CAN模块是一串行接口,此接口的设计允许在噪声环境下进行通信,同时它也是一个通信控制器,可以实现BOSCH规范中定义的CAN 2.0 A/B协议,该模块也支持该协议的CAN 1.2、CAN2.0A、CAN 2.0BPassive以及CAN2.0B等版本。
本设计采用的dsPIC30f4011属于美国微芯公司推出的dsPIC30f系列通用数字信号控制器。它是具有数字信号处理器(DSP) 功能的单片机 (MCU),不仅具有控制能力强的特点,而且计算能力和数据吞吐能力强它采用精简指令集 (RISC)、哈佛总线结构、流水线取指令方式,具有实用、低价、指令集小、简单易学、低功耗并且具有高速度、体积小、功能强、抗干扰能力强等优点,CPU拥有24位指令字,程序计数器PC为24位宽,工作寄存器、组由16个l6位的寄存器组成,数据空间可以作为32k字或46k B寻址。dsPIC30f40l1最大工作频率为120MHz,可选用多种外部或内部振荡器作为时钟源,当工作在内部低功耗RC振荡器模式下,可使其功率消耗降到最低 ;并且dsPIC30f4011配备有内部所相环及可编程后分频器可对时钟源进行倍频和分频操作,使其能够输出所需要的时钟频率。不仅如此,dsPIC3Of4011还拥有丰富的外设及接口使其在各种应用中的设计更加方便快捷,片内集成了闪存程序存储器和数据存储器可以进行在线仿真调试以及对数据进行存储 ;片上除了Vdd引脚、Vss引脚、MCLR低电平触发引脚和OSCI / CLKI引脚,其他所有器件引脚都由外围设备与并行I / O端口共用,全部作为I / O输入的端口均为施密特触发输入,增强了器件的抗干扰能力。
1.4 MCP2551 的作用
MCP255l是针对l2伏到24V系统推出的高速CAN收发器,该器件特别适用于汽车和工业应用,因而是一种可容错的高速CAN器件。MCP2551可作为CAN协议控制器和系统物理总线的接口。其差分发射和接收能力可将许多节点与同一网络相连接。并具有外部控制输出斜率的功能,可减少RFI干扰信号的发射,在许多应用中,采用较低速率CAN网络 ( 通常为125kbp或更低 ) 就可以建立网络。通过MCP2551的斜率控制输入脚还可控制(减缓 ) 差分输出信号 (CANH和CANL) 的变化,从而降低了非屏蔽线部网络的设计成本,同时也提高了在CAN总线传输数据的可靠性。
1.5 CAN 总线的软件结构
通信程序主要包括初始化子程序,发送子程序,接收子程序三个部分, CAN总线流程图和初始化程序流程图,如下 :
2 结束语
基于CAN总线的温度测量节点设计 篇8
CAN是Controller Area Network的缩写, 即控制器局部网, 通常称为CAN bus (CAN总线) , 是一种支持分布式控制的串行通信协议。CAN最初出现在汽车工业中, 是20世纪80年代德国Bosch公司为汽车的监控、控制系统而设计的, 主要是解决汽车中的电子控制装置之间的通信, 减少不断增加的信号线。CAN总线的直接通信距离最远可以达到10 km, 此时通信速率为5 kbps以下;而通信速率最高可达1 Mbps, 此时通信距离长为40 m。同时CAN总线的通信媒介采用双绞线或光纤, 选择灵活, 其结构较简单, 总线接口芯片支持8位、16位的CPU。
由于CAN总线采用短帧结构, 在标准格式中, 短帧的字节数为8个, 因此传输时间短, 受干扰的概率低, 重新发数据帧的时间短, 并且每帧信息都有CRC校验及其他检错措施, 这样可以保证极低的数据出错率。CAN总线上的节点在错误严重时, 可以自动关闭总线的功能, 使总线上的其它操作不受到影响。由于CAN总线的数据通信具有卓越的特性及极高的可靠性, 因而非常适合工业过程监控设备互连, 也是最有前途的现场总线之一。由于CAN总线的特点, 使得其广泛地应用于电力、航空航天、治金、交通工具、机器人、医疗设备、环境监控和家用电器等众多领域。本文提出基于CAN总线的温度测量节点的设计。
1 系统总体结构设计
根据系统的设计要求, 其总体设计结构如图1所示。整个系统由主站节点、分布式温度测量节点两部分组成。由于基于CAN总线的温度测量节点是一种分布式、实时的通信系统, 可采用主从方式通信, 其特点就是系统中任一节点设一为主站节点, 其余均为从站节点, 主站节点通过CAN总线与各个从站节点进行通信。我们只需设一个主站节点作为主监控器, 以点对点方式进行通信, 其余的从站均为各个温度测量节点。各个节点都通过CAN总线实现信号数据的连接, 各个温度测量节点具有较强的独立性, 具有工作可靠性、性能稳定、测量精确、安装调试方便、造价低廉等特点。
2 温度测量节点的硬件电路设计
CAN总线温度测量节点主要任务是温度采集与CAN通信, 其硬件结构框图如图2所示。硬件电路由微处理器STC89C52、总线控制器SJA1000、总线驱动器PCA82C50和传感器DS18B20四个部份组成。微处理器负责对SJA1000和DS18B20进行初始化, 通过总线控制器SJA1000实现数据的接收和发送等通信任务。
2.1 温度传感器DS18B20
DS18B20是美国DALLAS公司推出的第一片支持“一线总线”接口的温度传感器, 该传感器只需一个端口引脚进行通信, 就可以实现多点分布的应用, 具有低功耗、高性能、抗干扰强等优点。其传感器的特性为:
(1) 温度测量范围宽, 能测到-55 ℃~125 ℃的温度, 在-10 ℃~+85 ℃时精度为正负0.5 ℃。
(2) 提供9-12位的测量分辩率, 对应的温度精度分别为0.5 ℃、0.25 ℃、0.125 ℃和0.0625 ℃, 实现了高精度的测量。
(3) 接口方式独特, 仅需一条信号线就可以实现与微处理器的双向通信。
(4) 测量出的温度能直接转化成串行数字信号供CPU处理, 同时还传送CRC校验码, 具有很强的抗干扰纠错能力。
温度传感器的电路设计由单片机的引脚P3.5与传感器DS18B20的DQ脚相连, 实现微处理器与传感器的双向数据的通信。同时DQ单总线外接一4.7 k的上拉电阻。温度传感器的电路图如图3所示。
2.2 CAN通信电路的设计
CAN通信电路是整个系统实现通信的关键部分, 系统中各个节点和节点控制器是通过CAN通信电路接入CAN总线网络上的, 实现信号数据的传输。CAN通信电路采用STC89C52处理器、PHILIPS公司的总线控制器SJA1000、NXP公司的总线收发器82C250和高速光电耦合器6N137等器件组成。在CAN通信电路中微处理器负责对SJA1000进行初始化, 各信号通过CAN总线控制器实现信号数据的接收和发送等通信任务。同时为了增加CAN总线节点的抗干扰能力, 更好地实现了总线上各CAN节点间的电气隔离, SJA1000的TX和RX引脚通过连接光耦6N137后再与总线收发器PCA82C250相连, 总线收发器82C250的TXD和RXD分别接光耦6N137的输出OUT和输入IN端, 再通过具有差动发送和接收功能的总线终端CAN_H和CAN_L连接入总线电缆中, 完成通信的传输。
3 温度测量节点的软件设计
温度测量节点的软件设计包括CAN总线初始化、发送子程序及中断接收程序软件设计和温度传感器DS18B20的程序设计。其节点流程图如图4所示。
3.1 CAN初始化程序
CAN初始化即初始化CAN节点。要保证通信正确可靠则必须先对控制器SJA1000进行初始化参数设置。初始化设置是通过微处理器对SJA1000的寄存器进行初始化, 这些初始化包括控制寄存器的配置、命令寄存器的配置、状态寄存器的配置、中断管理寄存器的设置、总线定时寄存器的配置、输出控制寄存器的设置以及时钟分频寄存器的设置等。系统上电后, 对CAN初始化只有在复位模式下才可以开始, 初始化设置完成后, CAN控制器就可以回到工作状态, 即进入工作模式, 执行正常的通信任务。CAN控制器初始化流程图如图5所示。
3.2 CAN通信电路程序
CAN总线节点要完成通信任务则还必须包括发送子程序及中断接收程序。发送子程序负责各节点报文的发送任务。发送时只需将待发送的数据信息按特定的格式组合成一帧报文, 送入CAN控制器SJA1000的发送缓冲器中, 启动SJA1000发送即可完成发送报文任务。在向SJA1000发送缓冲器发送报文之前, 可先做一些判断, 判断其是否正在接收数据、先前发送是否成功以及发送缓冲器是否锁定等等, 以确保数据发送的可靠性。
中断接收程序主要是负责节点报文的接收以及其它中断情况的处理。当进入中断后要进行是否有数据的判断, 以防干扰误中断。
3.3 温度传感器的程序设计
温度测量节点电路上电后也要进行初始化设置, 初始化完成后, 温度测量节点中的温度传感器对采集到的数据信息实时处理、现场数据实时显示, 并判断采集的信息是否超过正常值, 如出现异常, 则报警提示并通过CAN通信电路进行通信。
4 结束语
本设计应用性很强, 在实际应用中表明, 其温度测量的精度和稳定性都得到很好的提高, 准确地反应了工作状况和实际状况, 达到了预期目标。
摘要:介绍了CAN总线技术及特点, 提出了一种基于CAN总线的温度测量节点的设计, 该系统采用单片机技术和CAN总线技术实现, 给出了温度测量节点的硬件、软件的设计。经实际应用, 使用CAN总线的温度测量节点在信号传输的实时性、可靠性、传输距离和测量精度有着显著的提高。
关键词:CAN总线,节点,CAN通信
参考文献
[1]杨春杰, 王曙光, 亢红波.CAN总线技术[M].北京:北京航空航天大学出版社, 2010.
[2]章欢.基于CAN总线的火灾报警系统的设计与实现[D].武汉理工大学, 2008.5.
[3]戴明.基于CAN总线的温度监控系统[D].南京理工大学, 2006.12.
CAN总线节点 篇9
由于煤矿井下地质条件的限制, 巷道分布复杂, 地点分散, 数据通信情况复杂, 并且煤矿井下大型电力设备较多, 干扰很大。因此, 煤矿井下的通信要求比较严格。
CAN总线实现数据通信具有较高的可靠性、实时性和灵活性, 其抗干扰能力强的优势能满足数据的通信质量和通信要求。因此, 笔者设计了一种基于CAN总线的煤矿井下通信节点, 通过CAN总线将一些传感器采集的监控数据传输到地面, 同时一些控制数据也能通过CAN总线传送到具体设备, 从而实现数据的可靠传输及准确控制。
1 总体设计思想
CAN总线可提供较高的数据传输速率, 并且传输距离最远可以达到10 km。CAN总线为多主工作方式, 因此, 可建立若干节点, 每一个节点都可以灵活地接入CAN总线网络, 同时该网络中没有主从节点的区别, 任何节点都可发送、接收数据。笔者利用其中几个节点, 通过串口通信或以太网与外网连接, 将CAN总线传输的数据送到外网中, 然后外网的PC机或服务器再对数据进行处理, 从而满足了数据采集或检测系统的要求, 如图1所示。
CAN总线协议最大的特点就是废除了传统的站地址编码, 而对通信数据块进行编码, 数据块标识符可由11位或29位二进制数组成[1]。这种按数据块编码的方式可使不同的节点同时接收相同的数据。该特点给在分布式控制系统中实现模块间的数据和控制信息共享带来了极大方便, 也为在CAN总线上广播语音提供了方便。
另外, CAN总线的信号传输采用短帧结构, 每一帧的有效字节数最多为8个, 可满足通常工业领域中的控制命令、工作状态及测试数据的一般要求;同时8个字节不会占用总线时间过长, 从而保证了通信的实时性, 而且受干扰概率也很低。
因此, 在煤矿井下利用CAN总线建立节点, 能够实现数据的可靠传输及准确控制。
2 节点硬件设计
2.1 硬件选型
采用微芯公司生产的内部自带CAN总线控制模块的单片机PIC18F458建立CAN总线通信节点, 优点是其内部集成了CAN总线控制模块, 只需在芯片外部加上CAN总线驱动电路即可。
CAN总线采用的是差分电平传输方式, 因此, PIC18F458的输出信号应通过驱动才能连接到总线上。CAN总线驱动芯片采用MCP2551, 该芯片能将PIC18F458输出信号的TTL电平转换为总线上的差分电平, 达到驱动的目的。
2.2 硬件结构
CAN总线节点利用PIC18F458采集传感器送来的数据, 通过AD转换或计算后, 将数据通过CAN总线接口传送到总线上进行发送, 在未发送数据时也可接收CAN总线上与本节点标志位相符的数据帧, 可用来控制指定的设备。CAN总线上的任一节点还可以根据需要设置串口, 将CAN总线上监测的数据通过该节点传输到PC机上, 实现综合管理和监控功能。CAN总线节点硬件结构如图2所示。
3 节点软件设计
3.1 软件流程
根据PIC单片机CAN总线控制模块的特点以及CAN总线相关的通信, 在PIC单片机中的编程主要侧重2个方面:一是初始化CAN模块, 包括设置各个CAN总线控制寄存器, 初始化发送接收邮箱等;二是侧重CAN总线数据帧的发送和接收。CAN总线节点收发程序流程如图3所示。
PIC18F458内部集成的CAN总线控制模块, 包括2个过滤器、1个独立的信息集中缓冲器、2个发送缓冲器、2个接收缓冲器[2]。信息集中缓冲器接收所有的信息, 再将数据帧通过过滤器、屏蔽器的验证, 若数据帧满足过滤器条件 (即数据帧的标志符与节点标识符相同) , 该数据帧将被送到接收缓冲器0或者接收缓冲器1中。
3.2 参数设置
在PIC18F458的程序中需要设置与CAN总线通信相关的参数, 包括CAN总线上码流波特率大小、CAN数据帧的标识符、CAN总线通信的相关中断使能与禁止等。通过对PIC18F458内部CAN总线控制模块的一些寄存器进行赋值, 便可完成这些参数的设置。
TXREQ-发送请求状态位; TXERR-发送错误检测状态位;MAB-信息缓冲器;RXB0、RXB1-接收缓冲器;TXBIE-发送缓冲器中断使能位;RXBIE-接收缓冲器使能位
由于CAN总线的实际传输距离与其波特率有关, 因此, 需根据现场通信距离来确定波特率。在此, 笔者假设需设置CAN总线上的码流波特率为125 000 bit/s。只需根据该波特率大小进行一定的运算, 即可得到PIC18F458中与产生波特率相关寄存器的值。通过计算, 只需要将PIC18F458时钟的寄存器BRGCON1设置为01H, 将BRGCON2设置为90H, 将BRGCON3设置为42H, 即可以产生125 000 bit/s的波特率。同时需要设置每个节点自己的发送标志符和接收标志符。
3.3 程序调试
笔者设置3个CAN总线节点, 这3个节点中任意一个节点都能向CAN总线上其它2个节点发送数据, 并且同时每个节点也能接收其它2个节点的数据, 如图4所示。
在测试中, 笔者设置CAN总线节点A的发送标识符为FEE0, 接收标识符为FCE0;节点B的发送标识符为FDE0, 接收标识符为FEE0;节点C的发送标识符为FCE0, 接收标识符为FDE0。通过这样的设置, 便能够实现节点A发送数据到节点B, 并在空闲时接收节点C的数据;同理, 节点B发送数据到节点C, 并在空闲时接收节点A的数据;节点C发送数据到节点A, 并在空闲时接收节点B的数据。
现在对每个节点进行程序开发。首先是CAN总线初始化程序, 该段程序配置CAN总线的发送, 包括发送标识符、波特率、需发送的数据等。其程序如下:
CAN总线接收部分的初始化程序主要包括接收数据标志位、屏蔽器和过滤器的设置, 使用接收缓冲器RXB0和RXB1分别接收来自其它2个节点的数据, 其中RXB0使用过滤器RXF0, RXB1使用过滤器RXF2, 然后将CAN总线的接收中断打开, 此时便可以检测总线, 随时准备接收具有相同标识符的数据帧, 并从配置模式进入到正常模式。部分相关程序如下:
CAN总线接收部分的中断服务程序如下:
PIC18F458的主程序用于将各种配置和发送接收综合在一起:首先设置串口, 以便节点向外界PC机通信, 然后再初始化CAN总线发送和接收, 然后等待接收中断, 完成CAN总线的数据通信。其程序如下:
实验调试结果表明, 节点的软件设计合理, 实现了3个节点两两之间的互发互收。
在煤矿井下实际的节点设置中, 可以在实验调试中的3个节点的基础上再扩充节点, 并且在程序中要加上仲裁、优化等相关设置, 最终实现煤矿井下CAN总线节点的设计。
4 结语
采用PIC单片机设计CAN总线节点, 硬件电路简单, 只需对相关寄存器进行正确设置即可, 操作也相对简便, 还具有较高的性价比。实例调试结果表明, 节点的软件设计合理, 实现了节点间的互发互收, 具有一定的实用性。
摘要:提出了一种基于CAN总线的煤矿井下通信节点的设计方案, 分析了在煤矿井下利用CAN总线建立节点的设计思想, 详细介绍了CAN总线节点的硬件和软件设计, 并以3个CAN总线节点相互通信为例, 给出了相关程序的设计。实验调试结果表明, 该方案合理可行, 实现了3个节点两两之间的互发互收。
关键词:矿井,井下通信,CAN总线,节点,PIC单片机
参考文献
[1]杜尚丰.CAN总线测控技术及其应用[M].北京:电子工业出版社, 2007.
[2]刘和平.PIC18Fxxx单片机原理及接口程序设计[M].北京:北京航空航天大学出版社, 2004.
[3]刘启中, 李荣正.PIC单片机原理及应用[M].北京:北京航空航天大学出版社, 2003.
[4]张扬, 魏莹, 刘新力, 等.PIC单片机CAN总线模块的应用[J].自动化技术与应用, 2007 (6) :115-117.
CAN总线节点 篇10
关键词:CAN总线,ARMLPC2132芯片,μC/OS-Ⅱ操作系统
1 引言
CAN现场总线是为解决现代汽车中众多的电控模块之间的数据交换而开发的一种串行通信协议。CAN协议使用多主对等模式进行组网,通信方式灵活;基于数据包的优先级,使用非破坏性的总线仲裁技术,节省了总线冲突仲裁时间;数据包采用短帧结构,传输时间短,受干扰概率低,传输距离长;具备完善的错误处理机制,保证了总线的健壮性。可以说CAN总线在通信能力、可靠性、实时性、灵活性、易用性、传输距离等方面较其他串行总线有着明显的优势。目前它已被广泛应用在汽车、工业、消费类电子等领域,而被公认为是最有前途的现场总线之一。
计算机技术和通信技术的飞速发展,使得以ARM为技术方案架构的嵌入式系统得到了广泛应用,而由于ARM系列芯片在嵌入式系统方面的优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部都自带了CAN控制器,极大地方便了开发人员对CAN总线的开发。但目前仍有些ARM处理器没有内置CAN协议控制器,为了能够适应节点间对数据传输所提出的实时性、可靠性的要求,同时又不改变原来的硬件结构,基于LPC2132+μC/OS-II开发平台,设计了较为通用的CAN接口模块的硬件电路,并实现了CAN通信的软件设计。
2 LPC2132芯片
LPC2132是基于ARM7TDMI-S的高性能32位RISC微控制器,它一方面具有ARM处理器的所有优点:低功耗、高性能;同时又具有较为丰富的片上资源,非常适合嵌入式产品的开发。其特点如下:
(1)集成了Thumb指令集。
(2)32KB可在系统编程(ISP)的片内Flash和16KB的静态RAM,内置向量中断控制器。
(3)2个UART,2个I2C串行接口,2个SPI串行接口,2个定时器,PWM单元可提供多达6个PWM输出,8通道10位ADC,实时时钟RTC,看门狗定时器WDT,48个通用I/O引脚。
(4)CPU时钟高达60MHz,具有片内晶体振荡器和片内PLL。
LPC2132内部没有集成CAN控制器,为了使得LPC2132能够利用CAN总线进行通信,可以通过外部扩展来拓展其功能。
3 硬件电路
由于LPC2132是由3.3V供电的ARM7TDMI微处理器,其各个IO引脚是3.3V的TTL电平,而且可以承受5V的电压。而独立CAN控制器SJA1000是5V供电,其各个IO口的电平是5V的TTL电平,所以二者兼容,其IO可以直接相连。
3.1 LPC2132与CAN控制器接口
LPC2132与CAN控制器接口如图1所示,LPC2132的管脚通过转接器CON17引出,P0.8~P0.15与SJA1000的AD0~AD7直接相连完成数据交互;P0.22,P0.25,P0.31,P0.23分别与SJA1000的ALE/AS,RD/E,WR,CS相连,以实现LPC2132对SJA1000的读写控制逻辑信号;P0.30,P0.27分别与SJA1000的INT,RST相连,以实现中断信号的传递和微控制器对SJA1000的软复位操作。LPC2132访问SJA1000时,需要通过软件模拟SJA1000中所规定的读写时序(即MCS-51读写外部数据存储器的时序)来进行,SJA1000的模式引脚MODE通过VCC而置为高电平,使得SJA1000工作在Intel的模式。
3.2 CAN收发器与CAN总线接口
CAN收发器与CAN总线的接口如图2所示,其中SJA1000的TX0,RX0分别与CAN收发器的TXD,RXD相连,为提高CAN收发器PCA82C250与CAN总线的接口部分的抗干扰能力,可在PCA82C250的CANH和CANL引脚串接共模扼流圈,以消除共模干扰,而不影响总线差分信号够顺利通过。并且CANH和CANL分别通过一个磁珠与总线相连,以起到消除高频干扰的目的。CANH和CANL与地之间并联两个30pf的小电容,可以起到滤除总线上的高频干扰并使系统具备一定的防电磁辐射的能力。另外在两根CAN总线接入端与地之间分别接了一个瞬态电压抑制器TVS,当CAN总线有较高的电压时通过TVS可迅速击穿而接地,起到一定的过压保护作用。PCA82C250的Rs引脚上接有一个斜率电阻以降低射频干扰。
本设计为一个通用设计方案,对于其他无内置CAN控制器的能够承受5V的TTL电平的处理器来说,只需改变与SJA1000的数据端口,ALE/AS、RD/E、WR、CS、INT、RST相连接的引脚即可完成外扩CAN接口的硬件设计工作,如果电平格式不兼容,则在两者之间加一个逻辑电平转换的器件即可。
4 软件设计
4.1 对SJA1000的读写访问
由于引出的LPC2132的48个引脚全可以作为GPIO使用,首先通过软件模拟读写SJA1000的时序(由于SJA1000工作在itel模式下,所以读写SJA1000的时序也就是MCS-51读写外部数据存储器的时序),来对SJA1000进行操作,进而完成CAN通信功能。为此我们可以编写两个函数以完成对SJA1000的操作:
写SJA1000函数:Void Wrcan(uint8 addr,unit8 data);
读SJA1000函数:uint8 Rdcan(unit8 addr);
其中addr为SJA1000内部相应寄存器的地址,data为LPC2132向SJA1000发送的数据。
4.2 CAN通信的实现
每个CAN网络节点要完成通信功能需要实现3个功能模块:对SJA1000的初始化模块,数据发送模块,数据接受模块。
4.2.1 对SJA1000的初始化模块
在开始通信之前,首先要在SJA1000的各个功能寄存器进行设置,包括模式寄存器、波特率、时钟分频器、中断使能寄存器、滤波寄存器、输出控制寄存器。
OSCANSem=OSSemCreate(0);//建立中断服务程序和数据//接收任务通信使用的信号量
}
OSSemCreate()函数是uc/os-ii提供的创建信号量函数,信号量为任务间通信的一种机制,在多任务编程时需要用到。
4.2.2 数据发送模块
假设要发送的数据的ID存储在数组ID[4]中,数据存储在数组Data[8]中,其发送模块程序如下所示,其中参数DLC为发送的字节数,FF为帧类型,即0为数据帧,1为远程帧。
OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL()是操作系统提供的设定代码临界区的两个宏,当程序执行到两个宏之间的代码时,程序的执行不允许被打断。为了避免出现多任务对全局数据的竞争,这里需要对这段代码做临界处理。
4.2.3 数据接受模块
根据电路图1,采用中断方式来接收数据,LPC2132的P0.30设置为外部中断3,整个数据接受模块由数据接受函数voidRecData(uint8*Rt)、中断处理函数Can_Exception(void构成。当SJA1000接受到CAN总线数据,通过P0.30向LPC2132发出中断申请,LPC2132响应外部中断3而使其进入中断处理函数,中断处理程序从SJA1000的接收缓冲区中读出接收的数据,放入全局变量temp数组中,然后通过发信号量的形式通知数据处理任务,数据处理任务通过调用数据接收函数得到数据,进而对接受到的数据进行处理。其中数据接受函数和中断处理函数如下:
5 结语
以ARM芯片作为主控制器,CAN总线作为数据传输方式来进行通信的嵌入式系统得到了越来越广泛的应用。以LPC2132为例,给出了一类微处理器与CAN控制器SJA1000之间的较为通用的硬件连接方法,对CAN总线进行了可靠性设计,并基于嵌入式实时操作系统μCOS-II进行了CAN通信软件开发,该设计现已在本校导航装备室集成仿真实验室的建设中得到了应用,事实证明本方案运行可靠、稳定,具有较高的容错能力和自我诊断修复功能。
参考文献
[1]周立功,等.ARM嵌入式系统基础教程[M].2005.
[2]王黎明,等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008.
[3]孙传友,等.测控电路及装置.北京:航空航天大学出版社,2007.
[4]张毅刚.新编MCS-51单片机应用设计.2003
相关文章:
小班音乐教案找朋友(六篇)01-17
安全保障01-17
最新小班音乐教案找朋友设计意图 小班音乐找朋友教案(大全8篇)01-17
医疗安全保障制度01-17
小班音乐找朋友教案及反思(五篇)01-17
2025年小班音乐教案找朋友设计意图 小班音乐教案找朋友(模板9篇)01-17
水质安全保障分区01-17
消防施工安全保障01-17