创建自定义物理组件
Engee拥有庞大的物理建模库。 但是总会缺少一些东西,或者你想用你自己的方程来模拟一个物理物体。
这个小项目的任务是制作自己的电阻,其中电阻取决于温度。
设置任务
物理建模基础库中有一个电阻组件。 它模拟电路中的电阻,并且只有一个参数,电阻。 然而,这是一个理想化的电阻-没有考虑温度的影响。 因此,我们需要创建自己的更"现实"的电阻器。
创建电阻器组件
要创建自定义物理组件,我们将使用Engee中包含的专用物理建模语言。 但在我们开始编写代码之前,让我们记住温度和电阻是如何相关的。:
哪里:
-参考温度
-参考温度下的电阻
-一定的常数,取决于电阻材料
现在,您可以继续编写自己的组件。 组件的代码必须包含在带有*的文件中。ngpc扩展。 我已经写了我自己的电阻实现,让我们看看它。:
@engeemodel MyResistorHeat begin
@nodes begin
p = EngeePhysicalFoundation.Electrical.Pin(), [view = ("+", "left")]
n = EngeePhysicalFoundation.Electrical.Pin(), [view = ("-", "right")]
end
@variables begin
v = 0, [unit="V",description = "Voltage"]
i = 0, [unit="A",description = "Current"]
end
@parameters begin
R = 200.0, [unit="Ohm"]
a = 0.1, [unit="1/K"]
T0 = 300, [unit="K"]
T = 300, [unit="K"]
end
@branches begin
i:(p.i, n.i)
end
@equations begin
v~p.v-n.v
v ~ R*(1+a*(T-T0))*i
end
end
可以看出,组件被封闭在@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物理建模语言是描述其物理组件的必要工具。 在当前项目的背景下,可以想象该组件可以在对电阻加热进行建模方面进行扩展,这也是使用物理建模语言很方便的。