【01】CAN --- CAN总线介绍

【01】CAN — CAN总线介绍

一、CAN(Controller Area Network)总线概述

Controller Area Network:控制器局域网络

1 定义

CAN总线(Controller Area Network)是一种广泛应用于汽车电子和工业控制领域的串行通信协议,以其高可靠性和实时性著称。

Q:什么是串行通信?

串行数据通信是一种数据传输方式,它在通信过程中将数据一位一位地依次传输,每次只传输一个比特(bit)的数据.
通俗理解:

  • 在发送端,数据首先被转换为串行格式,比如一个8位的并行数据01101011,在转换为串行数据后,会按照一定的顺序(可以是先发送最高位,也可以是先发送最低位,一位一位地发送出去。(参考【字节序和位序】)
  • 在接收端,按照发送端的发送顺序,一位一位地接收

传输介质:

  • 通常为双绞线:它由两根相互绝缘的导线按照一定的规则绞合在一起,能够有效减少电磁干扰。

优点:

  • 硬件成本低:串行通信只需要一条传输线(不考虑地线和电源线等辅助线),可以节省布线成本和接口芯片成本
  • 适合长距离传输:由于串行通信每次只传输一个比特的数据,数据信号在传输线上的干扰相对较小,而且可以通过一些技术(如调制解调)来增强信号的抗干扰能力,从而适合长距离传输。
  • 易于实现同步通信:在串行通信中,通过起始位、停止位和波特率等机制,可以比较容易地实现发送端和接收端的同步。只要双方的波特率一致,并且能够正确识别起始位和停止位,就可以保证数据的正确传输。

缺点:

  • 传输速率相对较低:因为每次只传输一个比特的数据,所以串行通信的传输速率通常低于并行通信。在需要快速传输大量数据的场景下,串行通信可能会受到限制。例如,在计算机内部的高速缓存和CPU之间的数据交换,如果采用串行通信,可能会导致系统性能下降。

2 CAN总线的结构概述

CAN总线有开环总线(不做介绍,有兴趣的自行查阅资料)和闭环总线两种,在我们汽车领域一般使用的是闭环总线,如下图:

在这里插入图片描述

定义与工作原理
定义

  • 闭环CAN总线网络是一种高速、短距离的CAN网络,其总线两端各连接一个120Ω的电阻,两根信号线形成回路。

工作原理

  • 在闭环结构中,CAN总线的两根信号线(CAN_HCAN_L)形成一个闭合回路。发送端通过CAN收发器将逻辑电平转换为差分电平输出到总线上,接收端通过监听总线电平,将总线上的消息读入自己的CAN收发器。

电气特性
终端电阻

  • 总线两端各连接一个120Ω的电阻,用于匹配总线阻抗,减少信号反射,确保信号完整性。

信号电压

  • ISO 11898标准中,隐性电平的电压差接近0V,显性电平的电压差约为2V

抗干扰能力

  • 采用差分信号传输,具有较强的抗干扰能力,能有效抑制外部电磁干扰。

网络拓扑结构
线性总线拓扑

  • 通常采用线性总线拓扑结构,所有节点都连接在这条总线上,信号在总线两端反射,终端电阻的使用可以消除这种反射。

应用场景
汽车电子

  • 在汽车中,闭环CAN总线常用于动力系统、底盘系统等需要高实时性和高可靠性的场景。

工业自动化

  • 在工业自动化领域,闭环CAN总线适用于需要高速数据传输的场合,如机器人控制、自动化生产线等。

与其他结构的比较

与开环结构相比

  • 闭环结构支持更高的通信速率(最高1Mbit/s),但传输距离较短(在1Mbit/s时最长40m);开环结构则适用于低速、远距离的通信场景。

与其它总线相比

  • 相比RS485等其他工业总线,CAN总线具有更高的实时性和可靠性,适用于对实时性要求较高的场合。

3 CAN总线的数据收发机制

通俗理解,ECU给其他ECU发消息,是通过CAN收发器往总线上输出差分电平,其他ECU通过检测总线的电平情况,即可收到消息。
比如在T0时刻ECU要传输比特0,就通过CAN收发器输出0的差分电平,其他ECU检测到总线电平变化,就相当于收到比特0了。

发送数据

  • ECU的CAN控制器将需要发送的数据转换为逻辑电平(0和1),这些电平通过TX线发送到CAN收发器。
  • CAN收发器将这些逻辑电平转换为差分电平,输出到CAN总线上的两根线(CAN_H和CAN_L)。
  • 显性电平:当发送逻辑0时,CAN_H线电压升高到3.5VCAN_L线电压降低到1.5V,两者的电压差为2V,表示显性状态。
  • 隐性电平:当发送逻辑1时,CAN_HCAN_L线的电压都保持在2.5V,电压差为0V,表示隐性状态。

接收数据

  • CAN总线上的信号通过CAN_H和CAN_L线传输到CAN收发器。
  • CAN收发器将差分电平转换为逻辑电平(0和1),并通过RX线发送到ECU的CAN控制器。
  • ECU的CAN控制器将接收到的逻辑电平转换为相应的数据,并进行处理。

差分信号的优势

  • 抗干扰能力强:由于CAN总线使用差分信号传输,两根线的电压变化同步,可以有效抵抗电磁干扰。
  • 高可靠性:差分信号的传输方式使得CAN总线在复杂的电磁环境中仍能保持稳定的数据传输。

4 CAN总线的传输速率

通俗理解,在越短的时间内,ECU的CAN收发器向CAN总线输出的差分电平越多,传输速率越快。所以这对ECU的CAN收发器有更高的要求,需要收发器具有更高的驱动能力,以快速切换电平

位时序

  • CAN总线通过位时序来定义传输速率。一个位由多个时间段组成,包括同步段、传播时间段、相位缓冲段1和相位缓冲段2。这些时间段由最小时间单位TqTime Quantum)组成,Tq是CAN总线的最小时间单位

