从OSI七层网络模型角度了解CAN通信协议

news2025/3/28 12:24:42

前言:先占个位置,文章内容皆来自网络,我只是搬运工,等后面理解深刻了再进行修文。

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.coloradmin.cn/o/2319025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能助力家庭机器人:从清洁到陪伴的智能转型

引言:家庭机器人进入智能时代 过去,家庭机器人只是简单的“工具”,主要用于扫地、拖地、擦窗等单一任务。然而,随着人工智能(AI)技术的迅猛发展,家庭机器人正经历从“机械助手”向“智能管家”甚…

【第14节】windows sdk编程:进程与线程介绍

目录 一、进程与线程概述 1.1 进程查看 1.2 何为进程 1.3 进程的创建 1.4 进程创建实例 1.5 线程查看 1.6 何为线程 1.7 线程的创建 1.8 线程函数 1.9 线程实例 二、内核对象 2.1 何为内核对象 2.2 内核对象的公共特点 2.3 内核对象句柄 2.4 内核对象的跨进程访…

STM32U575RIT6单片机(四)

作业: 使用I2C获取SHT20传感器温湿度 使用I2C获取AP3216C三合一传感器: 光照, 接近, 红外 三个功能 合并的传感器 #ifndef SHT20_H #define SHT20_H#include "stdint.h" #include "i2c.h" #include "stdio.h" //1、确定从机的设备地址(代码不…

EMQX安装与配置

EMQX安装与配置 EMQX安装与配置 https://www.emqx.com/zh/downloads-and-install/broker?osUbuntucd /usr/local/srcwget https://www.emqx.com/zh/downloads/broker/4.4.19/emqx-4.4.19-otp24.3.4.2-1-ubuntu16.04-amd64.deb sudo apt install ./emqx-4.4.19-otp24.3.4.2-1…

JVM逃逸分析作用和原理

JVM逃逸分析作用和原理 在JVM的性能优化中,我们通常会关注内存分配、垃圾回收等问题。而逃逸分析(Escape Analysis)是JVM中一种精妙的优化技术,它可以在对象分配时判断该对象是否会在方法或线程之外被访问,从而影响其…

拓展 Coco AI 功能 - 智能检索 Hexo 博客

在之前的文章中,我们成功让 Coco AI 检索 Hugo 博客,这对于博客作者来说是一大福音。然而,从 Hexo 迁移到 Hugo 的成本不容小觑,毕竟大多数开发者对 Node.js 更熟悉,而 Golang 相对陌生。那么,既然 Coco AI…

爬虫基础之爬取猫眼Top100 可视化

网站: TOP100榜 - 猫眼电影 - 一网打尽好电影 本次案例所需用到的模块 requests (发送HTTP请求) pandas(数据处理和分析 保存数据) parsel(解析HTML数据) pyecharts(数据可视化图表) pymysql(连接和操作MySQL数据库) lxml(数据解析模块) 确定爬取的内容: 电影名称 电影主演…

LS-NET-006-思科MDS 9148S 查看内存

LS-NET-006-思科MDS 9148S 查看内存 方法一:使用 show version​ 命令 该命令可显示设备的基本系统信息,包括内存总量。 登录交换机的CLI(通过控制台或SSH连接)。输入命令: show version 在输出中查找类似以下内容…

小程序API —— 54 路由与通信 - 编程式导航

在小程序中实现页面的跳转,有两种方式: 声明式导航:navigator 组件编程式导航:使用小程序提供的 API 编程式导航 API 提供了五个常用的 API 方法: wx.navigateTo():保留当前页面,跳转到应用内…

关于金融开发领域的一些专业知识总结

目录 1. 交易生命周期 1.1 证券交易所 1.1.1 交易前 1) 订单生成(Order Generation) 2) 订单管理(Order Management) 1.1.2 交易执行 3) 交易匹配(Trade Matching) 1.1.3 交易后 4) 交易确认&…

DeepSeek-R1深度解读

deepseek提出了一种通过强化学习(RL)激励大语言模型(LLMs)推理能力的方法,个人认为最让人兴奋的点是:通过RL发现了一个叫“Aha Moment”的现象,这个时刻发生在模型的中间版本中。在这个阶段&…

15-双链表-双链表基本操作

题目 来源 827. 双链表 - AcWing题库 思路 此题我只想说,千万千万别漏了头结点和尾结点,不然根本查不出来是哪里出了问题,因为传入的k会有问题;最左边插入,相当于是在头结点的右边插入(也就是0号节点的右…

【小也的Java之旅系列】01 分布式、集群、微服务的区别

前言 做Java开发多年,一直以来都有想把Java做成一个系列的想法,最近整理自己的笔记发现有很多值得写的内容,但这些内容又往往杂乱不堪。CSDN上有很多高质量的Java博客,但大多不是从一个人成长的角度去写的。而我们——一个技术人…

基于视觉的核桃分级与套膜装置研究(大纲)

基于视觉的核桃分级与套膜装置研究:从设计到实现的完整指南 (SolidWorks、OpenCV、STM32开发实践) 🌟 项目背景与目标 1.1 为什么选择视觉分级与套膜? 产业痛点: 中国核桃年产量全球第一,但…

JimuReport与deepseek结合,颠覆现有BI模式

在数字化转型的浪潮中,企业对数据的依赖程度越来越高,如何高效地分析和利用数据成为关键。JimuReport凭借其强大的报表设计能力和灵活的数据处理功能,已经成为众多企业的首选工具。如今,它即将与DeepSeek深度结合,为企…

11、STL中的set使用方法

一、了解 set 是 C 标准模板库(STL)中提供的有序关联容器之一。基于红黑树(Red-Black Tree)实现,用于存储一组唯一的元素,并按照元素的值进行排序。 set的特性 唯一性 键是唯一的。无重复。 有序性 按升序…

操作系统——(管程、线程、进程通信)

目录 一、管程机制 (1)管程定义 (2)特点: 二、进程通信 (1)概念 (2)高级通信机制 三、线程 (1)概念 (2)与进程比较…

Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍

https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/named-pipes-properties?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/client-protocols-named-pipes-properties-protocol-tab?viewsql-server-ver16 默认…

Web开发-JS应用原生代码前端数据加密CryptoJS库jsencrypt库代码混淆

知识点: 1、安全开发-原生JS-数据加密&代码混淆 2、安全开发-原生JS-数据解密安全案例 一、演示案例-WEB开发-原生JS&第三方库-数据加密 前端技术JS实现: 1、非加密数据大致流程: 客户端发送->明文数据传输-服务端接受数据->…

比特币牛市还在不在

在加密货币的风云世界里,比特币的一举一动始终牵动着投资者们的神经。近期比特币的涨幅动作,再次引发了市场对于牛市是否仍在延续的激烈讨论。 在深入探索比特币市场的过程中,获取全面且及时的资讯至关重要。您可以通过访问Techub News&#…