文档库 最新最全的文档下载
当前位置:文档库 › CAN总线实例介绍

CAN总线实例介绍

CAN总线实例介绍
CAN总线实例介绍

CAN总线读书笔记

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准。CAN总线解决方案为嵌入式设计提供通信与连接,使其进入崭新阶段。CAN串行总线协议是一款高速可靠的通信协议,创建最初用于汽车应用,如今已广泛用于需要达到1 Mbps比特率的稳健通信应用。在产品设计中集成CAN协议将是在恶劣电气环境下实现高度实时通信功能的低成本的可靠途径。

CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。近年来广泛应用于汽车控制系统和工业控制系统领域。下面我们可以看到CAN-BUS总线技术应用的具体案例。

案例1:电动汽车充电站换电站充电桩CAN总线管理系统方案背景介绍:电动汽车充电站是电动汽车发展和普及的重要基础支撑系统,也是电动汽车商业化、产业化过程中的重要环节。

现在通常的通电方式有3类,适用于不同的应用场合。充电站通常主要提供快速充电服务,辅以用于慢速充电的充电桩;充电桩则只能提供慢速充电;换电站则提供为电动汽车更换电池的服务。

而这三类的充电方式都会同样使用到计算机作为管理核心,并且通过以太网来连接站内的各个功能部分,如计费和打印等计算机和系统。所以以太网是作为管理网络存在于系统当中。对于直接的充电的指示和监控则是由可靠性和实时性更好的CAN总线来管理的,所以BMS和充电桩都是CAN接口的。

比较这3类充电方式的系统结构(图1)可见,系统的设备仅仅是在具体的充电方式上不同,在网络传输方面都是一致的。 图1为电动汽车充电站充电桩CAN 网络系统结构。在系统上就要求有网关能实现以太网和CAN 总线的数据转换。 以太网

充电控制系统

主机

充电控制系统主机

以太网转CAN 接口卡以太网转CAN 接口卡

充电桩充电桩充电桩充电桩CAN 总

线n 路CAN 总

线2路

CAN 总线1路

图1 电动汽车充电站充电桩CAN 网络系统结构

通常在CAN 网和以太网之间加人转换接口。如加入中继器、网桥、路由器等专门的硬件设备,硬件设备还可以是一块智能接口网板,来完成现场总线智能设备与以太网中央监控计算机之间的数据通信。一般来说这种转换接口的工作原理就是借助这些专门的硬件设备获取CAN 总线上的数据信息,然后封装成UDP/TCP 包,再通过以太网传输。

以标准帧和UDP 为例。当数据从CAN 总线向以太网转换时,假设CAN 协议使用标准帧格式。网关取出CAN 总线数据,将仲裁字段中1 l 位标识符由高到低转换为以太网应用层的高8位设备ID 和低8位设ID 。数据字段由高到低分别写入命令字、数据标识和数据中。子系统标识是根据设备ID 查询其属性,填人其优先级、局级优先级、系统标识、子系统标识,加上校验码,完成CAN 数据帧向以太网应用层协议的转换。如图2所示。

图2 CAN 标准帧转换成以太网帧

图3 以太网帧转换成CAN 标准帧

7位优先级(空1位)

8位系统标识

8位子系统标识

高8位设备ID

低8位设备ID

8位命令字

8位数据标识

高8位数据

低8位数据

校验码

帧起始 仲裁字段 控制字段 数据 CRC 帧结束 7位优先级(空1位) 8位系统标识

8位子系统标识 高8位设备ID 低8位设备ID 8位命令字 8位数据标识 高8位数据 低8位数据 校验码 帧起始 仲裁字段 控制字段 数据前2个字节 数据 CRC 帧结束

以太网应用层数据向CAN数据帧转换时,将设备的高8位设备ID和低8位设备ID,写人CAN数据帧的前两个字节,数据的前两个字节参加滤波,在CAN 总线中用来识别设备。后面的8位命令字、8位数据标识和16位的数据写入数据的后4个字节。如图3所示。

