2016-08-24 2 views
2

У меня есть один блок «Thermal Mass» в 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 и мало знаю о доменах. Любая идея, как это можно сделать?

Спасибо!

+0

Я все еще не знаю, как это сделать. – Huve

ответ

0

Параметры, введенные в блок Simulink, обычно используются для начальных значений и настройки поведения блоков. В то время как более новые версии Simulink позволят вам настроить некоторые параметры во время моделирования, другие будут заблокированы и не поддаются изменению. Это может означать, что вам нужно сначала выполнить модель для вычисления начального значения для вашей тепловой массы, а затем запустить вторую симуляцию, используя эту температуру в качестве начального значения.

Я считаю, что помощь Simulink о том, как control block parameters будет полезна. В зависимости от конкретного дизайна вашей модели различные методы, найденные здесь, могут быть более или менее применимыми, но, как правило, я знаю о 2 простых и простых способах для изменения значения маски.

  1. Задайте значение переменной в рабочем пространстве базы данных Matlab.
  2. Место блока внутри Masked subsystem. Маску можно использовать для определения переменной, доступной для всех блоков внутри нее.
0

Это невозможно, в то время как вы можете выполнить некоторую предварительную обработку, чтобы определить начальную температуру, вы не можете иметь это как вход из других блоков.

Обходной путь, описанный Джаредом, вероятно, является тем, что вы ищете.

На самом деле это очень редко нужно делать, если вы скажете нам, почему вы хотите установить это, мы сможем помочь.

Смежные вопросы