Сохраняйте полный Simulink SimState периодически или каждый раз, когда предикат верен во время моделирования - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь найти способ генерировать несколько промежуточных объектов SimState во время запуска Simulink sim в заранее заданные моменты, позволяя моделированию работать с указанным StopTime.

В документации говорится, что сохранить можно толькополное конечное состояние, но, может быть, есть способ?

1 Ответ

0 голосов
/ 05 февраля 2019

Если вам нужно запустить модель из пользовательского интерфейса Simulink, вам нужно написать собственный блок, который приостановит модель, сохранит состояние simstate и затем перезапустит симуляцию через определенные промежутки времени.Но более простым подходом было бы запустить модель из командной строки, выполнив что-то вроде следующего:

% Define stop times and preallocate a cell array to save the simstates
stop_times = 1:10; % one second intervals upto 10 seconds
sim_states = cell(1,numel(stop_times));

% Run the model in a loop, saving the simstate at the required times
for tdx = 1:numel(stop_times)

   if tdx == 1
      % First simulation
      sim_out = sim('mdl_name', 'StopTime', num2str(stop_times(tdx)), 'SaveFinalState', 'on', ...
             'LoadInitialState', 'off', 'SaveCompleteFinalSimState', 'on',...
             'FinalStateName', 'final_simstate');
   else
      % subsequent simulations
      assignin('base', 'new_simstate', sim_states{tdx-1});
      sim_out = sim('mdl_name', 'StartTime', num2str(stop_times(tdx-1)),...
             'StopTime', num2str(stop_times(idx)), 'SaveFinalState', 'on', ...
             'LoadInitialState', 'on','InitialState', 'new_simstate',...
             'SaveCompleteFinalSimState', 'on',...
             'FinalStateName', 'final_simstate');
   end

   % store the simstate
   sim_states{tdx} = sim_out.get('final_simstate');
end

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

...