BlockDiagnostic

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

Описание

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

Создание

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

Свойства

развернуть все

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

  • 'Yes' — Блок находится на пути к линеаризации

  • 'No' — Блок не находится на пути к линеаризации

Путь к линеаризации соединяет входные параметры линеаризации с линеаризацией выходные параметры. Чтобы просмотреть путь к линеаризации в модели Simulink, используйте highlight функция.

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

  • 'Yes' — Блок способствует результату линеаризации

  • 'No' — Блок не способствует результату линеаризации

Если блок не находится на пути к линеаризации; то есть, если IsOnPath 'No', затем ContributesToLinearization 'No'.

Диагностическое сообщение относительно линеаризации блока в виде массива ячеек из символьных векторов. Эти сообщения указывают на возможные проблемы, которые могут влиять на линеаризацию блока.

Если HasDiagnostics 'No', затем DiagnosticMessages массив пустой ячейки.

Блок path в модели Simulink в виде вектора символов.

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

  • 'Yes' — Блок имеет диагностические сообщения

  • 'No' — Блок не имеет диагностических сообщений

Если HasDiagnostics 'Yes', затем DiagnosticMessages массив ячеек из символьных векторов, который содержит сообщения.

Блокируйте линеаризацию в виде модели в пространстве состояний.

Метод линеаризации в виде одного из следующего:

  • 'Exact' — Блокируйте линеаризовавшее использование его заданной точной линеаризации

  • 'Perturbation' — Блокируйте линеаризовавшее использующее числовое возмущение

  • 'Block Substituted' — Блокируйте линеаризовавшее использование заданной пользовательской линеаризации

  • 'Simscape Network' — Сеть Simscape™ линеаризовала использование точной линеаризации, заданной в механизме Simscape. LinearizationAdvisor объект не предоставляет диагностическую информацию на базисе уровня компонента для сетей Simscape. Вместо этого это собирает в группу диагностическую информацию для нескольких компонентов Simscape, соединенных с одним блоком Solver Configuration.

  • 'Not Supported' — Блок в его текущей настройке не поддерживает линеаризацию. Например, блок Discrete Transfer Fcn с внешним сбросом не поддерживает линеаризацию.

    В этом случае, блок Linearization нуль. Для большей информации о поиске и устранении неисправностей проверяйте DiagnosticMessages свойство.

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

Использование

Можно диагностировать линеаризацию модели Simulink путем исследования диагностики на отдельную линеаризацию блока. Для этого исследуйте свойства BlockDiagnostic объекты, возвращенные из getBlockInfo. Для получения дополнительной информации смотрите Результаты Линеаризации Поиска и устранения неисправностей в Командной строке.

Примеры

свернуть все

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

Модель Load Simulink.

mdl = 'scdpendulum';
load_system(mdl)

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

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

Получите диагностическую информацию для блока насыщения.

satDiag = getBlockInfo(advisor,'scdpendulum/pendulum/Saturation')
satDiag = 
Linearization Diagnostics for scdpendulum/pendulum/Saturation with properties:

                      IsOnPath: 'Yes'
    ContributesToLinearization: 'No'
           LinearizationMethod: 'Exact'
                 Linearization: [1x1 ss]
                OperatingPoint: [1x1 linearize.advisor.BlockOperatingPoint]

Можно также получить диагностическую информацию для нескольких блоков целиком. Получите диагностику для блоков sin в модели.

sinBlocks = {'scdpendulum/pendulum/Trigonometric Function';
             'scdpendulum/angle_wrap/Trigonometric Function1'};
         
sinDiag = getBlockInfo(advisor,sinBlocks)
sinDiag = 
Linearization Diagnostics for the Blocks:

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

Вопросы совместимости

развернуть все

Поведение изменяется в R2018a

Введенный в R2017b