技术标签: CANopen
CAN终端电阻
1. 终端电阻是为了消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。
阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。
引起信号反射的另外一个原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱
为了提高网络节点的拓扑能力,CAN总线两端需要接有120Ω的抑制反射的终端电阻, 它对匹配总线阻抗起着非常重要的作用,如果忽略此电阻,会使数字通信的抗干扰性和可靠性大大降低,甚至无法通信。C
2. 阻抗指的是电阻加电抗,阻抗是电阻和电抗在向量上的和,阻抗匹配主要是用于传输线上所有的高频信号都能传输至负载点的目的,不能有信号反射会发射点,提升传输能源效率。当某个电源的内阻等于其负载时,输出功率最大,则为阻抗匹配,如为高频信号,则为无反射波。阻抗匹配是指在能量传输时,要求负载阻抗要和传输线的特征阻抗相等,此时的传输不会产生反射,表明所有能量都被负载吸收了.反之则在传输中有能量损失。
阻抗匹配有串联终端匹配和并联终端匹配,串联终端匹配是信号源端阻抗低于传输线特征阻抗的情况下采用,在信号源与传输线上串接一个电阻,使得信号源的输出阻抗和传输线的特征阻抗相匹配,抑制负载端反射回来的信号发生再反射。并联终端匹配是在信号源端阻抗很小的情况下,通过增加并联电阻使负载端输入阻抗与传输线的特征阻抗相匹配,达到消除负载端反射的目的。
并联终端匹配分为单电阻和双电阻,RS-485总线终端匹配多采用的是双电阻并联终端匹配,如采用单电阻方式,负载端并联电阻值与传输线的特性阻抗相等或相近,那样静态电流将会很大,对电流驱动能力要求很高,很少采用。双电阻并联终端匹配由于是两电阻并联值与传输线的特性阻抗相等或相近,每个电阻都比传输线的特征阻抗大,对电流的要求不高。但是,并联终端匹配不管是单电阻还是双电阻总归是会带来直流功耗,降低总线负载能力。一般485总线传输线的特征阻抗为120欧姆,采用两个120欧姆电阻作为485总线的终端匹配电阻,具体连接方式是首尾各接一个,并联于485正负上。由于485总线并联电阻会导致直流功耗,一般建议在传输距离不超过300米,传输速率较低的情况下不要接终端电阻,只有在传输有信号反射,导致通信不稳定的情况下才加以考虑接终端电阻。
问题: 缺少适当的总线终端电阻(或者根本就缺少总线终端电阻)会导致什么样的错误或者通信问题?
解答:
CAN总线ISO 11898协议规定,CAN总线必须在网络的两端,通常是网络主控制器和网络最远端的节点之间安装合适的总线终端电阻(在位于DB-9接口的第2和第7引脚的CAN_H和 CAN_L信号线之间安装一个120欧姆的电阻)。详细请参考相关链接部分“为NI-CAN硬件安装合适的终端电阻”,更为详细地了解如何为NI-CAN网络安装终端电阻。 在没有安装合适的终端电阻的情况下,通信可能会出现下面非预期的行为:
在低波特率的情况下能够正确通信,但是在波特率较高时会出错(具体出错的波特率的值取决于一系列因素,包括CAN网络长度、数据帧上携带的数据----它能够改变具体传输的最高频率以及网络附近的电磁干扰等等)。下表中的测试总结详细描述了这种情况:
CAN波特率 - 终端电阻测试
波特率 线缆安装合适的终端电阻? 端口间传输正确?
1M 是 是
1M 否 否
125K 是 是
125K 否 有时
40K 是 是
40K 否 是
值得注意的是,在安装了合适的终端电阻的情况下,通信总是正常的。但是在40K较低的波特率下,通信仍然是正常的,因此这点是不符合CAN ISO 11898规范的地方。
CAN错误 - Form错误、CRC错误、Bit错误、Stuff错误和其他由于不合适终端电阻所导致的错误。如果出现这些错误,则请按照附件中的知识库文章来检验是否安装了合适的终端电阻。更多短语CAN错误的信息,请参考相关链接一栏中的NI-CAN硬件和软件用户手册(附录B包含了一个CAN标准的总结,并包含一个叫“CAN错误检测与约束”,该章节详细描述了CAN错误)。
Stuff错误就是一个可以用没有合适的终端电阻来解释的CAN错误(这个错误在CAN ISO 11898规范中进行了定义)。 当总线上连续出现6位相同的数据时,就会发生Stuff错误。当发送器件检测到连续5位相同的数据时,就会自动在数据流后面插入一个完成停止位,这个位会被所有的接收器件检测到并自动去除掉。这个填充位的策略能够保证数据流中有足够的信号沿,从而保证同一个数据帧中的数据同步。如果接收器件检测到连续6位相同的数据位,那么一定是由于同步丢失,导致接收到的数据与发送的数据不相同。而在没有合适的终端电阻的情况下,就会发生这样的事情,数据帧中的某些数据能够正确地接收和发送,而在接收的CAN接口处,整个帧(或者数据帧的完整性)没有正确的保持和被接收。 出现这种情况的原因是,一般来说CAN网络定义传输线,根据传输线理论,如果在接收端没有合适的终端电阻,那么足够高频率的信号在执行长度的传输线上是不能正确被传输的。这里的终端电阻一般指网络匹配,该负载一般选择使传输功率最大,并且其值等于网络端口阻抗共轭值(这里指的是接收端的CAN接口,实际上,考虑到噪声和其他影响,许多应用中常使用不一样的终端电阻)。
值得庆幸的是,在CAN ISO 11898规范中,已经将整个CAN网络的终端电阻简化为在网络两端安装两个120欧姆的电阻(就如同第一部分描述的一样,这完全符合CAN标准)。
2019独角兽企业重金招聘Python工程师标准>>> ...
水水的Horner Rule时间限制:1000ms 内存限制:65536kb通过率:139/161 (86.34%) 正确率:139/554 (25.09%)题目描述霍纳(Horner)规则是一种将一元n次多项式的求值问题转化为n个一次式的算法。采用最小的乘法运算策略,用于求多项式A(x)=a0+a1x+a2x^2+...+an-1x^n-1+
pugixml是一个轻量级的C ++ XML处理库。它的特点是:1、具有丰富的遍历/修改功能的类DOM接口;2、一个从XML文件/缓冲区构造DOM树的极快的非验证XML解析器;3、基于XPath 1.0实现用于查询复杂数据驱动树;4、支持Unicode编码,支持自动编码转换。pugixml还是非常好用的,那么该怎么在vs的项目中使用pugixml呢?下载pugixml,pugixm...
出现的问题:解决方法:直接向报错路径添加报错提示的文件
目录1、概念2、前序遍历和中序遍历还原二叉树3、中序遍历和后序遍历还原二叉树4、前序遍历和后序遍历还原二叉树1、概念(1)前序遍历 a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。(2)中序遍历 a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。(3)后序遍历 ...
以前使用云存储中的图片或者音频都是用的下载地址链接,今天才发现image和audio组件支持使用FileID资料链接:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/storage/api.htmlhttps://developers.weixin.qq.com/miniprogram/d...
MainActivity.javapackage com.example.backupsmss;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;impor...
以友元函数作为重载运算符的方式重载运算符+下面的例子来自于课本#include using namespace std;class Complex{ public: Complex() { real = 0; imag = 0; } Complex(double
雁去长天,空余一季苍茫。落叶把日子搅得凌乱不堪,时间纷纷坠落。用剩下这些枯萎目光对视颓废,无处躲闪。暴露在阳光下,赤裸裸的肮脏,赤裸裸的忧伤。 你在,我衔一叶飞雪;你去,我点一笔朱砂。圈圈结成思念,欲寄书,无处辞。总在行走的路上寻找最美的风景,却看不到身后那迢迢隐匿的沧桑。 忽已,就老了。前方的路还很远,前方的人还在盼望,这注定是一场无休止的跋涉。走着走着,耳边的旋律就停止了,就好像全...
先上链接:【拯救者 】数据库系统概论速成--MySQL视频教程-数据库-CSDN程序员研修院要考研初试、复试或者期末了,很多小伙伴数据库系统概论没思路,没头绪,没大纲,不知道考什么这里给大家推荐一个视频我亲自录制的,【拯救者 】数据库系统概论速成--MySQL视频教程-数据库-CSDN程序员研修院分为两个部分第一部分是基础知识,第二部分是期末真题讲解! 通俗易懂! ! !...
需求:需要定时把阿里云服务器上的数据备份文件下载到本地备份,所以需要在本地win10系统上定时执行从阿里云服务器上下载备份文件的操作。环境和工具本地win10系统及自带的SCP工具,工具目录:C:\Windows\System32\OpenSSH阿里云centos系统,同样需要SCP工具本地作为客户端,阿里云系统作为服务端客户端步骤1)在本地win10系统打开命令行工具...
public static void main(String[] args) { System.out.println(Integer.parseInt("")); }当通过Integer.parseInt()方法将字符串转为Integer类型时,如果字符串是空串,或者需要转换的字符串大小已经超过了int大小时候,就会报 For input string:...