差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
whatiscan [2023/06/28 18:29]
gongyu
whatiscan [2023/06/28 18:38] (当前版本)
gongyu
行 5: 行 5:
 CAN总线最早是由Bosch发明,后成了标准ISO11898-1,它定义了开放系统互联模型(OSI)中的数据链路和物理层,为高速车内通信提供了一种底层的网络方案。值得一提的是,CAN被设计为减少电缆的连线,因此车内不同的电气控制单元(ECUs)可以通过只有一对电缆进行通信。 CAN总线最早是由Bosch发明,后成了标准ISO11898-1,它定义了开放系统互联模型(OSI)中的数据链路和物理层,为高速车内通信提供了一种底层的网络方案。值得一提的是,CAN被设计为减少电缆的连线,因此车内不同的电气控制单元(ECUs)可以通过只有一对电缆进行通信。
 {{ ::​can-subnetwork.png |}} {{ ::​can-subnetwork.png |}}
 +
 车载诊断 (OBD) 是车辆的诊断和报告系统,帮助技术人员通过诊断故障代码 (DTC) 排除问题。 当“检查发动机”灯亮起时,技术人员通常会使用手持设备读取车辆的发动机代码。 在最低层,该数据通过信令协议传输,大多数情况下是使用CAN总线。 车载诊断 (OBD) 是车辆的诊断和报告系统,帮助技术人员通过诊断故障代码 (DTC) 排除问题。 当“检查发动机”灯亮起时,技术人员通常会使用手持设备读取车辆的发动机代码。 在最低层,该数据通过信令协议传输,大多数情况下是使用CAN总线。
  
 DeviceNet是工业应用中使用的高级网络协议。 它大大减少了控制系统和I/​O设备之间所需的接线。 设备可以通过四线连接器连接在一起并连接到 PLC 上的网络扫描仪,而不是将每个设备连接到 PLC I/O 模块上的单独输入/​输出。 在最低层,我们发现CAN在DeviceNet协议中发挥着其魔力。 图 2 显示了PLC扫描通过DeviceNet进行通信的工业设备网络。 DeviceNet是工业应用中使用的高级网络协议。 它大大减少了控制系统和I/​O设备之间所需的接线。 设备可以通过四线连接器连接在一起并连接到 PLC 上的网络扫描仪,而不是将每个设备连接到 PLC I/O 模块上的单独输入/​输出。 在最低层,我们发现CAN在DeviceNet协议中发挥着其魔力。 图 2 显示了PLC扫描通过DeviceNet进行通信的工业设备网络。
 {{ ::​can11.png?​800 |}} {{ ::​can11.png?​800 |}}
 +{{ :​f31de3f79dde8fa51181c78b18d77c04.jpg |}}
 CAN总线采用双绞线提供抗共模干扰能力强的差分信号传输,线的两端分别接有120欧的电阻,每个模块都有两个脚分别连在这两根线上,对于每个模块的内部,都包含一个CAN收发器。 CAN总线采用双绞线提供抗共模干扰能力强的差分信号传输,线的两端分别接有120欧的电阻,每个模块都有两个脚分别连在这两根线上,对于每个模块的内部,都包含一个CAN收发器。
 CAN总线一般分为低速和高速,低速CAN传输速率<​125kbps,​ 高速CAN传输速率<​1Mbps,目前还有一种CAN FD可以视为CAN的升级版,传输速率<​5Mbps。 CAN总线一般分为低速和高速,低速CAN传输速率<​125kbps,​ 高速CAN传输速率<​1Mbps,目前还有一种CAN FD可以视为CAN的升级版,传输速率<​5Mbps。
 {{ ::​can10.png?​800 |}} {{ ::​can10.png?​800 |}}
 +{{ ::​can13.png?​800 |}}
  
 ### 2. CAN消息帧 ### 2. CAN消息帧
 那么CAN消息实际上是什么样子的呢? 最初的ISO标准制定了所谓的标准CAN。 标准CAN对不同的报文使用11位标识符,总共有211个,即2048个不同的报文ID。 CAN后来做了修改,标识符扩展为29位,得到229个标识符。 这称为扩展 CAN。 CAN使用多主总线,所有消息都在整个网络上广播。 标识符提供仲裁的消息优先级。 那么CAN消息实际上是什么样子的呢? 最初的ISO标准制定了所谓的标准CAN。 标准CAN对不同的报文使用11位标识符,总共有211个,即2048个不同的报文ID。 CAN后来做了修改,标识符扩展为29位,得到229个标识符。 这称为扩展 CAN。 CAN使用多主总线,所有消息都在整个网络上广播。 标识符提供仲裁的消息优先级。
 +{{ :​can_packetstructureframes_1.png |}}
  
 CAN使用具有两种逻辑状态的差分信号,称为隐性和主导。 隐性状态表示差分电压小于最小阈值电压。 主导状态指示差分电压大于此最小阈值。 有趣的是,主导状态是通过将逻辑“0”驱动到总线上来实现的,而隐性状态是通过逻辑“1”来实现的。 这与大多数系统中使用的传统高和低相反。 重要的是,在仲裁过程中,主导状态优先于隐性状态。 CAN使用具有两种逻辑状态的差分信号,称为隐性和主导。 隐性状态表示差分电压小于最小阈值电压。 主导状态指示差分电压大于此最小阈值。 有趣的是,主导状态是通过将逻辑“0”驱动到总线上来实现的,而隐性状态是通过逻辑“1”来实现的。 这与大多数系统中使用的传统高和低相反。 重要的是,在仲裁过程中,主导状态优先于隐性状态。
行 60: 行 62:
  
 发送的下一位是“0”。 CANH 得到其补码,CANL 再次得到 CANH 的补码。 请注意,这次 CANH 和 CANL 电压并不接近。 因此,差分电压(VDIFF)较大。 这是 CAN 主导状态。 我们说逻辑是颠倒的,因为“1”使总线处于低电平,而“0”则使总线处于高电平。 输入接收器以类似的方式工作。 发送的下一位是“0”。 CANH 得到其补码,CANL 再次得到 CANH 的补码。 请注意,这次 CANH 和 CANL 电压并不接近。 因此,差分电压(VDIFF)较大。 这是 CAN 主导状态。 我们说逻辑是颠倒的,因为“1”使总线处于低电平,而“0”则使总线处于高电平。 输入接收器以类似的方式工作。
-{{ ::can6.png?800 |}}+{{ ::can6.png?500 |}}
  
 #### 优先级仲裁 #### 优先级仲裁
行 97: 行 99:
 {{ ::​can8.png?​800 |}} {{ ::​can8.png?​800 |}}
 {{ ::​can9.png?​800 |}} {{ ::​can9.png?​800 |}}
-{{ ::​can10.png?​800 |}} 
-{{ ::​can11.png?​800 |}} 
 {{ ::​can12.png?​800 |}} {{ ::​can12.png?​800 |}}
-{{ ::​can13.png?​800 |}} 
 {{ ::​can14.png?​800 |}} {{ ::​can14.png?​800 |}}
 +
 +