getBlockInfo

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

Описание

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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