getBlockInfo

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

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

Синтаксис

blockInfo = getBlockInfo(advisor)
blockInfo = getBlockInfo(advisor,block)
blockInfo = getBlockInfo(advisor,index)

Описание

пример

blockInfo = getBlockInfo(advisor) возвращает диагностическую информацию для всех блоков, перечисленных в объекте LinearizationAdvisor, advisor.

пример

blockInfo = getBlockInfo(advisor,block) возвращает диагностическую информацию для блоков с путями к блоку, заданными в block.

пример

blockInfo = getBlockInfo(advisor,index) возвращает диагностическую информацию для блоков с индексами, заданными в index.

Примеры

свернуть все

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

Модель Load Simulink.

mdl = 'scdpendulum';
load_system(mdl)

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

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

Получите диагностическую информацию для первого элемента advisor.BlockDiagnostics.

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

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

Можно также получить диагностику для нескольких блоков. Например, получите диагностику для вторых и третьих блоков, перечисленных в advisor.

diags = getBlockInfo(advisor,[2 3])
diags = 
Linearization Diagnostics for the Blocks:

Block Info:
-----------
Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
1.      scdpendulum/pendulum/Integrator, Second-Order       Yes          No                             Exact                  
2.      scdpendulum/angle_wrap/Trigonometric Function1      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;

Получите пути к блоку линеаризовавших блоков.

paths = getBlockPaths(advisor);

Создайте логический массив, указывающий, какие блоки находятся в подсистеме angle_wrap.

index = contains(paths,'angle_wrap');

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

diags = getBlockInfo(advisor,index)
diags = 
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/angle_wrap/Trigonometric Function2      Yes          No                             Perturbation           
3.      scdpendulum/angle_wrap/Trigonometric Function       Yes          No                             Perturbation           

Входные параметры

свернуть все

Диагностическая информация для линеаризации блока, заданной как объект LinearizationAdvisor или массив объектов LinearizationAdvisor.

Блокируйте пути в модели Simulink, заданной как одно из следующего:

  • Вектор символов — Получает диагностическую информацию для одного блока.

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

Блокируйте индексы, заданные как одно из следующего:

  • Положительное целое число — Получает диагностическую информацию для указанного элемента Advisor.BlockDiagnostics

  • Массив положительных целых чисел — Получает диагностическую информацию для нескольких элементов Advisor.BlockDiagnostics.

  • Булев массив — Для каждого элемента index, который является true, возвратите диагностику для соответствующего элемента Advisor.BlockDiagnostics.

Выходные аргументы

свернуть все

Диагностическая информация для линеаризации блока, обозначенной index, возвращенным как объект BlockDiagnostic или вектор BlockDiagnostic, возражает, является ли advisor одним объектом LinearizationAdvisor.

Если advisor является массивом объектов LinearizationAdvisor, то blockInfo является массивом ячеек с теми же размерностями как advisor, в котором каждый элемент является вектором объектов BlockDiagnostic.

Введенный в R2017b