用项目以编程方式生成代码和模拟模型
这个例子展示了如何使用项目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.m
,generate_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);
另请参阅
addFile
,addFolderIncludingChildFiles
,目录
,addReference
,addShortcut
,addLabel
,关闭
,createCategory
,createLabel
,出口
,findCategory
,findFile
,findLabel
,isLoaded
,listModifiedFiles
,listRequiredFiles
,refreshSourceControl
,重新加载
,removeCategory
,removeFile
,removeLabel
,removePath
,removeReference
,removeShortcut