当前位置:首页 >> 机械/仪表 >>

MATLAB平台上的汽车网络协议软件开发


Vol. 17 增刊 Dec. 2005

系 统 仿 真 学 报 JOURNAL OF SYSTEM SIMULATION

45

MATLAB 平台上的汽车网络协议软件开发
范永健 胡劲风
(恒润科技有限公司 北京 100101)

摘 要 描述了在可视化的高层开发平台 软件的过程 展示了先进的开发模式 Simulink 现代嵌入式开发的重大作用 关键词 MATLAB 文章编号

MATLAB/Simulink/Stateflow 上开发 SAEJ1939 协议 代码生成技术和专业开发和测试工具对于 代码生成 TP391.9 文献标识码 A

高层开发平台

StateFlow SAEJ1939

1004-731X (2005) S0-0045-04

中图分类号

Software Implementation of a Vehicle Network Protocol on MATLAB
FAN Yong-jian, HU Jin-feng
(Application development department Hirain Technologies, Beijing 100101, China)

Abstract This paper describes the software development of SAEJ1939 on the visual high-level platform—MATLAB. It demonstrates the significant role in embedded software development for the advanced development method, platform, code generation, and professional development and test tools. Key words MATLAB simulink stateflow SAEJ1939 code generation

1

汽车嵌入式开发新技术1
嵌入式芯片经历了从单片微型计算机(SCM 微控制器

用可视化的建模仿真开发工具 MATLAB/Simulink/Stateflow 进行嵌入式产品开发 而对自动代码生成工具的使用比比皆 是 如汽车芯片供应商 Infineon 公司提供免费的图形化初始 化代码生成工具 DAvE(Digital Application virtual Engineer)对其 MCU 产品进行 I/O 模块的初始化 许多 OSEK 操作系统供应商都提供图形化的操作界面来设置任务的属 性 配置系统资源 dSPACE 公司提供专业的代码生成工具 Targetlink 来支持汽车嵌入式产品级代码的自动生成

(MCU)到片上系统(SoC)的发展历程 嵌入式软件开发也由初 期的汇编编程模式发展到当前广为流行的嵌入式 C 编程并向 嵌入式 C++迈进 由于系统资源配置的提高和嵌入式系统复 杂性的增强 现代嵌入式开发广泛采用嵌入式实时操作系统 在上述发展过程中 系统设计理念和技术的发展进步 开发 工具的广泛采用都极大地推动了嵌入式系统的高速成长 将嵌入式开发移到可视化的建模仿真开发平台上 广泛 采用自动代码生成技术是当前嵌入式系统发展的新模式和 特点 在这种新的模式下 嵌入式系统的设计理念 开发流 程 使用的开发工具都发生了巨大的变化 可视化高层建模 仿真开发平台与自动代码生成技术的结合贯通了系统设计 仿真 调试和产品级代码实现的整个过程 使得过去某些由 少数人掌握的系统级设计任务可以很方便的由更多的开发 人员在高层开发平台上进行原型设计 仿真和调试 大幅度 减少了软件 Bug 开发周期也大幅缩短 采用这种新的开发 模式 可以在早期发现系统级的设计错误 进行设计改进 即使对于在实现的最后阶段发现的错误 由于采用了可视化 的建模仿真开发平台和自动代码生成技术 修改设计的过程 也比过去快很多 作为人类文明重大成果的汽车产业在嵌入式开发过程 中充分应用了嵌入式开发技术的最新成果 汽车行业广泛采
收稿日期 2005-08-31 修回日期 2005-10-21 作者简介 范永健 (1964-), 男, 江苏省南通市人, 高工, 项目经理, 博士, 研究方向为汽车网络协议

2

可视化的建模仿真开发平台—MATLAB/ 可视化的建模仿真开发平台 Simulink/Stateflow
MATLAB/Simulink/Stateflow 是一个完整的开发环境

它将高性能的数值计算 可视化的框图设计环境 基于有限 状态机的理论的复杂的事件驱动系统设计环境集成在一起 它可以 进行系统定义和实现 开发控制算法和嵌入式软件 支 持 浮 点 和 定 点 算 法 的 仿 真 和 代 码 生 成 MATLAB/Simulink/Stateflow 对自动代码生成提供全面的支 持 包含一下几个部分 Real-time workshop Simulink Stateflow coder(Stateflow) Real-time workshop embedded 可以将 Stateflow 创 它采

coder Embedded target products(针对具体 MCU) Stateflow 与 Simulink 和 MATLAB 紧密集成 建的复杂控制逻辑有效地结合到 Simulink 的模型中 态控制逻辑

用可视化建模仿真有限状态机模型 可以设计开发复杂的动 自动生成浮点或定点 C 代码并具有简便的修 改设计 评估结果 确认系统的品质 由于其强大的功能结 合 MATLAB/Simulink 平台强大的计算和仿真调试能力在嵌 入式软件开发领域获得广泛应用 航空航天和汽车行业是

46





仿







Vol. 17 增刊 Dec. 2005

MATLAB/Simulink/Stateflow 的 2 个最大的客户群

和所采用的支持应用的机制 在应用层技术要求中 对报文 格式 ISO 拉丁字符集 参数范围 传输重复率 发动机参 数的命名规则等方面都有具体的规定和描述[3] 应用层定义 卡车和公 的 SPN 和 PGN 是最多的 3.2.5 应用层 诊断

3

SAEJ1939 协议
SAE J1939 协议是由美国汽车工程师协会

共汽车电气电子委员会下的卡车和公共汽车控制和通讯网 络分委员会制定的高层 CAN 网络通讯协议 它主要用于为 重型道路车辆上电子部件间的通讯提供标准的体系结构[1]

SAEJ1939 应用层 诊断定义了用于诊断服务的报文 诊断报文 DM 提 供了 进行 车 辆 维 修时 的 功 能 SAE J1939-73 提供的诊断定义是为了满足所有可能使用 SAE J1939 网络的用户需要的 这些定义适合 SAE J1939 中定义 的所有工业组的应用 诊断必须具有能够满足不同客户 工 业组和法规制订机构所需求的诊断能力[4] SAE J1939 所提供的主要诊断功能包括 周期性广播活 动诊断故障代码 确定控制器诊断灯状态 读取或清除诊断 故障代码 读写控制器存储器 提供安全功能 停止/起动 报文广播 报告诊断就绪状态 监测发动机参数 这些功能 分别由诊断报文 DM1 3.2.6 网络管理 SAEJ1939 的网络管理负责源地址管理 地址与功能的关联 和对网络相关错误的检测和报告 它定义了名称和地址方面的需 求 网络管理过程 网络错误管理 地址声明和 CA 控制器应 用 的初始化过程和最低限度的网络管理功能[5] DM19 具体实现

3.1

SAEJ1939 协议构成文件
SAEJ1939 协议包括如下几部分内容 SAE J1939-11 SAE J1939-13 SAE J1939-21 SAE J1939-31 SAE J1939-71 SAE J1939-73 SAE J1939-81 物理层 250 Kbits/s 屏蔽双绞线 物理层 离线诊断连接器

SAE J1939-15简化的物理层 250 Kbits/s 非屏蔽双绞线 数据链路层 网络层 车辆应用层 应用层-诊断 J1939 网络管理协议

3.2 各层协议的功能
3.2.1 物理层 SAEJ1939 的物理层规范包含 SAE J1939-11 250 Kbits/s 屏蔽双绞线 SAE J1939-15 物理层

简化的物理层

250 Kbits/s 非屏蔽双绞线 和 SAE J1939-13 物理层 离 线诊断连接器 三部分 其中 SAE J1939-11 和 SAE J1939-15 给出了物理层为屏蔽双绞线和非屏蔽双绞线时的网络物理 描述 功能描述 电气规范 兼容性测试 总线错误讨论 而 SAE J1939-13 物理层 离线诊断连接器 则定义了离线 诊断连接器的通用需求 3.2.2 数据链路层 SAEJ1939 的数据链路层在物理层之上提供了可靠的数 据传输功能 中 通过数据链路层的组织 发送的 CAN 数据帧 具有必需的同步 顺序控制 错误控制和流控制等功能 其 流控制是通过一致的信息帧格式完成[2] 数据链路层的功能通过命令 请求 广播/响应 应答 组功能和传输协议来实现 其中传输协议用于长度大于 8 个 字节的参数组 PGN 的收发 传输协议涉及报文的拆装和 重组 通讯方式又分为广播和点对点会话 对传输过程还定 义了超时监测和错误处理 3.2.3 网络层 SAE J1939 的网络层定义了网络互联 ECU 的需求和服务 它们负责不同 SAEJ1939 网络段之间的互联 同时网络层也定 义了各种类型的网络互联 ECU 和它们所提供的功能 3.2.4 应用层 应 用 层 详 细 定 义 SAEJ1939 协 议 应 用 层 所 用 到 的 SPN(可疑参数编号)和 PGN 参数组 该层包含管理功能 是数据链路层最复杂的部分 性能需求和物理需求

4

SAEJ1939 协议软件开发
SAEJ1939 是一个复杂 完整的汽车网络体系结构 其 其复杂性尤其表现在 用于传送多包的长报文

软件实现是一项大型的系统工程 (1) 数据链路层的传输协议 最多 255 包 1785 字节

具有详细完整的连接管理功能

定义 以保证在各种情况下系统都能够稳定可靠地工作 连 接管理包括广播 建立点对点会话连接 维持连接 终止连 接 流控制 报文结束应答的详细约定 这部分协议还规定 了在各种情况下的超时和错误处理 传输协议的软件系统架 构是状态图和流程图复杂地交织在一起的混合体 以传统的 软件设计 实现方式开发这部分内容需要丰富的经验和高超 的技巧 (2) 网络管理 网络管理规定了系统初始化过程中进 控制器应用 仲裁地址 行地址声明的过程 设计了在发生地址冲突时 单一地址能 力 CA Controller Appliaction 件设计的突出特点是状态转移图 (3) 应用层 断灯状态 故障诊断 SAE J1939 所提供的主要诊 读写控制器存储器 报告诊断就绪状态 DM19 断功能包括 周期性广播活动诊断故障代码 确定控制器诊 读取或清除诊断故障代码 停止/起动报文广播 提供安全功能 具体实现 能力 CA 和命令地址能力 CA 的状态转移 网络管理部分软

监测发动机参数 这些功能分别由诊断报文 DM1

其中 DM1 报文是诊断报文中最基本 最常用

也是最重要的 它周期性地向 SAE J1939 网络广播当前故障

Vol. 17 增刊 Dec. 2005 信息 以 1 秒为间隔

范永健 等

MATLAB 平台上的汽车网络协议软件开发

47

如果有新的故障发生或当前的某个

数据接口接收仿真数据的输入并将处理结果通过 Simulink 输出 控制 GUI 是 Simulink 输入和控制数据的图形界面 SAEJ1939 协议栈核心状态/流程图可以通过 显示 GUI 是 Simulink 输出数据的图形界面 完成系统的仿 真调试后 Stateflow Coder 生成嵌入式 C 代码

故障消失

它会即时向网络广播故障变化情况

上述三部分的软件开发均包含了复杂的状态/流程图的 设计 仿真调试和代码实现 是 SAEJ1939 软件开发最复杂 的部分 对这部分软件开发所采用的开发模式 开发流程和 开发工具将对开发的水平 质量和效率产生很大影响 由于 MATLAB/Simulink/Stateflow 实现了可视化的数值 计算 可视化的动态系统建模 分析和仿真和可视化的有限 状态机建模和仿真调试的无缝集成 它已经成为很多行业的 高层软件开发平台 在航空航天领域和汽车界尤其如此 近 年来 由于该开发平台在自动代码生成方面的显著进步大大 提升了它对嵌入式开发的支持能力 加速了嵌入式开发向该 开发平台的转移 这些优良特性使它非常适合进行汽车网络 协议的复杂状态机/流程图设计 成 图 1 是开发过程示意图 仿真调试和嵌入式代码生 首先在 Stateflow 上进行

图1

开发过程示意图

SAEJ1939 系统框架 状态机/流程图设计 然后在 MATLAB/ Simulink 中下建立仿真调试环境(包括仿真调试的数据输入/ 输出接口和用户界面) 并在此仿真调试环境中进行仿真测 试 修改设计直到控制逻辑稳定为止 随后的工作是利用代 码生成技术产生嵌入式代码的协议栈并实现与底层驱动的集 成 最后通过网络测试平台对目标系统进行实时测试 测试平 台采用专业开发工具供应商 德国 Vector 公司的 CANoe

4.1

系统结构
系统的核心是 Stateflow 下的 SAEJ1939 协议栈核心状
图2 协议栈核心模块 控制接口和显示接口间的关系

态/流程图 图 2 和图 3

该状态/流程图通过 Simulink 下的

图3

Simulink 下的系统总体架构程图

4.2 Stateflow 模型
SAEJ1939 协议栈核心包含网络管理模型 数据链路层 模型 应用层诊断模型和应用层模型这几个子模型 它们都 是在 Stateflow 环境下建立的基于有限状态机理论的状态/流 这些复杂的逻辑需要外加仿真测试接口才能进行仿真调试

仿真调试可以检查系统控制逻辑是否存在问题并在设计阶 段就进行设计改进 图 4 为数据链路层的传输协议的点对点 会话的接收方的状态/流程图 由于在图形化的有限状态机 这些复杂的控制逻辑 开发工具 Stateflow 上进行开发调试

得以由几个人在较短的时间内开发完成

48





仿







Vol. 17 增刊 Dec. 2005

图4

数据链路层传输协议点对点会话的接收方的状态/流程图

图5

动力总成系统网络拓扑结构

4.3

嵌入式目标系统的集成与测试
SAEJ1939 协议栈核心状态/流程图经过仿真测试后 将

由于采用了先进的开发模式 可视化的高层开发平台和专 业的测试工具 SAEJ1939 协议的软件开发历程与传统的方 式(外国专业公司)相比在人力投入和开发时间方面都大幅减少

其生成的代码与 CAN 的底层驱动集成在一个 32 位的 ARM 目标机上 测试 例程 采用专业的网络系统设计 开发和测试工具 CANoe 德国 Vector 公司的网络系统开发工具 进行了实时 CANoe 端的测试程序是 CANoe 上的一个 SAEJ1939 这是一个包含了发动机 ECU 变速箱 ECU ABS 见

5

结论
采用新的开发模式 将嵌入式开发转移到先进的高层开 提高开发水

发平台可以大大加快嵌入式软件的开发过程 平

缓速器 ECU 整车 ECU 和一个网桥的 SAEJ1939 例程 通过 Trace 窗口观察和监测所有报文 显示发动机 变速箱

高层开发平台 MATLAB/Simulink/Stateflow 所提供的图 由于 Stateflow 与

图 5 该例程在没有外部实节点时可以进行全网络虚拟仿真 通过 Panel 仿真界面 非常直观 ABS 等节点的工作状态

形化软件设计 功能强大的仿真调试环境和自动代码生成技 术是对嵌入式 开发的重 大技 术支持 Simulink 和 MATLAB 的紧密集成和自动代码生成技术的 完善 它已经成为诸如汽车网络系统这样复杂的事件驱动嵌 入式系统设计的重要开发平台

地显示换档过程的工作状态 将该例程作为测试程序时 将 虚拟总线设置改为真实总线并将 ARM 目标机节点通过 CAN 总线连接到 CANoe 同时断开原来的某个虚拟节点与 总线的连接 本项目完成了 ARM 目标机作为发动机 ECU/ 自动变速箱 ECU/ABS 实节点 CANoe 端仿真测试程序作为 系统其余虚拟节点的测试 测试显示 统虚拟仿真完全一致 ARM 目标机实节点 与原来的全系 与 CANoe 端虚拟网络的通讯连接工作正常

参考文献
[1] [2] [3] [4] [5] SAE J1930-01 Recommended Practice for Control and Communications Network for On-Highway Equipment [S]. SAE J1939-21 Data Link Layer [S]. SAE J1939-71 Vehicle Application Layer [S]. SAE J1939-73 Application Layer--Diagnostics [S]. SAE J1939-81 Network Management Protocol [S].


相关文章:
基于matlab的车牌识别系统的设计(附程序)
基于matlab的车牌识别系统的设计(附程序)_计算机软件...在汽车牌照自动识别过程,字符分割有承前启后的...有基于模板匹配的OCR算法以及 基于人工神经网络的OCR...
Matlab教程
针对控制逻辑的开发, 协议栈的仿真等要求, MathWorks...同时,MATLAB 开放的体系结构允许用户在平台 上进行...汽车、金 融财务等各个学科领域,接口方式包括联合...
基于MATLAB GUI的图像处理软件平台的开发
基于MATLAB GUI的图像处理软件平台的开发_计算机软件及...汽车品牌的足球世界杯营销 网络营销部电商运营工作计划...©2014 Baidu 使用百度前必读 | 文库协议...
MATLAB产品介绍
设计仿真平台 MATLAB 是美国 MathWorks 公司开发用于...汽车,教育,行政等行业.世界各大知名航空航天与国防...通过网络方式进行连接, 用户使用客户端机器编写 程序...
MATLAB软件在汽车悬架系统的模拟与中的应用资料
本人在分析悬架系统工作特性的基础上使用了c 语言对MATLAB软件进行了 二次开发, 开发出的这套软件它能对不同型号的被动悬架系统和主动悬架系统汽 车进行模拟仿真,...
三种软件在汽车控制系统的应用
(如 Matlab)在 CANoe 中将 ESC 系统的通信协议进行...在这个配置中建立汽车的网络仿 真模型, 并将此配置...为软件平台,结合 dSPACE 的软硬件资源,开发出 了...
VB调用Matlab神经网络工具箱在测绘软件设计中的应用
VB调用Matlab神经网络工具箱在测绘软件设计中的应用_...一种独立于编程语言的组件集成协议,它不受开发环境...基于 C#.NET 与 MATLAB 接口和 BP 网络的汽车产量...
基于无线技术的汽车智能避撞系统
基于车流信息的车载自组织网络路由协议[J]. 计算 ...汽车制动系设计计算软件开发研究.北京: 北京汽车, ...【13】孙益民.基于 MATLAB 的汽车制动系统设计和分析...
FIX Flyer 和 MathWorks 整合了启用FIX 交易系统的访问...
MATLAB 金融服务业的用户现在可以利用 FIX 通信协议...中现在提供对 FIX Flyer FIX Engine 交易平台的支持...利用高度可扩展的软件网络技术, 开发并运营着可...
MATLAB平台下的PLC实时控制系统分析
MATLAB平台下的PLC实时控制系统分析_信息与通信_工程...理工学院毕业论文 据则保留在RAM中, 开机时由网络...1.2 组态软件数据交换技术与以往用计算机语言开发...
更多相关标签: