Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

统一MATLAB和Simulink:用户金宝app故事(2

在我之前的文章中,我描述了如何使用MATLAB对象参数化Simulink模型。金宝app老实说,这本身并没有什么神奇或革命性的东西。我之所以决定在一系列文章中讨论这个主题,是因为它所能带来的好处。
在这篇文章中,我正在构建一个框架的基础,在我看来,它使发现和与Simulink模型交互非常方便。金宝app
以下是本系列其他文章的链接:

构建模块

这个框架将围绕一个基本单元展开,我决定称之为a 金宝app 部分 slPart 为短。我用“零件”这个词,是因为我喜欢把它想象成你可以在车库或机械车间的货架上找到的机械零件:齿轮、螺母、螺栓等。零件可以由其他零件组成,就像汽车由发动机、悬架和车轮组成,悬架由弹簧和减震器组成。
该框架的基本单元是围绕两个基本构建块构建的:一个MATLAB类和一个Simulink屏蔽子系统。金宝app

超类:slPart

让我们从MATLAB类开始,我将命名它 slPart 金宝app仿真软件部分
这个类允许我定义所有部分通用的属性和方法。我要把它变成 处理类 ,它允许MATLAB代码和Simulink块引用和交互金宝app slPart 物体来回移动。
通过这一系列的文章,我将逐步向这个类添加功能,但是作为一个起点,下面是 slPart 类看起来像:
classdefslPart < handle
属性(Hidden = true)
BlockPath字符
结束
方法
函数obj = maskInit(obj,blk)
obj。BlockPath = blk;
结束
结束
结束
它只有一个性质 BlockPath ,在那里我将存储对象正在使用的块的路径和一个方法 maskInit 顾名思义,它将用于掩码初始化。

模板块

对于这个块,我创建了一个空子系统的“模板”,并将其存储在一个库中。
使用蒙版编辑器,我定义了一个名为"obj"的参数:
确保只有类的对象 slPart 传递给这个参数时,我创建了一个参数约束。
我设置掩码类型为“slPart”(这将帮助我在未来找到这个块的实例)
我指定 maskInit 中定义的方法 slPart 初始化代码:
最后,因为我想让用户编辑从这个模板创建的块,所以当我创建这个块的副本时,我断开了到库的链接。为此,我利用 ClipboardFcn回调
有了这个设置,我可以将这个库块复制到一个模型中,并开始创建我的第一个Simulink部件!金宝app

创建第一个slPart

对于第一个示例,我将重复使用相同的示例 春天 在我之前的帖子中。唯一的区别是它现在是子类 slPart
classdefspring < slPart
属性
k
c
结束
方法
函数Obj = spring()
obj。米= 0.5;
obj。k= 5;
Obj.c = 3;
结束
结束
结束
为了方便起见,我把这个存起来了 春天 包文件夹 命名 + springLib .我将在下面描述原因。现在,这意味着我将把这个类称为 springLib.spring
在Simuli金宝appnk端,我将模板块的副本拖到一个模型中,打开空子系统,并使用“obj”属性作为块参数来实现我的算法:
然后实例化a 春天 对象:
mySpring = springLib.spring
mySpring =
弹簧性能:m: 0.5000 k: 5 c: 3
并指定 mySpring 在方块对话框中:
有了这些设置,我就可以模拟模型了,一旦模拟完成, mySpring 知道它在哪里被模拟过。
sim卡(“spring_sim”);
mySpring。BlockPath
ans ='spring_sim/我的第一个春天'
我将在接下来的职位中利用这一能力。

创建数据变量

接下来我们可以做的是创建一个弹簧库,就像您可以从销售弹簧的公司目录中购买的那样。它们都将使用相同的算法,但参数值不同。为此,我们可以使用我们的通用 春天 类作为模板创建多个 子类 春天 超类
这可以快速为您提供一个弹簧目录。您可以在各种组件模型中使用这些spring,或者与合作者共享这个spring库。这些合作者从目录中挑选一个弹簧,而不用担心参数或面具下的算法。
为方便起见,可以将所有这些数据变量类放在 包文件夹
这将创建一个命名空间,允许您使用制表符完成“扫描”目录:
有了这个spring库或目录,可以很容易地模拟具有不同参数化的模型:
in(1:2) = 金宝appSimulink。SimulationInput (“spring_sim”);
in(1) = in(1).setVariable(“mySpring”, springLib.springN1234);
in(2) = in(2).setVariable(“mySpring”, springLib.spring_SupplierB_code5);
Out = sim(in,“ShowProgress”“关闭”);

现在轮到你了

在这一点上,可以说我没有介绍任何真正改变游戏规则的东西。到目前为止,我所做的只是创建了一个框架的基础,我将在接下来的文章中通过添加方法和属性到 slPart 我今天创建的类。
您可以下载项目的当前状态 在这里
如果你见过类似的框架,或者如果上面给了你一些想法,你想看到什么添加到它,请在下面的评论中告诉我。
|

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。