can总线id如何定义设置?

can总线的id是指标识符。也就是一个can节点的地址或者说名字。网络中识别某一节点的信息。can总线的节点id,分成标准帧和扩展帧两种。标准帧的id是11位,扩展帧的id是29位。
can总线id定义设置: 主要用作can总线的仲裁使用,所以一般来说网络上的每个节点(向总线上发送)的id应该有所不同。id值越低,报文优先级越高,在两组不同id报文同时上线时候,仲裁机制使得id值低的占用总线,id值高的退出。
id域可以是11位和29位,其值和含义可以由用户自定义,可以用作高层协议的管理,比如canopen等协议中把id的部分做为“源地址”,部分作为“目的地址”,这样can报文从哪来到哪去都清晰了。
id的另一个作用是配合接收方滤波使用,就是说一般接收的滤波器可以设定接收id的范围等,用于过滤掉不需要接收的信息,减轻cpu的处理负担。
can总线中节点id相同会怎样? 实验一: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段相同的情况出现。

LeetCode初级算法-其他02:有效的括号
闪光灯闪光指数
提高功率密度的利弊权衡及所需技术
AI续写贝多芬未完成作品,风格很贴近贝多芬
Level-Ease20000智能射频导纳料位仪原理及参数分
can总线id如何定义设置?
如何测试iPhone的信号强度,如何加强手机信号强度
一加发布Ace系列:聚焦性能赛道,线下体验点加速覆盖
PLC200转以太网模块在多个PLC中进行数据交换
基于阿里云倚天实例的Redis性能测试验证
海尔智家获北向资金积极买入!5日合计净流入8.78亿
Visa正在通过新推出的B2B Connect产品来使交易变得更快捷更透明
高通携手三星率先采用中国北斗卫星网络
PACEWEARS9评测 一款没有什么致命短板的运动手环
光纤激光切割机的优势及特点是什么
关于CXL的功能与特性详解
NB-IoT低成本之迷
三星S8国行版什么时候上市?最新消息:伤了的何止华为P10,三星S8步后尘
功率分析仪测量时不准确怎么解决
SPI接口如何帮助减少系统板设计中的数字GPIO数量