CAN通信解析

CAN通信解析
CAN通信解析

CAN通信

1. CAN总线的产生与发展

控制器局部网(CAN-CONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。

随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。

分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将5C技术--COMPUTER(计算机技术)、CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和CHANGE(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。

典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。

尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格比将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。控制器局部网CAN(CONTROLLER AERANETWORK)正是在这种背景下应运而生的。

由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。

为此,1991年9月PHILIPSSEMICONDUCTORS制订并发布了CAN技术规范(VERSION2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本

1.2中定义的CAN报文格式,能提供11位地址;而

2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准

(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。

2. CAN总线特点

CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。

2.1 CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

2.2CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。

数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

2.3 CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总

线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式监控系统。

2.4结构简单,只有2跟现与外部相连,并且捏布集成了错误探测和管理模块。

3. CAN总线技术介绍

3.1位仲裁

要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。

CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。

总线读取中的冲突可通过位仲裁解决。如图2所示,当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。

CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。

对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。

3.2 CAN与其它通信方案的比较

在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配

(如:Ethernet CSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。

CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。

3.3 CAN的报文格式

在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。

在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。

控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位(ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度

(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。

应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。

报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

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总线通信系统上位机通信软件设计

目次 1 绪论 (1) 1.1 研究背景 (1) 1.2 研究目的和意义 (1) 1.3 国内外发展现状 (2) 1.4 论文结构安排 (2) 2 CAN总线协议分析 (3) 2.1 CAN-bus 规范V2.0 版本 (3) 2.2 CAN控制器SJA1000 (6) 2.3 本章小结 (6) 3 开发环境介绍 (6) 3.1 开发环境 (6) 3.2 CANUSB—Ⅰ/Ⅱ智能CAN接口卡 (7) 3.3 本章小结 (8) 4 CAN通信软件设计 (8) 4.1 驱动程序安装 (8) 4.2 CAN接口卡函数库说明 (8) 4.3 界面设计 (11) 4.4 软件功能实现 (16) 4.5 本章小结 (22) 5 测试及发布 (23) 5.1 软件功能测试 (23) 5.2 程序发布 (24) 5.3 本章小结 (27) 结论 (28) 致谢 (29) 参考文献 (30)

1绪论 现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统[1]。CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。 1.1 研究背景 随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将5C技术——Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和Change(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。典型的分散式控制系统有现场设备、接口与计算设备以及通信设备组成,现场总线(Field bus)就是在这种背景下产生的[2]。 1.2 研究目的和意义 从19世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信[1]。 为了解决汽车通信问题,CAN—bus应运而生,凭借可靠、实时、经济和灵活的特点,CAN总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。现在CAN—bus总线已经成为全球范围内最重要的现场总线之一,甚至引领着现场总线的发展。 工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。尤其作为上、下位机间联系纽带的CAN总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。同样,在控制系统的研制过程中,为了尽可能地减少故障和缩小故障范围,也应设计相应的测试

基于STC89C51的CAN总线点对点通信模块设计

基于STC89C51的CAN总线点对点通信模块设计 [导读]随着人们对总线对总线各方面要求的不断提高,总线上的系统数量越来越多,继而出现电路的复杂性提高、可靠性下降、成本增加等问题。为解决上述问题,文中阐述了基于SJAl000的CAN总线通信模块的实现方法,该方法以PCA82C250作为通信模块的总线收发器,以SITA-l000作为网络控制器。并以STCSTC89C5l单片机来完成基于STC89C5l的CAN通信硬件设计。文章还就平台的初始化、模块的发送和接收进行了设计和分析。通过测试分析证明,该系统可以达到CAN的通信要求,整个系统具有较高的实用性。 0 引言 现场总线是应用在生产最底层的一种总线型拓扑网络,是可用做现场控制系统直接与所有受控设备节点串行相连的通信网络。在工业自动化方面,其控制的现场范围可以从一台家电设备到一个车间、一个工厂。一般情况下,受控设备和网络所处的环境可能很特殊,对信号的干扰往往也是多方面的。但要求控制则必须实时性很强,这就决定了现场总线有别于一般的网络特点。此外,由于现场总线的设备通常是标准化和功能模块化,因而还具有设计简单、易于重构等特点。 1 CAN总线概述 CAN (Controller Area Network)即控制器局域网络,最初是由德国Bosch公司为汽车检测和控制系统而设计的。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。其良好的性能及独特的设计,使CAN总线越来越受到人们的重视。由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。目前,CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。它的直线通信距离最大可以达到l Mbps/30m.其它的节点数目取决于总线驱动电路,目前可以达到110个。 2 CAN系统硬件设计 图1所示是基于CAN2.0B协议的CAN系统硬件框图,该系统包括电源模块、MCU部分、CAN控制器、光电耦合器、CAN收发器和RS232接口。硬件系统MCU采用STC89C5l,CAN控制器采用SJAl000,CAN收发器采用PCA82C250,光耦隔离采用6N137。

CAN单节点的自通信程序

/****************************************************************************** ******** 项目:基于CAN总线的自收发通信 说明:主程序部分 功能:外部按键每按下一次,计数值加一,同时计数值在数码管1、2上显示。 在计数值加一后,会使CAN总线上重新发送数据,此时接收端的计数值也同步更新显示 在数码管3、4上(为便于观察,接收显示的值比发送值大3)。 // CAN主要参数: PeliCAN模式,扩展帧EFF模式 // 29位标示码结构: // 发送数据结构:计数结果,0x02,0x03,0x04,0x05,0x06,0x07,0x08 // 接收数据结构: 待显示数据+其它7个字节的数据 // 本节点的接收代码寄存器值: 0x11,0x22,0x33,0x44 // 本节点的屏蔽代码寄存器值:0x00,0x00,0x00,0x00;可以接收本节点的数据 // 目的节点地址:0x11,0x22,0x33,0x44;可以被本节点接收 模块:can_self.c 作者:PIAE GROUP 注释修改者:特权 修改时间:08.6.17. ******************************************************************************* *******/ /***感谢PIAE工作组提供的源码,这里特权根据自己的编程习惯做了一些修改并添加详细注释***/ #include #include #include "define.h" /////////////////////////////////////////////// //函数:inter0_key (外部中断INT0) //说明:INT0按键为计数按键 // 每按下一次键,计数值加一 //入口:按键中断 //返回:按键加一 /////////////////////////////////////////////// void inter0_key(void) interrupt 0 { EA = 0; //关闭中断 Txd_data++; //计数结果增1,即待发送的数据增1 TXD_flag = 1; //发送数据标志位置位,即重新发送数据以更新数码管的显示数值 EA = 1; //重新开启中断 } ///////////////////////////////////////////////

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总线通信程序 // 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总线通信系统上位机通信软件的设计说明

. .. .

目次 1 绪论 (1) 1.1 研究背景 (1) 1.2 研究目的和意义 (1) 1.3 国外发展现状 (2) 1.4 论文结构安排 (2) 2 CAN总线协议分析 (3) 2.1 CAN-bus 规V2.0 版本 (3) 2.2 CAN控制器SJA1000 (6) 2.3 本章小结 (6) 3 开发环境介绍 (6) 3.1 开发环境 (6) 3.2 CANUSB—Ⅰ/Ⅱ智能CAN接口卡 (7) 3.3 本章小结 (8) 4 CAN通信软件设计 (8) 4.1 驱动程序安装 (8) 4.2 CAN接口卡函数库说明 (8) 4.3 界面设计 (11) 4.4 软件功能实现 (16) 4.5 本章小结 (22) 5 测试及发布 (23) 5.1 软件功能测试 (23) 5.2 程序发布 (24) 5.3 本章小结 (27) 结论 (28) 致29 参考文献 (30)

1绪论 现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统[1]。CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。 1.1研究背景 随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将5C技术——Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和Change(转换技术)紧密结合的产物。它在适应围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。典型的分散式控制系统有现场设备、接口与计算设备以及通信设备组成,现场总线(Field bus)就是在这种背景下产生的[2]。 1.2研究目的和意义 从19世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信[1]。 为了解决汽车通信问题,CAN—bus应运而生,凭借可靠、实时、经济和灵活的特点,CAN总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。现在CAN—bus总线已经成为全球围最重要的现场总线之一,甚至引领着现场总线的发展。 工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。尤其作为上、下位机间联系纽带的CAN总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。同样,在控制系统的研制过程中,为了尽可能地减少故障和缩小故障围,也应设计相应的测试软

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

基于Labview的CAN总线通信仿真

基于虚拟仪器的CAN总线通信仿真 控制器局部网(CAN —CONTROLLERAREANETWORK )是BOSCH公司为现代汽车监测和控制领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。CAN 是一种多主方式的串行通讯总线。一个由CAN 总线构成的单一网络中.理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN 可提供高达1Mbit/s 的数据传输速率.这使实时控制变得非常容易。另外。硬件的错误检定特性也增强了CAN 的抗电磁干扰能力。 CAN 总线有以下特点: 1) CAN 可以是对等结构,即多主机工作方式,网络上任意一个节点可以在任意时刻主 动地向网络上其它节点发送信息,不分主从,通讯方式灵活。 2) CAN 网络上的节点可以分为不同的优先级,满足不同的实时需要。 3) CAN 采用非破坏性仲裁技术,当两个节点同时向网络上传送信息时,优先级低的节 点自动停止发送,在网络负载很重的情况下不会出现网络瘫痪。 4) CAN 可以点对点、点对多点、点对网络的方式发送和接收数据,通讯距离最远 10km(5kb/s),节点数目可达110个。 5) CAN采用的是短帧结构,每一帧的有效字节数为8个,具有CR(校验和其它检测措 施,数据出错几率极小。CAN 节点在错误严重的情况下,具有自动关闭功能,不会影 响总线上其它节点操作。 6) 通讯介质采用廉价的双绞线,无特殊要求,用户接口简单,容易构成用户系统。 1 CAN总线工作机理 1.1 位仲裁要对数据进行实时处理。就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时.要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量。如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。 CAN 总线以报文为单位进行数据传送.报文的优先级结合在11 位标识符中.具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。 1.2 报文格式 如图所示,在总线中传送的报文,每帧由7 部分组成。CAN 协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位.扩展格式为29位。在标准格式中,报文的起始位称为帧起始(SOF).然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。 控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位(ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据

AVR单片机Can总线通信控制程序

//================================================== ================================= // 工程名称:汽车041项目目标板3-6程序 // 功能描述:CAN通信,继电器控制,AD采集 // IDE环境: ICCAVR // Init2515: 2515初始化程序 //================================================== ================================= #include "iom16v.h" #include "bit.h" #include "macros.h" #include "stdio.h" //标准输入输出头文件 #include "2515.h" #include "SPI_Ctrl.h" #include "Function.h" #include "CAN0.h" #include "MAX518.h" #include "AD.h" #pragma interrupt_handler Extint0:2 #pragma interrupt_handler timer1_isr:9 #define uint unsigned int #define uchar unsigned char /******************外部中断常量******************/ #define GLOBAL 7 //全局中断位宏定义 #define EXTINT0 6 //外部中断0位宏定义 #define H_SRCLK PORTD|=(1<<6) //上升沿移位

can总线报告资料

得分评卷教师 哈尔滨远东理工学院 CAN总线在中央空调监控系统中的应用 姓名:郭爱强 分院:机器人科学与技术学院 专业:电子信息工程 学号:13030104

摘要 中央空调控制系统是智能建筑中不可缺少的组成部分。传统的控制方法是采用DDC(直接数字控制器)方式,将各个温度、湿度检测点和控制点连接到一台或多台DDC上,实行多点实时监控。由于现代智能建筑楼层较多,多个空调风机位于不同楼层,温、湿度检测点分布于各个房间,采用DDC方式进行控制具有引线过长、施工不便、系统通信的实时性和可靠性不高等缺点,而面向工业控制的现场总线技术是目前解决工业控制现场数据实时通信问题的最佳方案。 本文在研究国内中央空调监控系统的发展现状与特点的基础上,设计了基于CAN总线的中央空调监控系统。整个中央空调监控系统以基于PCI总线的CAN通信卡作为总线数据采集器,采用接口芯片PCI9052实现CAN通信卡同PC机之间的通信,外置CAN芯片SJA1000实现CAN总线的物理层和数据链路层功能。通过对CAN通信卡的驱动程序设计,实现对CAN总线上节点的监视和控制。 本文详细分析了CAN总线和PCI总线的技术特点及通信机理,研究了独立CAN控制SJA1000和CAN总线驱动器的工作原理,完成了通信卡的硬件设计及驱动程序设计。 关键词中央空调监控系统;CAN总线;PCI总线;PCI9052

目录 摘要 (3) 第1章本文内容 (1) 第2章 CAN总线技术研究 (5) 2.1 CAN 总线特点 (5) 22 CAN总线技术介绍 (5) 2.2.2 CAN与其他通信方案的比较 (6) 2.2.3 CAN的报文格式 (6) 2.3 数据错误检测 (7) 第3章中央空调控制系统设计 (7) 3.1 系统的主要功能 (7) 3.2 中央空调控制整体结构 (8) 3.3 硬件设计 (9) 3.3.1 信号采集电路设计 (10) 3.3.2 CAN 通信电路设计 (13) 3.3.3 电路硬件抗干扰 (15) 3.4 软件设计 (15) 3.4.1 主程序设计 (15) 3.4.2 A/D转换程序设计 (16) 结论...................................................... X VIII 参考文献................................................... X IX

使用CANOE进行CAN总线的DBC文件制作

使用C A N O E进行C A N总线的设计 信号定义与分配 DBC文件制作 我们在进行CAN总线的通讯设计过程中,对于通讯矩阵的建立,我们常常会选择一种编码方式,最常见的编码格式是Intel格式和Motorola格式。但是往往人们都是以一种习惯去选择,究竟两种格式具体的区别在哪里呢?我们需要明白两种格式对信号是如何排布的,又是按照什么顺序进行正确解析的。本篇文章就是作者根据在整理通讯矩阵和dbc文件中遇到的一些问题,提出的自己的一些体会和见解,希望大家通过此篇文章对两种格式有更加深刻的理解。 我们在设计初期,都会首先选择一种编码格式,这种选择大多都是根据设计者自己的习惯,具体Intel格式和Motorola格式哪个更有优势的问题,在这里没有区别。但是就使用者而言,需要对接收到数据帧进行正确的解析,否则就无法得到想要的信号。下面我们就来说一下两种格式的区别。 首先我们需要明确一点,无论是Intel格式还是Motorola格式,在每个字节中,数据传输顺序都是从高位(msb)传向低位(lsb)。如下图所示。 图1 一般主机厂设计人员在设计初期都会定义好字节的发送顺序,定义Byte0为LSB,Byte7为MSB。第一种情况:先发送Byte0,然后Byte1到Byte7;第二种情况:先发送Byte7,然后Byte6到Byte0。根据我了解到的大部分主机厂都会采取第一种发送方法,很少会采取后者。我们在用CANoe中的CANdb++编辑数据库时,肯定会用到如下图所示的编辑界面。 图2 结合工作中的出现的问题,有的网络设计者会在排布信号的时候出现误区。上图中用的是比较常规的排布方式,即位在字节中的索引是从右至左,还有一种是颠倒过来的,即从左至右。如下图所示。 图3 我们现在以第一种矩阵模式进行说明。在这种情况下,如果主机厂在初期定义先发送LSB,再发送的MSB的形式,那么数据信号可以按照从上到下,从左到右的顺序发送,非常方便,接收器解析起来也比较容易。如果主机厂定义先发送

can总线多机通讯 发送报文

#include"SJA1000REG_1.h" #include #include #include #include #define STD_FRAMEID_LENTH 2 //标准帧ID长度 #define EXT_FRAMEID_LENTH 4 //扩展帧ID长度 #define LOW_BYTE(x) (unsigned char)(x) #define HIGH_BYTE(x) (unsigned char)((unsigned int)(x)>>8) #define OSCCLK 11059200UL #define CPUCLK (OSCCLK/12) #define SJA_BASE_ADDR 0X7E00 #define T0_MASK 0x0f sbit LED=P2^5; sbit SJA1000_RST=P2^6; unsigned char xdata *SJA_CS_Point=(unsigned char xdata*)SJA_BASE_ADDR; void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter); void WriteSJAReg(unsigned char RegAdr,unsigned char Value); //写寄存器 unsigned char ReadSJAReg(unsigned char RegAdr); //读寄存器 char SetBitMask(unsigned char RegAdr,unsigned char BitValue); //设置寄存器特定位 char ClearBitMask(unsigned char RegAdr,unsigned char BitValue); //清除寄存器特定位 char WriteSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len); //连续写寄存器 char ReadSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len); //连续读寄存器 char SetSJASendCmd(unsigned char cmd); //发送模式cmd 0为正常发送1为单次发送2为自发自收 char SJASendData(unsigned char *databuf,unsigned char cmd); //sja1000发送函数,将数据写入sja1000发送缓冲区,再将其发到总线上 char SJARcvData(unsigned char *databuf); //SJA1000接收函数读取接收缓冲区的CAN报文 //void SJA1000_Config_Filter(char mode,char *Filter); //配置滤波器模式和滤波参数mode大于0为双滤波器,其他为单滤波

CAN总线通信系统上位机通信软件的设计

目次 1 绪论 (1) 1.1 研究背景 (1) 1.2 研究目的和意义 (1) 1.3 国内外发展现状 (2) 1.4 论文结构安排 (2) 2 CAN总线协议分析 (3) 2.1 CAN-bus 规范V2.0 版本 (3) 2.2 CAN控制器SJA1000 (6) 2.3 本章小结 (6) 3 开发环境介绍 (6) 3.1 开发环境 (6) 3.2 CANUSB—Ⅰ/Ⅱ智能CAN接口卡 (7) 3.3 本章小结 (8) 4 CAN通信软件设计 (8) 4.1 驱动程序安装 (8) 4.2 CAN接口卡函数库说明 (8) 4.3 界面设计 (11) 4.4 软件功能实现 (16) 4.5 本章小结 (22) 5 测试及发布 (23) 5.1 软件功能测试 (23) 5.2 程序发布 (24) 5.3 本章小结 (27) 结论 (28) 致谢 (29) 参考文献 (30)

1绪论 现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统[1]。CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。 1.1 研究背景 随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将5C技术——Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和Change(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。典型的分散式控制系统有现场设备、接口与计算设备以及通信设备组成,现场总线(Field bus)就是在这种背景下产生的[2]。 1.2 研究目的和意义 从19世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信[1]。 为了解决汽车通信问题,CAN—bus应运而生,凭借可靠、实时、经济和灵活的特点,CAN总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。现在CAN—bus总线已经成为全球范围内最重要的现场总线之一,甚至引领着现场总线的发展。 工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。尤其作为上、下位机间联系纽带的CAN总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。同样,在控

相关主题
相关文档
最新文档