2

我在 Simulink 中有一个“热质量”块,它代表热质量,即一种材料或材料组合存储内部能量的能力。在 Simulink 的这个标准模块中,必须输入初始温度。只有一个信号可以连接到模块。该块的源代码如下所示:

component mass
% Thermal Mass
% The block represents a thermal mass, which is the ability of a material 
% or combination of materials to store internal energy. The property is
% characterized by mass of the material and its specific heat.
%
% The block has one thermal conserving port. 
% The block positive direction is from its port towards the block. This
% means that the heat flow is positive if it flows into the block.

% Copyright 2005-2013 The MathWorks, Inc.

nodes
    M = foundation.thermal.thermal; % :top
end

parameters
    mass = { 1, 'kg' };              % Mass
    sp_heat = { 447, 'J/(kg*K)' };   % Specific heat
end

variables
    Q = { 0, 'J/s' }; % Heat flow
end

variables(Conversion=absolute)
    T = { 300, 'K' }; % Temperature
end

function setup
    % Parameter range checking
    if mass <= 0
        pm_error('simscape:GreaterThanZero','Mass')
    end
    if sp_heat <= 0
        pm_error('simscape:GreaterThanZero','Specific heat')
    end
end

branches
    Q : M.Q -> *;
end

equations
    T == M.T;
    Q == mass * sp_heat * T.der;
    assert(T>0, 'Temperature must be greater than absolute zero')
end

end

我想构建另一个组件,其初始温度可以来自另一个块,以便它也可以在其他地方计算。因此,一个输入参数和其他所有参数都应该相同。我是 Simulink 新手,对域了解不多。任何想法,如何做到这一点?

谢谢!

4

2 回答 2

0

在 Simulink 模块上输入的参数通常用于初始值和模块行为的调整。虽然较新版本的 Simulink 允许您在仿真期间调整某些参数,但其他参数将被锁定且不可修改。这可能意味着您需要首先执行模型来计算热质量的初始值,然后使用该温度作为初始值启动第二次模拟。

我相信 Simulink 关于如何控制模块参数的帮助会很有用。根据模型的具体设计,此处找到的不同技术可能或多或少适用,但一般来说,我知道有 2 种简单易行的方法来完成修改掩码值。

  1. 将值设置为 Matlab 基础工作区中的变量。
  2. Place the block inside a Masked subsystem. The mask can be used to define a variable that accessible to all the blocks inside it.
于 2016-08-26T10:53:15.853 回答
0

这是不可能的,虽然您可以执行一些预处理来确定初始温度,但您不能将其作为其他模块的输入。

Jared 描述的解决方法可能就是您正在寻找的。

实际上很少需要这样做,如果您告诉我们您为什么要设置它,我们可能会提供帮助。

于 2017-07-11T08:21:12.117 回答