Объект рабочей точки, используемый для линеаризации и системы управления, не включает Simulink® блоки с представлением внутреннего состояния, такие как следующее:
Блоки Memory
Отключенный If Action Subsystem и блоки Switch Case Action Subsystem
Блоки Backlash
MATLAB Function блокируется с персистентными данными
Блоки Rate Transition
Stateflow® блоки
S-Function блокируется с состояниями, не указанными как Непрерывное или Двойное Дискретное Значение
Например, если вы вычисляете установившуюся рабочую точку для следующей модели Simulink, получившийся объект рабочей точки не включает состояния блока Backlash, потому что эти состояния имеют внутреннее представление. Если вы используете этот объект рабочей точки инициализировать модель Simulink, начальные условия блоков Backlash могут быть несовместимыми с рабочей точкой.
Как пример, можно вычислить рабочую точку для модели myModel
из снимка состояния симуляции в 10 секунд и затем линеаризуют модель в этой рабочей точке. В этом случае, linearize
функция инициализирует состояние модели рабочей точкой прежде, чем линеаризовать модель.
op = findop('myModel',10); linsys = linearize('myModel',io,op);
Если myModel
содержит один или несколько блоков с представлением внутреннего состояния, op
не содержит внутренние состояния. Поэтому linsys
не может быть точное линейное представление модели.
Вместо того, чтобы найти рабочую точку в снимке состояния симуляции, можно симулировать модель ко времени снимка состояния и линеаризовать модель в самом снимке состояния.
linsys = linearize('myModel',io,10);
Этот подход старается не инициализировать модель рабочей точкой, которая пропускает информацию состояния.
Блоки с внутренними состояниями могут вызвать проблемы для установившегося поиска рабочей точки (обрезка). Где нет никакого прямого сквозного соединения, вход с блоком в текущее время не определяет выход блока в текущее время.
Чтобы устранить эту проблему для Memory, Transport Delay или блоки Variable Transport Delay, выбирает параметры блоков Direct feedthrough of input during linearization перед поиском рабочей точки или линеаризацией модели в устойчивом состоянии. Эта установка заставляет такие блоки вести себя, как будто у них есть усиление одного во время поиска рабочей точки.
Например, следующая модель включает блок Transport Delay. В этом случае вы не можете найти установившуюся рабочую точку с помощью оптимизации, потому что выход Transport Delay всегда является нулем. Поскольку опорный сигнал равняется 1, вход с блоком Plant должен быть ненулевым, чтобы заставить блок объекта иметь выход 1 и быть в устойчивом состоянии.
Выберите опцию Direct feedthrough of input during linearization в диалоговом окне Block Parameters перед поиском рабочей точки. Эта установка позволяет блоку PID Controller передавать ненулевое значение блоку Plant.
Можно также установить прямые проходные опции в командной строке.
Блок | Команда, чтобы задать прямое сквозное соединение |
---|---|
Memory | set_param(blockname,'LinearizeMemory','on') |
Transport Delay или Variable Transport Delay | set_param(blockname,'TransDelayFeedthrough','on') |
Для других блоков с внутренними состояниями определите, влияет ли выход блока на производные состояния или желаемые уровни на выходе прежде, чем вычислить рабочие точки. Если блок влияет на эти производные или уровни на выходе, рассмотрите заменяющий его с помощью конфигурируемой подсистемы.