getBlockInfo

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

Описание

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

пример

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