从OSI七层网络模型角度了解CAN通信协议
前言:先占个位置,文章内容皆来自网络,我只是搬运工,等后面理解深刻了再进行修文。
CAN通信协议的网络架构基于OSI七层模型进行设计,但实际实现中根据其应用场景(如汽车电子、工业控制等)进行了简化和优化。以下是结合OSI模型从应用层向下的分层解析,及其在CAN协议中的具体实现和应用:
一、应用层(Application Layer)
功能:定义具体的应用协议,如设备控制指令、诊断服务、数据交互格式等。
CAN实现:
- 自定义应用协议:如工业自动化中的设备控制指令格式。
- 标准化协议:
- CANopen:实现设备参数配置、实时控制、同步通信等,支持对象字典(Object Dictionary)机制1569。
- UDS(ISO 14229):用于车辆诊断,定义诊断请求与响应格式(如故障码读取、ECU编程)6769。
- 数据格式:通过PDU(Protocol Data Unit)封装数据,例如通过信号打包/解包处理4951。
二、表示层(Presentation Layer)
功能:数据格式转换、加密/解密、压缩/解压。
CAN实现:
- CAN协议本身不直接定义表示层功能,但通过上层协议实现:
- CANopen:使用对象字典统一数据格式,支持数据类型(如整数、浮点数)的标准化表示69。
- 诊断协议:如UDS中的ASN.1编码规则对诊断数据进行结构化封装67。
三、会话层(Session Layer)
功能:管理通信会话(建立、维护、终止),同步节点间交互。
CAN实现:
- CAN总线无原生会话层,但通过应用层协议扩展:
- CANopen:通过NMT(网络管理协议)控制节点状态(启动/停止),实现会话管理69。
- 诊断服务:UDS中的会话控制服务(如切换诊断模式)管理通信状态67。
四、传输层(Transport Layer)
功能:端到端的数据可靠传输,处理大数据分片与重组。
CAN实现:
- ISO 15765-2(CAN TP):
- 分片与重组:将超过8字节的数据分割为多帧传输(如诊断长报文)2767。
- 流控制:通过流控帧(Flow Control Frame)协调发送与接收速率67。
- 经典CAN:单帧最大8字节,不涉及传输层分片915。
五、网络层(Network Layer)
功能:数据路由、地址管理与逻辑寻址。
CAN实现:
- 广播通信:默认所有节点接收报文,通过标识符(ID)过滤目标数据1527。
- 报文滤波:硬件或软件配置接收过滤器,仅处理特定ID范围的帧15。
- 网关功能:通过PDU路由器(如AUTOSAR PduR模块)跨总线转发数据4951。
六、数据链路层(Data Link Layer)
功能:帧格式定义、错误检测、仲裁机制、流量控制。
CAN实现(ISO 11898-1):
- 帧结构:
- 标准帧(11位ID)与扩展帧(29位ID),支持优先级仲裁915。
- 帧类型:数据帧、远程帧、错误帧、过载帧1527。
- 仲裁机制:非破坏性位仲裁(显性位覆盖隐性位)927。
- 错误处理:CRC校验、位填充、错误帧重传1564。
- 逻辑链路控制(LLC):报文过滤与错误恢复1567。
七、物理层(Physical Layer)
功能:电气特性、信号编码、总线拓扑。
CAN实现(ISO 11898-2/3):
- 电气标准:
- 高速CAN(ISO 11898-2):1 Mbps,差分信号(显性0: CAN_H=3.5V, CAN_L=1.5V;隐性1: 均2.5V)6469。
- 低速容错CAN(ISO 11898-3):125 kbps,支持单线故障容错6469。
- 拓扑结构:
- 闭环总线:终端电阻120Ω,最大长度40m64。
- 开环总线:独立双线,最长1km64。
- 同步机制:位定时与采样点配置(SS/PTS/PBS1/PBS2段)6467。
总结:CAN协议与OSI模型的对应关系
OSI层 | CAN实现 | 核心标准/协议 |
---|---|---|
应用层 | CANopen、UDS、J1939等 | ISO 14229, CiA 301 |
表示层 | 由应用层协议(如对象字典)实现 | CANopen Object Dictionary |
会话层 | 网络管理协议(NMT)、诊断会话控制 | CiA 302, ISO 15765 |
传输层 | ISO 15765-2(CAN TP) | ISO 15765-2 |
网络层 | 标识符过滤、PDU路由(如AUTOSAR PduR) | ISO 11898-1 |
数据链路层 | 帧格式、仲裁、错误检测(ISO 11898-1) | ISO 11898-1 |
物理层 | 差分信号、位定时(ISO 11898-2/3) | ISO 11898-2/3 |
扩展说明
- 协议灵活性:CAN仅强制要求物理层和数据链路层,上层协议可根据场景选择(如汽车用UDS,工业用CANopen)1569。
- 实时性优化:短帧设计(经典CAN 8字节)和优先级仲裁机制保障实时性927。
- 未来演进:CAN FD支持64字节数据段和可变速率,CAN XL目标2048字节,扩展应用场景69。
通过分层架构,CAN实现了从底层电气特性到高层应用协议的完整生态,成为工业与汽车领域的主流通信方案。