CAN总线中节点ID相同会怎样?
0 2022-11-29

CAN-bus网络中原则上不允许两个节点具有相同的ID段,但如果两个节点ID段相同会怎样呢?

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

一、CAN报文结构

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

表1 CAN报文结构

二、仲裁原理

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


图1 线“与”示意图

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


图2 实验平台搭建

三、实验一“ID段相同但数据不同”

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


图3 数据场填充错误

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


图4 报文对应波形对比

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


图5 数据场冲突

四、实验二“ID相同数据也相同”

同时使用两个CAN卡发送ID为000H数据为01020304050607H的CAN帧,CANScope做通信监控。首先,我们不勾选“总线应答”选项,使CANScope工作在仅监听模式。实验结果如图6所示,出现的是应答定界符格式错误。


图6 应答界定符格式错误

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


图7 ACK应答

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


图8 启动总线应答

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

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 地址总线数据总线及控制总线的定义

    总线:指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。地址总线(AB):地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基

    6小时前
  • 如何提高RS485接口芯片的通信质量

    RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的

    6小时前
  • 模拟SPI接口I/O的定义及通信设计

    1.端口:P0.4,P0.5,P0.6,P0.72.调用delay_ms函数sbitspi_cs=P0^1;sbitspi_di=P0^2;sbitspi_cl

    昨天
  • 串口数据转换CAN帧格式的方法

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的帧格式是如何的?本文将为大家

    昨天
  • IPMB接口的请求和应答协议

    lRequest/ResponseProtocol(请求/应答协议)IPMB使用“请求——应答”协议,发送一条请求消息给一个智能设备,该设备会返回一个独立的应答

    昨天
  • IPMB接口协议的实现目标和特征

    智能平台管理总线(IPMB)的设计是为了在mission-critical服务器平台支持“ServerPlatformManagement”(服务器平台管理)的

    昨天
  • 飞机加油系统中的PIC单片机应用

    一、引言当前,能源已成为制约很多国家发展的瓶颈,特别是广大发展中国家,能源紧缺现象逐步凸现,世界各国对石油资源的争夺不断加剧,甚至引发局部战争;作为最大的发展中

    昨天
  • 基于ARM7处理器实现USB接口与CAN总线

    为了更好的将USB的通用性和CAN的专业性结合起来,通过计算机的USB接口接入CAN专业网络,实现系统控制的便利性和应用的高效性,本文讲述了一种基于ARM7处理

    昨天
  • 嵌入式开发常用总线与接口

    任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化

    前天
  • 电机控制单电阻采样机制

    电机控制单电阻采样机制是在一个PWM波形内采集两相电流ADC数据,但某些扇区边界条件下只能获得一路电流ADC数据,需要对PWM波形进行变形用于构造电流采样区域。

    01-28
  • 共模电感用于总线的作用

    在CAN节点的设计中,我们通常为了总线的通讯更为可靠,为CAN接口增加各种器件,但实际并非所有应用都需要,过多防护不仅增加成本,而且器件的寄生参数必然影响信号质

    01-20
下载排行榜
更多
广告