Симулируйте различную подсистему с активацией запуска Используя parsim

В этом примере показано, как можно симулировать Различную Подсистему с startup время активации с помощью parsim. Можно симулировать несколько настроек параллельно с Различным набором времени активации к startup использование parsim. Каждая настройка будет иметь один активный вариант.

Модель

Откройте модель slexVariantSubsystemsWithParSim. Модель содержит различный блок Controller подсистемы с двумя вариантами Линейный Контроллер и Нелинейный Контроллер с условиями VSS_MODE == 1 и VSS_MODE == 2 соответственно. Установите Variant activation time к startup в диалоговом окне Параметров блоков.

open_system('slexVariantSubsystemsWithParSim.slx');

Шаг 1 - Setup активный различный выбор для каждого варианта

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

mdl = 'slexVariantSubsystemsWithParSim';
numSims = 2;
varControl = [1,2];

Шаг 2 - создает SimulationInput объект

Создайте SimulationInput объект для каждой симуляции, запущенной и установленной различное значение управления для каждого запуска.

in(1:numSims) = Simulink.SimulationInput(mdl);
for idx = 1:numSims
    in(idx) = in(idx).setModelParameter('SimulationMode', 'rapid', ...
                'RapidAcceleratorUpToDateCheck', 'on', ...
                'SaveTime', 'on', ...
                'SaveOutput', 'on');
    in(idx) = in(idx).setVariable('VSS_MODE',varControl(idx));
end

Шаг 3 - использует parsim симулировать модель

Используйте parsim симулировать модель параллельно для каждого различного значения управления.

out = parsim(in, 'ShowProgress', 'on');
[23-Jul-2021 07:42:08] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).
[23-Jul-2021 07:43:29] Starting Simulink on parallel workers...
[23-Jul-2021 07:45:07] Configuring simulation cache folder on parallel workers...
[23-Jul-2021 07:45:08] Loading model on parallel workers...
[23-Jul-2021 07:45:41] Running simulations...
[23-Jul-2021 07:46:21] Completed 1 of 2 simulation runs
[23-Jul-2021 07:46:25] Completed 2 of 2 simulation runs
[23-Jul-2021 07:46:25] Cleaning up parallel workers...

Можно симулировать модель с помощью parsim с SetupFcn. Это является дополнительным. Если при запуске parsim без SetupFcn, установите RapidAcceleratorUpToDateCheck к on.

  out = parsim(in, 'ShowProgress', 'on', ...'SetupFcn', @() slexVariantSubsystemsWithParSim_script_setup(mdl));

Скрипт настройки, slexVariantSubsystemsWithParSim_script_setup.m создает быструю ускоряющую цель для модели.

Шаг 4 - График выходные значения

Теперь постройте результаты каждого запуска.

for i = 1:numSims
    simOut = out(i);
    t = simOut.tout;
    y = simOut.yout;
    plot(t, y)
    hold all
end