当前位置: 首页 > article >正文

从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

扩展说明

  1. 协议灵活性:CAN仅强制要求物理层和数据链路层,上层协议可根据场景选择(如汽车用UDS,工业用CANopen)1569。
  2. 实时性优化:短帧设计(经典CAN 8字节)和优先级仲裁机制保障实时性927。
  3. 未来演进:CAN FD支持64字节数据段和可变速率,CAN XL目标2048字节,扩展应用场景69。

通过分层架构,CAN实现了从底层电气特性到高层应用协议的完整生态,成为工业与汽车领域的主流通信方案。


http://www.kler.cn/a/595803.html

相关文章:

  • Android HAL服务注册与获取服务
  • php 批量把数组中的日期时间转为时间戳
  • OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap
  • 算法2--两数相加
  • 系统思考—啤酒游戏经营决策沙盘模拟
  • selenium在实际的项目测试过程中的运用
  • Linux信号:一场内核与用户空间的暗战
  • PyCharm 使用指南:从安装到高效开发
  • EtherCAT转profinet网关集成汽车变速箱制造生产线自动化升级
  • HTTP代理IP技术详解及在Web开发中的应用
  • Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式
  • 【区块链】跨链技术详解
  • Docker 最佳实践(MySQL)
  • Boost C++ `split()` 全面解析:高效字符串拆分与优化实践
  • 关于 51 单片机显示多个数码管时出现残影
  • 正则表达式的基本概念及示例
  • PTA团体程序设计天梯赛-练习集51-55题
  • Docker从小白到入门:知识点速通与面试指南
  • SBOM风险预警 | 恶意NPM组件开展木马投毒攻击,目标针对国内泛互企业
  • 一般c++项目的目录结构