Измените компонент ссылки подсистемы динамически Используя InitFcn

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

Исследуйте модель

Входные параметры: дворники включены во время дождя или вуали. Дважды кликните Включают Датчик Вуали или Включают компонент Датчика Дождя в главном левом угле модели, чтобы выбрать тип входа. На основе выбора, входная переменная датчика SensorInput создается в рабочем пространстве модели.

Контроллер скорости дворника: В процессе моделирования InitFcn выполняется и вызывает switchSensor функция. Эта функция читает переменную SensorInput от рабочего пространства модели и изменений подсистема к slexRainSensor или slexFogSensor согласно вашему входному выбору. Компонент ссылки подсистемы (Дождь или Вуаль) преобразует входное напряжение на уровни скорости низко, носитель, и высоко. Контроллер скорости дворника преобразует передние и задние уровни скорости дворника в соответствующую скорость в циклах в секунду.

Используйте этот код в InitFcn 'callback'

function wiperController(bd, option)
 switch option
     case 'PostLoad'
         createWiperConstants(bd);
     case 'Init'
         switchSensor(bd);
     otherwise
 end
end
function switchSensor(bd)
    mws = get_param(bdroot, 'modelworkspace');
    si = mws.getVariable('SensorInput');
    blockpath = [bd '/SensorBasedSpeedController'];
    if strcmp(si,'Fog')
        set_param(blockpath,'ReferencedSubsystem','slexFogSensor');
    elseif strcmp(si,'Rain')
        set_param(blockpath,'ReferencedSubsystem','slexRainSensor');
    end
end

Смотрите также

Функция инициализации

Для просмотра документации необходимо авторизоваться на сайте