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, соединенных с одним Блоком 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

Для просмотра документации необходимо авторизоваться на сайте