matlab 是美国the mathworks 公司开发的用于解决科学计算和动态系统建模仿真的软件,目前已成为科学计算、控制系统设计与仿真、图像处理设计与仿真、信号处理设计与仿真等领域的工业标准工具,被广泛应用于航空航天与国防、汽车、教育等行业。航空航天与国防单位普遍使用matlab 作为平台化的工具进行基于模型的产品开发。matlab 为多领域系统设计提供了统一的软件环境,能够进行高性能动态系统的仿真、分析及测试,并能自动生成符合do-178b/c、iso-26262 和misra-c 标准的高效的嵌入式代码,为开发人员提供一体化平台。
为了解决系统开发存在的问题,the mathworks 公司提出了基于模型设计的系统开发流程,贯穿于需求开发、系统设计、代码实现、系统集成及测试验证的各环节。利用matlab/simulink 及兼容的第三方工具即可完成基于模型的产品开发流程,包括建立基于需求的系统模型,并通过仿真验证系统的设计,然后自动将模型生成代码,进而进行代码测试和软硬件集成后系统级的测试与验证。
• 控制系统,如被控对象建模、控制器设计、控制器验证、自动代码生成及部署
• 数字信号处理,如分析信号、开发算法、dsp系统设计和验证
• 通信系统,如通信系统设计和仿真、通信系统测量和分析、为硬件目标建立快速原型
• 图像和视频处理,如采集、处理和分析图像和视频以进行算法开发和系统设计
• fpga设计,如fpga 设计的建模、仿真实现和验证
• 机电系统,设计、优化和验证机电系统
• 测试和测量
3. matlab/simulink—产品功能
matlab 基础环境支持用户通过编写交互式的高级编程语言m 语言脚本或者函数文件进行高效的数据分析、可视化和算法开发工作。the mathworks 公司开发了涉及各专业领域的函数库,涵盖了科学计算、数据处理、控制系统设计与分析、信号和图像处理等领域。用户可以将m 语言编写的函数编译生成c/c++ 共享库、com 组件或可执行文件。
应对大规模的科学计算分析及复杂仿真应用,matlab 提供并行计算的综合方案。利用 parallel computing toolbox,可以使用多核处理器、gpu 和计算机集群来解决计算问题和数据密集型问题。它提供了在本地多核计算机上至多使用16 个workers 执行并行应用的能力。 matlab distributed computing server 可以在大规模计算资源(比如计算机集群或网格以及云计算资源)上运行应用程序。
simulink 可对动态系统进行建模仿真, 包括连续、离散、单速率、多速率、事件驱动等。同时提供面向不同领域的simulink 模型库,包括航空航天库、控制系统、信号处理系统、通讯系统、机/ 电/ 液系统等。用户也可构建自己的模型库,或将已有的matlab、c/c++、fortran 函数封装成simulink模块。stateflow 是基于simulink 用于事件驱动系统建模和仿真的工具,用于各种控制逻辑和控制流程的建模与仿真。simulink verification and validation .、simulink design verifier .、simulink test 等验证、确认、测试相关工具箱可以进行需求追溯、建模规范检查、模型覆盖度分析。matlab coder . 、simulink coder、embedded coder 等代码生成工具箱可以从matlab. 代码、simulink 框图、stateflow 图和 matlab 函数生成嵌入式处理器、目标上的快速原型及产品中使用的微处理器生成可读的、集成的、高效的c/c++ 代码。针对不同行业产品认证要求,matlab/simulink 提供对应的行业工具包,如do qualification kit -(面向适航认证的行业工具包), ieccertification kit (for iec 61508 and iso 26262)- i 电子/ 电力/ 可编程电子器件安全系统国际标准认证包。
.png)
robotics system toolbox 为开发无人装备(无人车/ 无人机)推出的专业工具箱,提供地图呈现、路径规划、路径跟踪算法并满足适合机器人的开发要求。用户可将matlabsimulink 中设计的电机控制算法、计算机视觉和状态机应用程序集成至robotics system toolbox 中。工具箱主要功能如下:
• 路径规划、路径跟踪、和地图生成算法
• 旋转和平移变换生成函数
• 与支持ros的机器人进行在线的双向通信
• 提供gazebo和其他支持ros的仿真器的接口
• 能够从rosbag的记录文件中导入数据
• 能够通过 simulink 模型生成生成 ros 节点(需要 embededcoder 支持)
simulink 验证、确认、测试 工具集可进行需求模型双向追溯分析、建模标准分析、模型测试覆盖度分析、模型测试、模型仿真/ 测试相关的报告生成等功能。
.png)
simulink verification and validation、simulink design verifier、simulink test、matlab report generator、simulink report generator 提供的主要功能如下:
• 实现需求、模型、代码和测试双向追溯
• 自动生成子系统测试框架
• 检测死逻辑、整数和定点溢出、数组访问越界、被零除及需求违反
• 提供子系统或模型测试的测试框架模型
• 提供执行测试和评估的测试序列模块
• 用来编写创建、执行和组织测试用例和结果的测试管理器
• 自动生成报告
embedded coder 可将matlab 函数和simulink 模型生成产品级的代码,它扩展了配置选项和优化设置,来更好的控制生成代码的函数、文件和数据。这些优化设置提高了代码的执行效率,并能够集成产品应用时的外部代码、数据类型及标定参数。还可以将第三方开发环境集成到为嵌入式系统生成可执行文件的build 过程中。embedded coder 具有如下功能:
• 定义嵌入式硬件特性
可从预定义的列表或者使用目标设置为matlab 或者simulink 代码生成选择目标平台。可通过自定义环境来扩展这个预定义的列表。
• 定义及控制自定义数据
embedded coder 可以定义及控制生成代码中的数据格式。为了便于软件集成,可以通过matlab coder 工程用户界面说明入口函数和全局数据的类型、长度及是否是复数。
• 优化及打包代码
使用embedded coder,可控制函数边界、保留表达式,对多个模块使用优化选项以减少代码量。数据通过全局变量或者函数参数的形式与生成的代码进行交换。
• 注释、追溯及记录代码
embedded coder 可将高级需求作为代码注释插入到代码中,与需求文档可进行链接。代码生成报告也包含代码接口描述文件,追溯性报告及可显示生成的源文件和代码。模型和代码间存在双向的链接,可以方便的在每行代码和相关的simulink模型间进行定位,包含子系统、模块、matlab 函数和代码及stateflow 状态图和转换。可点击一个链接以高亮显示相关的模型元素或者代码行,更加方便代码检查和调试。
.png)
• 执行和验证代码
embedded coder 可将生成的代码与代码执行环境进行集成,embedded coder 对matlab 生成的代码的执行与使用matlab coder 生成的代码具有相同的执行框架。
• sil和pil测试
embedded coder 可在simulink 中使用simulink 仿真模型或者s-function 模块自动执行生成代码进行sil 测试,或者在嵌入式目标平台上进行pil 测试。代码生成测试api 可帮助自动测试的执行,并与之前的模型比较测试结果。与第三方工具的集成可进行代码结构覆盖度分析来确保测试的完整性。
应用&案例
• bae systems controls (美国):利用mathworks工具链开发的无人驾驶飞行器的无人驾驶仪
• 中航某主机所(中国):利用mathworks工具链开发飞控系统
• lockheed martin、 nasa(美国):利用 mathworks 工具链开发猎户座飞船(eft-1)gn&c 算法
• 某卫星所(中国):利用mathworks工具开发卫星姿轨控一体化设计平台
• rod millen special vehicles(美国):使用mathworks工具链为军用特种车辆开发悬架系统
• 某发动机电控所(中国):使用mathworks工具链开发军用柴油机电控系统
• sandia (美国):使用matlab,simulink和xilinx dsp 设计工具研发高性能雷达接收器
• 某雷达所(中国):使用 matlab,simulink 研制了雷达伺服系统一体化平台
• bae systems surface ships(英国):利用mathworks工具为royal navy 开发船上模拟训练设备
• 某船舶动力所(中国):利用mathworks工具及实时仿真设备搭建硬件在环测试系统