传统开发方式到基于模型 设计的转换 - mathworks · (.xls) binary code (.abs) unit...

40
0 Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD. © 2015 The MathWorks, Inc 传统开发方式到基于模型 设计的转换 南京富士通南大软件技术有限公司 刘欣

Upload: others

Post on 12-Mar-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

0Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD. © 2015 The MathWorks, Inc.

传统开发方式到基于模型设计的转换

南京富士通南大软件技术有限公司刘欣

1Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

背景介绍

▪ 传统开发方式和MBD开发简介▪ 开发方式的对比▪ 转换流程

2Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

传统开发方式和MBD开发简介

SILS/PILS

要求分析 产品完成

Verification

Validation

Unit TestDetail Design

Implementation基于模型生成代码

Prototype Development

Simulation

Model Based Validation

System TestRequirementAnalysis

RCP

MILS

MBD V字开发流程

--- 技术缩略语---

MBD:Model Based Development

MILS:Model In the Loop Simulation

RCP :Rapid Control Prototype

SILS:Software In the Loop Simulation

PILS:Process In the Loop Simulation

HILS:Hardware In the Loop Simulation

HILS

PCG

2

传统开发方式

控制设计

长时间反复调试

手写代码

实机测试

MBD

3Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

开发方式的对比

项目开发实际问题 传统开发方式 MBD开发方式

实际电路板测试才能发现问题 实机测试阶段才能发现问题 开发早期阶段即能发现问题

实际电路板经常在测试中损坏难以定位问题点(设计?编码?电路?)

人为错误易混入难以定位出错的问题点

避免人为错误混入易于定位出错的问题点

产品开发周期长、成本高 开发周期长,成本高 开发周期短,成本低

为了降低开发成本,提高开发品质,将传统开发转到MBD

4Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

追加被控对象

转换流程

代码理解手写C代码 PCG模型 MILS模型

(开环)模型优化

软件工程师 软件工程师 应用工程师

仿真确定 MILS模型(闭环)

PCG: Production Code Generation

5Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

手写代码到PCG模型的转换

▪ 系统背景介绍▪ 软件结构分析▪ 模型搭建▪ 模型生成代码优化

6Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

系统背景介绍

软件

硬件

将交流电源转换为直流电流,提供主板等供电

• MATLAB• Simulink• Embedded Coder• Fixed-Point Designer• MATLAB Coder• Simulink Coder• Stateflow• Texas Instrument Support Package

输入AC200V

控制芯片

输出DC12V

7Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

软件结构分析

Main

初始化设定

while(1){

}

AD采样

控制算法通信机能辅助机能

中断使能

PWM控制

PWM中断1

中断

Main

AD采样

控制算法

PWM控制中断

PWM中断2

代码层级 内容 实现方法

APL 控制算法 标准模块+自定义模块

PLAT AD,PWM处理等 标准模块

CMU 外部输入标准电压 自定义模块封装

Driver 硬件驱动 Support Package模块

TASK 任务调度 Support Package模块+自定义模块

APL

PLAT

PLAT

Driver

Task

CMU

8Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

软件整体结构解析

任务调度Task

PWM中断1APLPLAT

PWM中断2APLPLAT

触发 触发

MainAPLCMUDriver

数据交换 数据交换

顶层设计

9Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建任务调度

PWM中断1 PWM中断2

Main通信机能

Main辅助机能

Main辅助机能

10Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

中断内部

AD转换结果

Duty

Vout

PWM

电压电流

参考电压

中断控制

被控对象

通信 控制算法 PWM控制

AD转换

电路

Vin

被控对象不放入PCG模型中断控制的内容放入PCG模型

11Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

中断内部

AD 控制算法 PWM

12Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建-APL

自定义模块封装算法

传递函数

生成代码时调用了TI的DPLib库,可以调用汇编代码加快实行速度

13Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建-PLAT

AD、PWM的输入输出进行精度转换、上下限等处理 AD、PWM的采样/波形等的设置

14Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建-CMU

▪ 自定义模块,符合行业标准的通信协议。满足客户的自定义需求。– http://www.pmbus.org/Home

– 地址设定,符合标准的Command自由选择

– 包含驱动在内全部生成

– 根据客户要求随时扩展

– 代码内参数可见,利于调试

15Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建-Driver硬件部分(AD,PWM等)由TI提供的库实现,将需要设置的硬件参数反映到相应的模块上即可通过阅读硬件手册和模块的帮助文档,理解要求式样后,设置需要的参数,Driver会自动生成

厂商的Support Package提供的驱动是通用驱动,只适用于小型项目。用于复杂项目时,针对不同的需求,修改驱动(TLC文件)是必须的,甚至重新开发一部分驱动也是可能的。

16Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型搭建-Task中断控制 Main函数

TI提供的中断管理模块 自定义的Main函数管理模块

17Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

性能要求达成

优化手段 优化内容

标准模块替换 封装库函数,使用更高效的算法API

代码库替换 使用更高效的算法API

调整固定点精度 优化精度,减少不必要的精度转换

活用Stateflow 状态控制,避免过于复杂的模型

因为硬件资源的限制,原始的手工代码经过多次优化,比如:定点化、调用专用的API、嵌入汇编等。自动生成的代码,也可以做类似的优化,以满足苛刻的硬件资源限制

18Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型生成代码优化-标准模块替换如果对标准Simulink模块生成的代码的执行效率不满意,可以自定义模块,生成代码直接调用芯片厂商提供的快速算法API接口

自定义模块,调用芯片厂商提供的快速API接口,包括基本的min,max处理。相当于在C代码当中嵌入汇编代码,即自动生成调用汇编代码的接口。

19Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型生成代码优化-代码库替换有已经长时间实践过的可靠算法想要继续使用时,可以采用代码库替换的方式,使用手写代码的函数替换标准Simulink模块生成的函数。

以替换n-D LookupTable的算法函数为例

20Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型生成代码优化-代码库替换(续)

对n-D Lookup Table的算法函数进行集体替换,使之根据不同的输入类型,能够自动替换为相应的手写算法

21Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型生成代码优化-固定点精度采用合适的固定点精度。可用利用Fixed Point Designer来辅助

原先手写代码时,需要对几乎所有的运算手动进行精度设定,每一步都要进行精度计算。利用工具进行辅助设定后,只要对关键节点进行精度设定(Lock),剩余部分采用工具自动进行设定,大大简化了设计流程。

22Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

模型生成代码优化-状态机复杂的状态机逻辑可以使用Stateflow来进行处理

switch(xxx_controlmode){case MODE1:

…case MODE2:

…default:

break;}

比如说状态跳转的switch case的代码,都可以用stateflow来实现,直观并且易于理解。

23Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

手写代码与模型的一致性检证

▪ 使用Simulink进行一致性检证▪ 基于SLDV的单体检证工具▪ 应用实例

24Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

使用Simulink进行一致性检证

模型 人工设计测试用例 人工手动确认

模型自动设计测试用例 自动结果比较

注1:

使用Simulink可以做到

通过静态分析模型路径、边界值,

为单体检证提供自动化用例生成

通过CoverageReport报告生成

用例的结构覆盖度,并显示无法

满足的判定目标及发生原因1

生成的测试用例分别进行模型的

Simulink仿真与代码的虚拟环境

运行并比对结果

模型建好后,需要既有的代码、新生成的代码进行一致性验证,确保模型搭建的正确性

自动生成测试用例和覆盖率报告相对手工方式,可以大幅削减测试时间,提高测试效率

25Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

Simulink相关组件简介

▪ Simulink Design Verifier:识别设计错误、生成测试用例、验证设计需求– 使用形式化方法来识别模型中隐藏的设计错误

– 为模型覆盖和自定义目标生成测试输入。

▪ Simulink Coverage(Simulink Verification and Validation):测量模型和生成的代码中的测试覆盖率– 执行模型和代码覆盖率分析,以测量模型和生成的代码中的测试完整度。

– 生成交互式报告,可以高亮模块和子系统中的覆盖结果,以直观地显示测试中的差距。

▪ 基于以上两种组件,开发自制工具,使用SLDV生成测试向量,分别在模型和既有代码中执行,比较两者结果。利用Simulink Coverage查看覆盖率,不足的部分进行手动添加测试用例。

26Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

基于Simulink相关组件的单体检证工具

Comparator

MATLAB Simulation

Run Code with IDE

SLCData Dictionary(.xls)

BinaryCode(.abs)

Unit test report(.html)

Coverage report(.html)

Test vector(.xls)

Model splitter

SLDVSplitModel(.mdl)