采样点

  • 采样点是读取总线电平并将其作为位值的时刻。采样点通常设置在位时间的75%处,确保数据的稳定性。

波特率预分频器

  • 通过设置波特率预分频器,可以调整CAN控制器的时钟频率,从而控制传输速率。预分频器的值越小,传输速率越高。

传输速率与总线长度的关系

  • 传输速率与总线长度密切相关。当总线长度较短时,传输速率可以达到1Mbps;而当总线长度较长时,传输速率会降低以适应长距离传输。

Q:为什么CAN总线的传输速率与总线长度有关?

通俗理解,在CAN总线中,ECU_A改变总线电平输出信号后,ECU_B接收到电平变化需要时间,这个时间与总线长度电平信号传输速率有关。

信号传播延迟

  • 位时序与传播延迟的关系:信号在总线上以有限的速度传播,通常为每米5ns,总线越长,信号传播所需的时间就越长。例如,在1Mbps的信号速率下,总线长度为40米时,线缆的单向延迟为200ns。如果总线长度过长,信号的传播延迟可能会超过CAN协议规定的位时序范围,导致接收端无法正确采样到信号,从而影响数据传输的准确性。
  • 对传输速率的影响:传输速率决定了信号的频率位时间。较高的传输速率意味着更短的位时间,这要求信号在更短的时间内完成传播和采样。例如,在1Mbps的速率下,位时间为1000ns,而最迟采样点约为850ns。为了确保信号在总线上的传播延迟不超过位时序允许的范围,长总线需要降低传输速率,以给信号足够的传播时间,避免因延迟过大而导致的数据错误。

信号反射

  • 反射的产生:在长总线中,信号在传输过程中可能会遇到阻抗不匹配的情况,例如总线两端未正确匹配终端电阻。这种情况下,信号会在阻抗不匹配的点发生反射,反射的信号与原始信号相互叠加,可能导致信号失真
  • 对传输速率的影响:反射的信号会干扰原始信号,使得接收端难以准确识别信号的电平状态。为了减少反射的影响,长总线需要降低传输速率,以降低信号的频率,减少反射的幅度和影响。

