LinearizationAdvisor

Диагностическая информация для диагностики результатов линеаризации

Описание

Когда вы линеаризируете Simulink® модель, можно создать LinearizationAdvisor объект, содержащий диагностическую информацию об отдельных линеаризациях блоков. Можно диагностировать результаты линеаризации путем просмотра этой диагностической информации.

Для доступа к диагностической информации используйте getBlockInfo функция.

Создание

Существует несколько способов создать LinearizationAdvisor объект при линеаризации модели Simulink. Когда вы линеаризируете модель, используя:

  • linearize функция, сначала создайте linearizeOptions набор опций, установка StoreAdvisor опция для true. Затем линеаризируйте модель с помощью linearize, возвращая info аргумент.

  • Один slLinearizer интерфейс, сначала создайте linearizeOptions набор опций, установка StoreAdvisor опция для true. Затем создайте slLinearizer интерфейс. Когда вы получаете линейную модель из интерфейса с помощью функции линеаризации, такой как getIOTransfer, верните info аргумент.

  • Один slTuner интерфейс, сначала создайте slTunerOptions набор опций, установка StoreAdvisor опция для true. Затем создайте slTuner интерфейс. Когда вы получаете линейную модель из интерфейса с помощью функции линеаризации, такой как getIOTransfer, верните info аргумент.

Затем вы можете получить доступ к LinearizationAdvisor объект, использующий info.Advisor. Если вы линеаризируете модель в нескольких рабочих точках или используя изменение параметра, info.Advisor является массивом LinearizationAdvisor объекты.

Кроме того, advise и find функции возвращают LinearizationAdvisor объект, который содержит диагностическую информацию для блоков, которые удовлетворяют соответствующим критериям поиска.

Свойства

расширить все

Модель Simulink, сопоставленная с диагностической информацией линеаризации, возвращается как вектор символов.

Model является свойством только для чтения.

Точки линейного анализа, включая входы, выходы и открытия, возвращаются как объект ввода-вывода линеаризации или вектор объектов ввода-вывода линеаризации.

AnalysisPoints соответствует:

  • io входной параметр linearize команда.

  • Точки анализа и открытия цикла slLinearizer или slTuner интерфейс.

Для получения дополнительной информации о точках анализа см. «Задание фрагмента модели для линеаризации».

AnalysisPoints является свойством только для чтения.

Рабочая точка, в которой модель была линеаризирована, задается как объект рабочей точки.

OperatingPoint является свойством только для чтения.

Выборки параметров для линеаризации, заданные как один из следующих:

  • [] - Результат линеаризации не имеет связанных значений параметров.

  • Структура - Значение для одного параметра, заданное как структура со следующими полями:

    • Name - Имя параметра

    • Value - Значение параметров

  • Массив структур - Значения для нескольких параметров.

Для получения дополнительной информации о вариации параметра смотрите Specify Parameter Samples for Batch Linearization.

Parameters является свойством только для чтения.

Опции алгоритма линеаризации, заданные как linearizeOptions объект.

LinearizationOptions соответствует options входной параметр linearize, slLinearizer, или slTuner.

LinearizationOptions является свойством только для чтения.

Диагностическая информация для каждого блока, который соответствует критериям поиска, используемым для создания LinearizationAdvisor объект, заданный как BlockDiagnostic объект или вектор BlockDiagnostic объекты.

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

BlockDiagnostics является свойством только для чтения.

Тип запроса, используемый для получения диагностики линеаризации, задается как одно из следующего:

  • 'All Blocks' когда вы первоначально создаете LinearizationAdvisor объект с использованием функции линеаризации, такой как linearize или getIOTransfer.

  • 'Linearization Advice' когда вы создаете LinearizationAdvisor использование объекта advise команда.

  • Вектор символов, соответствующий QueryType свойство соответствующего пользовательского объекта запроса при создании LinearizationAdvisor использование объекта find команда.

QueryType является свойством только для чтения.

Описание запроса, используемого для получения диагностики линеаризации, указывается как одно из следующего:

  • 'All Linearized Blocks' когда вы первоначально создаете LinearizationAdvisor объект с использованием функции линеаризации, такой как linearize или getIOTransfer.

  • 'Blocks that are Potentially Problematic for Linearization' когда вы создаете LinearizationAdvisor использование объекта advise команда.

  • Вектор символов, соответствующий Description свойство соответствующего пользовательского объекта запроса при создании LinearizationAdvisor использование объекта find команда.

Description является свойством только для чтения.

Функции объекта

adviseНайдите блоки, которые потенциально проблематичны для линеаризации
highlightВыделите путь линеаризации в модели Simulink
findНайдите блоки в результатах линеаризации, которые соответствуют определенным критериям
getBlockInfoПолучите диагностическую информацию для линеаризации блоков
getBlockPathsПолучите список блоков в LinearizationAdvisor объект