MATLAB tool customize tool file

EmulationResult(.xls)

SimulationResult(.mat)

MATLABWorkspace(.mat)

OriginalModel(.mdl)

①Model splitterSLDV对于过于复杂的模型生成测试用例的时间太长,所以需要将模型进行分割

②SLDV(Simulink Design Verifier)对分割的模型,用SLDV生成测试向量

③SLC(Simulink Coverage)生成覆盖度报告(MC/DC等)如果覆盖度不理想,可以手动追加测试用例

④MATLAB Simulation对于分割的模型,实施仿真

⑤Run Code with IDESLDV输出的测试向量作为代码的输入分割模型对应的函数分别进行单元测试

⑥ComparatorMATLAB的仿真结果和IDE的代码运行结果进行比较误差超过范围的情况,在测试报告上重点标出

因为是转换项目(手写代码已经做过功能验证),所以这里只做对比测试

27Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

应用实例 只需一条命令,即可完成上述6个功能

①在要测试的代码中嵌入单元测试的代码

②准备好需要的素材(模型、数据字典等)

③执行命令

④等待命令执行完了

28Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

应用实例(续)⑤查看测试报告

⑥查看代码和模型运行的比较结果代码和模型运行结果

代码和模型运行结果差分

点击⑤中红框内的文字,可以直接打开⑥的结果图片查看比较结果

29Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

应用实例(续)⑦查看覆盖率报告

点击⑦中红框内的文字,可以打开对应的检证产物的文件夹

30Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

PCG模型到MILS模型的转换

▪ 剥离算法无关部分▪ 将算法无关部分转换为Simulink模块

31Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

剥离算法无关部分

代码层级 内容 处理

APL 控制算法 保留内容,还原优化部分,即采用Simulink标准模块

PLAT AD,PWM处理等 保留内容

CMU 外部输入标准电压 删除

Driver 硬件驱动 转换为Simulink标准模块

TASK 任务调度 转换为Simulink标准模块

PCG模型验证完成后,我们再将其转换为MILS模型,方便今后算法的调试

可以采用Model Reference的形式,把保留的PCG模型的内容引用到MILS模型上面来。

32Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

剥离算法无关部分-任务调度

任务调度Task

PWM中断1APLPLAT

PWM中断2APLPLAT

触发 触发

MainAPLCMUDriver

数据交换 数据交换

顶层设计

任务调度转换为Simulink标准模块

任务调度转换为Simulink标准模块

33Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

剥离算法无关部分-任务调度(续)

任务调度转换为Simulink标准模块

任务调度转换为Simulink标准模块

任务调度转换为Simulink标准模块

任务调度转换为Simulink标准模块

34Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

剥离算法无关部分-中断内部

AD转换结果

Duty

Vout

PWM

电压电流

参考电压

中断控制

被控对象

通信 控制算法 PWM控制

AD转换

电路

Vin

AD转换为Simulink标准模块

控制算法保留,还原优化部分

PWM转换为Simulink标准模块

35Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

剥离算法无关部分-中断内部(续)

AD转换为Simulink标准模块通过Subsystem封装

控制算法保留,还原优化部分通过Subsystem封装

PWM转换为Simulink标准模块

通过Subsystem封装

36Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

MILS模型整体结构

控制算法 硬件驱动 被控对象任务调度

PWM 电路

AD

37Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

将算法无关部分转换为Simulink模块任务调度

采用Pulse Generator的上升沿来模拟触发中断 求解器当中的设置来模拟main函数的实行

38Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

将算法无关部分转换为Simulink模块(续)AD

通过滤波、增益放大等方式,模拟AD转换

PWM

根据代码解读出的式样,输出给PWM的模块信号,通过Relay等模块转换为波形

39Copyright 2018 NANJING FUJITSU NANDA SOFTWARE TECHNOLOGY CO., LTD.

总结

▪ 代码→PCG模型:对代码结构进行解析分层。优化模型。测试检证。

▪ PCG模型→MILS模型:剥离算法无关部分。被控对象也可以做成模型。

▪ 代码→PCG模型→MILS模型:转换完成后,之后的开发,可按照MBD的标准流程进行。

• 转为MBD之后,开发时间缩短为原来的1/3,加速开发,节约成本• 以现有产品模型为基础,新产品开发更为便捷,更加易于展开