CAN总线几种正常的“异常”波形

[复制链接]

   
 
电梯直达

楼主

 
 hubaba 发表于 2016-3-28 14:00 | 只看该作者 
摘要

工程师们通常使用示波器观察CAN总线的信号质量,一般主要关注CAN总线差分信号的幅值、最小位宽、边沿情况等。相信不少工程师都看到过一条报文数据的波形上高高低低存在多个幅值,心里可能会变得忐忑不安,幅值不统一是不是波形出现畸变了呢?其实并非如此,今天就把CAN总线上的幅值“异常”归归类。

一、CAN-bus信号产生原理
众所周知,一个标准CAN节点由微处理器、控制器、收发器构成。多个节点成总线型架构挂在一起,两个端节点上并有终端电阻。其结构简图如下图所示。

图1 CAN-bus节点网络结构
可以看出,与总线直接相连的是CAN节点的收发器,起内部电路等效如下图所示,CAN-H、CAN-L直接由三极管驱动,近似可以看成电流型输出。结合上文所述网络架构中的终端电阻,节点发出信号时电流流过终端电阻产生电压信号,当同一时间多个节点同时发出信号时就会使总线上的电流高于单一节点发出的电流,使得我们观察电压信号时出现突增的现象。

图2 CAN收发器结构
CAN-bus是总线型结构,通常状态下一般只有一个节点占有总线。那么有几种情况会导致多个节点同时发出,进而导致幅值出现“异常”呢,下文通过致远电子CANScope分析仪的几个测试案例总结一下。
二、应答位上的幅值“异常”
最常见的,当CAN网络上存在3个以上的节点时,应答位上的幅值要明显高于同一报文的其他位置,如下图所示。可以看到报文在ID段、数据段、CRC校验段处的幅值均比较一致,但是到应答位处时幅值出现突增。这是为什么呢,大家都知道CAN-bus总线拥有自动应答机制,即当某一节点发送完一帧报文时,所有总线中的其余非只听节点均会在应答位处做出响应,如果报文被成功识别则发出一个显性位做为应答信号。
结合上文所述,应答位此时CAN总线上的电流是若干节点电流叠加的综合,所以应答位的幅值高就很容易讲通了。

图3 应答位上的幅值“异常”
三、ID段上的幅值“异常”
CAN-bus总线的一大特点就是多主结构,即网络中所有节点功能对等,没有主从机的概念,所有节点均可自由收发数据。保证多主结构得以实现的关键在于CAN总线的仲裁机制也称优先级机制。当网络中同时有多个节点同时发送数据时会在ID段处产生仲裁,优先级高的节点会最终占有总线。
如下图所示,可以看到在图中的标记处波形出现了“台阶”。正是由于在“台阶”出现前有两个节点同时发出数据,导致幅值增高,在“台阶”处某一节点由于优先级高占有总线,另一个节点暂时退出,使得幅值又回归平常。

图4 ID段上的幅值异常
四、错误帧上的幅值“异常”
再看看这个案例,可以看到在波形的后半部分也出现了台阶式的幅值增高,光标卡住的显性电平区间可以看到宽度明显超过了5个标准位宽,按照CAN总线的位填充规则(不能存在连续六个相同的显性位或隐性位)表明这是一条错误帧。但是不要误会,并不是因为这个幅值“异常”而导致的错误帧,我们知道CAN总线有错误重发机制,以保证总线传输数据的可靠性。这种可靠性正式通过错误帧的“一票否决制”实现的。
当网络中某一节点识别到一条认为是有问题的报文后会发送六个连续的显性位(即错误帧),投出这一否决票通知网络上所有其他节点,本条报文无效。此后其他节点会以“跟票”的形式全部发出六个显性位错误帧。所以此时多个节点重叠部分的错误帧的幅值就会高一些了。

图5 错误帧上的幅值异常