整个的系统的通信逻辑可以简单理解为:CAN设备向以太网设备发送数据时,首先CAN设备生成(:AN报义定时向CAN总线发送数据网关中CAN通信模块接收到CAN报义后,放到缓冲区中,以太网通信模块将报义取出转换成应用层数据协议,生成IP包中的数据场,填充IP报头,交由底层议发送到目的主机.日的主机将数据存储下来。反之.将以太网数据传给CAN设备时.以太网数据经过总线接口,首先判断是否是本网关数据,如果是本网关数据.取出应用层数据放到数据缓冲区中,在CAN数据模块中将其转化为CAN帧,并发送数据。

案例2:CAN 总线在X 线放射治疗模拟机中的应用CAN总线刚出现的时候,是作为轿车内的控制器连网手段。在非营利组织CiA (CAN in Automation)的推动下,CAN正在向更多的应用领域渗透。虽然汽车仍将是CAN技术的自留地,但支持者预期许多新的领域可能应用这种“嵌入网络”。正如CiA总经理Holger Zeltwanger所言,一旦CANopen协议完成标准化,厂商就可以利用该标准“把它们的应用与产品扩散到全新的市场”。有些人把CAN技术称为“嵌入网络”。例如在医疗电子领域,尽管CAN和CANopen并不是全新的技术。但是,有些厂商认为,CAN在该领域拥有很大的增长潜力。

例如,对于在医院层面上传输图像数据,Ethernet就足够了。但是,控制数据或者参数等时间关键数据必须在设备层面上传输,CAN此时是理想的解决方案。如在X射线扫描仪等恶劣环境下,CAN总线的高物理强壮性与固定拓扑,使得CAN总线和CANopen协议优于Ethernet。”在MRI扫描仪中,磁场强度很高。

背景介绍:。X线放射治疗模拟机(以下简称模拟机)和医用加速器是临床最常用的放疗设备。模拟机是一种大型的医疗设备,其由机架、床、准直器、影象系统、床侧控制器、数据显示器等几部分组成,控制对象繁多,控制系统比较复杂,利用CAN总线技术设计了模拟机的控制系统,将各个功能单元设计成独立的CAN节点挂接在CAN总线上,简化了系统的设计,降低了产品成本,有效了提高了设备的可靠性、可扩展性、抗干扰性,取得了比较理想的效果。

模拟机电气控制系统整体设计框图如图4所示,计算机控制系统由上位机和下位控制系统组成,上位机为标准PC 机,图象采集卡和双显卡接插于PC 机的PCI 总线上。上位机专用来与用户进行人机交互、数字图象处理、网络传输,其连接两台显示器分别用做图象处理的显示和模拟机系统状态的显示。上位计算机与下位控制系统之间通过RS232 串口进行通信,通信速度为9600bps 。下位控制系统包括系统主控制板、准直器运动控制板、床和机架运动控制板、系统状态检测板、继电器控制板、运动控器、状态显示屏等组成,这些分系统是具有CAN 接口的微处理器系统,它们之间的通信通过CAN 总线实现,速度为500Kbps 。系统主控制板负责上位机与下位控制系统的通信和协调机器的运动控制,机器的运动由相应的运动控制板进行控制,所有的控制命令和系统状态信息均通过CAN 总线进行交互。

图4 电气控制系统整体设计

整个控制系统具有以下几个特点:a. 通行可靠整个系统是CAN 总线分布式控制系统,控制方式明晰、可靠性高,通信速度快,通信总线利用效率高。b.可扩展性强。由于系统通信采用CAN 总线,可以在不改动任何硬件的情况下进行系统的扩展,并且对系统原有的性能没有任何影响,只要在功能板卡上设计符合本机CAN 通信软硬件接口就可以作为模拟机的一个独立节点挂接到系统,这就可以在很短的时间内方便的扩展模拟机的功能,使其适应更多的临床要求。c.抗干扰性强。操作间与模拟机机器之间的电气连接是通过经光隔的CAN 总线实现,整个现场总线的各个节点之间的电气连接都是数字信号,系统的抗干扰性和可靠性系统主控

制板准直器运动控制板 床和机架运动控制板系统状态检测板继电器控制板运动控制操作台状态显示屏床侧控制器上位机

控制系统

人机

交互图像

处理 网

输CANH CANL 串口通信

大大提高。d.成本低廉。由于系统采用CAN通信,所有的控制信息和状态信息都通过CAN总线传输;执行机构使用步进电机,自行设计步进电机控制驱动板,这就将相对复杂的控制系统“划分”成多个独立的“分控制器”,它们之间通过CAN 总线高速、可靠的进行通信。这些因素都使控制系统的结构清晰、简化,可以有效降低控制系统的板卡数量,增加系统的可维护性,使产品的成本大大降低。

总之,现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

参考文献

[1] 王泓.CAN总线的消息机制[J].中国测试技术,2006.

[2]顾本广.医用加速器[M].北京:科学出版社,2003

[3] 夏德海.论现场总线的应用[J].自动化仪表,2007.

[4] ZHOU T,SHARIF H,HEMPEL M,et a1.A Novel Adap—tive Distributed Cooperative Relaying MAC Protocol for Vehicular

Networks[J]Communications IEEE Journal,2011.

[5] ZHANG Jin,ZAHNG Qian,WEIJIA J.VC—MAC:A Co—operative MAC Protocol in Vehicular Networks[J].Ve—hicular Technology,IEEE Transactions,2009.

使用泰克MSO4000示波器测试与分析CAN总线信号

主题TOPIC —————————————————————————————————TITLE:使用泰克MSO4000示波器测试与分析CAN总线信号 OBJET :介绍了泰克MSO4000系列示波器在CAN网测试中的若干应用

目录 1目的 (3) 2适用范围 (3) 3参考文件 (3) 4历史 (3) 5泰克MSO4000示波器简介 (4) 6利用MSO4000示波器对CAN LS信号进行采集和解码 (4) 6.1 对示波器进行设置 (4) 6.2 监测CAN LS网络上的CAN_H和CAN_L电平信号 (5) 6.3 技术规范对CAN LS信号电平值的规定 (8) 6.4 监测CAN LS网络的总线解码信号 (9) 7利用MSO4000示波器对CAN HS信号进行采集和解码 (10) 7.1 对示波器进行设置 (10) 7.2 监测CAN HS网络上的CAN_H和CAN_L电平信号 (10) 7.3 技术规范对CAN HS信号电平值的规定 (11) 7.4 监测CAN HS网络的总线解码信号 (11) 8使用泰克“e﹡Scope”功能对示波器进行远程操作 (12) 9使用Open Choice软件自动获取示波器屏幕截图 (13) 10使用SignalExpress TE软件实现自动化测试 (15) 2 of Page 19

1 目的 CAN网络信号的测试包括总新电平信号的采集、电压值的测量、信号解码分析、总线通讯状态监测等内容,这部分内容也是构成CAN网络底层测试的基础,测试结果的正确与否,直接关系到整车电器架构的稳定性与电控单元功能的完好性,因此如何便捷高效地完成CAN网络的测试,已经成为整车验证环节中不可回避的一个话题。本文中提出了一套使用泰克MSO4000系列示波器与配套的LabVIEW SignalExpress TE软件进行CAN总线信号测试与分析的方法,从而完成整车高速、低速CAN网络信号的分析与测试工作。通过“示波器+PC软件”的方式,测试人员可以方便快捷地对总线信号进行实时监测,也可以使用示波器的解码功能直接观测到对应的逻辑信号。在使用附属的SignalExpress TE软件后,还可以实现远程测试、自动化测试等功能,与其它测试和分析方法相比,具有入门简单、适用范围广、数据采集精度高等优点,大大提高了基于CAN总线技术的电控单元的开发与测试效率。 2 适用范围 供新车型项目中进行CAN网底层测试时参考使用。 3 参考文件 4 历史

CAN总线通信接口及程序设计毕业设计

机电工程学院 毕业设计说明书设计题目: CAN总线通信接口及程序设计 2012 年 5 月21 日

目次

1 CAN总线介绍 1.1 CAN总线的发展背景 随着汽车产业的发展,需要一种更利于信息数据传输交换的通信协议。汽车中的各种电子控制系统需要较高的技术支持,而随着汽车的发展,汽车是否安全、是否便利、成本是否低、是否舒适都已成为人们首要考虑的事情。但是传统的汽车控制技术已不足以满足人们越来越高的要求,也已不适以汽车的发展方向。20世纪80年代,德国Bosch公司着手研究用于汽车产业的新的通信协议及控制方法,并首先提出了CAN总线控制系统。这一崭新的网络协议使得汽车产业得到了飞速的发展。 CAN总线最明显的特点是最大程度地减少了汽车控制系统中的线束的数量及长度,另外还大大提高了系统控制的可靠性和稳定性。在没有CAN总线协议之前,一辆汽车中用于各种控制通信的线束的总长度达3公里之长,严重影响了汽车的通信速度和通信精度。并且还使汽车的整体结构繁冗复杂,可靠性低,成本高,难以维护。因此CAN总线的出现无疑具有重大的意义和作用。作为一种新的网络通信协议,CAN总线不仅减少了汽车中线束的长度,还提高了汽车的整体性能,极大的促进了汽车产业的发展。 CAN总线刚被提出的时候,仅仅应用于汽车产业上,但CAN总线通信协议的性能和可靠性经过多年的检验,已被应用于越来越多的产业,比如航空、船舶、机床等产业设备方面。仅仅二十多年的发展,CAN总线便已成为自动化领域技术的潮流。 CAN总线是串行通信网络。传统运用的是基于R线构建分布式控制系统,这种传统的控制系统是基于通信节点的地址编码的,因此其结构复杂,直接导致系统的通信效率不高,并且控制的可靠性能低。CAN总线通过每个网络节点进行数据通信,每个节点可以互相收发数据,CAN总线协议对通信数据编码,不对节点地址编码,使各个节点可以同时接收到相同的数据,大大增强了数据通信的实时控制及传输性能。另一方面CAN总线使用起来非常方便。CAN总线的结构十分简单,仅有2根线(CANH和CANL)和外部设备相连,但CAN总线的内部却有非常复杂和智能的通信模块,可以方便快捷准确无误的进行数据

can总线分析仪kvaserlin产品详解

CAN总线分析仪Kvaser Linx 将Kvaser Linx连接到Kvaser 现场总线上,即可分析J1587、LIN、K-Line、SWC 或 LS 总线网络,其优越的兼容性、灵活性和可靠性,极大的方便了各种总线的分析,目前市场上尚只有Kvaser Linx J1587 ?Kvaser Linx LIN适用于LIN 2.0和LIN 1.x. ?Kvaser Linx J1587适用于 SAE J1587/1708. ?Kvaser Linx K-line适用于ISO 9141. ?Kvaser Linx SWC适用于SAE J2411, GMLAN. ?Kvaser Linx LS适用于ISO 11898-3 (故障容忍CAN). ?Kvaser Linx Analog I/O适用于从0到24伏的输入电压. 一般特点 ?塑模造的9针DSUB母连接器带大拇指螺钉 ?塑模造的9针DSUB公连接器 ?紧凑的塑料外壳 ?适用于Kvaser的高速CAN接口 ?特别适合于 Kvaser Memorator Professional, Kvaser USBcan Professional 产品版本 ?Kvaser Linx J1587 (Schedule for Item no. 00389-7) ?Kvaser Linx LIN (Schedule for Q1, 2007) ?Kvaser Linx K-line (Schedule for Q1, 2007) ?Kvaser Linx SWC (Schedule for Q1, 2007) Kvaser Linx LS (Schedule for Q1, 2007)

CAN总线学习心得--重要

CAN总线学习心得--重要 SJ A1 0 0 0 的常用标准波特率设置,为什么基本上都是单次采样?即使是低速的时候也是这样的,既然T SEG1 的设置周期都很大,比如都大于1 0 了,为什么不让他采样三次呢?答:是不好理解,但那是Ci A 推荐的值。用5 1 系列芯片和两个SJ A1 0 0 0 接口还要外扩一个RAM,请问5 1 的AL E 能否同时与三个芯片的AL E 管脚相连( 地址不同) 有哪位高手做过双SJ A1 0 0 0 冗余的请指教!答:能同时连接。请问CAN 总线在想传输1 0 0 0 m 的情况下, 最快的速度能到多少呢?答: 5 0 k b p s = 1 3 0 0 m。如果一个网络中只有 2 个节点, 其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗?答:能进入接收中断,你自己的试验也可以证明。想组建一个简单的CAN 网络, 已经有两个节点, 我想问CAN 总线如何组建, 终端电阻安装在哪里?小弟还没有入门, 大虾们指点一下。答1 :直接将节点CANH 和CANL 连到总线上,终端电阻接在总线两端,大约1 2 0 欧。答2 :推荐北航出版《现场总线CAN 原理与应用技术》,研读一下。请问各位老师:我是一名c a n 总线的新手,我正在做c a n 总线的开发,控制器用s j a 1 0 0 0 t ( 我自己两个控制板互通) , 但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断增加,直到0 x f f 最后恢复到0 x 7 f , 谢谢各位老师帮我解答这个问题。或者对我给与启发答1 ;首先调通单个节点。答2 :这是单节点发送没有成功( 或者由于网络中其他节点没有收到帧并在响应场响应) 建议参考网站CAN 应用方案。我想请教各位c a n 远程贞有何作用?如何应用?在什么情况下才需要用到远程贞?谢谢了!答:远程帧的用与不用完全取决你自己的协议,c a n 有远程帧的功能,是可用可不用的!用网站提供的计算波特率的工具算出的数,1 2 k 以上的都正确,无论是自接收还是两个节点通讯都没有任何问题。但是1 2 k 以下的数据一个都不能用,两个节点通讯没有成功的,自接收有1 0 k 的几个数据成功。我们的项目要求必须在1 0 k 以下,最好是5 k ,但是不成功,自己计算的数据也没有成功的。(我们至少试验了3 0 多个,所有情况都考虑了。)我现在怀疑s j a 1 0 0 0 的波特率根本达不到5 k 和相对应的传输1 0 k m。或者可以谁能提供个经过实践检验的正确的总线定时器0 和1 的设置呢?要求低于1 0 k 。答:PCA8 2 C2 5 0 / 2 5 1 可以保证5 KBPS 的速率;比如Z L GCAN 系列接口卡。答:t j a 1 0 5 0 在低速时好像有问题。我用1 0 5 0 进行5 k 的时候不行,用8 2 c 2 5 0 很好,你可以试一试。我本想双机调试,一边收,一边发,但跑程序后,发送方会不断进入复位模式,所以现在进行自测试模式,我先进入复位模式,设置进入PEL I CAN 模式,对寄存器初始化后,设置接收,发送中断使能,最后设置进入自接收,单滤波模式,这样初始化就结束了,我的ACR0 ~ ACR3 为0 x 5 5 , 0 x 5 5 , 0 x 5 5 0 x 5 0 , AMR0 ~ AMR3 为0 x f f , 之后,我就往BUF F ER 里填数,0 x 8 8 , 0 x 5 5 , 0 x 5 5 , 0 x 5 5 , 0 x 5 0 , 0 x 3 0 , 0 x 3 1 , .0 x 3 7 , 之后,启动自接收请求命令,但是程序只进入了中断一次,是发送空中断,接收中断没有产生,我读发送错误寄存器,发现有错误产生,我读接收计数寄存器,为0 ,说明我没有收到数,但我读接收BUF F ER 时,值为0 x 5 5 , 0 x 5 5 , 0 x 5 5 , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0 x f f , 0 , 0 , 0 , 0 , 0 , 以上测试时,我在CANH 和CANL 之间加入了两个1 2 0 欧的匹配电阻并联在一起的,请各位高手指点呀,谢谢了答:在总线上加个CAN 接口卡会方便许多,或者加个捕获功能的示波器也可以检测波形。仿真环境:k e i l u v 2 编译器:k e i l c 5 1 7 . 0 仿真器:t k s - 5 9 1 s c p u : p 8 7 c 5 9 1 程序大小:8 K 左右兄弟在一片CPU 中烧写了一个,运行一个CAN 总线,I I C 总线测试程序能够正常运行。这个基础上加上应用程序后在仿真机中运行正常,但是烧写到c p u 后插入c p u 程序不能运行,请问是什么原因?另外一个问题:在另外一个项目中条件相同,程序只有4 K, 程序正常跑着,CAN 接口可以检测到输出波形但是却不能正确传输数据,在一块旧板子上就可以,比较两者之后发现电路完全相同测量也正常,只是布局不同,请教原因。答:程序已运行了吧?可能是HEX 文件有错;编制程序时注意P8 7 C5 9 1 的ERAM 设置、6 CL K 设置。位流数据采样自发送节点的8 2 c 2 5 0 的T x 管脚。测试条件:p e l i c a n ,扩展,双滤波模式,对方I D:0 x 8 8 , 0 x 1 1 , 0 x 5 5 , 0 x 1 0 ,发送的对方I D 为:0 x 8 8 , 0 x 1 1 , 0 x 0 0 , 0 x 0 0 ,发送2 字节数据为:0 x 0 5 , 0 x 0 6 采集的位流数据如下:0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 请教位流数据的含义?答:自行计算时要区分位,还需要进行“位填充”的逆运行;简单的方法是将此信号连接

CAN总线应用

设计(论文)题目:基于CAN总线的楼宇温度检测系统 前言 基于单片机实现传统温度检测技术的特点,提出了基于CAN总线的楼宇温度检测系统方案。该系统方案的硬件平台主要包括温度检测模块和主控平台,并详细介绍了其硬件实现、软件设计思想及流程。实验表明:该系统可实现对楼宇温度的实时检测,并由数码管显示检测结果,对异常情况进行处理,从而实现对楼宇房间温度的有效检测。 在传统的检测技术中,温度检测基本采用单片机系统为主,且大多数都针对工业需要,日常生活中的应用并不多;而通信多基于落后的485总线,不能进行远距离的实时数据传输,更不能与因特网相连,可靠性也不高。因此,本文提出一种基于CAN总线的温度测控技术,该技术适合远距离控制与传输,具有非常高的可靠性。 控制器局域网(Controller Area Network,CAN)是国际上应用最广泛的现场总线之一。CAN总线最早出现在20世纪80年代末的汽车工业中,由德国BOSCH公司最先提出,其主要特性为低成本,且总线利用率高。CAN采用串行通信方式工作,所提供的最高数据传输速率为1Mbit/s,最大通信距离为10km。CAN还具有可靠的错误处理和检错机制,极强的错误检测能力,发送信息遭到破坏后可自动重发;可在高噪声的干扰环境中只用,能够检测出产生的任何错误,当数据的传输距离达到10km时,CAN仍能提供5kbit/s的数据传输速率。 正是基于CAN总线的上述优点,目前CAN总线在众多领域被广泛应用,其应用范围不再局限于原先的汽车行业,而向过程工业、机械工业、纺织工业、数控机床、医疗器械及传感器等领域发展,CAN总线已经形成国际标准,并已被公认为是几种最有前途的现场总线之一。 考虑到CAN总线的高可靠性和远距离传输优点,结合目前温度检测技术的技术瓶颈,即距离短和实时性差的特点,本系统CAN总线应用于传统的温度检测中,也是一种新的尝试。

CAN 总线通信原理分析

CAN总线通信原理分析 CAN(Controller Area Network)总线,即控制器局域网总线,在工业控制、医疗电子、家用电器及传感器领域都得到了广泛的应用。目前国内外文献中针对CAN总线协议分析的文章主要是针对CAN协议的帧结构以或位时序特性进行分析,如文献鲜有从通信的角度对CAN总线协议进行分析,鲜有从工程应用的角度出发,对CAN总线的通信机制进行深入分 析的文章。 1 CAN应用特性及结构构成 CAN总线协议具有两个国际标准,分别是ISO11898和ISO11519。其中,IS011898是通信速率为125 kbps~1Mbps的高速CAN通信标准,属于闭环总线,总线最大长度为40 m/1Mbps。ISO11519定义了通信速率为10~125kbps的低速CAN通信标准,属于开环总线,最大长度为1 km/40kbps。由于电气特性限制,即总线分布电容和分布电阻对总线波形的影响,CAN总线上最大节点数目为110个。对于应用工程师,只需正确配置收发端 的波特率和位参数即可实现收发节点的数据同步。通过CAN控制器硬件对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。同时,由于CAN报文采用短帧结构,并且每帧均包含CRC校验部分,保证了数据出错率极低。CAN总线在工 程应用中结构构成如图1所示。 系统实现中的CAN应用层、操作系统(在无操作系统的应用中以后台程序实现)及驱动程序共同实现了ISO参考模型中的应用层功能。其中,CAN应用层定义ID分组、发送数据装包、接收数据处理以及应用层总线安全监测;操作系统/后台程序用于在CAN中断到达后调度CAN驱动程序对数据进行处理;驱动程序包括初始化(控制器工作状态设置、波特率设置、验收滤波器配置)、收发驱动及异常处理程序。 对于传输介质层,需要根据环境干扰噪声、总线长度等来确定。在强干扰噪声的情况下必须采用屏蔽线;由于分布电容造成的总线波形失真及分布电阻造成的总线电平的衰减,总线长度需要考虑采用的传输介质的分布电阻和分布电容特性;同时,若采用高速总线还需通过实验确定总线的匹配电阻值。 对于CAN驱动层和应用层,驱动程序包括CAN初始化(包括硬件使能、波特率设置、控制器工作模式设置及验收滤波器ID表配置)、收/发驱动并向上层提供接口函数,其中需要说明的是验收滤波器的ID表配置需要根据应用层对系统ID的分组来进行;CAN应用层 根据总线上各节点之间的数据收发关系进行数据包的ID分组、发送数据装包、接收数据处

CAN总线分析

CAN报文的传送和帧结构 在进行数据传送时,发出报文的节点为该报文的发送器。该节点在总线空闲或丢失仲裁前恒为发送器,如果一个节点不是报文发送器,并且总线不处于空闲状态,则该节点为接收器。 构成一帧的帧起始、仲裁场、控制场、数据场和CRC序列均借助位填充规则进行编码。当发送器在发送的位流中检测到5位连续的相同数值时,将自动在实际发送的位流中插入一个补码位。而数据帧和远程帧的其余位场则采用固定格式,不进行填充,出错帧和超载帧同样是固定格式。报文中的位流是按照非归零(NZR)码方法编码的,因此一个完整的位电平要么是显性,要么是隐性。 在“隐性”状态下,CAN总线输出差分电压 =—近似为零, 在“显性”状态下,以大于最小阈值的差分电压表示,如图9.2所示。在总线空闲或“隐性”位期间,发送“隐性”状态。在“显性”位期间,“隐性”状态改写为“显性”状态。 图9.2总线上的位电平表示 CAN有两种不同的帧格式,不同之处为识别符场的长度不同:具有11位识别符的帧称之为标准帧;而含有29位识别符的帧为扩展帧。CAN报文有以下4个不同的帧类型: ●数据帧:数据帧将数据从发送器传输到接收器。 ●远程帧:总线节点发出远程帧,请求发送具有同一识别符的数据帧。 ●错误帧:任何节点检测到总线错误就发出错误帧。 ●过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一 附加的延时。 数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分隔。 1. 数据帧 数据帧由7个不同的位场组成:帧起始(Start of Frame)、仲裁场(Arbitration Frame)、控制场(Control Frame)、数据场(Data Frame)、CRC场(CRC Frame)、

CAN总线学习笔记二:CAN自收发程序解读

CAN总线学习笔记二:CAN自收发程序解读 花了一整个下午的时间,彻头彻尾的把 PIAE小组提供的CAN自收发源程序解读了一遍。解读别人的程序是一件挺费时费力的一件事,但是在 对某项技术或者说某个芯片的入门阶段参考别人的程序又是一项必不可少的任务。 对于这个程序,头一个任务当然是把头文件先浏览一遍,能弄明白 的还是先弄明白,对后面程序的解读有好处。C文件里给出了三个头文 件: #include #include #include 第一个reg52.h我就不废话了,下一个intrins.h我在上一篇日志里也详细的作了说明,这里也不提了。can_selfdef.h是程序员自己定义的一个头文件,在这个头文件里除了一些宏定义和管脚的一些 说明外,最重要的就是要弄明白“CAN总线SJA1000寄存器地址定义”。这个我开始也没弄明白,后来反复琢磨,才发现作者在这个 程序里吧SJA1000的寄存器作为单片机的外 部扩展RAM寻址了,从而省去了编写一些底层的驱动程序,这就让大家连SJA1000的datasheet的时序图都不用看了 (不过下一步我想用驱动程序来控制SJA1000)。 看完头文件,可不能从第一个程序依次往下看。应该直接找到主程 序main()解读: void main(void) {

//MCU初始化(主要是各中断寄存器的初始化) SJA_RST = 1; //CAN总线复位管脚复位无效 SJA_CS = 0; //CAN总线片选有效 EX1 = 1; //开MCU外部中断INT1 IT1 = 0;//MCU外部中断INT1为电平触发,也是CAN总线接收中断口 IT0 = 1;//MCU外部中断INT0为下降沿触发 EX0 = 1; //开MCU外部中断INT0 EA = 1; //开MCU总中断 SJA_CS = 1; //CAN总线片选无效,使得对数据总线的操作不会影响SJA1000。 //SJA1000初始化 CAN_init(); //对SJA1000寄存器的读写是采用外部寄存器寻址方式, //所以不需要程序单独控制 片选有效无效 _nop_(); _nop_(); //主循环

mcp2510的can总线收发器程序

mcp2510的can总线收发器程序 pcbomb 发表于 2008-6-30 14:47:00 阅读全文(769) | 回复(1) | 引用通告(0) | 编辑 #i nclude #i nclude "mcp2510.h" void mcp_reset(void) { SPI_init_hw(); //设置成SPI方式 init_can_io(); // SPI_mcp_reset(); // } void mcp_read( unsigned char MCPaddr, unsigned char* readdata, unsigned char length ) { unsigned char loopCnt; SPI_mcp_select(); // Select the MCP device at the SPI bus // Start reading and set first address SPI_mcp_RD_address(MCPaddr); for (loopCnt=0; loopCnt < length; loopCnt++) { // Get a byte and store at pointer *readdata = SPI_putch(MCPaddr); // Increment the pointers to next location // Test++; MCPaddr++; readdata++; } SPI_mcp_unselect(); } void mcp_write( unsigned char MCPaddr, unsigned char* writedata, unsigned char length ) { unsigned char loopCnt; SPI_mcp_select(); // Start write and set first address SPI_mcp_WR_address( MCPaddr ); for (loopCnt=0; loopCnt < length; loopCnt++) { // Write a byte SPI_putch( *writedata ); // Increment the pointer to next location writedata++; }

CAN总线解析

一、概述 CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel)CAN 有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps,通信距离最远到10KM,无损位仲裁机制,多主结构。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: 二、CAN总线标准 CAN总线标准只规定了物理层和数据链路层,需要用户来自定义应用层。不同的CAN标准仅物理层不同。

