统一的模型和代码验证

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

统一的模型和代码验证

23 June2016

宋登Application Engineering

▪当前大多数控制系统软件既包含模型自动生成代码又包含手写代码▪如何高效的测试混在一起的手写代码和自动生成代码呢?

▪MathWorks提供了不同的工具用于测试模型和代码

▪有没有一个流程可以以最高效的方式使用这些工具呢?

▪功能测试之前模型和代码的静态分析

▪动态测试:对模型、S-function和自动生成的代码进行功能验证▪静态分析集成的代码:手写代码、S-function和自动生成代码▪统一的、互为补充的模型和代码验证流,持续提高产品信心

案例研究:

巡航定速控制应用

65mph

目标: 根据驾驶员的操控和车辆的运行工况设定目标速度和踏板位置

巡航定速控制应用(C 代码)

•手写代码模块单元

•基于模型的Stateflow 模块单元

•基于模型的S-function 模块单元

案例研究: 巡航定速控制系统架构

巡航定速控制系统

读取输入

故障日志

踏板命令控制模块

控制输出

手写代码自动生成代码S-function 代码

目标速度控制模块

功能调度

系统输入

Cruise Power

Brake Vehicle Speed Coast/Set Accel/Resume

系统输出

Target Speed Engaged

Pedal Position

案例研究: Roles & Workflow

▪MBD 控制模块负责人: Chuck –基于Simulink模型进行开发

–通过s-functions在模型中集成C代码–产生代码

–依靠基于模型的测试方法

▪集成和编译负责人: Anthony

–基于手写C代码进行开发

–集成手写代码和自动生成代码–创建ECU编译

–依靠HiL设备进行测试

读取输入

故障日志

控制输出

巡航定速控制应

用系统

目标速度控制模块

踏板命令控制模块

自动生成的

C代码

集成的

C 代码

案例研究: 向客户提交第一个发布版本

向客户提交的第一个版本必须包含如下新功能/改变:

▪目标速度模块中的信号/标定量从浮点类型转为整型

▪在踏板命令模块中包含用户的查找表以便支持标定

▪展示生成的代码是遵循MISRA编码规范的

▪移除无用的故障记录

▪移植代码运行在用户的ECU (14-bit to 12-bit ADC)

除了这些改变,我们还需要向用户提供基于模型的模块和集成代码功能测试报告。

基于模型的设计任务

首先关注在基于模型的设计任务中可以进行哪些检查:

▪将目标速度模块单元中的信号/标定量从浮点类型转换成整型

▪在踏板命令模块中包含用户查找表以便支持标定

▪展示自动生成的代码是MISRA规则兼容的

我们的方法将会在功能测试之前进行检查,在开发过程的早

期最小化返工

浮点型到整型的转换:

检查模型中设计错误

目标速度控制模块

Simulink Design Verifier识别可以产生“dead logic”的模型设计错误,确

保功能测试能够顺利进行

Dead Logic的根源分析/修复

条件不可能为false

▪Dead logic是因为incdec/holdrate*10 中的“uint8”运算

▪Fix:改变运算顺序为10*incdec/holdrate

基于模型的设计任务

首先关注在基于模型的设计任务中可以进行哪些检查:

▪将目标速度模块单元中的信号/标定量从浮点类型转换成整型

▪在踏板命令模块中包含用户查找表以便支持标定

▪展示自动生成的代码是MISRA规则兼容的

我们的方法将会在功能测试之前进行检查,在开发过程的早

期最小化返工

用户查找表: 检查S-Function代码是否含有Runtime Errors

踏板命令控制模块

S-Function中Run-time Errors的根源分析/修复

踏板命令控制模块

基于模型的设计任务

首先关注在基于模型的设计任务中可以进行哪些检查:

▪将目标速度模块单元中的信号/标定量从浮点型转换成整型

▪在踏板命令模块单元中包含用户查找表以便支持标定

▪展示自动生成的代码是MISRA规则兼容的

我们的方法将会在功能测试之前进行检查,在开发过程的早

期最小化返工

☑检测模型设计和代码生成配置

☑提高产生遵循MISRA C:2012 编码规范的代码

从模型中配置Polyspace验证选项

目标速度控制模块

从模型中启动Polyspace进行验证

目标速度控制模块

查看Bug Finder MISRA 分析结果

目标速度控制模块

设置“Code Placement” 减少MISRA 冲突

目标速度控制模块

通过添加注释解释其它MISRA冲突

目标速度控制模块

基于模型的设计任务

首先关注在基于模型的设计任务中可以进行哪些检查:

▪将目标速度模块单元的信号/标定量从浮点型转换为整型

▪在踏板命令模块单元中包含用户的查找表以便支持标定

▪展示自动生成的代码是MISRA规则兼容的

我们的方法将会在功能测试之前进行检查,在开发过程的早

期最小化返工

相关文档
最新文档