Simulink - Создание пользовательских компонентов
У меня есть один блок "Тепловая масса" в 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 и не знаю много о доменах. Есть идеи, как это можно сделать?
Спасибо!
2 ответа
Это невозможно, в то время как вы можете выполнить некоторую предварительную обработку для определения начальной температуры, но вы не можете использовать ее в качестве входных данных для других блоков.
Обход, описанный Джаредом, вероятно, то, что вы ищете.
Это на самом деле довольно редко, если вы сообщите нам, почему вы хотите это настроить, мы можем помочь.
Параметры, введенные в блок Simulink, обычно используются для начальных значений и настройки поведения блока. В то время как более новые версии Simulink позволят вам настраивать некоторые параметры во время симуляции, другие будут заблокированы и не могут быть изменены. Это может означать, что вам необходимо сначала выполнить модель для расчета начального значения вашей тепловой массы, а затем запустить второе моделирование, используя эту температуру в качестве исходного значения.
Я считаю, что справка Simulink о том, как управлять параметрами блока, будет полезна. В зависимости от конкретной конструкции вашей модели, различные методы, найденные здесь, могут быть более или менее применимыми, но, вообще говоря, я знаю 2 простых и простых способа изменить значение маски.
- Установите значение переменной в вашем базовом рабочем пространстве Matlab.
- Поместите блок в подсистему Masked. Маска может использоваться для определения переменной, доступной для всех блоков внутри нее.