中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 2346查看
  • 0回复

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

[复制链接]


该用户从未签到

发表于 10-9-2006 15:48:26 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


MATLAB平台上的汽车网络协议软件开发
                 
                      北京恒润科技有限公司
摘  要:本文描述了在可视化的高层开发平台——MATLAB/Simulink/Stateflow上开发SAEJ1939协议软件的过程。展示了先进的开发模式、高层开发平台、代码生成技术和专业开发和测试工具对于现代嵌入式开发的重大作用。
关键词:MATLAB,Simulink,StateFlow,SAEJ1939,代码生成
1 汽车嵌入式开发新技术
嵌入式芯片经历了从单片微型计算机(SCM)、微控制器(MCU)到片上系统(SoC)的发展历程;嵌入式软件开发也由初期的汇编编程模式发展到当前广为流行的嵌入式C编程并向嵌入式C++迈进;由于系统资源配置的提高和嵌入式系统复杂性的增强,现代嵌入式开发广泛采用嵌入式实时操作系统。在上述发展过程中,系统设计理念和技术的发展进步、开发工具的广泛采用都极大地推动了嵌入式系统的高速成长。
将嵌入式开发移到可视化的建模仿真开发平台上,广泛采用自动代码生成技术是当前嵌入式系统发展的新模式和特点。在这种新的模式下,嵌入式系统的设计理念、开发流程、使用的开发工具都发生了巨大的变化。可视化高层建模仿真开发平台与自动代码生成技术的结合贯通了系统设计、仿真、调试和产品级代码实现的整个过程,使得过去某些由少数人掌握的系统级设计任务可以很方便的由更多的开发人员在高层开发平台上进行原型设计、仿真和调试,大幅度减少了软件Bug,开发周期也大幅缩短。采用这种新的开发模式,可以在早期发现系统级的设计错误、进行设计改进;即使对于在实现的最后阶段发现的错误,由于采用了可视化的建模仿真开发平台和自动代码生成技术,修改设计的过程也比过去快很多。
作为人类文明重大成果的汽车产业在嵌入式开发过程中充分应用了嵌入式开发技术的最新成果。汽车行业广泛采用可视化的建模仿真开发工具MATLAB/Simulink/Stateflow进行嵌入式产品开发。而对自动代码生成工具的使用比比皆是。如汽车芯片供应商Infineon公司提供免费的图形化初始化代码生成工具——DAvE(Digital Application virtual Engineer)对其MCU产品进行I/O模块的初始化;许多OSEK操作系统供应商都提供图形化的操作界面来设置任务的属性,配置系统资源;dSPACE公司提供专业的代码生成工具——Targetlink来支持汽车嵌入式产品级代码的自动生成。
2 可视化的建模仿真开发平台—MATLAB/Simulink/Stateflow
MATLAB/Simulink/Stateflow是一个完整的开发环境。它将高性能的数值计算、可视化的框图设计环境、基于有限状态机的理论的复杂的事件驱动系统设计环境集成在一起。它可以:进行系统定义和实现;开发控制算法和嵌入式软件;支持浮点和定点算法的仿真和代码生成。MATLAB/Simulink/Stateflow对自动代码生成提供全面的支持,包含一下几个部分:Real-time workshop(Simulink)、Stateflow coder(Stateflow)、Real-time workshop embedded coder、Embedded target products(针对具体MCU)。Stateflow 与 Simulink 和 MATLAB 紧密集成,可以将 Stateflow 创建的复杂控制逻辑有效地结合到 Simulink 的模型中。它采用可视化建模仿真有限状态机模型;可以设计开发复杂的动态控制逻辑;自动生成浮点或定点C代码并具有简便的修改设计、评估结果、确认系统的品质。由于其强大的功能结合MATLAB/Simulink平台强大的计算和仿真调试能力在嵌入式软件开发领域获得广泛应用。航空航天和汽车行业是MATLAB/Simulink/Stateflow的2个最大的客户群。
3 SAEJ1939协议
SAE J1939协议是由美国汽车工程师协会——卡车和公共汽车电气电子委员会下的卡车和公共汽车控制和通讯网络分委员会制定的高层CAN网络通讯协议。它主要用于为重型道路车辆上电子部件间的通讯提供标准的体系结构[1]。
3.1 SAEJ1939协议构成文件
SAEJ1939协议包括如下几部分内容:
SAE J1939-11  物理层,250 Kbits/s,屏蔽双绞线
SAE J1939-13  物理层,离线诊断连接器
SAE J1939-15  简化的物理层,250 Kbits/s,非屏蔽双绞线
SAE J1939-21  数据链路层
SAE J1939-31  网络层
SAE J1939-71  车辆应用层
SAE J1939-73  应用层-诊断
SAE J1939-81    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(参数组)。该层包含管理功能和所采用的支持应用的机制。在应用层技术要求中,对报文格式、ISO拉丁字符集、参数范围、传输重复率、发动机参数的命名规则等方面都有具体的规定和描述[3]。应用层定义的SPN和PGN是最多的。
3.2.5应用层-诊断
SAEJ1939应用层-诊断定义了用于诊断服务的报文。诊断报文(DM)提供了进行车辆维修时的功能。SAE J1939-73提供的诊断定义是为了满足所有可能使用SAE J1939网络的用户需要的。这些定义适合SAE J1939中定义的所有工业组的应用。诊断必须具有能够满足不同客户、工业组和法规制订机构所需求的诊断能力[4]。
SAE J1939所提供的主要诊断功能包括:周期性广播活动诊断故障代码;确定控制器诊断灯状态;读取或清除诊断故障代码;读写控制器存储器;提供安全功能;停止/起动报文广播;报告诊断就绪状态;监测发动机参数。这些功能分别由诊断报文DM1——DM19具体实现。
3.2.6 网络管理
SAEJ1939的网络管理负责源地址管理、地址与功能的关联和对网络相关错误的检测和报告。它定义了名称和地址方面的需求、网络管理过程、网络错误管理、地址声明和CA(控制器应用)的初始化过程和最低限度的网络管理功能[5]。
4 SAEJ1939协议软件开发
SAEJ1939是一个复杂、完整的汽车网络体系结构,其软件实现是一项大型的系统工程。其复杂性尤其表现在:
(1) 数据链路层的传输协议——用于传送多包的长报文(最多255包,1785字节),具有详细完整的连接管理功能定义,以保证在各种情况下系统都能够稳定可靠地工作。连接管理包括广播,建立点对点会话连接、维持连接、终止连接、流控制、报文结束应答的详细约定。这部分协议还规定了在各种情况下的超时和错误处理。传输协议的软件系统架构是状态图和流程图复杂地交织在一起的混合体。以传统的软件设计、实现方式开发这部分内容需要丰富的经验和高超的技巧。
(2) 网络管理——网络管理规定了系统初始化过程中进行地址声明的过程。设计了在发生地址冲突时,单一地址能力CA(Controller Appliaction——控制器应用)、仲裁地址能力CA和命令地址能力CA的状态转移。网络管理部分软件设计的突出特点是状态转移图。
(3) 应用层—故障诊断——SAE J1939所提供的主要诊断功能包括:周期性广播活动诊断故障代码;确定控制器诊断灯状态;读取或清除诊断故障代码;读写控制器存储器;提供安全功能;停止/起动报文广播;报告诊断就绪状态;监测发动机参数。这些功能分别由诊断报文DM1——DM19具体实现。其中DM1报文是诊断报文中最基本、最常用,也是最重要的。它周期性地向SAE J1939网络广播当前故障信息(以1秒为间隔)。如果有新的故障发生或当前的某个故障消失,它会即时向网络广播故障变化情况。
上述三部分的软件开发均包含了复杂的状态/流程图的设计、仿真调试和代码实现,是SAEJ1939软件开发最复杂的部分。对这部分软件开发所采用的开发模式、开发流程和开发工具将对开发的水平、质量和效率产生很大影响。
由于MATLAB/Simulink/Stateflow实现了可视化的数值计算,可视化的动态系统建模、分析和仿真和可视化的有限状态机建模和仿真调试的无缝集成,它已经成为很多行业的高层软件开发平台。在航空航天领域和汽车界尤其如此。近年来,由于该开发平台在自动代码生成方面的显著进步大大提升了它对嵌入式开发的支持能力,加速了嵌入式开发向该开发平台的转移。这些优良特性使它非常适合进行汽车网络协议的复杂状态机/流程图设计、仿真调试和嵌入式代码生成。图1是开发过程示意图。首先在Stateflow上进行SAEJ1939系统框架、状态机/流程图设计;然后在MATLAB/Simulink中下建立仿真调试环境(包括仿真调试的数据输入/输出接口和用户界面),并在此仿真调试环境中进行仿真测试、修改设计直到控制逻辑稳定为止。随后的工作是利用代码生成技术产生嵌入式代码的协议栈并实现与底层驱动的集成。最后通过网络测试平台对目标系统进行实时测试,测试平台采用专业开发工具供应商——德国Vector公司的CANoe。

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

