exponenta event banner

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]

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

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