CAN收发器负责逻辑电平和物理信号之间的转换,将逻辑信号转换成物理信号(差分电平)或者将物理信号转换成逻辑电平。 CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。(有信号时,CANH 3.5V,CANL 1.5V,即显性;没有信号时,CANH 2.5V,CANL 2.5V,即隐性) IOS11898高速CAN电平中,高低电平的幅度低,对应的传输速度快。 双绞线共模消除干扰,是因为电平同时变化,电压差不变。 2.1物理层 CAN有三种接口器件

多个节点连接,只要有一个为低电平,总线就为低电平,只有所有的节点都输出高电平时,才为高电平。所谓“线与”。 CAN总线有5个连续性相同的位后,就会插入一个相反位,产生跳变沿,用于同步。从而消除累计误差。 和485、232一样,CAN的传输速度与距离成反比。 CAN总线终端电阻的接法:

特点:低速CAN在CANH和CANL上串入2.2kΩ的电阻;高速CAN在CANH和CANL 之间并入120Ω电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。(因为大多数双绞线电缆特性阻抗大约在100~120Ω。) 120欧姆只是为了保证阻抗完整性,消除回波反射,提升通信可靠性的,因此,其只需要在总线最远的两端接上120欧姆电阻即可,而中间节点并不需要接(接了反而有可能会引起问题)。因此各位在使用CAN Omega做CAN总线侦听的时候,大多数情况下是不需要这个120欧姆电阻的,当然,即使当前网络中并没有终端匹配电阻,只要传输线长度不长(比如SysCan360比赛环境中,传输线只有1-2米)CAN节点数量不多的情况下,不要这个120欧姆电阻也完全可以工作,甚至,你接任意电阻都是不会有影响的。因为此时传输线长度和波长还相差甚远,节点不多的情况下,反射波的叠加信号强度也不会很强,因此传输线效应完全可以忽略。 而哪些情况需要呢,主要就是,当使用2个CAN Omega对发或者当前网络中仅有2个CAN设备的时候,此时两个端点最好都加上终端匹配电阻,当然,前面也说过了,传输线长度不长的时候,也可以不需要2端120欧姆电阻,但为了信号完整性考虑,加上这两个电阻才是严谨的。 2个120欧姆电阻的意义在于,使用USB CAN调试某些不带终端电阻的中间节点设备时,有时候CAN总线上没有2个120欧姆电阻通信可能会异常,此时可以接入2个120欧姆电阻作为2个终端电阻来作阻抗匹配,这时候其他端点不应接入任何终端电阻!并且,这2个120欧姆电阻不可用1个60欧姆电阻代替!

