统一的模型和代码验证
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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规则兼容的
我们的方法将会在功能测试之前进行检查,在开发过程的早
期最小化返工