文档

使用项目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.mgenerate_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);清晰的所有

另请参阅

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

更多的信息

相关的例子