can总线通信程序

CAN总线通信程序 // CAN <==> UART的协议转换器 // 说明: // 1,单片机使用P89C61X2BA // --晶振11.0592MH Z // --CAN总线中断使用单片机的中断0,外部有上拉电阻,波特率可以设定 // 2,CAN总线发送采用查询方式,接收采用中断方式 // 3,看门狗复位时间1.2S // 4,SJA1000晶振8MHZ,Peil模式 // 5,串口中断接收,查询发送,波特率可设置 // 6,×××当串口收到数据后,每8个数一组打包,通过CAN总线发送出去 // // -----10.16日,重新修改程序完成以下功能----- // ----此功能已经改为,每收到一帧数据,启动一次CAN传输,传输字节数等于串口收到的数据 // ----串行帧的帧间界定通过当前波特率下传输5个字节为时间间隔,具体为当顺序接收到的任意两个数据,它们之间的时间间隔大于5个字节传送时间,认为这两个数据分属于两个不同的帧 // 7,当CAN总线每接收一帧信息后,通过串口发送出去 // 改为可以识别CAN的报文字节长度,即串口只发送CAN报文长度个字节 // 8,看门狗芯片MAX1232CPA,硬件溢出时间1.2S // //------------------------------------------------------- #include #include #include #include "CANCOM.h" unsigned char UART_TX_Data[8] = {0,1,2,3,4,5,6,7}; unsigned char CAN_TX_Data[8] = {0,1,2,3,4,5,6,7};