Примеры

свернуть все

Загрузка модели Simulink.

mdl = 'scdpendulum';
load_system(mdl)

Создайте набор опций линеаризации, включив StoreAdvisor опция.

opt = linearizeOptions('StoreAdvisor',true);

Линеаризируйте модель с помощью этого набора опций, возвращая info аргумент.

io = getlinio(mdl);
[linsys,~,info] = linearize(mdl,io,opt);

Извлечение LinearizationAdvisor объект из info.

advisor = info.Advisor
advisor = 
  LinearizationAdvisor with properties:

               Model: 'scdpendulum'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x11 linearize.advisor.BlockDiagnostic]
           QueryType: 'All Blocks'

Загрузка модели Simulink.

mdl = 'scdspeed';
load_system(mdl)

Создайте набор опций линеаризации, включив StoreAdvisor опция.

opt = linearizeOptions('StoreAdvisor',true);

Задайте входные и выходные точки анализа и создайте slLinearizer интерфейс, использующий этот набор опций.

io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');
SL = slLinearizer(mdl,io,opt);

Найдите передаточную функцию от входа до выхода, возвращая info аргумент.

[linsys,info] = getIOTransfer(SL,'scdspeed/throttle (degrees)','scdspeed/rad//s to rpm');

Извлечение LinearizationAdvisor объект из info.

advisor = info.Advisor
advisor = 
  LinearizationAdvisor with properties:

               Model: 'scdspeed'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x27 linearize.advisor.BlockDiagnostic]
           QueryType: 'All Blocks'

Загрузка модели Simulink.

mdl = 'scdspeed';
load_system(mdl)

Создайте slTunerOptions набор опций, включение StoreAdvisor опция.

opt = slTunerOptions('StoreAdvisor',true);

Задайте входные и выходные точки анализа и создайте slTuner интерфейс, использующий этот набор опций.

io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');
ST = slTuner(mdl,io,opt);

Обычно вы настраиваете систему управления, используя systune функция. Затем можно найти передаточную функцию от входа до выхода, возвращая info аргумент.

[linsys,info] = getIOTransfer(ST,'scdspeed/throttle (degrees)','scdspeed/rad//s to rpm');

Извлечение LinearizationAdvisor объект из info.

advisor = info.Advisor
advisor = 
  LinearizationAdvisor with properties:

               Model: 'scdspeed'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x27 linearize.advisor.BlockDiagnostic]
           QueryType: 'All Blocks'

Загрузка модели Simulink.

mdl = 'scdpendulum';
load_system(mdl)

Линеаризация модели и получение LinearizationAdvisor объект.

io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;

Найдите потенциально проблематичные блоки для линеаризации.

result = advise(advisor)
result = 
  LinearizationAdvisor with properties:

               Model: 'scdpendulum'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x3 linearize.advisor.BlockDiagnostic]
           QueryType: 'Linearization Advice'

Загрузите модель Simulink.

mdl = 'scdspeed';
load_system(mdl)

Линеаризируйте модель и получите LinearizationAdvisor объект.

opts = linearizeOptions('StoreAdvisor',true);
io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');
[sys,op,info] = linearize(mdl,io,opts);
advisor = info.Advisor;

Создайте составной объект запроса для нахождения всех блоков с одним входом и одним выходом.

qSISO = linqueryHasInputs(1) & linqueryHasOutputs(1);

Найдите все блоки SISO, используя составной объект запроса.

advSISO = find(advisor,qSISO)
advSISO = 
  LinearizationAdvisor with properties:

               Model: 'scdspeed'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x10 linearize.advisor.BlockDiagnostic]
           QueryType: '(Has 1 Inputs & Has 1 Outputs)'

Загрузка модели Simulink.

mdl = 'scdpendulum';
load_system(mdl)

Линеаризация модели и получение LinearizationAdvisor объект.

io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;

Найдите блоки, которые потенциально проблематичны для линеаризации.

blocks = advise(advisor);

Получите диагностику для этих блоков.

diags = getBlockInfo(blocks)
diags = 
Linearization Diagnostics for the Blocks:

Block Info:
-----------
Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
1.      scdpendulum/pendulum/Saturation                     Yes          No                             Exact                  
2.      scdpendulum/angle_wrap/Trigonometric Function1      Yes          No                             Perturbation           
3.      scdpendulum/pendulum/Trigonometric Function         Yes          No                             Perturbation           

Альтернативная функциональность

Приложение

Можно в интерактивном режиме решить проблемы с результатами линеаризации с помощью консультанта по линеаризации в Model Linearizer. Для получения примера смотрите Поиск и устранение проблем с результатами линеаризации в Model Linearizer.

Введенный в R2017b