0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【CAN总线知识】为什么CAN节点ID不能相同?

ZLG致远电子 2024-08-30 12:48 次阅读

CAN-bus网络中原则上不允许两个及以上节点具有相同的ID段,但如果两个及以上节点ID相同会怎样呢?资深强迫症患者想一探究竟!


实验前,我们首先要对CAN报文的结构组成、仲裁原理有清晰的认识。


24a157dc-668b-11ef-89ff-92fbcf53809c.jpg  CAN报文结构

目前使用最广泛的CAN-bus网络标准是V2.0版本,该标准又分为A、B两部分,它们主要的区别在仲裁区域的ID码长度。其中CAN2.0A(标准帧)为11位ID,CAN2.0B(扩展帧)为29位ID。下表1为CAN报文结构:图1CAN报文结构 24b85ca2-668b-11ef-89ff-92fbcf53809c.png

仲裁原理

CAN总线的仲裁是基于“线与原理”,如图1所示。当收发器同时发出不同电平信号时,隐性电平总是被显性电平覆盖。CAN控制器在发送报文的同时会监听总线状态与自己发送的电平是否一致,如果不一致发生在ID段则会发生仲裁,如果发生在其他区域则会触发相应错误。

24dec180-668b-11ef-89ff-92fbcf53809c.png