汽车CAN总线介绍及案例分析

汽车CAN总线介绍及案例分析 随着汽车行业内竞争白热化时期的到来以及现代汽车工业技术水平的发展和革新,汽车制造厂商对于车载电脑控制网络提出了安全性、舒适性、方便性、低公害、低成本的高要求,各种各样的电子控制系统被开发。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车产业的CAN 通信协议。 CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误自检测能力受到重视,被广泛应用于汽车计算机控制系统和电磁辐射强、振动强度大的工业环境中。 CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。基于CAN总线设计的分布式控制系统在以下方面具有明显的优越性: 网络各节点之间的数据通信实时性强 首先,CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。 缩短了开发周期 CAN总线通过CAN收发器接口芯片82C250的两个输出端CAN-H和CAN-L与物理总线相连,而CAN-H端的状态只能是高电平或悬浮状态,CAN-L 端只能是低电平或悬浮状态。这就保证当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期。 已形成国际标准的现场总线

CAN总线控制器 SJA1000源程序(c语言)

CAN总线控制器sja1000源程序 SJA1000 是一种独立控制器用于移动目标和一般工业环境中的区域网络控制CAN 它是PHILIPS 半导体PCA82C200 CAN 控制器BasicCAN 的替代产品而且它增加了一种新的工作模式PeliCAN , 这种模式支持具有很多新特性的CAN 2.0B 协议。 1 特性 和PCA82C200 独立CAN 控制器引脚兼容 和PCA82C200 独立CAN 控制器电气兼容 PCA82C200 模式即默认的BasicCAN 模式 扩展的接收缓冲器64 字节先进先出FIFO 和CAN2.0B 协议兼容PCA82C200 兼容模式中的无源扩展帧 同时支持11 位和29 位识别码 位速率可达1Mbits/s PeliCAN 模式扩展功能 --可读/写访问的错误计数器 --可编程的错误报警限制 --最近一次错误代码寄存器 --对每一个CAN 总线错误的中断 --具体控制位控制的仲裁丢失中断 --单次发送无重发 --只听模式无确认无活动的出错标 志 --支持热插拔软件位速率检测 --验收滤波器扩展4 字节代码4 字节屏蔽 --自身信息接收自接收请求 24MHz 时钟频率 对不同微处理器的接口 可编程的CAN 输出驱动器配置 增强的温度适应-40-+125 #include #include #include //-----------------------沿袭引脚和变量---------------------------------------------- #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 void MCU_init(void); /*P2口的管脚定义*/ sbit LED1 = P2^6; sbit LED2 = P2^5; sbit SJA_CS = P2^7; //SJA1000片选管脚,低电平有效 //sbit SJA_RST = P1^2; /*P3口的管脚定义*/

