SAE J1939 协议在汽车仪表中的应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2 S A E J1939 报文帧格式 J1939 的信息是以 PD U(ProtocolD ata U nit协议 数据单元) 的形式进行传输的,PD U 的封装在应用 层中完成。PD U 提供了组织信息的框架,这一点对 于每一个要发送的 C A N 数据帧来说是至关重要的。 如图 2,J1939 PD U 共由七个域组成,包括:优先权 (P)、保留位(R )、数据页(D P)、PD U 格式(PF)、 PD U 细节 (PS,可为目的地址、参数组扩展或私 有)、源地址(SA )及数据域(D ata Field)。由这些 域被封装为一个 CA N 数据帧发送到网络上其他节
车速、发动机转速、冷却水温度、燃油油量采用
力、发动机转速、冷却液温度、油量、及各种危险报警。 步进电机(V ID 29-02)驱动指针指示,里程信息采
汽车仪表已成为体现汽车高精尖技术的主要部分。
用里程表专用段式 LC D 模块 LC M 1010 显示,各开
本文所述的总线式汽车仪表一方面具有传统仪 关和报警信号则采用 LE D 指示灯。
结束)等。对于这些域,J1939 协议完全遵从 C A N 规 必要的数据重叠);③按照功能分组(机油、冷却
范中的定义。
液、燃油等等)。
2.3 S A E J1939 应用层协议
2.4 汽车仪表关键数据的计算
J1939 应用层协议详细描述了用于 J1939 网络
发动机转速是汽车仪表所要显示的重要参数,
2006(12)总 208 轻型汽车技术
技术纵横
7
SA E J1939 协议在汽车仪表中的应用
王 建 戴方全
(北京航空航天大学汽车工程系)
摘要 本文利用汽车 C A N 总线技术及 SA E J1939 协议,开发出一套可与其他运行该协议的 设备通讯的总线式数字汽车仪表。文章介绍了 C A N 总线及 SA E J1939 协议,深入研究了 1939 协议的报文帧格式及应用层协议,给出了仪表系统的总体结构,并介绍了该套仪表 基于嵌入式实时操作系统 μC /O S- II的软件设计,总结了采用 μC /O S- II的优点。 关键词:C A N 总线 SA E J1939 汽车仪表 μC /O S-II
获得 O SSem post C PU 后
获得 O SQ Post() C PU 后
处理数据并发 送消息
计算步数并驱 动电机
图 3 典型的 μC /O S -II任务流程
3.4 采用 R T O S 的优点 使用 R TO S 与不使用操作系统相比的一个显著 特点是提高了 C PU 的利用率,以本系统中的步进电 机驱动为例: … for(i= 0;i< steps;i++) {
线以其优异的性能成为汽车局域网的发展趋势[1]。 (发动机电控单元节点)获取,车速信号通过对车
SA E J1939 协议是美国汽车工程师协会 SA E 速传感器脉冲信号频率的测量得到,其余开关量及
(Society ofA utom otive E ngineer) 发布的以 C A N 总线 模拟量信号则从相应的传感器和开关采集得到。如
2006(12)总 208 轻型汽车技术
图 8 客户端程序后面板
6 结束语
虚拟仪器技术与网络技术的结合,及其在汽车 测控领域中的应用,是对传统测控方式的一场挑战 和变革。应用 LabV IE W 作为虚拟仪器软件开发平 台,为开发高性能的计算机测控系统提供了极大的 便利。测控方式的网络化,是未来测控技术发展的必 然趋势,通过建立分布式网络测控系统,能够充分利 用现有资源和网络带来的种种好处,实现各种资源 最有效合理的配置。应用分布网络测控,可以进行多
初始化
中
断
服 务
发起 C A N 任务
程
序
等待信号量 O SSem Pend()
发起电机任务
等待队列 ห้องสมุดไป่ตู้ SQ Pend()
3 系统软件设计
3.1 操作系统简介 μC /O S-II 是由 Jean J.Labrosse 开发的 一 个 免 费的、开放源代码的嵌入式实时操作系统。自从 1992 年发布以来获得了广泛的应用,目前已经被移 植到 40 多种不同结构的 C PU 上。 μC /O S-II 是一 个完全抢占式的内核,不支持轮转调度法。 μC /O S-II 提供了许多系统服务,如邮箱机制、队列 机制、信号量机制、固定大小的内存分区以及时间相 关的函数等等[4]。 3.2 任务结构及分析 主程序在完成各种初始化操作 (串行口初始 化、存储器测试、SJA 1000 初始化、信号量和消息队 列的建立等等)后依次创建各任务,然后通过调用 O SStart()函数启动操作系统。在 μC /O S-II 中,各任 务被赋予不同的优先级,拥有各自的任务堆栈,不同 任务之间通过消息队列和信号量互相通信和共享数 据。任务都采用无限循环结构,各任务通过延时或等 待信号量和消息队列来放弃 C PU 使用权,这样在时 钟节拍到来时将产生中断级任务切换,系统转而运 行处于就绪态的高优先级任务,当延时时间到或者 信号量和消息到来时,任务将再次运行。 3.3 程序流程 图 3 所示为 CA N 总线接收与处理任务和步进 电机驱动任务的执行过程,初始化完成后,主程序发 起 C A N 总线接收和处理任务及步进电机驱动任务, 两个任务先后进入等待信号量和等待消息队列的状
图 2 J1939 P D U 结构
点。每个 C A N 数据帧只能包含一个 PD U 。值得注意 的形式进行传输,而一个 PD U 包含 8 个字节数据,
的是,对于某些参数组,必须使用两个以上的 C A N 因此,需要对这些参数进行组合。在 J1939 应用层协
数据帧发送[4]。
议中还详细定义了参数组,包括每组参数的更新
2006(12)总 208 轻型汽车技术
技术纵横
9
元 #1,发动机转速占据次参数组的第 4、5 字节。按 照定义,该组参数的更新率与实际发动机转速相关, 即发动机转速越高则更新应越快。
若收到来自发动机控制单元的数据为 0C F0 04 00 X X X X X X 4F 55 X X X X X X (X X 表示任意数 据),其中前四个字节为 29 位标识符,后 8 个字节 为数据域,数据域中第 4、5 字节表示发动机转速,根 据这两个字节的数值及 spn190 中的定义即可算得 发动机转速:
见的。这些域包括:SO F(帧起始)、SR R(替代远程 叠[5],协议按照以下原则对参数进行分组:①按照
请求)、ID E(识别符扩展)、R TR(远程请求),部分 E C U 所属子系统分组 (E C U 用于测量和发送数
控制域、C R C(校验域)、A C K(应答域)及 E O F(帧 据);②按照参数组中的参数更新率分组(减小不
C A N 2.0B 的基础上选择合适的应用层协议。 SA E J1939 是以 C A N 为基础涉及了应用层的
上层协议, 是目前最有实用参考价值的车用网络协 议。它对汽车内部 E C U 的地址配置、命名、通讯方式 以及报文发送优先级等都作了明确的规定,并对汽 车内部各个具体的 ECU 通讯内容作了详细说明。 SA E J1939 协议更大程度地发挥了 C A N 优异的性 能。
分压
A /D 转换
M CU
LC D 、LE D
1 汽车仪表总体设计
开关量
汽车仪表上需要显示的信号包括:车
光电隔离
转速传感器
速、转速、水温、油量以及各种开关量报警
图 1 汽车仪表总体结构
8
技术纵横
轻型汽车技术 2006(12)总 208
2 CAN 总线及 SAE J1 939 协议分析
2.1 C A N 总线及 S A E J1939 协议介绍 C A N (C ontroller A rea N etw ork)总线是德国 B osch 公司在 80 年代初为解决数据可靠交换而开发的一 种串行数据通信总线[3],它强调了实时性,又具有极 高的可靠性和独特的设计, 在现代汽车中已经成为 必备装置。为进一步减少车身线束,方便故障诊断, 满足主要电控单元和系统间大量数据信息实时交换 的需要,使汽车各方面性能趋于最佳状态,基于 C A N 总线的 C 类网络被应用于车内数据通讯。C A N 总线有效地将发动机电控系统、驱动防滑系统、自动 巡航系统等连接成为一个综合控制系统,使整车性 能得以大幅提高。 根据 ISO 定义的 O SI 模型,C A N 2.0B 规范定义 了物理层和数据链路层规范,这为不同的 C A N 总线 用户制定符合自身需要的应用层协议提供了很大的 便利,如果需要建立更加完善的系统,还需要在
C A N 数据帧中的某些域并未在 PD U 中定义, 率、有效数据长度、数据页、PD U 格式、PD U 细节、默
这是因为这些域已经在 C A N 2.0 规范中明确定义, 认优先权及参数组的内容,并为每个参数组分配一
并且对于数据链路层以上的 O SI层,这些域是不可 个参数组编号(PG N )。为最大程度地减小数据的重
SH O R TD E LA Y O utput(O _M O T,FC ,1); SH O R TD E LA Y O utput(O _M O T,FC ,0); delaym s(1); } … 为防止步进电机失步,其每转动一步,必须进 行 1 毫秒左右的延时,因此,如果车速迅速上升或 下降,导致显示车速的步进电机需要转动 100 步以 上,则完成这一段的电机驱动需要超过 100 毫秒的 时间,且这一段时间内 C PU 无法再执行其他任务, 而根据 J1939 协议,发动机转速等数据的发送间隔 为 50 毫秒,因此在这 100 毫秒的时间内,仪表可能 已经错过两次发动机转速数据,这(下转第 13 页)
控制器局域网 C A N (C ontroller A rea N etw ork) 信号(机油压力报警、燃油报警、水位报警、A B S 故
作为一种可靠性极高、价格低廉、技术成熟的现场总 障、水温报警、左右转向指示等)。在本系统中,水温
线在国内外得到了广泛的应用。在汽车行业 C A N 总 及 转 速 信 号 将 依 照 SA E J1939 协 议 从 C A N 总 线
的每个参数,包括其数据长度、数据类型、分辨率、范 来自发动机电控单元。在 J1939 应用层协议中定义
围 及 参 考 标 签 , 并 为 每 个 参 数 分 配 了 一 个 编 号 了参数 spn190 为发动机转速,并规定其所属的参数
(SPN )。由于 J1939 协议是以协议数据单元(PD U ) 组号为 pgn61444,pgn61444 参数组为发动机电控单
250K bit/s 的通讯速率。
传感器的信号首先经过分压,然后通过 A /D 转换由
对于现代汽车而言,汽车仪表是汽车信息的中 模拟信号转换为数字信号输入到单片机;其他开关
心,集中、直观、迅速地反映了汽车在行驶过程中的各 量经过光电隔离后直接输入到 M C U 。
种动态指标,如行驶速度、里程、电系状况、制动、压
表的数据采集功能,另一方面利用 C A N 总 线技术,使该仪表成为车身网络的一部分, 集中处理来自其他电控单元的数据,且其
发动机转速、冷却水温度数据
C A N 模块
通讯符合 SA E J1939 协议,可以与汽车上其 转速传感器
滤波、整形
光电隔离
步进电机
他按照此协议工作的电控单元进行通讯。
油量传感器
为基础、以 C A N 2.0B 作为网络核心协议的车辆网络 图 1,转速传感器发出的脉冲信号经过滤波整形电
串行通信和控制协议[2]。它是目前在国内汽车行业中 路及光电隔离后输入到单片机的外部中断引脚,
应用最广泛的 C A N 总线应用层协议,可以达到 M C U 通过脉冲进行定时计数计算出当前车速;油量
发动机转速 = 原始数×分辨率 + 偏移量 = 20309×0.125 + 0 = 2538.625 rpm 。
同理可以计算出其他汽车仪表所需数据。根据 计算出的数值,仪表 E C U 即可驱动显示部件准确地 显示当前的车辆状态。
态。C A N 总线中断产生后,中断服务程序释放信号 量,使 C A N 总线任务进入就绪状态,在其获得 C PU 使用权后,对总线数据进行处理并将数据发送到消 息队列,从而使得步进电机驱动任务进入就绪状 态,电机任务通过任务调度获得 C PU 使用权后,根 据消息队列中的数据计算电机所需步数并驱动电 机旋转。
车速、发动机转速、冷却水温度、燃油油量采用
力、发动机转速、冷却液温度、油量、及各种危险报警。 步进电机(V ID 29-02)驱动指针指示,里程信息采
汽车仪表已成为体现汽车高精尖技术的主要部分。
用里程表专用段式 LC D 模块 LC M 1010 显示,各开
本文所述的总线式汽车仪表一方面具有传统仪 关和报警信号则采用 LE D 指示灯。
结束)等。对于这些域,J1939 协议完全遵从 C A N 规 必要的数据重叠);③按照功能分组(机油、冷却
范中的定义。
液、燃油等等)。
2.3 S A E J1939 应用层协议
2.4 汽车仪表关键数据的计算
J1939 应用层协议详细描述了用于 J1939 网络
发动机转速是汽车仪表所要显示的重要参数,
2006(12)总 208 轻型汽车技术
技术纵横
7
SA E J1939 协议在汽车仪表中的应用
王 建 戴方全
(北京航空航天大学汽车工程系)
摘要 本文利用汽车 C A N 总线技术及 SA E J1939 协议,开发出一套可与其他运行该协议的 设备通讯的总线式数字汽车仪表。文章介绍了 C A N 总线及 SA E J1939 协议,深入研究了 1939 协议的报文帧格式及应用层协议,给出了仪表系统的总体结构,并介绍了该套仪表 基于嵌入式实时操作系统 μC /O S- II的软件设计,总结了采用 μC /O S- II的优点。 关键词:C A N 总线 SA E J1939 汽车仪表 μC /O S-II
获得 O SSem post C PU 后
获得 O SQ Post() C PU 后
处理数据并发 送消息
计算步数并驱 动电机
图 3 典型的 μC /O S -II任务流程
3.4 采用 R T O S 的优点 使用 R TO S 与不使用操作系统相比的一个显著 特点是提高了 C PU 的利用率,以本系统中的步进电 机驱动为例: … for(i= 0;i< steps;i++) {
线以其优异的性能成为汽车局域网的发展趋势[1]。 (发动机电控单元节点)获取,车速信号通过对车
SA E J1939 协议是美国汽车工程师协会 SA E 速传感器脉冲信号频率的测量得到,其余开关量及
(Society ofA utom otive E ngineer) 发布的以 C A N 总线 模拟量信号则从相应的传感器和开关采集得到。如
2006(12)总 208 轻型汽车技术
图 8 客户端程序后面板
6 结束语
虚拟仪器技术与网络技术的结合,及其在汽车 测控领域中的应用,是对传统测控方式的一场挑战 和变革。应用 LabV IE W 作为虚拟仪器软件开发平 台,为开发高性能的计算机测控系统提供了极大的 便利。测控方式的网络化,是未来测控技术发展的必 然趋势,通过建立分布式网络测控系统,能够充分利 用现有资源和网络带来的种种好处,实现各种资源 最有效合理的配置。应用分布网络测控,可以进行多
初始化
中
断
服 务
发起 C A N 任务
程
序
等待信号量 O SSem Pend()
发起电机任务
等待队列 ห้องสมุดไป่ตู้ SQ Pend()
3 系统软件设计
3.1 操作系统简介 μC /O S-II 是由 Jean J.Labrosse 开发的 一 个 免 费的、开放源代码的嵌入式实时操作系统。自从 1992 年发布以来获得了广泛的应用,目前已经被移 植到 40 多种不同结构的 C PU 上。 μC /O S-II 是一 个完全抢占式的内核,不支持轮转调度法。 μC /O S-II 提供了许多系统服务,如邮箱机制、队列 机制、信号量机制、固定大小的内存分区以及时间相 关的函数等等[4]。 3.2 任务结构及分析 主程序在完成各种初始化操作 (串行口初始 化、存储器测试、SJA 1000 初始化、信号量和消息队 列的建立等等)后依次创建各任务,然后通过调用 O SStart()函数启动操作系统。在 μC /O S-II 中,各任 务被赋予不同的优先级,拥有各自的任务堆栈,不同 任务之间通过消息队列和信号量互相通信和共享数 据。任务都采用无限循环结构,各任务通过延时或等 待信号量和消息队列来放弃 C PU 使用权,这样在时 钟节拍到来时将产生中断级任务切换,系统转而运 行处于就绪态的高优先级任务,当延时时间到或者 信号量和消息到来时,任务将再次运行。 3.3 程序流程 图 3 所示为 CA N 总线接收与处理任务和步进 电机驱动任务的执行过程,初始化完成后,主程序发 起 C A N 总线接收和处理任务及步进电机驱动任务, 两个任务先后进入等待信号量和等待消息队列的状
图 2 J1939 P D U 结构
点。每个 C A N 数据帧只能包含一个 PD U 。值得注意 的形式进行传输,而一个 PD U 包含 8 个字节数据,
的是,对于某些参数组,必须使用两个以上的 C A N 因此,需要对这些参数进行组合。在 J1939 应用层协
数据帧发送[4]。
议中还详细定义了参数组,包括每组参数的更新
2006(12)总 208 轻型汽车技术
技术纵横
9
元 #1,发动机转速占据次参数组的第 4、5 字节。按 照定义,该组参数的更新率与实际发动机转速相关, 即发动机转速越高则更新应越快。
若收到来自发动机控制单元的数据为 0C F0 04 00 X X X X X X 4F 55 X X X X X X (X X 表示任意数 据),其中前四个字节为 29 位标识符,后 8 个字节 为数据域,数据域中第 4、5 字节表示发动机转速,根 据这两个字节的数值及 spn190 中的定义即可算得 发动机转速:
见的。这些域包括:SO F(帧起始)、SR R(替代远程 叠[5],协议按照以下原则对参数进行分组:①按照
请求)、ID E(识别符扩展)、R TR(远程请求),部分 E C U 所属子系统分组 (E C U 用于测量和发送数
控制域、C R C(校验域)、A C K(应答域)及 E O F(帧 据);②按照参数组中的参数更新率分组(减小不
C A N 2.0B 的基础上选择合适的应用层协议。 SA E J1939 是以 C A N 为基础涉及了应用层的
上层协议, 是目前最有实用参考价值的车用网络协 议。它对汽车内部 E C U 的地址配置、命名、通讯方式 以及报文发送优先级等都作了明确的规定,并对汽 车内部各个具体的 ECU 通讯内容作了详细说明。 SA E J1939 协议更大程度地发挥了 C A N 优异的性 能。
分压
A /D 转换
M CU
LC D 、LE D
1 汽车仪表总体设计
开关量
汽车仪表上需要显示的信号包括:车
光电隔离
转速传感器
速、转速、水温、油量以及各种开关量报警
图 1 汽车仪表总体结构
8
技术纵横
轻型汽车技术 2006(12)总 208
2 CAN 总线及 SAE J1 939 协议分析
2.1 C A N 总线及 S A E J1939 协议介绍 C A N (C ontroller A rea N etw ork)总线是德国 B osch 公司在 80 年代初为解决数据可靠交换而开发的一 种串行数据通信总线[3],它强调了实时性,又具有极 高的可靠性和独特的设计, 在现代汽车中已经成为 必备装置。为进一步减少车身线束,方便故障诊断, 满足主要电控单元和系统间大量数据信息实时交换 的需要,使汽车各方面性能趋于最佳状态,基于 C A N 总线的 C 类网络被应用于车内数据通讯。C A N 总线有效地将发动机电控系统、驱动防滑系统、自动 巡航系统等连接成为一个综合控制系统,使整车性 能得以大幅提高。 根据 ISO 定义的 O SI 模型,C A N 2.0B 规范定义 了物理层和数据链路层规范,这为不同的 C A N 总线 用户制定符合自身需要的应用层协议提供了很大的 便利,如果需要建立更加完善的系统,还需要在
C A N 数据帧中的某些域并未在 PD U 中定义, 率、有效数据长度、数据页、PD U 格式、PD U 细节、默
这是因为这些域已经在 C A N 2.0 规范中明确定义, 认优先权及参数组的内容,并为每个参数组分配一
并且对于数据链路层以上的 O SI层,这些域是不可 个参数组编号(PG N )。为最大程度地减小数据的重
SH O R TD E LA Y O utput(O _M O T,FC ,1); SH O R TD E LA Y O utput(O _M O T,FC ,0); delaym s(1); } … 为防止步进电机失步,其每转动一步,必须进 行 1 毫秒左右的延时,因此,如果车速迅速上升或 下降,导致显示车速的步进电机需要转动 100 步以 上,则完成这一段的电机驱动需要超过 100 毫秒的 时间,且这一段时间内 C PU 无法再执行其他任务, 而根据 J1939 协议,发动机转速等数据的发送间隔 为 50 毫秒,因此在这 100 毫秒的时间内,仪表可能 已经错过两次发动机转速数据,这(下转第 13 页)
控制器局域网 C A N (C ontroller A rea N etw ork) 信号(机油压力报警、燃油报警、水位报警、A B S 故
作为一种可靠性极高、价格低廉、技术成熟的现场总 障、水温报警、左右转向指示等)。在本系统中,水温
线在国内外得到了广泛的应用。在汽车行业 C A N 总 及 转 速 信 号 将 依 照 SA E J1939 协 议 从 C A N 总 线
的每个参数,包括其数据长度、数据类型、分辨率、范 来自发动机电控单元。在 J1939 应用层协议中定义
围 及 参 考 标 签 , 并 为 每 个 参 数 分 配 了 一 个 编 号 了参数 spn190 为发动机转速,并规定其所属的参数
(SPN )。由于 J1939 协议是以协议数据单元(PD U ) 组号为 pgn61444,pgn61444 参数组为发动机电控单
250K bit/s 的通讯速率。
传感器的信号首先经过分压,然后通过 A /D 转换由
对于现代汽车而言,汽车仪表是汽车信息的中 模拟信号转换为数字信号输入到单片机;其他开关
心,集中、直观、迅速地反映了汽车在行驶过程中的各 量经过光电隔离后直接输入到 M C U 。
种动态指标,如行驶速度、里程、电系状况、制动、压
表的数据采集功能,另一方面利用 C A N 总 线技术,使该仪表成为车身网络的一部分, 集中处理来自其他电控单元的数据,且其
发动机转速、冷却水温度数据
C A N 模块
通讯符合 SA E J1939 协议,可以与汽车上其 转速传感器
滤波、整形
光电隔离
步进电机
他按照此协议工作的电控单元进行通讯。
油量传感器
为基础、以 C A N 2.0B 作为网络核心协议的车辆网络 图 1,转速传感器发出的脉冲信号经过滤波整形电
串行通信和控制协议[2]。它是目前在国内汽车行业中 路及光电隔离后输入到单片机的外部中断引脚,
应用最广泛的 C A N 总线应用层协议,可以达到 M C U 通过脉冲进行定时计数计算出当前车速;油量
发动机转速 = 原始数×分辨率 + 偏移量 = 20309×0.125 + 0 = 2538.625 rpm 。
同理可以计算出其他汽车仪表所需数据。根据 计算出的数值,仪表 E C U 即可驱动显示部件准确地 显示当前的车辆状态。
态。C A N 总线中断产生后,中断服务程序释放信号 量,使 C A N 总线任务进入就绪状态,在其获得 C PU 使用权后,对总线数据进行处理并将数据发送到消 息队列,从而使得步进电机驱动任务进入就绪状 态,电机任务通过任务调度获得 C PU 使用权后,根 据消息队列中的数据计算电机所需步数并驱动电 机旋转。