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

  • 'Not Supported' - Блок в текущем строении не поддерживает линеаризацию. Например, блок Discrete Transfer 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]

Вы также можете получить диагностическую информацию для нескольких блоков сразу. Получите диагностику для блоков 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