浅析CAN总线技术的现状与未来

浅析CAN总线技术的现状与未来收藏 [摘要] 本文介绍了CAN现场总线的起源及发展,详细分析了CAN总线的网络层次结构、CAN总线的特点及性能。CAN总线具有良好的发展前景。 [关键词] 现场总线CAN网络层次结构,通信协议 >>起源<< 现场总线技术已成为当今工业自动化技术发展的热点。CAN(Controller Area Network)即控制器局域网,是国际上应用最广泛的现场总线之一。CAN是一种多主方式的串行数据通讯总线,基本设计规范要求,有高的位速率,高抗电磁干扰性而且能够检测出产生的任何错误,当信号传输距离达到10Km时,CAN仍可提供高达50Kbps的数据传输速率。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式CAN已被广泛应用到各个自动化控制领域,例如在汽车工业、航空工业、工业控制、自动控制、智能大厦、电力系统、安全防护等各领域。 >>起源<< 20世纪80年代初期,由于欧洲汽车工业发展发展的需要,最先由德国Bosch公司提出CAN总线方案以解决汽车控制装置间的通信问题。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。Bosch公司于1986年正式公布了这一总线,且命名为CAN总线。1987年Intel公司生产出了首枚CAN控制器(82526)。不久,Philips公司也推出了CAN控制器82C200。1993年CAN成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。 为促进CAN以及CAN协议的发展,1992在欧洲成立了国际用户和厂商协会(CAN in Automation,简称CiA),在德国Erlangen注册,CiA总部位于Erlangen。CiA提供服务包括:发布CAN的各类技术规范,免费下载CAN文献资料,提供CANopen规范DeviceNet规范;发布CAN产品数据库,CANopen产品指南;提供CANopen验证工具执行CANopen认证测试;开发CAN规范并发布为CiA 标准。 如今,CAN接口已经被公认为微控制器(Microcontroller)的标准串行接口,应用在各种分布式内嵌系统。该协会已经为全球应用CAN技术的权威。 >> CAN的系统组成<< CAN总线用户接口简单,编程方便。CAN总线属于现场总线的范畴,CAN