信号衰减

  • 衰减的原理:信号在总线上传输时,会因为导线的电阻、电容和电感等因素而逐渐衰减。总线越长,信号衰减的程度就越大。
  • 对传输速率的影响:信号衰减会导致信号的幅度减小,可能使接收端无法正确识别信号。为了确保信号的幅度足够大,能够被接收端准确识别,长总线需要降低传输速率,以减少信号的衰减程度。

电磁干扰

  • 干扰的来源:长总线更容易受到外界电磁干扰的影响,例如来自其他电子设备或电源线的干扰。这些干扰会叠加在信号上,导致信号失真
  • 对传输速率的影响:为了降低电磁干扰的影响,长总线需要降低传输速率,以减少信号的频率,使信号更容易抵抗干扰。

双向延迟和采样点

  • CAN协议规定了双向延迟(PROP_SEG),这是为了确保每个节点在采样前有足够的等待时间。总线长度和信号传播速度共同决定了双向延迟,从而影响采样点的设置。

收发器的环路延迟

  • 除了线缆的传播延迟,收发器的环路延迟(包括驱动器和接收机的延迟)也会影响总延迟。每个收发器的环路延迟需要足够低,以支持高传输速率下的长总线长度。

二、CAN总线特点

1 高可靠性设计

抗干扰能力强

  • 采用差分信号传输,通过两根信号线(CAN_HCAN_L)的电压差表示数据,抑制共模噪声,适应汽车引擎舱、工业电机等高电磁干扰环境。
  • 终端电阻匹配:总线两端连接120Ω的终端电阻,减少信号反射,提高信号完整性。

错误检测与处理机制

  • 具备多层错误检测(位错误、填充错误、格式错误、CRC校验、ACK错误)和自动重传机制,确保数据传输的准确性。
  • 错误处理策略:自动重传、错误计数器(TEC/REC)触发节点隔离(被动错误状态或总线关闭)

2 实时性与优先级机制

高实时性

  • 适合对实时性要求较高的应用(如汽车电子和工业自动化),能够快速响应和处理数据,确保关键指令(如刹车、安全气囊)优先传输,延迟可控(微秒级)。

优先级机制

  • 基于消息ID的优先级仲裁,高优先级消息优先传输,确保关键数据及时送达。
  • 优先级驱动的延迟控制,高优先级消息的传输延迟可预测,满足实时需求

非破坏性仲裁

  • 基于消息ID优先级(ID值小则优先级高),显性位(0)覆盖隐性位(1),仲裁失败节点自动退避,无数据冲突.

灵活通信模式

  • 支持事件触发(如故障报警)与周期传输(如传感器数据),满足实时控制需求。

3 系统设计与扩展性

拓扑与扩展

  • 线性总线拓扑,支持星型、树型等变体,布线简单(双绞线)。

多主架构

  • 无中心控制器,节点自主发起通信(如发动机ECUABS模块),避免单点故障。

拓扑结构

  • 灵活性:支持线性总线、星型、树型和混合型等多种拓扑结构。
  • 扩展性:节点可方便地添加或删除,不影响网络正常运行。
  • 节点容量:理论支持110个节点,可通过中继器或网关扩展,成本低。
  • 布线简化:线性总线拓扑,降低线束复杂度和成本。
  • 广泛兼容性:主流微控制器集成CAN控制器,开发门槛低。

4 物理层与通信效率

传输特性

  • 速率与距离平衡:1 Mbps40米)至5 kbps10千米)。
  • 逻辑电平:显性电平(0,CAN_H=3.5V/CAN_L=1.5V),隐性电平(1,CAN_H=CAN_L=2.5V)。

高效通信

  • 广播式传输:所有节点接收数据,仅目标节点处理,减少冗余通信。
  • 数据帧结构灵活:标准帧(11位ID8字节数据)与扩展帧(29位ID),兼容传统和复杂网络。
  • CAN FD:灵活数据速率(最高5Mbps),数据段最大64字节,减少分包传输开销。

