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

J1939协议学习

1.协议简介

SAE J1939协议是基于CAN2.0B的应用层协议,采用分层通信结构,主要包括物理层、数据链路层、网络层和应用层,其中CAN提供了基本的物理层和数据链路层,该协议用于卡车、公共汽车和移动液压等重型车辆的电气系统设计。2015年发布的GB/T 27930-《电动汽车非车载传导式充电机与电池管理系统之间的通信协议》,其使用的也正是J1939协议。

1.1 J1939特点

◾ 基于 CAN 的高层协议
◾ 用于重型车辆
◾ 传输速度稳定在 250kbps
◾ 对等和广播通信
◾ 用于网络管理
◾ 包括商用车辆和其它车辆的参数组的定义
◾ 支持制造商特定的参数组

1.2 J1939子标准

◾ J1939 – 串行控制和通信车辆网络的建议实践
◾ J1939/11 – 物理层 – 250kbps,屏蔽双绞线
◾ J1939/13 – 非车载诊断连接器
◾ J1939/21 – 数据链路层
◾ J1939/31 – 网络层
◾ J1939/71 – 车辆应用层
◾ J1939/73 – 应用层– 诊断
◾ J1939/81 – 网络管理

2.J1939的报文格式

SAEJ1939-11 《汽车控制系统局域网络(CAN总线通信协议)第4部分》

协议数据单元(Protocol Data Unit, PDU),J1939报文使用29位标识符,对CAN ID进行了重新划分,加上最多8个字节的数据域,构成了J1939 的协议数据单元。

数据帧和PDU的对应关系如下:

  • P(Priority),优先级字段,用于在仲裁过程中控制报文优先级。

  • EDP(Extended Data Page),为扩展数据页位,在J1939中固定取值为0。

  • P(Data Page),数据页位,可用来扩展参数组的数量。

  • PF(PDU Format),为PDU格式字段,通过不同的取值来确定参数组编号(Parameter Group Number, PGN)是按照PDU1格式还是PDU2格式。

  • PS(PDU Specific),特定协议数据单元字段,当PF的值为0-239时PS表示目标地址(PDU1格式),当PF的值为240-255时PS字段表示组扩展(PDU2格式),且报文只能广播。

  • SA(Source Address),源地址字段,整个网络中SA的值必须是唯一的。

  • Data Field,数据场,对于经典CAN来说是8个字节,而CANFD则最多有64个字节数据。如果需要传输更多的数据,则需要借助J1939多包传输。

  • 其中中间18位共同组成了参数组编号(Parameter Group Number, PGN),在CAN 报文中,我们根据CAN ID来区分不同报文,在J1939中,则根据PGN来区分不同的报文。

3.J1939数据帧

ID组成:

image

PDU格式:

image

3.1.报文类型

当被传输的数据大于8字节(对于CANFD则是大于64字节),需要使用传输协议对参数组进行拆包与重组和连接管理,实现多包传输。

(1) 拆包与重组
当需要传输的数据域无法用一个单独的CAN数据帧完全装载时(数据长度大于8个字节),就需要将数据域拆分。在拆包和重组过程中,使用数据场的第一个字节作为序列号为拆包进行排序,接收方则根据这个序列号对接收到的多个包进行排序重组。

(2) 连接管理
连接管理指的是传输单个较大参数组的双方之间建立虚拟连接过程中涉及的建立连接、使用连接传输数据和关闭连接三个过程。连接管理使用的是PGN 60416,相关的报文是Transport Protocol Connection Management(TP.CM),包含Connection Mode Request to Send(TP.CM_RTS), Connection Mode Clear to Send(TP.CM_CTS), End of Message Acknowledgment(TP.CM_EndOfMsgACK), Connection Abort(TP.Conn_Abort), Data Transfer Message (TP.DT), Broadcast Announce Message(TP.CM_BAM)。

