Этот пример показывает, как использовать интерфейс slLinearizer
, чтобы обработать в пакетном режиме, линеаризуют модель Simulink®. Вы линеаризуете модель в нескольких рабочих точках и получаете несколько разомкнутый цикл и передаточные функции с обратной связью из модели.
Можно выполнить тот же анализ с помощью команды linearize
. Однако когда это необходимо, чтобы получить несколько разомкнутый цикл и передаточные функции с обратной связью, специально для моделей, которые являются дорогими, чтобы неоднократно компилировать, slLinearizer
может быть более эффективным.
Откройте модель.
mdl = 'watertank';
open_system(mdl);
Используйте команду slLinearizer
, чтобы создать интерфейс.
sllin = slLinearizer(mdl)
slLinearizer linearization interface for "watertank": No analysis points. Use the addPoint command to add new points. No permanent openings. Use the addOpening command to add new permanent openings. Properties with dot notation get/set access: Parameters : [] OperatingPoints : [] (model initial condition will be used.) BlockSubstitutions : [] Options : [1x1 linearize.LinearizeOptions]
Отображение командного окна показывает информацию об интерфейсе slLinearizer
. В этом интерфейсе отображение свойства OperatingPoints
показывает, что никакая рабочая точка не задана.
Можно линеаризовать модель с помощью обрезанных рабочих точек, образцового начального условия, или времена снимка состояния симуляции. В данном примере используйте точки обрезки, что вы получаете для переменных высот ссылки уровня воды.
opspec = operspec(mdl); opspec.States(2).Known = 1; opts = findopOptions('DisplayReport','off'); h = [10 15 20]; for ct = 1:numel(h) opspec.States(2).x = h(ct); Href = h(ct); ops(ct) = findop(mdl,opspec,opts); end sllin.OperatingPoints = ops;
Здесь, h
задает различные уровни воды. ops
является 1 x 3 массива объектов рабочей точки. Каждая запись ops
является образцовой рабочей точкой в соответствующем уровне воды. Сконфигурируйте свойство OperatingPoints
sllin
с ops
. Теперь, когда вы получаете передаточные функции из sllin
с помощью getIOTransfer
, getLoopTransfer
, getSensitivity
и функций getCompSensitivity
, программное обеспечение возвращает линеаризацию для каждой заданной рабочей точки.
Каждая точка для обрезки только допустима для соответствующей ссылочной высоты, представленной параметром Href
блока Desired Water Level. Так, сконфигурируйте sllin
, чтобы отличаться этот параметр соответственно.
param.Name = 'Href';
param.Value = h;
sllin.Parameters = param;
В модели watertank
блок Water-Tank System представляет объект. Чтобы получить передаточную функцию объекта, добавьте сигналы ввода и вывода блока Water-Tank System как аналитические точки sllin
.
addPoint(sllin,{'watertank/PID Controller','watertank/Water-Tank System'}) sllin
slLinearizer linearization interface for "watertank": 2 Analysis points: -------------------------- Point 1: - Block: watertank/PID Controller - Port: 1 Point 2: - Block: watertank/Water-Tank System - Port: 1 No permanent openings. Use the addOpening command to add new permanent openings. Properties with dot notation get/set access: Parameters : [1x1 struct], 1 parameters with sampling grid of size 1x3 "Href", varying between 10 and 20. OperatingPoints : [1x3 opcond.OperatingPoint] BlockSubstitutions : [] Options : [1x1 linearize.LinearizeOptions]
Первая аналитическая точка, которая происходит в выходном порту блока PID Controller, является входом к блоку Water-Tank System. Второй аналитической точкой является вывод блока Water-Tank System.
Получите передаточную функцию объекта из входа блока Water-Tank System к блоку вывод. Чтобы устранить эффекты обратной связи, задайте блок вывод как временное открытие цикла.
G = getIOTransfer(sllin,'PID','Tank','Tank');
В вызове getIOTransfer
'PID'
, фрагмент имени блока 'watertank/PID Controller'
, задает первую аналитическую точку как вход передаточной функции. Точно так же 'Tank'
, фрагмент имени блока 'watertank/Water-Tank System'
, относится к второй аналитической точке. Эта аналитическая точка задана как передаточная функция вывод (третий входной параметр) и временное открытие цикла (четвертый входной параметр).
Вывод, G
, является 1 x 3 массива непрерывно-разовых моделей в пространстве состояний.
Постройте переходной процесс для G
.
stepplot(G);
Переходной процесс моделей объекта управления значительно отличается в различных рабочих точках.
Передаточная функция с обратной связью равна передаточной функции от ссылочного входа, происходящего в блоке Desired Water Level, к объекту вывод.
Добавьте ссылочный входной сигнал как аналитическую точку sllin
.
addPoint(sllin,'watertank/Desired Water Level');
Получите передаточную функцию с обратной связью.
T = getIOTransfer(sllin,'Desired','Tank');
Вывод, T
, является 1 x 3 массива непрерывно-разовых моделей в пространстве состояний.
Постройте переходной процесс для T
.
stepplot(T);
Несмотря на то, что переходной процесс передаточной функции объекта значительно отличается в трех обрезанных рабочих точках, контроллер приносит ответы с обратной связью намного ближе вместе во всех трех рабочих точках.
S = getSensitivity(sllin,'Tank');
Программное обеспечение вводит сигнал воздействия и измеряет вывод на объекте вывод. S
является 1 x 3 массива непрерывно-разовых моделей в пространстве состояний.
Постройте переходной процесс для S
.
stepplot(S);
График показывает, что обе модели могут отклонить воздействие шага на объекте вывод в течение 40 секунд.
addOpening
| addPoint
| getCompSensitivity
| getIOTransfer
| getLoopTransfer
| getSensitivity
| linearize
| slLinearizer