CAN设备在高波特率下无法通信或不匹配
更新 Sep 27, 2024
适用于
“适用于”表示本页面提供的解决方案已被证实适用于列出的产品。该方案或同样适用于类似产品或应用。
其他CAN工业通信设备
问题详述我的CAN设备可以在低波特率下正常通信,但是当我增加波特率时,它只会间歇性地通信或者完全无法通信。我收到CAN错误:Form错误, CRC错误, Bit错误或者Stuff错误。
解决方案这些错误可能是由于CAN终端电阻选择不当造成的。这篇知识库讨论了在不同类型的CAN通信模式下如何选择正确的终端电阻。
相关信息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标准)。
相关链接在NI-CAN硬件上配置合适的终端电阻NI-CAN硬件和软件用户手册NI-XNET, CAN, LIN and FlexRay Platform Overview
其他支持选项
询问NI社区
在我们的论坛中与其他用户协作
搜索NI社区以寻求解决方案
请求工程师的支持
可能需要有效的服务协议或有效的软件订阅,同时支持选项因国家/地区而异
打开服务请求
了解软件订阅和服务
了解硬件服务计划
Was this information helpful?
Helpful
Not Helpful