使用项目API生成代码和模拟模型
此示例演示如何向新项目添加文件、设置项目快捷方式、生成代码和模拟工具模型。本例中的模型演示了基于模型设计(MBD)的一些原则。
这个例子还展示了如何使用Project API来执行许多项目操作。
管理基于模型的设计项目
示例模型提供了一个控制器,该控制器将摄像机固定在跟踪绿色球的直流电机上。
MBD方法导致对控制器操作建模:
模型装置:该装置是一个直流电机,旋转以重新定位相机。
型号控制器:本设计采用带角位置反馈的PID控制器对直流电机进行定位。
模型高级球跟踪调度器:调度器检查绿球位置的有效性和参考角度的饱和度。调度程序处理屏幕上没有要跟踪的球的实例。
设计和项目包含以下部分(文件夹)。
植物—工厂提供:
使用基本Simulink块的连续时间动态系统模型。金宝app
使用线性时不变(LTI)系统块的模型。
从工作区导入和导出模拟数据
将参数加载到使用数据字典和模型回调的基本工作区中。
控制器——控制器提供:
使用基本Simulink块的离散时间动态系统模型。金宝app
使用PID控制器块的离散时间动态系统模型。
使用PWM转换子系统实现信号饱和。
球跟踪——追踪球提供:
基本的球跟踪算法。
终止符和接地块作为占位符。
使用状态流生成电机参考角的混合控制器。
利用—这些套具提供了整个系统的顶级模拟。
创建项目并添加文件
1.从空白项目模板创建项目,然后关闭项目。
要从Simulink开始页面创建此项目:金宝app
在命令窗口中,键入
金宝app
.从开始页面中选择空白项目模板。
创建
modelBasedDesignCodeGenProject
项目。
要使用项目API创建此项目,在命令窗口中输入:
user_root = userpath;checkForFolder =存在(fullfile (user_root“user_proj”));如果(checkForFolder ~= 2) mkdir(user_root)“user_proj”);cd (fullfile (user_root,“user_proj”));其他的cd (fullfile (user_root,“user_proj”));结束
警告:目录已经存在。
checkForProject =存在(”。/ ModelBasedDesignCodeGen ModelBasedDesignCodeGenProject.prj”);如果(checkForProject ~= 2) proj_modelBasedDesignCodeGen = 金宝appSimulink.createFromTemplate(“blank_project.sltx”,“名字”,“modelBasedDesignCodeGenProject”,“文件夹”,”。/ ModelBasedDesignCodeGen ');其他的proj_templateCodeGen = 金宝appsimulinkproject (”。/ ModelBasedDesignCodeGen ModelBasedDesignCodeGenProject.prj”);结束
2.将示例文件复制到项目中的文件夹中。在命令窗口中,输入:
拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”,“rtwdemos”,“slproject_codegen_demo”),...fullfile (pwd),“f”);
3.从“项目”窗口关闭“项目”。
要使用项目API关闭该项目,在命令窗口中输入:
关闭(sim金宝appulinkproject);
4.控件上的选择打开项目最近的项目列表。
要使用项目API打开这个项目,在命令窗口中输入:
金宝appsimulinkproject (fullfile (”。/ ModelBasedDesignCodeGen ModelBasedDesignCodeGenProject.prj”));
5.要将现有文件添加到项目中,请单击项目文件视图按钮并选择所有文件视图.
6.选择文件夹ball_tracking
,控制器
,利用
,植物
,公用事业公司
,右键单击其中一个文件夹的图标,然后选择向项目添加文件夹(包括子文件).
要使用项目API将这些文件添加到项目中,在命令窗口中输入:
proj_modelBasedDesignCodeGen = 金宝appsimulinkproject;如果(2) addfolderinclingchildfiles (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“公用事业”);结束
7.选择工作
文件夹,右键单击其中一个文件夹的图标,然后选择项目路径>添加到项目路径(包括子文件夹).如果您选择将此文件夹添加到路径中,那么从模拟和代码生成生成的文件(工件)将在项目路径中可用。如果您选择不将生成的文件包含在项目中,Dependency Analysis视图将不会显示这些文件。
要使用项目API将此文件夹添加到项目路径中,在命令窗口中输入:
如果(checkForProject ~= 2) addPath(proj_modelBasedDesignCodeGen)‘工作’);结束
8.要使项目更容易访问,请为项目快捷方式定义和设置属性。点击所有文件视图并选择项目文件视图.打开公用事业公司
文件夹节点。
9.选择的文件clean_up_project.m
,generate_controller_code.m
,set_up_project.m
,右键单击其中一个文件的图标,然后选择添加快捷方式>一般.选择快捷方式管理视图。
10.要设置当前工作文件夹,请设置模拟缓存文件夹,并在打开项目时运行其他设置脚本:
选择
set_up_project.m
脚本。右键单击该文件。
选择设置快捷键操作>启动.
要使用项目API将此设置脚本添加到项目启动中,在命令窗口中输入:
如果(checkForProject ~= 2) addstartpfile (proj_modelBasedDesignCodeGen,fullfile(pwd,“/工具/ set_up_project.m”));结束
11.关闭项目时,设置恢复以前的设置并运行其他清理脚本:
选择
clean_up_project.m
脚本。右键单击该文件。
选择设置快捷键操作>关闭.
要使用项目API将此清理脚本添加到项目关闭中,在命令窗口中输入:
如果(checkForProject ~= 2) addShutdownFile(proj_modelBasedDesignCodeGen,fullfile)“/工具/ clean_up_project.m”));结束
12.关闭项目。重新打开项目时,启动快捷方式运行。
要使用项目API完成这些操作,在命令窗口中输入:
关闭(sim金宝appulinkproject);金宝appsimulinkproject (fullfile (”。/ ModelBasedDesignCodeGen ModelBasedDesignCodeGenProject.prj”));运行(“set_up_project”);
从依赖分析视图为控制器生成代码
1.打开依赖关系分析视图。
2.点击分析.项目分析项目中的文件依赖项,并更新依赖项的视图。
3.使用变焦按钮放大到依赖关系映射。使用方向键或点击拖动鼠标滚轮在地图中移动。
4.选择MBDController.slx
在依赖关系映射上建模。右键单击模型并选择开放.
5.当模型在Simulink中打开时,单击金宝app构建按钮为模型生成代码。或者,使用generate_controller_code
在项目中生成代码的快捷方式。
evalc (“rtwbuild(“MBDController”)”);
6.注意内容工作
文件夹不会出现在Dependency Analysis视图中。此设置简化了视图,以指示模型文件和.m脚本文件中的依赖项。
bdclose所有;运行(“clean_up_project”);关闭(sim金宝appulinkproject);清晰的所有;
另请参阅
addFile
,addFolderIncludingChildFiles
,目录
,addReference
,addShortcut
,addLabel
,关闭
,createCategory
,createLabel
,出口
,findCategory
,findFile
,findLabel
,,
isLoaded
,listModifiedFiles
,listRequiredFiles
,refreshSourceControl
,重新加载
,removeCategory
,removeFile
,removeLabel
,removePath
,removeReference
,removeShortcut
更多的信息
相关的例子
从文件夹创建一个新项目(金宝app模型)
从一个模型创建一个项目(金宝app模型)