主要内容

用项目以编程方式生成代码和模拟模型

这个例子展示了如何使用项目API来创建一个新的项目,并自动化项目任务来操作文件。它涵盖了如何以编程方式创建一个空白项目、添加文件和文件夹、设置项目路径、定义项目快捷方式、生成代码以及模拟利用模型。

Project通过管理和共享文件和设置、查找所需文件以及与源代码控制交互来帮助您组织大型设计。

管理一个基于模型的设计项目

示例模型提供了一个控制器,该控制器将摄像机固定在跟踪绿色球的直流电机上。

MBD方法可以对控制器操作进行建模:

  • 模型工厂:工厂是一个直流电机,旋转重新定位相机。

  • 模型控制器:本设计采用角位置反馈的PID控制器对直流电机进行定位。

  • 模型高级球跟踪调度器:调度器检查绿球位置的有效性和参考角度的饱和度。调度器处理要跟踪的屏幕上没有球的实例。

设计和项目有以下文件夹。

植物——工厂提供:

  • 使用基本Simulink块的连续时间动态系统模型。金宝app

  • 使用LTI系统块的线性时不变(LTI)系统模型。

  • 在工作区中导入和导出模拟数据

  • 将参数加载到使用数据字典和模型回调的基本工作空间。

控制器——控制器提供:

  • 使用基本Simulink块的离散动态系统模型。金宝app

  • 使用PID控制器块的离散动态系统模型。

  • 强制信号饱和,使用PWM转换子系统。

球跟踪-球跟踪提供:

  • 基本的球追踪算法。

  • 终止符和接地块作为占位符。

  • 使用Stateflow生成电机参考角的混合控制器。

利用安全带提供了整个系统的顶级模拟。

创建一个空白项目并添加文件

1.创建一个空白项目。在首页选项卡上,单击>项目>空白项目。

或者,创建这个项目,并使用currentProject从命令窗口获取一个项目对象来操作项目:

matlab.project.createProject (“modelBasedDesignCodeGenProject”);proj_modelBasedDesignCodeGen = currentProject
proj_modelBasedDesignCodeGen =项目属性:名称:"modelBasedDesignCodeGenProject" sourcecontrointegration: "" RepositoryLocation: "" SourceControlMessages: [1×0 string] ReadOnly: 0 TopLevel: 1依赖项:[1×1 digraph]类别:[1×1 lab. Project。文件:[1×0 matlab.project.]项目File] Shortcuts: [1×0 matlab.project.Shortcut] ProjectPath: [1×0 matlab.project.PathFolder] ProjectReferences: [1×0 matlab.project.ProjectReference] StartupFiles: [1×0 string] ShutdownFiles: [1×0 string] Description: "" RootFolder: "C:\workSpace\modelBasedDesignCodeGenProject" SimulinkCodeGenFolder: "" SimulinkCacheFolder: "" ProjectStartupFolder: "C:\workSpace\modelBasedDesignCodeGenProject"

2.将示例文件复制到Project中的文件夹中。

或者,在命令窗口中输入:

拷贝文件(fullfile (matlabroot,“工具箱”“环球套票”“rtwdemos”“slproject_codegen_demo”),...fullfile (pwd),“f”);

3.将现有文件添加到项目中:

  • 单击项目文件视图按钮并选择所有文件视图

  • 选择文件夹ball_tracking控制器利用植物,公用事业公司,右键单击其中一个文件夹的图标,然后选择向项目添加文件夹(包括子文件)

或者,从命令窗口以编程方式将这些文件添加到项目中:

addFolderIncludingChildFiles (proj_modelBasedDesignCodeGen“ball_tracking”);目录(proj_modelBasedDesignCodeGen“ball_tracking”);addFolderIncludingChildFiles (proj_modelBasedDesignCodeGen“控制器”);目录(proj_modelBasedDesignCodeGen“控制器”);addFolderIncludingChildFiles (proj_modelBasedDesignCodeGen“利用”);目录(proj_modelBasedDesignCodeGen“利用”);addFolderIncludingChildFiles (proj_modelBasedDesignCodeGen“植物”);目录(proj_modelBasedDesignCodeGen“植物”);addFolderIncludingChildFiles (proj_modelBasedDesignCodeGen“公用事业”);目录(proj_modelBasedDesignCodeGen“公用事业”);