点对点通信的连接管理过程:

  • 建立连接
    当某个发送节点需要传输超过8个字节的数据时,首先发送TP.CM_RTS报文,并且携带了需要传输数据的总长度。接收节点收到TP.CM_RTS之后,可以通过发送TP.CM_CTS报文表示可以发送,发送者收到CTS消息时连接建立成功,其中TP.CM_CTS报文中携带了发送方允许发送报文的数量信息。

  • 数据传输
    当发送节点收到TP.CM_CTS报文后开始通过TP.DT报文发送拆包后的数据,根据TP.CM_CTS报文中的数量信息发送特定数量后需等待下一个TP.CM_CTS报文才能继续发送数据包。

  • 关闭连接
    当接收节点接收最后一个数据包后,向发送接节点发送TP.CM_EndOfMsgACK报文表示数据接收完毕关闭连接。

3.2 通信帧

传输协议----连接管理消息(TP.CM)

image

(1)连接模式----请求发送(TP.CM_RTS)

image

(2)连接模式----准备发送(TP.CM_CTS)

image

(3)消息结束应答(TP.CM_EndofMsgAck)

image

(4)放弃连接(TP.CM_Abort)

image

(5)广播公告消息(TP.CM_BAM)

image

传输协议----数据传送消息(TP.DT)

数据域的首字节定义为数据包的序列编号,每个数据包都会被分配到一个从1到255的序列编号,最长的数据长度是(255包×7字节/包=)1785个字节。

image

http://www.jsqmd.com/news/314445/

相关文章:

  • 【小程序】微信小程序input设置readonly只读属性无效,这是怎么回事呢
  • 解冻
  • 高驰二手运动手表pacePro回收报价,支持全国上门回收
  • 优思学院|假设检验到底在检验什么?
  • 计算机毕业设计springboot博物馆藏品管理系统 基于Java的博物馆文物数字化保管平台 智慧博物馆馆藏资源信息管理系统
  • 计算机毕业设计springboot农产品溯源系统 基于SpringBoot的农产品电商与溯源一体化平台
  • 百泰派克生物科技:分子量分析,圆二色谱分析客户案例
  • Kiro Agent 最佳实践:构建生产级智能运维助手
  • 虚拟发动机控制器及物理模型设计说明书
  • 机械臂深度强化学习在MATLAB中的训练不收敛问题:系统化诊断与解决方案
  • STM32WB55蓝牙广播数据
  • [特殊字符]️_开发效率与运行性能的平衡艺术[20260128151042]
  • [特殊字符]_容器化部署的性能优化实战[20260128151543]
  • 企业微信外部群精准运营:API 主动推送消息开发指南
  • 【计算机毕业设计案例】基于微信小程序的驾校预约系统基于微信小程序的驾校考试预约系统的设计与实现(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于手机端的地区特色农产品团购商城平台陕西地区特色农产品团购平台设计与实现小程序(程序+文档+讲解+定制)
  • 全网最全8个AI论文工具,助本科生轻松搞定毕业论文!
  • 计算机毕业设计springboot小说阅读平台的设计与实现 基于SpringBoot的在线文学阅览系统的设计与实现 SpringBoot框架驱动的数字化网络小说管理平台构建
  • 【鸿蒙 PC 命令行适配】基于 lycium 适配鸿蒙版 Nginx 的解决方案
  • 拆解 Moltbot:一个”本地优先”的 AI 助手,到底是怎么跑起来的?
  • 回不去的十年:当算法填满了所有缝隙,我们究竟失去了什么?
  • 企业微信 API 开发干货:外部群消息主动推送核心逻辑
  • 2026年智慧能源整体解决方案 - 全1026页下载
  • Windows内核栈溢出与“双误“崩溃分析
  • 计算机小程序毕设实战-基于手机端的陕西地区特色农产品团购平台设计与实现小程序特色农产品交易小程序的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 学霸同款2026 AI论文软件TOP10:开题报告神器大测评
  • Vue 核心成员 Anthony Fu 发布了他的 Vue skills
  • 理解文件过滤驱动与网络栈协同工作
  • 系统挂死在DPC的深度诊断:Windows内核分析指南
  • 微软推出算力高达10000TFLOPS的AI加速器Maia200, 主要用于推理, 台积电3nm制程