15.22、 CAN总线回环实验
CAN总线测试解决方案

CAN总线测试解决方案CAN总线测试是指对CAN总线进行功能测试、性能测试、兼容性测试等一系列测试活动的综合过程。
通过对CAN总线进行测试,可以验证CAN 总线的正常工作,提高系统的稳定性和可靠性。
本文将介绍一些常用的CAN总线测试解决方案。
一、功能测试功能测试是对CAN总线的基本功能进行验证的过程,主要包括以下几个方面:1.1帧发送功能测试测试CAN总线的帧发送功能是否正常,包括数据帧和远程帧。
可以通过发送一系列不同类型的帧,检查CAN总线是否可以正确接收和处理这些帧。
1.2帧接收功能测试测试CAN总线的帧接收功能是否正常,包括数据帧和远程帧。
可以通过发送一系列帧,验证CAN总线是否可以正确接收并输出相应的数据。
1.3自发自收功能测试测试CAN总线的自发自收功能是否正常,即CAN节点可以自己发送帧并正确接收。
可以通过在两个CAN节点之间建立连接,模拟CAN总线的自发自收情况进行测试。
1.4位计时功能测试测试CAN总线的位计时功能是否正常,包括位传输时间、信号传输延迟等。
可以通过测量CAN总线上的位时序,验证CAN总线的位计时功能是否符合规范要求。
二、性能测试性能测试是对CAN总线的传输速率、传输延迟、抗干扰性等性能参数进行评估的过程,主要包括以下几个方面:2.1传输速率测试测试CAN总线的传输速率,包括数据帧和远程帧的传输速率。
可以通过发送大量数据帧和远程帧,统计传输时间和传输成功率来评估CAN总线的传输速率。
2.2传输延迟测试测试CAN总线的传输延迟,即从发送帧开始到接收帧完成的时间间隔。
可以通过发送帧和远程帧,测量发送时间和接收时间,计算传输延迟。
2.3抗干扰性测试测试CAN总线的抗干扰性,即在有干扰信号的情况下,CAN总线是否能正常传输数据。
可以通过在CAN总线上加入模拟的干扰信号,观察CAN总线的传输是否受到干扰。
三、兼容性测试兼容性测试是对CAN总线与其他设备、软件的兼容性进行测试的过程,主要包括以下几个方面:3.1设备兼容性测试测试CAN总线与其他设备的兼容性,包括CAN节点、CAN控制器、CAN转接器等。
CAN总线网络组建实训报告

CAN总线网络组建实训报告CAN总线是一种串行数据通信协议,被广泛应用于网络化测量技术中,本文正是利用将RS232通讯转换成CAN通讯网络,实现了建立远程通讯网络。
整个通讯网络实时性好、可靠性高、传输距离远(长达10km),应用灵活。
利用RS232和CAN总线协议转换组建CAN 控制网络。
1、CAN总线概述CAN总线即控制器局域网,是目前应用最广的现场总线国际标准之一。
CAN总线是一种多主方式的串行通讯总线,可以实现较高通讯速率、高抗电磁干扰性,而且能够检测出产生的任何错误,以保证实时通讯的可靠性。
此外,CAN总线具有很远的数据传输距离(长达10k。
)和高速的数据传输速率(高达IMbps),当信号传输距离达到skm时,CAN 总线仍可提供高达roKbPs的数据传输速率。
CAN总线通讯速率与传输距离的关系同时内嵌了CAN和SCI模块,为实现把RS232通讯网络转换成CAN通讯网络提供了极大的方便。
CAN模块是一个16位的外设模块。
它完全支持CANZ.OB协议;可工作在标准模式和扩展模式。
2、RS232与CAN转换原理及硬件设计RS232总线与CAN总线通信协议转换单元的原理框图如图1所示。
RS电平转换采用TI公司的RS232电平转换芯片,它可以把输入的+3.3V电源电压变换成RS232输出电平所需要的电压。
该电路采用了符合RS232标准的驱动芯片MAX3232进行串行通信。
MAX3232芯片功耗低,集成度高,+3.3V供电,具有两个接收和发送通信,由于TMS32LF2407采用+3.3V供电,所以在MAX3232与TMS32LF2407之间不需要加电平转换电路。
CAN收发器也直接采用了+3.3V供电的CAN收发器SN65HVD230,它是驱动CAN控制器和物理总线间的接口,提供对总线的差动发送和接收功能,硬件原理图如下图2所示。
由于TI公司的SN65HVD230是提供+3.3V供电,同时由于LF2407也是使用3.3V供电,因此也不需要做电平转换。
can总线编程实例 -回复

