生成代码和仿真模型编程与项目

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

项目帮助您管理和共享文件和设置,找到所需的文件,并与源代码控制交互举办大型设计。

管理基于模型的设计项目

该示例模型提供控制器,其定位固定在DC马达,其磁道的绿球的照相机。

该MBD方法导致模拟控制器操作:

  • 模型厂:该厂是直流电机,其旋转以重新定位的相机。

  • 模型控制器:该设计采用PID控制器上用于DC马达定位的角位置的反馈。

  • 模型高层球跟踪调度程序:调度器检查绿球的位置和基准角度的饱和度的有效性。调度处理的屏幕追踪无球的情况下。

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

- 该工厂提供:

  • 模型与使用基本Simulink模块连续时间动态系统。万博1manbetx

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

  • 导入和模拟数据的出口和从工作区

  • 的参数到基础工作区使用数据字典和模型回调加载。

调节器- 控制器提供:

  • 模型与使用基本Simulink模块离散时间动态系统。万博1manbetx

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

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

跟踪球- 球追踪提供:

  • 基本的球跟踪算法。

  • 终结者和地面块用作占位符。

  • 产生马达参考甲混合动力控制器角使用状态流。

线束- 该线束提供完整的系统的顶层仿真。

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

1。创建一个空白的项目。在选项卡,单击>项目>空白项目。

另外,创建此项目并使用currentProject获取项目对象操作在命令窗口中的项目:

matlab.project.createProject('modelBasedDesignCodeGenProject');proj_modelBasedDesignCodeGen = currentProject
proj_modelBasedDesignCodeGen =项目与属性:名称: “modelBasedDesignCodeGenProject” SourceControlIntegration: “” RepositoryLocation: “” SourceControlMessages:[1×0字符串]只读:0顶层:1个依赖关系:[1×1向图]分类:[1×1 matlab.project] .Category文件:[1×0 matlab.project.ProjectFile]快捷方式:[1×0 matlab.project.Shortcut] ProjectPath:[1×0 matlab.project.PathFolder] ProjectReferences:[1×0 matlab.project.ProjectReference] StartupFiles:[1×0字符串] ShutdownFiles:[1×0字符串]描述: “” RootFolder: “C:\工作空间\ modelBasedDesignCodeGenProject” SimulinkCodeGenFolder: “万博1manbetx” SimulinkCacheFolder: “” ProjectStartupFolder: “C:\工作空间\ modelBasedDesignCodeGenProject”

2。示例文件复制到项目中的文件夹。

另外,在命令窗口中,键入:

的CopyFile(完整文件(matlabroot,'工具箱''RTW''rtwdemos''slproject_codegen_demo'...完整文件(PWD),'F');

3。现有文件添加到项目:

  • 点击项目文件视图按钮,然后选择所有文件查看

  • 选择文件夹ball_tracking调节器吊带公用事业,用鼠标右键单击该图标为一个文件夹,并选择将文件夹添加到项目(包括子文件)

另外,这些文件添加到程序在命令窗口中的项目:

addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'ball_tracking');让addpath(proj_modelBasedDesignCodeGen,'ball_tracking');addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,“控制器”);让addpath(proj_modelBasedDesignCodeGen,“控制器”);addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,“安全带”);让addpath(proj_modelBasedDesignCodeGen,“安全带”);addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'厂');让addpath(proj_modelBasedDesignCodeGen,'厂');addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,“公用事业”);让addpath(proj_modelBasedDesignCodeGen,“公用事业”);

4。选择工作文件夹,右键单击一个文件夹的图标,然后选择项目路径>添加到项目路径(包括子文件夹)。如果您选择这个文件夹添加到路径,从仿真和代码生成生成的文件(工件)可在项目路径上。如果您选择不包括在项目中生成的文件中,依赖图不显示这些文件。

另外,该文件夹添加到在命令窗口中的项目路径:

让addpath(proj_modelBasedDesignCodeGen,'工作');

5。为了使项目更容易,定义和设置属性为项目的快捷方式。在里面视图中选择项目标签。打开公用事业文件夹节点。

6。选择文件clean_up_project.mgenerate_controller_code.mset_up_project.m,用鼠标右键单击该图标为一个文件,并选择创建快捷方式

7。要设置当前工作文件夹,设置仿真缓存文件夹,当你打开该项目运行其他安装脚本:

  • 选择set_up_project.m脚本。

  • 用鼠标右键单击该文件。

  • 选择在启动时运行

另外,添加此设置脚本从命令窗口工程启动:

addStartupFile(proj_modelBasedDesignCodeGen,完整文件(PWD,'/utilities/set_up_project.m'));

8。要恢复以前的设置,当你关闭该项目运行其他清理脚本:

  • 选择clean_up_project.m脚本。

  • 用鼠标右键单击该文件。

  • 选择在关机时运行

另外,加入清理脚本从命令窗口工程关机程序:

addShutdownFile(proj_modelBasedDesignCodeGen,完整文件(PWD,'/utilities/clean_up_project.m'));

9。重新打开该项目运行启动捷径。

另外,重新加载项目,并运行set_up_project在命令行窗口:

重载(proj_modelBasedDesignCodeGen);跑('set_up_project');

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

1。项目选项卡,单击依赖分析仪在项目运行上的所有文件的相关性分析。

依赖关系图中显示了您的项目结构和文件的依赖性。它显示了文件如何相互关联。图中的每个项表示一个文件,并且每个箭头是依赖。

的内容工作文件夹不会出现在依赖关系图。这种设置简化了看法,表示在模型文件的依赖关系和.M脚本文件。

一个。检查属性窗格中的有关项目的有用信息,如所需的产品和问题文件的权限。s manbetx 845

使用放大按钮可以放大到依赖地图。使用箭头键或单击并拖动鼠标滚轮在地图上走动。

C。将鼠标悬停在依赖箭头来检查依赖型。例如,MATLAB脚本和职能正在由模型回调运行。

2。选择MBDController.slx模型的依赖地图上。右键单击该模型并选择打开

3。当模型在Simulink打开后,点击万博1manbetx建立按钮以生成用于模型的代码。或者,使用generate_controller_code快捷的项目生成代码。

另外,生成在命令窗口中型号代码。对于这个例子的目的,将写入权限MBDController.slxc然后生成的模型代码:

fileattrib('MBDController.slxc''+ W');EVALC('rtwbuild(' 'MBDController' ')');

4。从工程窗口关闭项目。

另外,关闭该项目并运行clean_up_project在命令行窗口:

跑('clean_up_project');关闭(proj_modelBasedDesignCodeGen);

也可以看看

添加文件addFolderIncludingChildFiles让addpathaddReferenceaddShortcutaddLabelcreateCategorycreateLabel出口findCategory的FindFilefindLabelisLoadedlistModifiedFileslistRequiredFilesrefreshSourceControl重装removeCategoryremoveFileremoveLabelremovePathremoveReferenceremoveShortcut

更多信息

相关的例子