连续变量可以适用:=赋值吗
一般问题
发布于 2025-04-24 22:41:34
查看 19过去430天
我有两个实例a,b,如何做到当a达到某一条件时,才让b的时间开始流逝?
或者当a达到某一条件时,给b重新赋初值?
所属专栏:Modelica语言
产品信息:Sysplorer系统建模仿真环境
我有两个实例a,b,如何做到当a达到某一条件时,才让b的时间开始流逝?
或者当a达到某一条件时,给b重新赋初值?
您好,“:=”适用于 algorithm 中,equation 中只有“=”。
如果是要对b重新赋值,可参考以下代码,详细内容可以查看官网Modelica语言详解教程事件
final parameter Real g = 9.8 "重力加速度";
parameter Real coef = 0.9 "弹性系数";
parameter Real h0 = 10 "初始高度";
Real h "小球高度";
Real v "小球速度";
Boolean flying "是否运动";
initial equation
h = h0;
equation
flying = not (h <= 0 and v <= 0);
der(v) = if flying then -g else 0;
v = der(h);
when h <= 0 then
reinit(v, -coef * v);
end when;
reinit()函数
delay()函数
您好,“:=”适用于 algorithm 中,equation 中只有“=”。
如果是要对b重新赋值,可参考以下代码,详细内容可以查看官网Modelica语言详解教程事件
final parameter Real g = 9.8 "重力加速度";
parameter Real coef = 0.9 "弹性系数";
parameter Real h0 = 10 "初始高度";
Real h "小球高度";
Real v "小球速度";
Boolean flying "是否运动";
initial equation
h = h0;
equation
flying = not (h <= 0 and v <= 0);
der(v) = if flying then -g else 0;
v = der(h);
when h <= 0 then
reinit(v, -coef * v);
end when;
很多情况下,reinit函数只允许用一次。新思路:if deltaT>time then
der(bianliang)=0