can总线编程实例-回复CAN总线编程实例如何实现?CAN总线是一种现代化的通信协议,被广泛应用于汽车、工业控制和航空等领域。
它可以实现多个节点之间的高效和可靠的数据传输。
在本文中,我将介绍CAN总线编程的基本原理和步骤,并通过一个实例详细解释如何实现CAN总线编程。
第一步:了解CAN总线基础知识在开始编程之前,了解CAN总线的基础知识非常重要。
CAN总线由两条线组成,分别是CAN_H和CAN_L线。
CAN总线使用差分信号进行通信,通过CAN_H和CAN_L线上的电位差来传输数据。
此外,CAN总线支持循环冗余校验(CRC)来确保数据的完整性。
第二步:选择合适的硬件和软件工具在进行CAN总线编程之前,我们需要选择合适的硬件和软件工具。
通常,我们可以选择CAN芯片集成到嵌入式硬件中,或者使用CAN适配器。
对于软件工具,我们可以选择使用CAN总线编程库和相应的编程语言来编写代码。
第三步:编写CAN总线初始化代码在进行CAN总线编程之前,我们需要初始化CAN控制器。
这包括设置波特率、CAN模式和中断等。
下面是一个示例代码片段,演示了如何初始化CAN总线:C++#include <stdio.h>#include <can.h>int main() {初始化CAN总线can_init(500000); 设置波特率为500 kbpscan_set_mode(MODE_NORMAL); 设置为正常模式return 0;}第四步:发送CAN消息一旦CAN总线初始化完成,我们就可以开始发送CAN消息。
下面是一个简单的示例代码,演示了如何发送CAN消息。
C++#include <stdio.h>#include <can.h>int main() {初始化CAN总线创建并设置CAN消息can_message_t msg;msg.id = 0x123; 设置CAN消息的IDmsg.dlc = 8; 设置数据长度msg.data[0] = 0xAA; 设置数据发送CAN消息can_send_message(&msg);return 0;}第五步:接收CAN消息除了发送CAN消息,我们还可以通过CAN总线接收消息。
CAN总线测试规范

CAN总线测试规范1.测试环境准备在进行CAN总线测试之前,首先需要准备好测试环境。
这包括确定测试设备(例如CAN总线分析仪、ECU模拟器等),搭建相应的硬件连接(例如CAN总线连接线),以及设置测试软件环境。
2.测试用例设计设计测试用例是进行CAN总线测试的关键步骤。
测试用例应该包括各种常见和特殊情况,以确保测试的全面性和覆盖度。
测试用例应该覆盖CAN总线的各种功能和通信协议,包括标准和扩展帧的发送与接收、数据帧的发送和接收确认、错误帧的处理等。
3.性能测试性能测试主要是测试CAN总线的通信速率和延时。
在性能测试中,可以使用大量的数据帧进行测试,以测试CAN总线的最大数据传输速率,并观察传输时延的波动情况。
此外,还可以测试CAN总线在高负载下的性能表现,以确保系统的可靠性和稳定性。
4.可靠性测试可靠性测试主要是测试CAN总线在不同的环境条件下的稳定性和容错能力。
可以模拟噪声干扰、电压不稳定、温度变化等因素,观察CAN总线的传输是否受到干扰,以及系统是否能够正确处理错误帧和冲突。
5.兼容性测试兼容性测试是指测试CAN总线与其他设备或系统的兼容性。
在兼容性测试中,可以连接不同厂家或不同型号的设备进行测试,以确保CAN总现在与其他设备之间的正常通信和兼容。
6.安全性测试安全性测试是指测试CAN总线的安全性和防护能力。
测试内容包括对恶意攻击(例如DoS攻击、欺骗攻击等)的防范能力,以及对故障信号和错误帧的处理能力等。
7.故障诊断测试故障诊断测试是指测试CAN总线的故障诊断功能。
在故障诊断测试中,可以模拟ECU故障或CAN总线连线错误等情况,观察系统是否能够正确地检测和报告故障,并采取相应的故障处理措施。
总之,对CAN总线进行全面、准确的测试是确保CAN总线的可靠性和稳定性的重要步骤。
针对不同的测试需求,可以灵活选择适当的测试方法和测试工具。
同时,测试结果的记录和分析也是测试过程中的重要环节,可以根据测试结果优化系统设计和改进测试方法。
can总线案例