图2

图3
4.2 Stateflow模型
SAEJ1939协议栈核心包含网络管理模型、数据链路层模型、应用层诊断模型和应用层模型这几个子模型。它们都是在Stateflow环境下建立的基于有限状态机理论的状态/流程图。这些复杂的逻辑需要外加仿真测试接口才能进行仿真调试。仿真调试可以检查系统控制逻辑是否存在问题并在设计阶段就进行设计改进。图4为数据链路层的传输协议的点对点会话的接收方的状态/流程图。由于在图形化的有限状态机开发工具Stateflow上进行开发调试,这些复杂的控制逻辑得以由几个人在较短的时间内开发完成。

图4
4.3  嵌入式目标系统的集成与测试
SAEJ1939协议栈核心状态/流程图经过仿真测试后,将其生成的代码与CAN的底层驱动集成在一个32位的ARM目标机上。采用专业的网络系统设计、开发和测试工具CANoe(德国Vector公司的网络系统开发工具)进行了实时测试。CANoe端的测试程序是CANoe上的一个SAEJ1939例程。这是一个包含了发动机ECU,变速箱ECU,ABS,缓速器ECU,整车ECU和一个网桥的SAEJ1939例程,见图5。该例程在没有外部实节点时可以进行全网络虚拟仿真,通过Trace窗口观察和监测所有报文,通过Panel仿真界面显示发动机,变速箱,ABS等节点的工作状态,非常直观地显示换档过程的工作状态。将该例程作为测试程序时,将虚拟总线设置改为真实总线并将ARM目标机节点通过CAN总线连接到CANoe,同时断开原来的某个虚拟节点与总线的连接。本项目完成了ARM目标机作为发动机ECU/自动变速箱ECU/ABS实节点,CANoe端仿真测试程序作为系统其余虚拟节点的测试。测试显示:ARM目标机实节点与CANoe端虚拟网络的通讯连接工作正常,与原来的全系统虚拟仿真完全一致。
由于采用了先进的开发模式,可视化的高层开发平台和专业的测试工具,SAEJ1939协议的软件开发历程与传统的方式(外国专业公司)相比在人力投入和开发时间方面都大幅减少。

图5 动力总成系统网络拓扑结构
5 本文总结
采用新的开发模式,将嵌入式开发转移到先进的高层开发平台可以大大加快嵌入式软件的开发过程,提高开发水平;高层开发平台MATLAB/Simulink/Stateflow所提供的图形化软件设计,功能强大的仿真调试环境和自动代码生成技术是对嵌入式开发的重大;由于Stateflow 与 Simulink 和 MATLAB 的紧密集成和自动代码生成技术的完善,它已经成为诸如汽车网络系统这样复杂的事件驱动嵌入式系统设计的重要开发平台。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-11-2024 21:37 , Processed in 0.356864 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.