我试图使用“min”、“max”属性来限制该值,如下所示。
SI.Angle thetta_out(start=0, min=0, max=31.4)
Run Code Online (Sandbox Code Playgroud)
但 min 和 max 属性不起作用。该值变化无限制,只有起始值按照我设置的方式工作。
有人能找出问题所在吗?
我不想像 if 语句那样制定逻辑来处理这个问题,因为这会使系统变得缓慢且扭曲。
我正在使用Dymola平台制作PI控制器,但遇到如下错误消息
这是我的一些代码,其中包括用于计算分配量的阀和控制分配量的PI控制器。他们正在使用标志互相交流
//PI controller///
if flag_input==1 then //flag_input==1 : Stop control / flag_input==0 : Restart control//
control:=0;
else
control:=(P_term+I_term)/unit;
end if;
if error<0 then // error<0 : flag to Valve to restart calculating the disp//
flag_output:=1;
else
flag_output:=0;
end if;
//Valve//
if (26/5)*(thetta/(2*pi))*0.001>0.026 and flag_input==0 then
//restart calculating the disp when received flag==1 from the PI controller//
disp:=0.026;
flag:=1;
elseif (26/5)*(thetta/(2*pi))*0.001<0 and flag_input==0 then
disp:=0;
flag:=1;
else
disp:=(26/5)*(thetta/(2*pi))*0.001;
flag:=0;
end if;
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我代数循环错误的含义并找出问题所在吗?
我在 Modelica 中制作了包角代码,如下所示。
thetta_eq=mod(thetta, 720);
Run Code Online (Sandbox Code Playgroud)
thetta 不断增加 0 到无限角,thetta_eq 是包裹角 0 到 720deg。
但是,当我区分包裹角时会出现问题。
此外,我无法在 Modelica 标准库 3.2.3 中使用 wrapangle 块,因为我必须使用 3.2.2 版本。
有没有人有解决这个问题的方法?代码、逻辑还是选项?
我已经知道当角度从 720 度下降到 0 度时无法区分,因为它是不连续的。
所以,我想问的是使它即使在下降区域也是连续的。
实际上,上图是 sigmoid 函数,我想当包角下降 720 到 0 度时我可以使用这个函数。
如果我使 sigmoid 函数的倾斜度非常高,我认为这可以像原始包角一样起作用。并且导数不是无限的或无限的,因此可以微分。
你怎么想?以及我如何为这个想法制定逻辑?
ps) 非常感谢您的回复!
我正在对热传递中的 LMTD 方法进行编码,并且在同时使用 和 运算符两次以上时遇到了一些错误。
if (del_T1 > beta) and (del_T2 > beta) and (del_T1<>del_T2) then
T_LMTD = (del_T1-del_T2) / ( (log(del_T1)) - (log(del_T2)));
elseif (del_T1 > beta) and (del_T2 > beta) and (del_T1==del_T2) then
T_LMTD = (del_T1-del_T2) / 2;
elseif (del_T1 > beta) and (del_T2 < beta) then
T_LMTD = (del_T1 - beta) / ( (log(del_T1/beta)) * (1 - zeta * (del_T2 - beta)));
elseif (del_T1 < beta) and (del_T2 > beta) then
T_LMTD = (del_T2 - beta) / …Run Code Online (Sandbox Code Playgroud) 我正在制作可以在仿真循环中输入模型参数的接口包。为了连接接口包和仿真模型,我使用了 Standard Modelica Library Ver. 中的 Controlbus。3.2.2.
检查模型没问题,但是如果我模拟模型,则会弹出如下图所示的错误。
这是与这个模型相关的方程
Omega_e = Omega_d * N_t[N];
Alpha_d = der(Omega_d);
为了求解微分方程,我认为求解器需要 N_t 的特定参数。所以我把来自接口模型的参数放入并使用标准 Modelica 库中的 Controlbus 组件发送参数。
如上图,我肯定把参数。(参数的具体值被删除,因为它是机密)
我找不到这个错误的问题是什么。请帮帮我。
非常感谢。