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 является свойством только для чтения.

Линейные аналитические точки, включая входные параметры, выходные параметры, и открытия, возвратились как объект I/O линеаризации или вектор объектов ввода-вывода линеаризации.

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

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

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

Для получения дополнительной информации об аналитических точках смотрите, Задают Фрагмент Модели, чтобы Линеаризовать.

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

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

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

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

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

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

    • Имя 'ParameterName'

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

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

Для получения дополнительной информации об изменении параметра смотрите, Задают Выборки Параметра для Пакетной Линеаризации.

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

Примеры

свернуть все

Модель Load 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'

Модель Load 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'

Модель Load 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'

Модель Load 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)'

Модель Load 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           

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

Приложение

Можно в интерактивном режиме диагностировать результаты линеаризации с помощью Советника по вопросам Линеаризации в Linear Analysis Tool. Для примера смотрите Результаты Линеаризации Поиска и устранения неисправностей в Linear Analysis Tool.

Введенный в R2017b