创建自定义物理组件
Engee拥有庞大的物理建模库。 但是总会缺少一些东西,或者你想用你自己的方程来模拟一个物理物体。
这个小项目的任务是制作自己的电阻,其中电阻取决于温度。
设置任务
物理建模基础库中有一个电阻组件。 它模拟电路中的电阻,并且只有一个参数,电阻。 然而,这是一个理想化的电阻-没有考虑温度的影响。 因此,我们需要创建自己的更"现实"的电阻器。
创建电阻器组件
要创建自定义物理组件,我们将使用Engee中包含的专用物理建模语言。 但在我们开始编写代码之前,让我们记住温度和电阻是如何相关的。:
哪里:
-参考温度
-参考温度下的电阻
-一定的常数,取决于电阻材料
现在,您可以继续编写自己的组件。 组件的代码必须包含在带有*的文件中。ngpc扩展。 我已经写了我自己的电阻实现,让我们看看它。:
``'茱莉亚
@engeemodel MyResistorHeat开始
@节点开始
P=EngeePhysicalFoundation。电气。销(),[视图=("+","左")]
N=EngeePhysicalFoundation。电气。Pin(),[view=("-","right")]
结束
@变量开始
v=0,[单位="V",描述="电压"]
i=0,[单位="A",描述="当前"]
结束
@参数开始
R=200.0,[单位="欧姆"]
a=0.1,[单位="1/K"]
T0=300,[单位="K"]
T=300,[单位="K"]
结束
@分支开始
i:(p.i,n.i)
结束
@方程开始
v~p.v-n.v
v~R*(1+a*(T-T0))*i
结束
结束
可以看出,组件被封闭在@engeemodel区域中。 让我们来看看最有趣的代码结构。:
`@nodes` -描述组件的物理非定向端口。 每个这样的端口属于一个*域-*物理领域(力学,电力,磁性等)。)
`@parameters` -用户设置的组件的参数
`@equations` -描述组件行为的方程。 这就是我们的方程写的地方。
如何使用组件代码?
要使用自己的物理块,编写组件代码是不够的,它需要嵌入到模型中。 物理分量块用于此。 带有组件代码的文件在其设置中指定。 为了使模型工作,代码文件必须位于Engee路径中。
是时候应用我们的新组件了。:
demoroot = @__DIR__
engee.addpath(demoroot);
首先,让我们看一下在传统的、未经修改的组件上组装的放大器的模型。:
让我们运行这个模型,得到-8的增益因子:
engee.open(joinpath("OpAmp_Stock.engee"))
Rs = engee.run(joinpath("OpAmp_Stock"))
collect(Rs["师。1"])
现在让我们打开OpAmp_Custom模型:
如您所见,电阻块发生了变化。 因为这些不是电阻块,而是物理元件块。 让我们看看他们:
在"描述"选项卡中,我们看到组件的名称MyResistorHeat,在主选项卡中,我们看到我们在区域中指定的参数。 @parameters:
目标值的出现是因为我们在 @variables.
为了清楚起见,我们取系数 等于0.001,和 让我们把它等于300开尔文(这对应于正常条件下的温度)。 让我们在温度下模拟模型 平等 :
可以看出,该组件正常工作,所得增益为-8。 现在让我们提高R1的温度并查看仿真结果。:
可见增益有所改变! 这意味着我们的组件正在工作。
结论
Engee物理建模语言是描述其物理组件的必要工具。 在当前项目的背景下,可以想象该组件可以在对电阻加热进行建模方面进行扩展,这也是使用物理建模语言很方便的。