CAN总线的实现-SJA1000实例

一、 以下是我做的CAN节点的测试程序, 实现两个节点传送数据,程序主要分三部分SJA1000 的初始化,接收数据,发送数据. /**************************************************** **函数原型:bit Sja_1000_Init(void) **功能:初始化SJA10000 **入口参数: 无 **返回值: 0:初始化成功 1:复位失败 2: 测试sja1000失败 3:设置失败 4:设置验收滤波器失败 5:设置波特率失败 *****************************************************/ unsigned char Sja_1000_Init(void) { bit s; EA=0; s=BCAN_ENTER_RETMODEL(); if (s==1) return 1; s=BCAN_CREATE_COMMUNATION(); if (s==1) return 2; s=BCAN_SET_OUTCLK(0xc0);//Pelican if (s==1) return 3; s=BCAN_SET_OBJECT(0xFF,0x4E,0x16,0x00,0xff,0x00,0x00,0x00); if (s==1) return 4; s=BCAN_SET_BANDRATE(CAN_BPS_1M); if (s==1) return 5; SJA_BCANAdr=REG_OCR ; *SJA_BCANAdr=0x1a; SJA_BCANAdr=REG_IER; *SJA_BCANAdr=0x03; s=BCAN_SET_CONTROL(0x08); if (s==1) return 6; EA=1; return 0; } } /********************************************************************

CAN总线分析工具BUSMASTER

Design Document ? Copyright 2011 Robert Bosch Engineering and Business Solutions Limited

2 | BUSMASTER | TOC Contents Interface Details (6) Design Scope (7) Design Methodology (13) Design Notations (14) Design Considerations (15) Design overview (25) Architecture Design (26) DIL_Interface (26) IDIL_CAN (27) DIL_ES581 (28) DIL_BOA (29) DIL_Stub_CAN (30) ConfigDialogDIL (31) Bus Statistics (32) Simulation Engine (34) Project Configuration (38) Logger (42) Message Window (46) Filter (48) Session Replay (48) Node Simulation (50) Frame Transmission (55) Signal Watch Window (55) Test Automation (57) Test Setup Editor Lib module (58) Test Suite Editor and Executor Lib (59) Test Setup Editor (60) Automation Server Interface (61) Interface Design (63) User Interface (63) Component Interface (63) Test Suite Editor and Executor Lib (63) Design Alternatives (65) Design Feasibility (66) Design Tools used (67) Additional Hardware and Software required (68) Test Strategy (69) References (70)

28335CAN通信程序

详细说明:DSP28335 Can总线通信程序,通过Can总线进行多机通信 文件列表: CAN ...\CAN.CS_ ...\.......\FILE.CDX ...\.......\FILE.DBF ...\.......\FILE.FPT ...\.......\SYMBOL.CDX ...\.......\SYMBOL.DBF ...\.......\SYMBOL.FPT ...\CAN.paf2 ...\CAN.pjt ...\CAN.sbl ...\cc_build_Debug.log ...\CMD ...\...\28335_RAM_lnk.cmd ...\...\DSP2833x_Headers_nonBIOS.cmd ...\Debug ...\Debug.lkf ...\INCLUDE ...\.......\DSP2833x_Adc.h ...\.......\DSP2833x_CpuTimers.h ...\.......\DSP2833x_DefaultIsr.h ...\.......\DSP2833x_DevEmu.h ...\.......\DSP2833x_Device.h ...\.......\DSP2833x_DMA.h ...\.......\DSP2833x_Dma_defines.h ...\.......\DSP2833x_ECan.h ...\.......\DSP2833x_ECap.h ...\.......\DSP2833x_EPwm.h ...\.......\DSP2833x_EPwm_defines.h ...\.......\DSP2833x_EQep.h ...\.......\DSP2833x_Examples.h ...\.......\DSP2833x_GlobalPrototypes.h ...\.......\DSP2833x_Gpio.h ...\.......\DSP2833x_I2c.h ...\.......\DSP2833x_I2c_defines.h ...\.......\DSP2833x_Mcbsp.h ...\.......\DSP2833x_PieCtrl.h ...\.......\DSP2833x_PieVect.h ...\.......\DSP2833x_Project.h ...\.......\DSP2833x_Sci.h ...\.......\DSP2833x_Spi.h ...\.......\DSP2833x_SWPrioritizedIsrLevels.h

相关文档