exponenta event banner

BlockDiagnostic

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

Описание

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

Создание

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

Свойства

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

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

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

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

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

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

  • 'Yes' - Блок вносит вклад в результат линеаризации

  • 'No' - Блок не вносит вклад в результат линеаризации

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

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

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

Путь блока в модели Simulink, заданный как символьный вектор.

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

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

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

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

Линеаризация блоков, заданная как модель пространства состояний.

Метод линеаризации, указанный как один из следующих:

  • 'Exact' - Блок линеаризован с использованием определенной точной линеаризации

  • 'Perturbation' - Блок линеаризован с помощью численного возмущения

  • 'Block Substituted' - линеаризация блоков с использованием заданной пользовательской линеаризации;

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

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

    В этом случае блок Linearization равно нулю. Дополнительные сведения об устранении неполадок см. в разделе DiagnosticMessages собственность.

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

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

Диагностику линеаризации модели Simulink можно выполнить путем анализа диагностики отдельных линеаризаций блоков. Для этого изучите свойства BlockDiagnostic объекты, возвращенные из getBlockInfo. Дополнительные сведения см. в разделе Устранение неполадок с результатами линеаризации в командной строке.

Примеры

свернуть все

Загрузить модель 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           

Загрузить модель 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]

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

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