J1939基础通信
一、AUTOSAR基础
1. J1939协议介绍
- 协议定位:基于CAN总线的网络协议,用于解决传统CAN通信多字节数据传输的局限性。
- 应用场景:适用于传输超8字节数据的场景(如汽车17字节VIN码传输)。
(1)数据传输问题
- 传统方案缺陷:分次发送易数据重组失败、消耗CAN ID资源、私定协议难统一推广。
- 解决方案:引入网络传输层,使应用层无需感知数据重组/发送细节。
(2)J1939协议特征
- 基本属性:由SAE下属委员会制定,用于中重型道路车辆电子部件通信。
- 技术特性:
- 物理层:250Kb/s比特率,采用CAN 2.0扩展ID(29位)。
- 通信方式:支持带地址的广播(BAM)与点对点(CMDT)通信。
- ID结构:含优先级、PGN(参数组编号)、SPN(特定参数编号)和地址信息。
- 协议栈:覆盖物理层、数据链路层、应用层、网络传输层,具备故障诊断和网络管理功能。
- 数据支持:支持多字节变量与多包报文收发。
2. CANoe仿真演示
(1)BAM广播传输
- 传输机制:首帧“网络控制帧”通知节点,再连续发3个TPDT数据帧完成传输。
- 特点:一对多发送,4帧传21字节,接收节点无需确认。
(2)CMDT点对点传输
- 传输流程:发送方通知接收方→接收方确认容量→发送方发首包→接收方请求下包→循环传输→接收方确认完成。
- 特点:点对点通信,8帧传21字节,每包需接收方确认,可靠性高但效率低。
3. J1939协议概念
- 网络地址:每个节点需分配唯一网络地址标识。
- 帧类型:控制帧(网络管理/控制)、数据帧(实际数据传输)。
- 多包机制:支持大数据分片发送,接收端需重组。
- 传输方式:BAM(广播)、CMDT(点对点定向)。
- 关键参数:优先级(报文传输顺序)、PGN(参数组编号)、SPN(信号参数编号)、TP CM(传输协议连接管理)、TP DT(传输协议数据帧)。
4. 传输层配置
(1)AUTOSAR标准下的J1939协议概述
- 协议定位:CAN总线应用层+传输层协议。
- 学习建议:先读J1939标准文档,再结合示例理解。
- 实现方式:AUTOSAR多模块协同实现。
(2)J1939 TP模块的位置与功能
- OSI层级:传输层,介于应用层与数据链路层之间。
- 模块位置:上层为COM模块,下层为CAN IF模块。
- 核心功能:处理需TP层重组的所有报文。
(3)J1939 TP与普通CAN发送的比较
- 普通CAN路径:
COM → PDU R → CAN IF → CAN
。 - J1939路径:
COM → PDU R → J1939TP → CAN IF → CAN
。 - 区别:J1939在PDU R与CAN IF间增加TP处理模块。
(4)N PDU与SDU的概念
- SDU(Service Data Unit):PDU容器内、需TP层处理的实际数据载荷。
- N PDU(Network PDU):组织管理网络传输、承载网络数据的新增网络传输层协议数据单元。
(5)OSI模型下应用层与J1939 TP模块的协调
- 职责划分:应用层不关心信号重组,TP模块全权负责。
- 协作方式:通过N PDU协同。
(6)J1939 TP模块与CAN IF模块及数据链路层的关系
- 数据流程:TP模块传N PDU给CAN IF→CAN IF在数据链路层处理→配置CAN ID等参数→经CAN控制器发往总线。
- 与普通CAN区别:数据来自TP模块(非COM模块)。
(7)J1939 TP模块的构成
- 由J1939TP(本章重点)、NMR(网络管理)、DCM(诊断通信)等模块共同构成完整协议实现。
5. 实际应用场景
- 主要领域:卡车控制器、BMS(电池管理系统)开发。
- 工具建议:用ISO AB工具配置时,建议25寸以上显示器(AutoSar配置树长,125%放大倍率体验佳)。
6. 系统信息描述
(1)J1939网络描述
- 工程结构:AutoSar工程中,System Editor的
network
目录有专门描述J1939网络的文件夹。 - 网络组成:含VCU(整车控制器)和VCU controller,描述VCU用J1939收发的报文。
(2)报文处理方式
- 报文示例:PGN100、PGN300报文均为80字节。
- 传输方式:
- 超8字节:需J1939TP模块,用BAM/CMDT方式。
- ≤8字节:仅需COM到CANIF定义CAN帧。
- 教学目的:选超8字节报文案例,覆盖完整J1939配置流程。
- 配套资料:提供AR XML、DBC文件供学习。
7. ARXML文件迁移
(1)建立网络描述的步骤
- 文件定位:SRG工程中找到GL3网络描述,双击打开对应ARXML文件。
- 目标文件:VCU Start工程中选
dbc system description
下的ARXML存储AUTOSAR元素。 - 分窗验证:分窗显示时悬停窗口确认工程归属。
(2)移植outs package和ecu下的网络描述
- 整体移植:将右侧
outs package
整体移植到左侧工程。 - 关键组件:需同时移植ECU下的
network controller
和网络描述。 - 文件管理:移植后及时关闭右侧DBC文件ARXML。
(3)移植后元素的命名更改
- 命名适配:检查移植后元素命名与当前工程适配性,修改不匹配名称。
- 验证方式:System Editor查看visual star工程,确认GL39网络移植成功。
- 控制器检查:展开
controller
检查移植后的网络控制器。
(4)移植后多出的控制器及系统信息描述复用
- 新增控制器:移植后会多出J1939网络专用控制器。
- 替代方案:DBC导入、工具独立创建J1939网络、复制旧工程ARXML系统描述到新工程。
(5)BSW层配置前的建议
- 关键检查:Signal Frame配置、ECU下VCU的
connector
和controller
定义。 - 命名规范:J1939系统信息描述名称需按工程需求明确定义。
- 配置前提:系统信息描述清晰,BSW层才能准确检索AUTOSAR元素。
- 错误预防:命名不规范易导致控制器/信号选择错误。
8. BSW层配置
(1)配置准备
- 系统信息检查:配置前查看signal、pdu frame及VCU下
connector
/controller
。 - 命名规范:修改控制器/
connector
名称,避免BSW层配置时找不到元素。
(2)ECUC模块配置
- 模块添加:ECU Navigator→BSW Models→Com Stack中创建J1939TP模块。
- 配置差异:比CAN通信多J1939TP模块。
(3)PDU描述建立
- 文件管理:为J1939通信单独建AR XML文件,用分裂视窗显示。
- 工程结构:ECUC模块由3个AR XML文件共同描述。
(4)SDU与NPDU区分
- SDU特点:连接J1939TP与COM、经PDUR传输、支持超8字节(如示例中PG100 - 400为80字节)。
- NPDU特点:协调J1939TP与CAN IF、单帧控制、PDU长度固定8字节。
- 命名规范:SDU前缀注
sdu
,NPDU注明方向/类型(如点对点CMD T帧)。
(5)COM模块配置
- 配置要点:与CAN配置类似,信号映射对象从IPDU变为SDU,暂未涉及网络传输层。
(6)信号映射示例
- 命名规则:加J1939前缀和PGN编号区分。
- 引用建立:
reference
中选系统描述的对应signal。 - 验证方式:正确引用后
invalid
符号消失。
二、IPDU信号承载
- 信号承载:需用IPDU承载信号,是传输基础框架。
- 配置关联:IPDU配置与CAN配置高度一致。
1. PG100配置
- 文件位置:配置信息在
PG100.TX
文件中。 - 配置一致性:与CAN配置基本一致。
(1)SDU引用
- 关键区别:
CompDU ID Reference
需引用ECUC中建立的SDU。 - 参考文件:引用CAN部分
JL39.A_RX_MAIL
文件描述的SDU。 - 注意事项:这是与CAN配置的唯一区别,需特别区分。
(2)信号映射
- 映射方法:
PG100.TX
中的帧信号已映射到IPDU。 - 接收配置:与CAN配置完全类似,可参照经验设置。
三、PDUR路由配置
1. 路由表建立
- 核心操作:PDUR模块中直接进入路由表建立路径,按模块层级配置。
(1)J115TP模块检查
- 验证步骤:确认PDUR BS W Models中已加入J115TP模块。
- 常见问题:新建GSL TP模块时“找不到模块”,需重新选模块。
- 解决方法:消除
in bed I
符号后重建连接。
(2)ARXML文件导入
- 文件类型:导入基于
E_CUC_CAN_JL3
架构的A RX Mail文件。 - 冲突处理:新建GSL TP模块与已有PDUR描述冲突时,重建映射关系。
- 引用规范:正确引用E_CUC中的SDU(非IPDU)。
2. 路由规则配置
- 关键配置:源PDU引E_CUC中的SDU,目标PDU映射到J SMTP模块的SDU,重点关注PGN100的SDU引用。
- 配置差异:转换的是SDU(非CAN通信的IPDU)。
四、JL35TP模块配置
1. 通用功能配置
- 配置原则:所有设置需正确引用E_CUC元素。
(1)功能开放设置
- 配置影响:影响后续Configuration配置、
config.h
宏定义、生成C代码实现。 - 版本控制:建议开放版本号API便于追踪。
(2)主函数周期设置
- 周期参数:
Main Function
周期设1毫秒,Timeout
周期传100毫秒参数。 - 注意事项:需按实际需求调整,不同设置会改变代码结构。
五、JL39TP配置重点
1. 收发通道配置
(1)DAM发送方式
- 发送方式选择:新建通道时明确用DAM(广播)或CMDT(点对点)。
- 关键参数:最大包数建议255,选BAM(广播)协议,BAM方式下直接配
TBCMNPDU
(无需接收TPCM)。 - 注意事项:与General配置保持一致,动态block功能示例中不用,参数参考标准文档。
- BAM特性:发1条TPCM后连续发3帧TPDT;NPDU选工具自动生成ID(如
NPDUT叉
);SDU连接PDUR与J235TP。
(2)CMDT发送方式
① TPRXFCNPDU配置
- 配置要点:选CMDT协议,配置接收节点反馈的网络连接管理帧,工具配置可能需多次尝试确认。
- 网络管理帧选择:正确选发送的网络管理帧。
② PGN消息配置
- 配置要点:声明非动态长度,设PGN值(如PGN300),用
network SDU
(不直接用NPDU),为消息配对应SDU。
六、J1939协议配置
1. PG300消息配置
- PDU配置补充:需手动补全PG300对应的PDU、I-Signal、PDUR配置(演示未展示但必做)。
- COM配置导入:COM和PDUR配置从已有工程导入,已预先建立。
2. 接收通道配置
(1)BAM接收配置
- 协议差异:接收与发送通道配置不同,需分别配接收/发送地址。
- 数值格式:首次配填十进制(如87),无效则试十六进制,工具不区分数值格式需自行确认。
(2)NPDU配置
- 广播特性:配置接收发送PDU的网络连接帧。
- 方向验证:注意J235TP到PDUR的引用方向,错误会导致功能异常。
(3)DT帧配置
- 工具问题:配置时工具可能异常跳转,需重配至成功。
- 数值确认:确认用十六进制还是十进制。
3. SDU引用配置
- 引用路径:必须从J235TP到PDUR引用。
- 方向验证:注意引用方向,错误会导致功能异常。
4. CMDT通道配置
(1)网络管理帧发送
- 主动特性:CMDT需主动发网络管理帧,注意十六进制字节配置。
(2)NPDU配置
- 双重功能:接收的CMDT通道需给另一个GSL TB模块发网络管理,用到T叉的CM DT模块。
(3)工具跳转处理
- 配置验证:每次配置后确认是否正确装载,工具可能配置失败需反复检查。
5. SDU配置
- 接收PG配置:配置接收的RX PG(如零叉四零零)。
- 模块连接:RS PG和T SPG中引用SDU与COM模块连接。
6. 配置完成总结
(1)NPDU处理要点
- 网络管理PDU:需注意N PDU处理方式。
- ECUC引用:必须在ECUC模块中引用带N PDU属性的PDU。
(2)ECUC模块引用
- SDU选择:选ECUC模块中的SDU引用。
- 通道差异:BAM、CMDT接收通道需区分N PDU和SDU处理方式。
七、AUTOSAR框架配置
1. OSI模型应用
(1)CANIF模块配置
- 配置对象差异:J1935通信需配NPDU(非普通IPDU),是与常规CAN配置的主要区别。
- 报文限制:PGN100、PGN300超8字节,不能用单帧CAN报文发送。
① NPDU配置对象
- 传输机制:用TPCM(网络连接管理)、TPDT(网络数据传递)分帧传输。
- 实际配置:建立DTC_M、CM_CMDT、DT_CMDT等网络管理/数据发送帧。
② 网络管理帧使用
- 帧类型标识:EC表网络管理,FF表广播地址。
- 地址示例:“56”表VCU节点地址(发送源地址为56节点)。
③ TPCM配置示例
- CANID配置:J1939协议CAN ID含优先级、PGN组、地址,需严格按协议填;选扩展帧格式,ID type为static静态。
④ 地址含义解析
- 广播示例:“ECECFF56”表VCU(56节点)向所有节点广播网络管理连接;前四位ECEC为功能码,FF为目标地址(广播),56为源地址。
⑤ 上层协议选择
- 关键参数:
Uplayer
选项必选“J1939TP”协议类型。 - 映射关系:CANIF配置需映射到CAN模块的发送buffer和HTH。
2. CAN模块映射
- 配置一致性:除上述特殊点,其余与普通CAN发送配置相同,可参考标准CAN模块配置方法。
八、课程总结
1. J1939协议介绍
- 协议定位:基于CAN的传输层协议,在AUTOSAR框架实现。
- 典型应用:重型车辆、工程机械通信系统。
2. 典型配置案例
- 演示工具:CANoe仿真BAM、CMDT发送案例。
- 配置工具:ISO AB工具完成实际配置。
3. AUTOSAR实现模块
- 模块组成:AUTOSAR多模块协同实现J1939协议。
- 模型对应:结合OSI模型,重点关注传输层。
4. 配置经验总结
- 配置要点:结合CAN配置经验,对比J1939与普通CAN配置异同。
- 核心区别:关注NPDU配置、CAN ID特殊含义、上层协议选择等关键差异。
九、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
J1939协议基础 | 基于CAN总线的中重型车辆电子部件通信协议 | 与标准CAN的区别(多字节传输/地址广播/优先级机制) | ⭐⭐⭐ |
协议架构 | 含物理层/数据链路层/应用层/网络传输层四层结构 | 网络传输层的“数据重组”作用 | ⭐⭐⭐⭐ |
BAM传输模式 | 广播式传输(1控制帧+3数据帧传21字节) | 控制帧与数据帧的时序关系 | ⭐⭐⭐ |
CMDT传输模式 | 点对点传输(8帧传21字节,含握手) | 网络控制帧的交互流程 | ⭐⭐⭐⭐ |
AUTOSAR实现 | J1939TP模块位于COM与CANIF之间 | SDU与NPDU的映射关系 | ⭐⭐⭐⭐⭐ |
配置流程 | ECU配置→COM层映射→PDU路由→J1939TP通道配置 | NPDU与CANID的绑定规则 | ⭐⭐⭐⭐ |
典型应用场景 | 车辆17字节VIN码、重型车辆控制报文传输 | 单帧/多帧传输的选择标准 | ⭐⭐⭐ |
协议特征 | 250kbps速率/扩展帧ID/地址广播/优先级嵌入 | PGN与SPN的编码规则 | ⭐⭐⭐⭐ |
工具演示 | CANoe仿真BAM与CMDT传输过程 | 网络控制帧的触发条件 | ⭐⭐⭐ |
错误处理 | 超时重传(默认100ms) | 动态block配置注意事项 | ⭐⭐⭐⭐ |