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