图1 线“与”示意图下面进入重点,如果两个节点ID段相同会怎样?我们用两个CAN卡和一台CANScope开始实验,CAN卡模拟CAN标准节点收发报文,CANScope做通信监控,如图2所示。(注:CAN卡为USB转CAN工具,CANScope为CAN总线分析仪,产品详见致远电子官网zlg.cn

24fbc94c-668b-11ef-89ff-92fbcf53809c.png

图2 实验平台搭建


24a157dc-668b-11ef-89ff-92fbcf53809c.jpg  实验一:ID段相同但数据不同

使用一个CAN卡发送ID为000H数据为01020304050607H的CAN帧,使用另一个CAN卡发送ID为000H数据为02020304050607H的CAN帧。CANScope监听的数据如图3所示,可以观察到有大量的数据场填充错误。

25264c1c-668b-11ef-89ff-92fbcf53809c.png

图3 数据场填充错误为什么会这样呢?我们首先分别获取两个CAN卡发送报文对应的波形,如图4。因为两帧报文同为标准数据帧,且每帧包含8个字节数据,所以两帧报文对应的波形在ID段、RTR、IDE、R0以及DLC段完全一致。因此,仲裁作用失效,两节点都认为自己获得了优先权,继续发送数据。

2541febc-668b-11ef-89ff-92fbcf53809c.png

图4 报文对应波形对比现在我们聚焦数据段,第一个字节数据相同,均为为00H;第二个字节数据不同,分别为01H、02H。图5箭头标示处可以看到两者对应位的逻辑分别为0和1。前面我们提到CAN节点在发送报文的同时会检测总线电平是否与自己发送的电平一致,若不一致发生在非仲裁区域则触发相应错误,因此若这两帧报文同时发送到总线上必将发生位发送错误。因为位发送错误会引起节点发送违反填充规则的6个显性位(主动错误破坏该帧数据),故出现数据场填充错误,如图3。

2569bee8-668b-11ef-89ff-92fbcf53809c.png

图5 数据场冲突
24a157dc-668b-11ef-89ff-92fbcf53809c.jpg  实验二:ID相同数据也相同同时使用两个CAN卡发送ID为000H数据为01020304050607H的CAN帧,CANScope做通信监控。首先,我们不勾选“总线应答”选项,使CANScope工作在仅监听模式。实验结果如图6所示,出现的是应答定界符格式错误。

258c6100-668b-11ef-89ff-92fbcf53809c.png

图6 应答界定符格式错误为什么会发生这种错误呢?发送报文的节点会在ACK段发送两个隐性位,若在第一个位期间接收到显性电平则认为该帧被正确接收。由于仲裁段相同时两节点都认为自己取得仲裁权,在ACK段等待应答,但该网络中仅存在两个节点,因此在ACK段不能收到应答,进而发生应答定界符错误。简单说来这种情形就类似于总线中只有一个节点将不能实现数据发送。图7是在ACK段有无应答时的波形对比。

25ad9406-668b-11ef-89ff-92fbcf53809c.png

图7 ACK应答我们勾选上总线应答,再次开始实验(此时总线中相当于有3个节点)。这时如图8所示,总线数据收发正常。

25ccd6a4-668b-11ef-89ff-92fbcf53809c.png

图8 启动总线应答

24a157dc-668b-11ef-89ff-92fbcf53809c.jpg  总结

当两节点同时发送ID相同数据不同的报文时,将发生数据场填充错误;当两节点同时发送ID相同数据也相同的报文时,若有其他节点应答则不发生错误,若无其他节点应答则发生应答错误。因此,我们在设计CAN总线时应避免ID段相同的情况出现。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 收发器
    +关注

    关注

    10

    文章

    3336

    浏览量

    105512
  • CAN总线
    +关注

    关注

    145

    文章

    1890

    浏览量

    130324
  • 网络
    +关注

    关注

    14

    文章

    7383

    浏览量

    88195
收藏 人收藏

    评论

    相关推荐

    CAN总线节点ID相同会怎样?

    CAN-bus网络中原则上不允许两个节点具有相同ID段,但如果两个节点ID
    发表于 08-31 15:38 2707次阅读

    CAN-bus网络中,出现具有相同ID段的两个节点会发生什么?

    CAN-bus网络中原则上不允许两个节点具有相同ID段,但如果两个节点ID
    的头像 发表于 09-14 14:03 1w次阅读
    <b class='flag-5'>CAN</b>-bus网络中,出现具有<b class='flag-5'>相同</b><b class='flag-5'>ID</b>段的两个<b class='flag-5'>节点</b>会发生什么?

    基于CAN总线的煤矿瓦斯报警节点系统的设计

    文章介绍了一种基于CAN 总线的煤矿瓦斯报警节点系统的设计,给出了基于CAN 总线的智能监控节点
    发表于 03-30 16:40 47次下载

    CAN总线节点电路的设计与实现

    CAN 总线作为一种现场总线,应用极为普及。本文给出了一种基于AT89C51 和SJA1000 的CAN 总线
    发表于 05-25 13:26 60次下载

    基于CAN总线智能节点设计

    CAN总线是一种应用极为普及的现场总线。文中提出了一种CAN总线通信接口的设计方案。CAN
    发表于 01-25 15:04 52次下载

    CAN总线系统智能节点设计

    摘要:CAN总线上的节点是网络上的信息接收和发送站;智能节点能通过编程设置工作方式、ID、地址、波特率等参数。它主要由单片机和可编程的
    发表于 12-20 22:18 45次下载

    基于CAN总线的智能节点设计

    应用51单片机为控制核心结合其他的器件设计了一种能连接于CAN总线上的智能节点。通过单片机控制CAN总线控制器SJA1000,并进一步通过
    发表于 01-10 16:54 120次下载

    CAN总线节点ID相同会出现什么

    CAN-bus网络中原则上不允许两个节点具有相同ID段,但如果两个节点ID
    发表于 11-12 10:52 8次下载
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>中<b class='flag-5'>节点</b><b class='flag-5'>ID</b><b class='flag-5'>相同</b>会出现什么

    can总线id如何定义设置?

    can总线ID是指标识符。也就是一个can节点的地址或者说名字。网络中识别某一节点的信息。
    发表于 11-27 10:30 10.3w次阅读

    CAN总线节点软件的设计与实现

    CAN总线节点软件的设计与实现说明。
    发表于 04-19 16:59 20次下载

    关于CAN总线错误的相关知识

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN
    的头像 发表于 05-27 17:56 2936次阅读

    CAN总线错误的类型介绍

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN
    的头像 发表于 06-13 16:08 7892次阅读

    CAN总线基础知识

    CAN总线是一种常用的总线,对于刚开始接触CAN总线的,面对着各式各样的资料,可能不知道从何看起,今天科普一下
    的头像 发表于 02-09 15:43 3557次阅读

    基于FPGA的CAN总线通信节点设计

    点击上方 蓝字 关注我们 摘要:以FPGA 代替传统的单片机和外围扩展芯片, 给出了CAN 总线通信节点的详细设计方案。其中以SJA1000为CAN
    的头像 发表于 06-18 11:15 2601次阅读

    基于CAN总线的智能节点设计

    电子发烧友网站提供《基于CAN总线的智能节点设计.pdf》资料免费下载
    发表于 10-20 14:44 4次下载
    基于<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的智能<b class='flag-5'>节点</b>设计