can总线案例
CAN总线(Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。
以下是一些CAN总线的应用案例:汽车控制系统:CAN总线最初就是为了解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的。
在现代汽车中,CAN总线已经成为一种标准配置,用于连接各种控制单元,如发动机控制单元、制动系统控制单元、车身控制单元等。
这些控制单元之间通过CAN总线进行实时数据交换,以实现协同工作和优化车辆性能。
工业自动化:在工业自动化领域,CAN总线被广泛应用于各种传感器、执行器、控制器等设备之间的通信。
例如,在生产线上,可以通过CAN总线连接各种PLC、电机控制器、温度控制器等设备,实现自动化控制和监测。
船舶控制系统:在船舶控制系统中,CAN总线也被用于连接各种传感器、执行器和控制器。
由于船舶环境的特殊性,要求控制系统具有高度的可靠性和稳定性,而CAN总线的优秀性能和特点使其成为船舶控制系统的理想选择。
医疗设备:在医疗设备中,CAN总线也被用于连接各种传感器、执行器和控制器,如心电图机、呼吸机、输液泵等。
这些设备之间需要实时交换数据,以确保患者的安全和治疗效果。
以上案例仅供参考,如需更专业的信息,建议咨询CAN总线领域的专业人士或访问相关论坛。
同时,在使用CAN总线进行系统设计时,应充分考虑系统的实际需求和特点,选择合适的通信协议和硬件设备,以确保系统的稳定性和可靠性。
《CAN总线》课件

CAN总线的网络拓扑结构
总线拓扑结构
CAN总线常采用“总线”拓扑结构,节点通过总线相连。
树形拓扑结构
扩展的CAN总线也可以采用树形结构,增加节点间的通信和连接。
混合型拓扑结构
实际应用中,总线和树形拓扑结构也可以结合使用,以满足特定的应用需求。
CAN总线的错误处理机制
错误检测
CAN总线采用CRC校验和一些其他 的技术进行检错,确保数据传输 的准确性。
CAN总线的优缺点及与其他总线的比较
优点
• 成熟的技术 • 高性能、高可靠性和实时性强 • 传输速率快,容量大 • 成本较低,可延迟升级
缺点
• 节点建设的成本较高 • 不支持多主机竞争机制 • 防干扰性不如其他总线
CAN总线的应用案例
汽车电子
CAN总线广泛应用于汽车车身控 制、发动机管理、制动系统、车 门锁等功能上。
CAN总线可以实现医疗器械的控 制、监测、通信等功能,提高医 疗设备的智能化。
CAN总线的物理层协议
CAN总线采用的物理层协议是双绞线双向传输,传输速率可选择1Mbps、500Kbps、250Kbps、125Kbps四种。 CAN常用的线缆是屏蔽双绞线。
CAN总线的数据链路层协议
1
逻辑链路控制
CAN总线使用了逻辑链路控制(LLC)协
CAN总线的标准化和认证
CAN总线的标准化和认证很重要,包括ISO11898标准规范、CANopen协议、Can in Automation(CiA)协议等, 同时还需符合CE、EMC、RoHS等认证标准。
信息帧的优先级
2
议。
CAN总线采用“重发优先级”机制,即具有
较高优先级的消息帧比较低优先级的消 息帧CAN总线的LLC协议实现了简单的流控制, 即发送方发完一部分帧后必须等待接收 方的回复才可继续发送。
北航研究生CAN总线实验报告
学年 2010—2011学期第 1 学期研究生实验报告内容(名称):CAN总线实验院(系)名称自动化科学与电气工程学院专业名称控制理论与控制工程学号姓名成绩2011年1月实验一CAN数据信息的发送与接收1.实验内容(1)将USB-CAN模块连接到计算机的USB口,启动试验程序,通过实验平台软件,完成帧信息传送,帧信息传送模拟;帧传送信息应用试验-基于CAN 总线聊天程序。
(2)完成并观察CAN数据信息的发送与接收。
认真阅读并思考示例程序,分析程序动态连接库中收发函数的调用及接收处理方法。
(3)在示例程序的基础上进行修改,实现两个CAN口的通信连接发送和接受实验。
2.实验分析与结果演示(1)完成实验内容1,第一次接触CAN总线,这里主要是阅读指导书首先对对CAN总线有了初步的理解,如帧格式等。
根据实验要求,对CAN设备进行调试。
调试结果如图1所示。
调试过程为:第一要初始化CAN设备的参数,如设备类型号、索引号等,其中定时器参数直接决定通讯的频率;第二是连接与启动设备,即建立设备的USB链路(由于试验中CAN总线设备是基于USB通讯的)和初始化CAN参数;最后是帧的发送与接收,发送帧时要配置发送格式、帧ID、帧类型、帧格式和发送的数据,接收数据时,只需要从缓冲区中读出数据。
聊天程序的演示中只要在这个基础上输入发送和接收通道,起一个聊天者的名字并输入数据即可,是CAN总线帧传送与接收的实例。
图1 帧信息传输(2)分析程序动态连接库中收发函数的调用及接收处理方法。
理解了结构体VCI_CAN_OBJ的定义和其中函数的功能。
(3)实现两个CAN口通信。
在VC环境下,修改实例程序完成发送与接收功能。
定义发送帧的数据第一字节为设备ID号,第二字节为压力编号,第三字节为温度编号,第四字节为压力值,第五字节为温度值。
为实现信息的连续发送与接收,需要将发送和接收函数放入定时器中服程序中。
程序流程图如图2所示,运行结果如图1所示(做实验时没有截图,只有程序,所以界面的结果没有显示,但是是编译通过的。
CAN总线测试解决方案
CAN总线测试解决方案首先,CAN总线测试需要建立测试环境,包括CAN总线通信硬件和软件环境。
在硬件方面,需要使用CAN总线通信接口设备,如CAN分析仪和CAN总线测试盒等。
这些设备可以连接到被测CAN总线节点上,以监听、分析和记录总线上的通信数据。
同时,还需要相关的测试工具软件,如CAN总线测试软件和扩展工具等,用于配置、操作和分析CAN总线系统。
其次,CAN总线测试需要注意测试项的确定和测试用例的设计。
常见的测试项包括CAN总线的通信功能、帧传输的正确性、数据传输的稳定性、时钟同步精度、通信流量和带宽等。
在设计测试用例时,需要考虑不同的测试情景和测试需求,以覆盖各种可能的工作状态和异常情况。
例如,可以设计发送和接收特定的CAN帧,测试帧的传输速率、错误恢复机制和帧过滤功能等。
接下来,进行CAN总线的功能性测试。
这包括通信测试、帧传输测试和数据传输测试等。
通信测试主要通过发送和接收CAN帧,测试CAN总线节点之间的通信能力和通信稳定性。
通过发送不同类型的帧,如数据帧、远程帧和错误帧等,验证CAN总线系统的帧传输机制和错误处理能力。
数据传输测试主要验证CAN总线的数据传输的稳定性和可靠性。
通过发送和接收大量的数据帧或连续的数据帧,验证CAN总线的带宽、数据传输速率和数据包的正确性。
然后,进行CAN总线的性能测试。
性能测试主要关注CAN总线系统的响应时间、延迟和吞吐量等指标。
通过对发送和接收CAN帧的时间进行测量,可以得到CAN总线系统的响应时间和延迟情况。
通过在CAN总线上同时发送多个帧,测试CAN总线的吞吐量和数据传输速率。
最后,进行CAN总线的稳定性测试。
稳定性测试主要通过长时间运行和大量数据传输测试,来评估CAN总线系统的可靠性和稳定性。
通过发送和接收大量的数据帧,并在不同的环境条件下进行测试,验证CAN总线系统的稳定性和抗干扰能力。
需要注意的是,CAN总线测试是一个持续的过程,需要在系统设计和开发的所有阶段进行。
推荐-CAN总线技术与iCAN模块实验报告 精品
实验一CAN总线技术与iCAN模块实验实验报告学院:自动化学院专业:自动化专业班级:20XX211410姓名:高娃姚雷阳学号:20XX211975 20XX211977指导老师:杨军一.实验名称:实验一CAN总线技术与iCAN模块实验二.实验设备:计算机、CAN总线系列实验箱、测控设备箱、万用表。
三.实验过程、实验内容、实验记录:(1)驱动程序安装USBCAN-2A接口卡的驱动程序需要自己手动进行安装,驱动程序已经存放于实验准备内容中。
找到驱动程序,直接点击进行安装即可。
安装完成后,在“管理->设备管理器->通用串行总线控制器”中查看驱动是否安装成功。
注意:安装驱动程序过程中PC机不能连接USB电缆。
(2)iCANTEST安装与运行iCANTEST安装与运行后,利用iCANTest软件对iCAN系列各模块进行验证性测试,可以测试各模块是否可以通过USBCAN-2A接口卡与PC机正常连接与通信以及进行简单的测控操作。
(3)各种iCAN模块的测试1. 打开iCANTest软件(老师,我们当时觉得安装这些过程太简单了,没意识到截图,所以引用了一些PPT上的图像,但后面测试部分的都是自己的截图,希望老师谅解。
)在工具栏中点击“系统配置”,在弹出的对话框中设置通信信息。
如下图:图12. 点击“搜索”,则CAN总线中连接的所有模块应该被搜索出来,列表显示。
包括模块设置的MACID。
图 23.图示为搜索完成后的显示状态,在从站列表中将所有模块予以显示。
点击某个模块,则弹出该模块的操作窗口。
图 34. 点击“启动”,再点击“全部上线”。
在从站列表中所有上线的模块标志变成绿色的三角,表示该模块上线成功。
图 45.试验各个模块的基本输入输出功能。
※点击继电器模块2404的4个输出,听到继电器动作声音。
图 5※连接4210D/A模块的通道0到4017A/D模块的通道5,输入0x8000对应得到5V的电压输出。
CAN总线实验过程补充说明
实验一SC2102 CAN总线PCI插卡应用图1采集数据的格式为:ID-DLEN-DA TARTR位为1时,对应远程帧。
远程帧的含义是,通过发送远程帧可以启动其资源节点传送它们各自的数据。
图2观察图2中,AC,AM对收发的影响。
每次对如图2中CAN PORTx 操作栏中的设置更改后,需要点击复位按钮,才能生效。
否则,仍为上次的设置。
观察图3中AC,AM对收发的影响,以及FF位对地址长度的影响。
图4当FF=0时,地址位数是11位,若强行赋给高于11位的地址,程序不会出错。
这个没有什么特别的地方,编写程序时作相应的处理即可。
本次实验用到的所有器件(除带PCI接口的台式机和相关软件)如图5,图6所示。
图5 SC2102 CAN总线PCI插卡实际连接如图7图8所示。
图7图8实验2 CAN总线远程测控网络设计实验2-1 SC2102与SC3410之间的通信本实验用到的器件有SC2102,232母头,SC3410,SC3410配套控制卡,50线排线,导线若干,带PCI接口的台式机,5V电源,相关软件。
其中部分器件如图9,图10所示。
图9 SC3410图10 SC3410配套控制卡其实验具体连接方式如图11,图12所示。
图11图12要能正确进行通信,要满足几个条件。
波特率一致,AC,AM设置正确。
观察图13,其ID 设置需要和SC3410的ID一致,方能正确通信(为何)。
这个ID应该不是SC2102的ID,因为其在图14所示界面中已作设置。
这一点还不是太明白,我想应该是程序编写时的原因。
图13图14如图13中,可以直接输入命令,你就可以在图13中得到相应的反馈值,命令定义参考实验手册的附录。
从正面看SC3410配套控制卡,如图15所示。
图15 SC3410配套控制卡器件与引脚定义位置示意图观察图15中器件的位置和引脚定义,他和实物一一对应。
在电压测量环节,上位机软件输出电压值和由电阻分压得到的计算值相差较大,在上位机软件中,改变AD量程后,输出结果又会有变化,但使用6位半万用表测量实际输入电压时却和上位机输出结果基本一致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CAN总线回环实验这一节我们将向大家介绍STM32的CAN总线的基本使用。
有了STM32,CAN总线将变得简单,俗话说“百闻不如一见”,应当再加上“百见不如一试”。
在本小节,我们初始化CAN总线,分别测试轮询模式和中断模式下的CAN总线环回,并通过神舟IV号的LED和串口等指示CAN环回的数据传送结果。
本节分为如下几个部分:1 CAN总线回环实验的意义与作用2 实验原理3 软件设计4 硬件设计5 下载与验证6 实验现象z意义与作用什么是CAN总线?CAN,全称“Controller Area Network”,即控制器局域网,是国际上应用最广泛的工业级现场总线之一。
它是一种具有国际标准而且性能价格比又较高的现场总线,当今自动控制领域的发展中能发挥重要的作用。
最初CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
CAN控制器局部网是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。
在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。
控制器局部网将在我国迅速普及推广。
由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。
为此,1991年9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。
该技术规范包括A和B两部分。
2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,而2.0B给出了标准的和扩展的两种报文格式。
此后,1993年11月ISO正式颁布了道路交通运载工具--数字信息交换--高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
CAN总线特点CAN总线是一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。
通信速率可达1MBPS。
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。
采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。
数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。
同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。
CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。
CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。
CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。
CAN总线插卡可以任意插在PC AT XT兼容机上,方便地构成分布式监控系统。
3. CAN总线技术介绍3.1位仲裁要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。
在几个站同时需要发送数据时,要求快速地进行总线分配。
实时处理通过网络交换的紧急数据有较大的不同。
一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。
这种优先级一旦在系统设计时被确立后就不能再被更改。
总线读取中的冲突可通过位仲裁解决。
当几个站同时发送报文时,站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)覆盖它。
用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
报文的尾部由帧结束标出。
在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
3.4 数据错误检测不同于其它总线,CAN协议不能使用应答信息。
事实上,它可以将发生的任何错误用信号发出。
CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。
3.4.1 循环冗余检查(CRC)在一帧报文中加入冗余检查位可保证报文正确。
接收站通过CRC可判断报文是否有错。
3.4.2 帧检查这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
3.4.3.应答错误如前所述,被接收到的帧由接收站通过明确的应答来确认。
如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。
CAN协议也可通过位检查的方法探测错误。
3.4.4 总线检测有时,CAN中的一个节点可监测自己发出的信号。
因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
3.4.5 位填充一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。
然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。
为保证同步,同步沿用位填充产生。
在五个生。
在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。
例如,五个连续的低电平位后,CAN自动插入一个高电平位。
CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。
如果至少有一个站通过以上方法探测到一个或多个错误,它将发送出错标志终止当前的发送。
这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。
当大量发送数据被终止后,发送站会自动地重新发送数据。
作为规则,在探测到错误后23个位周期内重新开始发送。
在特殊场合,系统的恢复时间为31个位周期。
但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。
因此,如果不采取自监测措施,总线系统应采用模块化设计。
为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。
这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。
3.4.6 CAN可靠性为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。
如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。
从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。
残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。