Engee物理建模语言事件
|
页面进行中。 |
在Engee物理建模语言中,事件用于描述系统状态随时间的突然变化,例如模式切换,约束触发或状态之间的转换。
条件构造
要编写条件方程,根据变量的值,使用函数 ifelse(。..) 和 gt;gt, lt, 通用电气, 勒, 情商, neq.
有关工作示例和功能的详细描述,请参阅文章 Enee物理建模语言的枚举、分支、循环和模块。
离散事件
构造用于描述条件更改时触发的离散事件。 @何时. 它允许您指定在切换逻辑表达式时要执行的操作。
条件使用运算符 边缘. 允许以下条件条目:
-
边缘(cond)--当条件改变时触发事件康德与错误上真的. -
缘(!cond)--当条件改变时触发事件康德与真的上错误. -
边缘(cond1)&边缘(cond2)--事件在同时发生更改时触发公寓1和公寓2与错误上真的. -
边缘(cond1)及cond2--更改时触发事件公寓1与错误上真的并满足条件公寓2. -
边缘(cond1|/边缘(cond2)--当条件改变时触发事件公寓1或公寓2与错误上真的.
它们的组合也是可能的。: (边缘(cond1)及边缘(cond2))/边缘(cond3).
@when edge(x > 3) begin
event_var1 ~ expr1
event_var2 ~ expr2
end
满足条件时同时发生的分配在块内指定。 在每个赋值中,只应在左侧部分指定事件值(事件=真)的变量。
可以在赋值中使用相同事件变量的先前值。:
@when (x > 3) begin
event_var1 ~ event_var1 + 1
end
此外,您可以使用以下方法指定其他条件 @elsewhen. 如果在同一时间开始满足多个条件,则会触发与其中第一个条件对应的事件。
@when edge(x > 1) begin
event_var1 ~ expr1
...
@elsewhen edge(y < 0)
event_var2 ~ expr2
...
end
可以使用标识符初始化事件变量 初始值,初始值:
@when initialevent begin
V ~ x + 3
@elsewhen edge(z > 0.9)
V ~ 1
end
使用离散事件的组件示例:
@engeemodel example begin
@outputs begin
out = 0
end
@variables begin
x = 0
end
@equations begin
der(x) ~ K
out.u ~ x
end
@variables [event = true] begin
K = 1
V = 2
end
@when edge(x > 1) begin
K ~ 12
end
@when edge(t >= 1.5) begin
V ~ 5
@elsewhen edge(K > 3)
V ~ 12
end
end
此刻当 x 从下到上与1的值相交,变量 K 值将设置为12。
马上 V 值将设置为12。 此刻 t==1.5 变量 V 它将成为等于5。
混合自动机
混合自动售货机(@modecharts)是概念的延伸 有限自动机。 与有限自动机一样,它们包含离散状态和它们之间的转换,但与此同时,它们自己的连续微分方程在每个状态下被求解。
建筑工程 @modecharts 可以在里面使用 物理组件与其他结构(@变量, @方程 等等)。
|
因此,混合自动机结合了离散逻辑和连续物理动力学:当状态发生变化时,求解器被重新初始化,系统开始使用新的方程组进行计算。
建筑工程 @modecharts 设置混合自动机并启用:
-
@modechart-混合自动售货机公告; -
@模式-一组模式(状态); -
@模式-包含其自身方程的单独模式@方程; -
@过渡-国家之间过渡的规则。
此外:
-
@条目-设置进入模式时的动作; -
@初始-定义初始模式(如果未指定,则机器在列表中的第一个模式下初始化)。
条件中的所有参数 @初始 必须包裹在 违约(). 使用变量和端口参数 @初始 不能。
混合自动售货机的一个例子
@parameters begin
x0 = 0.5
lower_bnd = 0.0
upper_bnd = 1.0
threshhold = 0.01
e = 0.7
end
@variables begin
x = x0, [priority = "high"]
v = 0.0
F = 0.0
v_old = 0, [event=true]
end
@nodes begin
flange = EngeePhysicalFoundation.Mechanical.Translational.Flange
end
@equations begin
v ~ flange.v
der(x) ~ v
end
@branches begin
F:(flange.F,*)
end
@modecharts begin
m = @modechart begin
@modes begin
@mode FREE begin
@equations begin
F ~ 0
end
end
@mode (IMPACT, BIG_IMPACT) begin
@entry begin
v_old ~ v
end
@equations begin
v ~ -e * v_old
end
end
end
@transitions begin
(FREE, IMPACT, FREE) => x <= lower_bnd
(FREE, IMPACT, FREE) => x >= upper_bnd
end
@initial begin
BIG_IMPACT => (default(x0) < (default(lower_bnd) - default(threshhold))) ||
(default(x0) > (default(upper_bnd) + default(threshhold)))
#如果满足此条件,则机器从BIG_IMPACT状态启动
end
end
# m2 = ...
end
这里:
-
在街区里
@modecharts正在创建混合自动机m,描述离散的行为模式。 -
在模式
免费方程得到满足F~0-权力F它等于零。 -
在复合模式下
(影响,BIG_IMPACT):-
在
@条目入时,存储之前的速度值。v_old~v. -
在
@方程正在设置新的速度值v~-e*v_old,即速度变化符号并按因子缩放e.
-
-
在
@过渡转换的规则被定义:-
(免费,冲击,免费)⇒x⇐lower_bnd-减少时x下面n.下位,下位正在过渡到影响,然后返回到免费. -
(免费,冲击,免费)⇒x>=upper_bnd-同样,当超过上一级.
-
-
在
@初始状态开始的条件进行设定大的影响如果初始值为x超越一切n.下位,下位或上一级考虑到特雷什霍尔德. -
m2=。..显示您可以添加第二个。@modechart在同一物理组件中。
实用建议
-
如果转换不能按预期工作,请减少块中的*最大步长*、*绝对容差*和*相对容差*参数。 Solver Configuration.
-
声明构造的顺序
@何时和@modechart在组件的代码中,它可以影响组件在事件链中的行为,尽管物理建模语言具有一般的声明性。