2015 The MathWorks, Inc. 1
使用基于模型的设计进行产品化控制算法开发 (II) 李春彦 应用工程师 MathWorks China 2015 The MathWorks, Inc. 2
基于模型的设计 Concept Requirements Control Electrical, Hydraulic Mechanical Target System Deploy Complete Integration System Design Hardware Test 管理复杂性 团队合作 基于元件的建模 早期的验证和确认 自动化代码生成 Component Design Code Test Implementation 3
基于模型设计 集成工具链 Simulink, Model coverage (SLVnV), Requirements Management Interface (SLVnV) Module & integration testing at model level Review and static analysis at model level PIL testing / CGV (Embedded Coder), Test generation (SLDV) Equivalence Testing Prevention of unintended functionality Textual Requirements Executable Specification Model for Production Code Gen. Generated Code Object Code Simulink, Stateflow, Simulink Fixed Point Embedded Coder 4
议程 基于模型设计 早期验证与确认 模型验证与确认技术 模型测试管理 (Simulink Test) 基于模型设计 自动代码生成 模型数据管理 - 数据字典 代码生成优化 代码与模型的等效性测试 总结 5
模型验证和确认, Why? 基于模型设计使重用模型变得简单 测试模型比测试代码更快速, 更容易 质量控制 模型 代码 6
模型验证与确认的主要技术 合作 : 建模规范检查 追踪设计更改 : 追溯分析 Requirements Model User Acceptance 结构性验证 : 测试覆盖度度量 Design Integration 形式化验证 : 静态错误检查 测试用例生成 属性证明 Code 7
Simulink Test (R2015a 新工具 ) 1. 测试环境 (Test Harness) 同步的 可仿真的测试环境 2. 测试序列 (Test Sequence Block) 基于逻辑和时间条件的输入及评估 3. 测试管理 (Test Manager) 创建 执行 管理测试 评审 导出 报告生成 Test Harness Main Model Component under test 8
单元测试 检查不可达的设计逻辑 结构覆盖度报告 设计 仿真并验证控制器性能 功能性测试 9
模型覆盖度? 模型和执行路径的测试完整性 在仿真过程中收集数据, 并生产覆盖度报告 10
模型验证与确认 - 产品 MAP 保证设计一致性 DO 178, ISO 26262, MISRA 需求追踪 模型覆盖度 设计错误检查, 测试用例生成, 属性证明 测试管理 Simulink Verification & Validation Simulink Design Verifier Simulink Test 报告生成 Simulink Report Generator 11
议程 基于模型设计 早期验证与确认 模型验证与确认技术 模型测试管理 (Simulink Test) 基于模型设计 自动代码生成 模型数据管理 - 数据字典 代码生成优化 代码与模型的等效性测试 总结 12
自动代码生成? 生成代码的效率? 安全性? 可读性? 生成的代码如何使用? 模型参数? 如何通过标准认证? 13
模型数据管理 Tips: 模型和数据分开管理 数据字典 ( 通过数据对象 ) 2 个关键的数据属性 : 数据类型 (uint8, int16, double, single ) 数据的存储类型 (Auto/SimulinkGlobal, ExportedGlobal ) 存储类型决定了数据在生成的代码中是如何声明 定义并访问的 Data Type Data Management Data Type Object Control In Model Data Dictionary Storage Class Data Object Signal Parameter Signal Parameter 14
数据管理 : 数据字典 Data Dictionary 15
代码生成优化 代码的优化目标? 安全? 更高效? 可读性? 代码重用? 函数原型控制? 使用第三方库函数? 16
等效性测试 测试用例? Simulink Design Verifier 代码验证 19
自动生成代码与目标的集成方式 算法输出 将自动生成的代码集成到现有框架中 最流行的方式 自动生成完整的可执行目标 MathWorks 提供的目标支持包 第三方目标产品工具 构建自己的链接或目标 20
BLACK BOX P O W E R V R C S I N P U T B L U E G R E E N R E D Algorithm Export Controller Model Communication Interfaces Comm Drivers Generated Algorithm Code Output Drivers M Actuators Sensors A B C Input Drivers Legacy Algorithm Code Target Specific Algorithm Code Special Device Drivers Tuning RGBSplit-4 Special Interfaces Scheduler/Operating System and Support Utilities 21
自动生成代码与目标的集成方式 算法输出 将自动生成的代码集成到现有框架中 最流行的方式 自动生成完整的可执行目标 MathWorks 提供的目标支持包 第三方目标产品工具 构建自己的链接或目标 22
BLACK BOX P O W E R V R C S I N P U T B L U E G R E E N R E D 生成完整的可执行目标 Communication Interfaces Comm Drivers Controller Model Generated Algorithm Code Output Drivers Notes: - Complete executable generated with real-time scheduler - Automated build via project creation or makefile - Device driver and timer blocks M Actuators Sensors A B C Input Drivers Optional Target Optimized Code Special Device Drivers Tuning RGBSplit-4 Special Interfaces Scheduler/Operating System and Support Utilities 23
自动代码生成? 生成代码的效率? 安全性? 可读性? 生成的代码如何使用? 模型可调参数? 如何通过标准认证? 24
议程 基于模型设计 早期验证与确认 模型验证与确认技术 模型测试管理 (Simulink Test) 基于模型设计 自动代码生成 模型数据管理 - 数据字典 代码生成优化 代码与模型的等效性测试 总结 25
总结 Target System 明确可执行的模型作为设计 文档和规范 Concept Control Electrical, Hydraulic Mechanical Deploy 具有仿真功能的设计 Requirements Complete Integration 系统建模 控制策略优化 实现早期验证和持续验证 支持自动代码生成 System Design Component Design Implementation Code Test Hardware Test 管理复杂性 团队合作 基于元件的建模 早期的验证和确认 自动化代码生成 26
Alstom Generates Production Code for Safety-Critical Power Converter Control Systems Challenge Design Alstom and 的工程师在不同的项目上重用 implement real-time power conversion Simulink 模型 and,mathworks 的工具帮助 control 他们确定设计模式并通过模型库来分享知识 systems for trams, metros, and railways 电车项目和能量管理项目的故障处理和电气模型是公用的 Solution Pendolino tilting train. Use MathWorks tools for Model-Based Design to design, simulate, and automatically generate production code for safety-critical... 开发小组使用 transportation Simulink Coder systems 和 Embedded Coder 自动生成产品级 C 代码, 将 When Alstom delivered a 代码与实时操作系统集成 项目手动编码需要 2000 小时, 使用 Simulink 和 Results Stateflow 重现项目设计用了 1000 小时, 从设计完成到首个原型机出来的时间 Pendolino train to Czech 从 3 Development 个月缩减到 1 time 小时 cut 我们没有在使用 by 50% MathWorks 工具自动生成的代码里发 Railways, the railway 现任何错误 Defect-free,, 当 safety-critical Alstom 将 Pendolino code generated 列车用于捷克铁路 and certified, 这个应用是第一个自 application was the first with 动生成代码获得 Common language TUV 认证的 established automatically generated code to receive TUV certification. Han Geerligs Alstom Link to user story 27
Q&A 29