CAN总线几种正常的“异常”波形的更多相关文章

  1. java 常见的几种运行时异常RuntimeException

    常见的几种如下:   NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常.IllegalArgumentException - 传递 ...

  2. 5种处理Vue异常的方法

    原文: Handling Errors in Vue.js 译者: Fundebug 本文采用意译,版权归原作者所有 去年一整年,我都在使用最爱的-Vue.js- 来做项目.最近突然意识到,我竟然从来 ...

  3. 2019.12.11 java程序中几种常见的异常以及出现此异常的原因

    1.java.lang.NullpointerException(空指针异常) 原因:这个异常经常遇到,异常的原因是程序中有空指针,即程序中调用了未经初始化的对象或者是不存在的对象. 经常出现在创建对 ...

  4. selenium三种断言以及异常类型

    elenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日志 ...

  5. 【刷题】java 常见的几种运行时异常RuntimeException

    常见的几种罗列如下: -NullPointerException - 空指针引用异常 ClassCastException - 类型强制转换异常. IllegalArgumentException - ...

  6. selenium 三种断言以及异常类型

    selenium 提供了三种模式的断言:assert .verify.waitfor Assert 失败时,该测试将终止. Verify 失败时,该测试将继续执行,并将错误记入日显示屏 .也就是说允许 ...

  7. java中最常见的几种运行时异常,你get了吗?

    NullPointerException (空指针异常) ClassCastException (类型强制转换异常) NumberFormatException (数字格式异常) NegativeAr ...

  8. C++ Primer笔记2_四种类型转换_异常机制

    1.类型转换 命名的强制类型转换: 有static_cast.dynamic_cast.const_cast.reinterpret_cast static_cast: 编译器隐式运行的不论什么类型转 ...

  9. 网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理

    第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前 ...

随机推荐

  1. wampserver的配置教程

    对于初做PHP网站的朋友来说,第一步肯定是希望在自己电脑是搭建PHP环境,省去空间和上传的麻烦!但搭建环境也不是件容易的事情,特别是对于新手同学来说!因此在这里跟大家介绍我作为一名新手在使用的方便好用 ...

  2. [Android] 锁定屏幕

    最近玩的比较欢脱,欠了好多东西没写.今天先简单地补一篇简单的内容.就是最近涉及到一个锁定Android设备屏幕的设计,大概就是通过一个按钮或者服务消息,来控制设备界面完全锁定,不能点击任何东西.感觉上 ...

  3. Android 监听手机GPS打开状态

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854942 本文出自[赵彦军的博客] GPS_Presenter package ...

  4. CentOS 7下安装Python3.5

    CentOS 7下安装Python3.5 •安装python3.5可能使用的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-deve ...

  5. 在SQL Server中使用CLR调用.NET类库中的方法 (转载)

    在SQL Server中调用 .NET 类库的方法要分为下面几步来实现: 在.NET中新建一个类库项目,并在这个项目中添加一个类文件,并把要被SQL Server调用的方法定义为公有的,静态的方法. ...

  6. Sysstat的工具集sar、 iostat、mpstat、sadf、sar、sadc

    sysstat Sysstat的工具集sar. iostat.mpstat.sadf.sar.sadc * iostat 工具提供CPU使用率及硬盘吞吐效率的数据: * mpstat 工具提供单个处理 ...

  7. 推荐一个国外C开发的PHP框架--Phalcon,性能相当好

    本人亲自配置测试后.性能相当不错.不过有一点.使用极不符合国人习惯,甚至和大多数主流PHP框架如Zend Framework,Yii,Ci,Thinkphp都不一样. Phalcon 是一个开源的,全 ...

  8. 用JS制作《飞机大作战》游戏_第1讲(素材查找和界面框架搭建)-陈远波

    一.查找素材: 二.分析游戏界面框架: 登录界面.游戏界面.暂停游戏界面.玩家死亡后弹出界面:并对应的界面包含什么元素: 三.分别搭建以上四个界面: 1.登录界面与游戏界面框架(隐藏游戏界面,四个界面 ...

  9. unity StrangeIoc

    已经很久没有写博客,主要原因还是自我荒废了太久,在学习上失去了动力.最近来新的公司实习,以前都是做项目的开发,现在被调到框架组,主要从事的是框架维护还有开发.学习了许多新的知识还有优秀的框架,今天就写 ...

  10. Python接口自动化--SSL 3

    官方文档参考地址: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 针对SSL Warnings,u ...