《基于CAN总线数据采集系统的设计与实现(共44页)》由会员分享,可在线阅读,更多相关《基于CAN总线数据采集系统的设计与实现(共44页)(42页珍藏版)》请在金锄头文库上搜索。
1、基于CAN总线数据采集系统的设计与实现CAN总线通信实验内容提要: 以CAN (Controller Area Network) 总线控制器SJA1000为核心, 设计了一种通用的基于CAN总线的数据采集系统, 给出了数据采集系统的原理、单个节点的软硬件设计; 重点阐述了CAN 总线智能节点的设计、实现与注意事项。 试验表明, CAN 总线的多主结构使系统改型灵活, 数据传输稳定, 可靠性好, 数据传输速率可达1Mbit/s, 能满足现场的实时性要求。CAN 总线的使用大大节约了连接导线、维护和安装费用, 提高了系统的性价比, 具有广泛的应用前景。关键词:数据采集 CAN 总线 现场总线 芯片
2、SJA 1000 目 录一、引言 信息技术的飞速发展,引起了自动化系统结构的变革, 形成以网络集成自动化为基础的控制系统。现场总线顺应这一形式发展, 已成为当前工业数据总线领域中一个新热点, 被广泛应用于工业现场控制、智能家居、交通工具、环境监测等众多领域。 用数据采集系统能实现数据采集与处理, 加入高级算法即可实现智能控制, 因而减轻了上位机的负担。本设计设计了一个通用的基于CAN 总线的数据采集卡, 着重阐述了它的设计及其实现。二、 CAN总线(一)CAN总线介绍CAN 总线 (Cont roller Area Network 控制器局域网)是现场总线的一种。 它是德国Bosch 公司在1
3、986 年为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯总线。CAN 总线与其它通信网的不同之处有二:一是报文传送中不包含目标地址 ,它是以全网广播为基础 ,各接收站根据报文中反映数据性质的标识符过滤报文 ,该收的收下 ,不该收的弃而不用。其好处是可在线上网下网、 即插即用和多站接收;二是特别强化了对数据安全性的关注 , 满足控制系统及其它较高数据要求的系统需求。CAN 总线具有下列主要特性:l 多主站依据优先权进行总线访问;l 非破坏性的基于优先权的总线仲裁;l 借助接收滤波的多地址帧传送;l 远程数据请求;l 配置灵活;l 全系统的数据相容性;l 错误检测和出错
4、信令;l 发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发送;l 暂时错误和永久性故障节点的判别以及故障节点的自动脱离 CAN 总线。(二)CAN协议数据传输的通信协议是指对数据传输的约定 ,包括定时 、控制 、格式化和数据表示方法等等 。1.CAN分层结构的协议CAN是一串行通讯协议 CAN总线规范规定了任意两个节点之间的兼容性 ,包括电气特性及数据解释协议 ,为保证设计使用的透明性及使用的灵活性 ,CAN协议分为如下几层:目标层 、传送层 、物理层 。目标层的功能范围包括:信息识别、信息状态及处理。传送层的功能范围包括: 帧组织、总线仲裁、检错、错误报告、错误处理。物理层的功能范围包括:
5、 实际位传送过程上的电气特性。2.CAN网络通讯协议总线控制器支持4种不同结构的CAN协议帧类型:数据帧用于节点之间的数据传输远程帧:用于请求发送具有相同标识符的数据帧出错帧:用于指示检测到的错误状态过载帧:用于提供先前和后续数据帧或远程帧之间的附加延时数据帧、远程帧、出错帧、过载帧都按一定的格式进行编码数据帧:由7个不同的位场构成 ,如图 1所示。它们是:帧起始 、仲裁场、控制场、CRC场 、ACK场和帧结束;远程帧:由6个不同的位场构成:帧起始 、仲裁场、控制场、CRC场 、ACK场、帧结束出错帧:由两个不同的场构成。第一个场由来自不同节点的错误标志叠加给出,后随的第二个场为错误定界符超载
6、帧:包括两个位场、超载标志和超载界定符。数据帧和远程帧以帧间空间同先前帧隔开,帧编码和发送/接收。图1 数据帧的构成帧起始、仲裁场、控制场、数据场、序列帧段均以位填充方法进行编码 ,即在以送位流中检测到5个数值相同的时候 ,自动插人一个补码位。数据帧或远程帧的其余位场、错误帧、超载帧为固定格式 ,不使用位填充方法编码,帧中的位流按照非归零方法编码。发送时从其SOF场开始逐个位场发送。对于发送器和接收器 ,一帧的有效点是不同的。对于发送器 ,若在帧结束完成前不存在错误 ,则该帧有效。对于接收器 ,若在帧结束最后一位前不存在错误 ,则该帧有效。总线访问和仲裁:当检测到间歇场未被 “显性”位中断后
7、,认为总线被所有节点释放。总线被释放后 , “错误一激活”节点可以访问总线。当许多节点一起开始发送时 ,只有发送具有最高优先权的帧节点变为总线主机 ,享有对总线的控制权。这种解决总线访问冲突的机理是基于竞争的促裁 ,依据标识符和紧随其后的RTR位来完成。错误检测:在CAN中存在5类不同的错误位错误、填充错误、CRC错误、形式错误、应答错误、在网络中的任何一个节点 ,根据其错误计数器的数值,可能处于下列3种状态之一:“错误一激活”节点:一个“错误一激活”节点可以正常参与总线通信,并在检测到错误时 ,发出一个激活错误标志。“错误一认可”节点:一个“错误一认可”节点不应发送激活错误标志 ,它参与总线
8、通信,但在检测到错误时,发出一个认可错误标志。“总线脱离”节点:当一个节点由于请求故障界定实体而对总线处于关闭状态时 ,其处于“总线脱离”状态,在“总线脱离”状态。为了进行错误界定 ,在总线上的每一个单元中都设有两种计数器:发送出错计数器和接收出错计数器 ,错误计数器的值按照一定的规则进行修正。当节点的发送计数器或接收计数器的值超过127时 ,则监控器要求置相应节点为“错误一认可”状态 ,送出一个激活标志。当发送计数器或接收计数器的值均小于或等于127时 , “错误一认可”节点再次变为 “错误一激活” 。当节点的发送计数器的值超过255时 ,则监控器要求置相应节点为“脱离总线”状态。处于“脱离
9、总线”状态的节点 ,在监测到总线上出现128次11个连续的“隐性”位 ,变为两个错误计数器均为0的“错误一激活”节点。三、结构设计 数据采集系统由数据采集模块和数据传输模块组成, 其中数据传输通过CAN (Controller Area Network) 总线来实现。 控制器局域网CAN 属于现场总线范畴, 它是一种有效支持分布式控制或实时控制的串行通信网络。系统采用总线式网络拓扑结构, 其系统总体结构如图2所示。图2 系统总体结构选用CAN 总线连接各节点, 形成多主控制器的局域网。 CAN 总线符合 ISO11898标准, 最多可挂接110个节点, 采用CAN 总线特有的多主传送方式, 各
10、采集控制器根据现场需要, 当有数据时可自主发送, 无需主机不停地轮巡, 节省了网络上的数据流量, 提高了传输效率。 CAN 总线传输介质为双绞线或同轴电缆, 走线少、系统易扩展、改型灵活, 正是由于这些其他通信方式无法比拟的优点, 才使之成为系统分布比较分散的数据采集系统的理想总线。数据采集系统将由现场传感器送来的数据发送到空闲的CAN 总线上, 而总线上各节点通过预先设置好的验收码和验收屏蔽码, 来决定是否使用这个消息。 如果采集的数据需要进一步进行处理, 则上位机可从总线上接收数据并对其处理。 处理后的数据再送回CAN 总线, 经数模转换模块或其他节点进行控制操作。 当上位机需对某个节点施
11、以控制时, 可采用点对点的方式与该节点进行通讯; 而当它需要对所有节点加以控制时, 则采用广播方式将命令发送到总线。 这样大大减少了数据的传输量, 从而提高了系统的传输速率, 同时又保证了系统的实时性和可靠性。 下面以数据采集系统中的数据采集节点为例来说明单个节点的设计思想。四、硬件设计数据采集系统单个节点硬件框图如图3所示, 由传感器检测的信息经多路开关送到可编程放大器PGA 204, 根据信号大小调节放大倍数(1, 10, 100, 1 000倍) , 放大后, 经AD574转换为数字信号, 送入微处理器中存储, 然后根据现场情况的需要, 将信号发送到CAN 总线上, 被其他节点或上位机接
12、收。图3 节点硬件框图由于以AD574为A/D 转换器的数据采集卡比较普及, 故下面重点阐述数据传输部分, 即CAN 总线智能节点的设计与实现。 CAN 总线上的节点是网络上的信息接收和发送站, 由于节点主要由单片机和可编程的CAN 通信控制器组成, 能通过编程设置工作方式、ID 地址、波特率等参数, 故称其为智能节点。CAN节点原理图如图4所示。89C51是节点的微处理器, 作为一个存储器 I/O 映象设备, 负责对控制器SJA 1000初始化, 并控制其实现数据的收发等通信任务。 在CAN 总线通信接口中, 使用PH IL IPS 公司的 SJA 1000和 TJA 1040芯片。 SJA
13、 1000是独立的CAN 通信控制器, 用于完成CAN 总线通信协议的物理层和数据链路层的功能。TJA1040为高性能、高速CAN 收发器, 使用它可增大通信距离, 提高系统瞬间抗干扰能力, 改良系统的抗电磁干扰及电磁辐射性能, 保护总线, 降低射频干扰, 实现热防护等。图4 CAN节点原理图为进一步提高抗干扰能力, 在CAN 控制器SJA 1000和驱动器TJA 1040之间使用了高速光耦器件6N137构成隔离电路, 传输介质采用双绞线 (或同轴电缆) 分别接至CAN 收发器TJA 1040的CANH 和CANL 引脚。 同时在总线两端CANH 和CANL 之间加上分离中断的120 8 终端
14、电阻, 对总线阻抗匹配起着相当重要的作用 4 。此外, 为使CAN 控制器和微处理器能同时可靠复位, 外加了手动复位电路。SJA 1000的中断输出信号 (/N T) 接至单片机的中断引脚 IN T0, 通过中断方式实现单片机与CAN 控制器的通信。 在电路实际调试过程中须注意以下几点。1.总线的两个1208 终端电阻不可忽略。 否则会使数据通信的抗干扰性和可靠性降低, 严重时可导致无法通信。2.TJA 1040 (与PCA 82C250兼容) 的“SPL IT”引脚 (代替82C250“ V ref”引脚) , 对总线DC 稳压很有效 4 。 如果“SPL IT”用于共模电压的DC 稳压,
15、这个“SPL IT”引脚要连接到分离中断的中间分接头。 若“SPL IT”不使用, 只需保持开路即可。3.TJA 1040引脚“STB”一般被直接连接到微处理器输出口, 以便于控制收发器的工作模式。五、软件设计CAN 总线节点的软件设计主要包括三大部分:CAN 节点初始化、报文发送和报文接收。熟悉这三部分程序的设计, 就能编写出利用 CAN 总线进行通信的一般应用程序。当然要将 CAN 总线应用于通信任务比较复杂的系统中还需详细了解有关CAN总线错误处理、总线脱离处理、接收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。下面仅就前面提到的三部分程序的设计作一个描述,以供大家在实际应用中参考。 (一)初始化子程序 SJA1000 的初始化只有在复位模式下才可以进行。初始化主要包括工作方式的设置 接收滤波方式的设置,接收屏蔽寄存器AMR 和接收代码寄存器 ACR 的设置,波特率参数设置和中断允许寄存器 IER 的设置等。在完成 SJA1000 的初始化设置以后 SJA1000 就可以回到工作状态 进行正常的