4.选择工作文件夹,右键单击其中一个文件夹的图标,然后选择项目路径>添加到项目路径(包括子文件夹).如果您选择将此文件夹添加到路径中,则在项目路径上可以使用来自模拟和代码生成的生成文件(工件)。如果您选择不将生成的文件包含在项目中,依赖关系图将不显示这些文件。

或者,从命令窗口将这个文件夹添加到项目路径:

目录(proj_modelBasedDesignCodeGen‘工作’);

5.要使项目更易于访问,请定义和设置项目快捷方式的属性。在文件视图,选择项目选项卡。打开公用事业公司文件夹节点。

6.选择文件clean_up_project.mgenerate_controller_code.m,set_up_project.m,右键单击其中一个文件的图标,然后选择创建快捷方式

7.要设置当前工作文件夹,请设置模拟缓存文件夹,并在打开项目时运行其他设置脚本:

  • 选择set_up_project.m脚本。

  • 右键单击该文件。

  • 选择在启动时运行

或者,从命令窗口添加这个设置脚本到项目启动:

addStartupFile (proj_modelBasedDesignCodeGen fullfile (pwd,“/工具/ set_up_project.m”));

8.关闭项目时,要恢复以前的设置并运行其他清理脚本:

  • 选择clean_up_project.m脚本。

  • 右键单击该文件。

  • 选择关机运行

或者,从命令窗口以编程方式将清理脚本添加到项目关闭中:

addShutdownFile (proj_modelBasedDesignCodeGen fullfile (pwd,“/工具/ clean_up_project.m”));

9.重新打开项目以运行启动快捷方式。

或者,重新加载项目并运行set_up_project从命令窗口:

重载(proj_modelBasedDesignCodeGen);运行(“set_up_project”);

从依赖关系图为控制器生成代码

1.项目选项卡上,单击依赖分析仪对项目中的所有文件运行依赖项分析。

依赖关系图显示了项目结构和文件依赖关系。它显示了文件之间的关系。图中的每个项代表一个文件,每个箭头代表一个依赖项。

的内容工作文件夹不会出现在依赖关系图中。此设置简化了视图,以指示模型文件和中的依赖项.m脚本文件。

一个。检查属性窗格右侧的窗格中显示有关项目的有用信息,例如所需的产品和问题文件。下载188bet金宝搏

b。使用放大按钮放大依赖关系映射。使用方向键或鼠标滚轮点击拖动在地图中移动。

c。将鼠标悬停在依赖项箭头上以检查依赖项类型。例如,MATLAB脚本和函数是由模型回调运行的。

2.选择MBDController.slx在依赖关系映射上建模。右键单击模型并选择开放

3.当模型在Simulink中打开时,单击金宝app构建按钮为模型生成代码。或者,使用generate_controller_code在项目中生成代码的快捷方式。

或者,从命令窗口为模型生成代码。对于本例,将写权限设置为MBDController.slxc然后为模型生成代码:

fileattrib (“MBDController.slxc”' + w ');evalc (“rtwbuild(“MBDController”)”);

4.从“项目”窗口关闭项目。

或者,关闭该项目并运行clean_up_project从命令窗口:

运行(“clean_up_project”);关闭(proj_modelBasedDesignCodeGen);

另请参阅

addFileaddFolderIncludingChildFiles目录addReferenceaddShortcutaddLabel关闭createCategorycreateLabel出口findCategoryfindFilefindLabelisLoadedlistModifiedFileslistRequiredFilesrefreshSourceControl重新加载removeCategoryremoveFileremoveLabelremovePathremoveReferenceremoveShortcut

更多的信息

相关的例子