专栏
标签
变步长仿真时阶跃信号输入仿真卡0s,不报错。
一般问题
发布于 2025-04-22 10:55:47
查看 43过去433天

变步长仿真时We_input输入阶跃信号offset=1e8,starttime=1000,height=5e7后仿真卡0s,不报错。输入常数constant=1e8可以正常仿真。定步长以上输入均能正常仿真,跑的很慢。

model CHP "热电联产机组模型"
annotation(__MWORKS(version = "2025a", ContinueSimConfig(SaveContinueFile = "false", SaveBeforeStop = "false", NumberBeforeStop = 1, FixedContinueInterval = "false", ContinueIntervalLength = 20, ContinueTimeVector)), experiment(Algorithm = Dassl, InlineIntegrator = false, InlineStepSize = false, Interval = 1, StartTime = 0, StopTime = 2000, Tolerance = 0.0001));
import SI = Modelica.Units.SI;
import Modelica.Fluid.Types;
import Modelica.Fluid.Types.Dynamics;
replaceable package Medium = Modelica.Media.Water.StandardWater "流体介质选择"
annotation(Dialog(group = "流体介质选择"), choicesAllMatching = true)
constrainedby Modelica.Media.Interfaces.PartialMedium;
parameter SI.Power We_max(displayUnit = "MW") = 3.7e8 "额定电功率";
parameter SI.Power Wh_max(displayUnit = "MW") = 1.064e9 "额定热功率";
parameter SI.Power We_set_start(displayUnit = "MW") = 1e8 "设定初始电功率"
annotation(Dialog(tab = "初始化"));
parameter SI.Power Wh_set_start(displayUnit = "MW") = 3e8 "设定初始热功率"
annotation(Dialog(tasb = "初始化"));
parameter Real We_ramp_HSR(displayUnit = "W/s") = 8.33e4 "电定热,电功率爬坡速率 5MW/min";
parameter Real We_ramp_BTCC(displayUnit = "W/s") = 3.7e5 "热定电,电功率爬坡速率 22.3MW/min";
parameter Boolean adjustment_mode = false "运行调节模式,false为热定电BTCC,true为电定热HSR"
annotation(Dialog(tab = "初始化"));
parameter SI.Pressure dp = 100000 "CHP损失(暂定)";
parameter SI.Temperature T_in_start = 337.65 "入口水温"
annotation(Dialog(tab = "初始化"));
parameter SI.Temperature T_out_start = 388.15 "出口水温"
annotation(Dialog(tab = "初始化"));

Medium.ExtraProperty C[Medium.nC] "示踪物质混合物含量";

SI.Power We(start = We_set_start) "电功率,W";
SI.Power Wh(start = Wh_set_start) "热功率,W";
Real s "电功率与实际电功率是否相等";
Real r "实际爬坡速率";
SI.Temperature T_in(start = T_in_start);
SI.Temperature T_out(start = T_out_start);
SI.Power We_set(start = We_set_start) "输入电功率";

//组件实例化
Modelica.Fluid.Interfaces.FluidPort_a port_a
annotation(Placement(transformation(origin = {-98, -4},
extent = {{-10, -10}, {10, 10}})));
Modelica.Fluid.Interfaces.FluidPort_b port_b
annotation(Placement(transformation(origin = {102, -4},
extent = {{-10, -10}, {10, 10}})));
Modelica.Blocks.Interfaces.RealOutput We_out
annotation(Placement(transformation(origin = {102, 98},
extent = {{-10, -10}, {10, 10}})));
Modelica.Blocks.Interfaces.RealOutput Wh_out
annotation(Placement(transformation(origin = {72, 98},
extent = {{-10, -10}, {10, 10}})));
Modelica.Blocks.Interfaces.RealInput We_input
annotation(Placement(transformation(origin = {4, 104},
extent = {{-20, -20}, {20, 20}},
rotation = -90)), __MWORKS(ShowPortName = true));
Modelica.Blocks.Interfaces.RealOutput CHP_h
annotation(Placement(transformation(origin = {-98, 40},
extent = {{-10, -10}, {10, 10}})));
Modelica.Blocks.Interfaces.RealOutput CHP_g
annotation(Placement(transformation(origin = {102, 40},
extent = {{-10, -10}, {10, 10}})));

equation
We_input = We_set;

s = if We_set > We then 1 else if We_set < We then -1 else 0;

r = if adjustment_mode then We_ramp_HSR else We_ramp_BTCC;

der(We) = r * s;

der(Wh) = (if adjustment_mode then -1 else 1) * r * s;

We_out = We;
Wh_out = Wh;
CHP_h = T_in;
CHP_g = T_out;

port_b.h_outflow = Wh / port_a.m_flow + inStream(port_a.h_outflow);

port_a.p = port_b.p + dp;
port_a.m_flow = -port_b.m_flow;

T_in = Modelica.Media.Water.IF97_Utilities.T_ph(port_a.p, port_a.h_outflow);
T_out = Modelica.Media.Water.IF97_Utilities.T_ph(port_b.p, port_b.h_outflow);

inStream(port_a.h_outflow) = port_a.h_outflow;
port_a.Xi_outflow = inStream(port_b.Xi_outflow);
port_b.Xi_outflow = inStream(port_a.Xi_outflow);
port_a.C_outflow = C;
port_b.C_outflow = C;

end CHP;

所属专栏:Syslab基础平台
产品信息:Sysplorer系统建模仿真环境
系统建模
附件 2 个附件(7kb)
采纳的回答
发布于 2025-04-24 10:33:07

您好,初步定为是模型代码有问题,以下代码中首先根据变量 We 的值进行了判断,然后又进行计算,从而陷入了一个循环,因此导致仿真停滞,建议您重新查找相关资料,判断模型原理是否正确。
image.png

全部回答 3

发布于 2025-04-22 11:21:50

可能是初值设置问题吧?需要根据压降往回反推一下给的入口或者出口压力是否正确?Description

发布于 2025-04-23 08:42:54

您好,您上传的模型不完整,不明确您的具体测试案例是怎样的,烦请您把搭建好的测试模型同步上传一下。

发布于 2025-04-24 10:33:07

您好,初步定为是模型代码有问题,以下代码中首先根据变量 We 的值进行了判断,然后又进行计算,从而陷入了一个循环,因此导致仿真停滞,建议您重新查找相关资料,判断模型原理是否正确。
image.png

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天