数据传输

  • 灵活的数据传输速率:支持1Mbps(短距离)至5kbps(长距离)的速率,适应不同场景需求。
  • 数据帧格式:支持标准帧(11位ID)和扩展帧(29位ID),兼容复杂网络拓扑。
  • 广播式通信:所有节点接收消息,但只有目标节点处理,提高通信效率。

通信效率

  • 低延迟:通信延迟低,适合实时控制系统。
  • 高效数据传输:通过位填充、CRC校验和确认机制确保数据传输的可靠性。

5 差分信号传输

双绞线设计

  • 通过电压差表示逻辑状态,显性电平(差分电压2V)和隐性电平(差分电压0V)确保信号稳定。

传输距离与速率平衡

  • 支持灵活配置(如1Mbps/40米5kbps/10千米)。

6 完善的错误检测与容错机制

多层错误检测

  • 位错误、填充错误、格式错误、CRC校验、ACK错误等。

错误处理策略

  • 自动重传、错误计数器管理(TECREC),避免故障节点干扰总线。

7 应用场景广泛

汽车电子

  • ECU通信(发动机、电池管理)、车载诊断(OBD-II)。

工业控制

  • PLC网络、生产线设备同步、智能传感器网络。

其他领域

  • 电梯控制、医疗设备(MRI)、航空航天。

8 安全与演进方向

CAN FD增强

  • 数据段速率提升(5 Mbps)、数据长度扩展(64字节)、增强CRC21位)。

未来趋势

  • CAN XL(更高带宽)、TSN(时间敏感网络)融合,提升实时性与兼容性。

局限性

  • 传统CAN缺乏加密机制,需依赖应用层协议(如CANsec)。

三、总结

CAN总线以差分信号多主仲裁错误容错核心,兼具实时性可靠性低成本,成为复杂控制系统的通信基石。通过CAN FD及后续演进,持续拓展高速大数据场景的应用边界

### 使用深度学习和神经网络实现垃圾分类的方法 #### 方法概述 为了提高垃圾分类的准确性,可以利用深度卷积神经网络(CNN)。这类方法通常依赖于强大的图像处理能力,通过多层卷积操作自动提取垃圾图片中的特征。具体来说,在构建用于垃圾分类的任务时,可以选择预训练好的模型如VGG16作为基础架构,并在此基础上进行微调以适应特定的数据集[^1]。 #### 数据准备与预处理 数据收集阶段至关重要,需获取大量标注过的垃圾照片样本。每张图片应附带其所属类别的标签信息。之后要对原始图像执行标准化处理,比如调整大小至统一尺寸、灰度转换或色彩空间变换等。此外,还需要划分训练集、验证集及测试集以便后续评估模型性能。 #### 模型搭建 选用适合的框架如TensorFlow配合Keras库简化开发流程。对于初学者而言,可以直接加载已有的经典结构像GoogLeNet, ResNet 或 DenseNet 来快速上手实验[^2]: ```python from tensorflow.keras.applications import VGG16 base_model = VGG16(weights='imagenet', include_top=False) for layer in base_model.layers[:]: layer.trainable = False x = base_model.output ... model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) ``` 上述代码片段展示了如何冻结部分原有参数从而减少计算量的同时保持较高精度;接着定义新的全连接层完成最后几项分类工作,并编译整个网络配置好损失函数与评价指标。 #### 训练过程 设定合适的超参如批量大小(batch size),迭代次数(epochs)等启动训练循环。期间可借助早停法(Early Stopping)防止过拟合现象发生。同时保存最佳权重文件供将来部署使用。 #### 部署上线 一旦离线环境下的表现令人满意,则考虑将其迁移到线上服务平台。例如文中提到的一个实例就是基于Web端口设计而成——允许访客提交待测对象的照片并通过API接口返回分析结论给前端页面显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值