Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.2. Управление работой RDS и функции общего назначения

А.5.2.44. rdsSetExclusiveCalc – выделенный расчет подсистемы

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.2. Управление работой RDS и функции общего назначения

##### А.5.2.44. rdsSetExclusiveCalc – выделенный расчет подсистемы

Функция rdsSetExclusiveCalc включает или выключает выделенный расчет блоков указанной в параметрах подсистемы. При выделенном расчете блоки всех подсистем, внешних по отношению к указанной, исключаются из цикла расчета.

      BOOL RDSCALL rdsSetExclusiveCalc(
        RDS_BHANDLE System,    // Подсистема
        BOOL On                // Включить/выключить выделенный расчет
      );

Тип указателя на эту функцию

RDS_BBhB

Параметры

System(RDS_BHANDLE)
  Идентификатор подсистемы, для блоков которой нужно включить или выключить выделенный расчет.
On(BOOL)
  TRUE, если выделенный расчет нужно включить, FALSE – если выключить.

Возвращаемое значение

TRUE, если выделенный расчет для указанной подсистемы удалось успешно включить или выключить, FALSE при невозможности сделать это.

Примечания

Исходно в расчете, то есть в вызове моделей блоков с параметром RDS_BFM_MODEL и RDS_BFM_PREMODEL, который производится циклически в режиме расчета, участвуют все простые блоки загруженной схемы. При включении выделенного расчета какой-либо подсистемы все блоки, не находящиеся непосредственно в этой подсистеме и во вложенных в нее (на любом уровне вложенности) подсистемах исключаются из расчета. Это позволяет бороться с задержками, возникающими в длинных цепочках блоков, если это необходимо для логики работы схемы.

После включения выделенного расчета подсистемы можно либо выключить его, либо включить выделенный расчет для одной из ее внутренних подсистем – тогда число блоков, участвующих в расчете, будет ограничено еще сильнее. Если для подсистемы А включен выделенный расчет, включить его для подсистемы Б получится только в том случае, если Б находится внутри А, в противном случае rdsSetExclusiveCalc вернет FALSE. Таким образом, включение и выключение выделенного расчета производится строго иерархически: при выключении в расчете начинают принимать участие те блоки, которые участвовали в нем до включения. Например, если подсистема Б находится внутри подсистемы А, возможна следующая последовательность вызовов:

Параметры rdsSetExclusiveCalc | Блоки, участвующие в расчете после вызова
--- | ---
Исходное состояние | В расчете принимают участие все блоки схемы, включая блоки в подсистемах А и Б.
(A, TRUE) | В расчете принимают участие блоки подсистемы А, включая блоки вложенной в нее подсистемы Б.
(Б, TRUE) | В расчете принимают участие только блоки подсистемы Б.
(Б, FALSE) | В расчете снова принимают участие блоки подсистемы А, включая блоки вложенной в нее подсистемы Б.
(A, FALSE) | В расчете снова принимают участие все блоки схемы.

Выключение выделенного расчета желательно производить в порядке, обратном к включению, как в приведенном выше примере. Если выключить выделенный расчет не для той подсистемы, для которой он был включен в последний раз, выключение будет произведено не немедленно, а в тот момент, когда до нее дойдет очередь:

Параметры rdsSetExclusiveCalc | Блоки, участвующие в расчете после вызова
--- | ---
Исходное состояние | В расчете принимают участие все блоки схемы, включая блоки в подсистемах А и Б.
(A, TRUE) | В расчете принимают участие блоки подсистемы А, включая блоки вложенной в нее подсистемы Б.
(Б, TRUE) | В расчете принимают участие только блоки подсистемы Б.
(A, FALSE) | В расчете, как и раньше, принимают участие только блоки подсистемы Б. Факт выключения расчета для подсистемы А запомнен, но он никак не повлиял на включенный выделенный расчет подсистемы Б.
(Б, FALSE) | В расчете снова принимают участие все блоки схемы. Выделенный расчет для подсистемы Б выключился, а за ним автоматически выключился и выделенный расчет подсистемы А, поскольку он был выключен непосредственно перед ним.

Пример

Пример использования выделенного расчета приведен в §2.14.4 руководства программиста.

См. также

RDS_BFM_MODEL, RDS_BFM_PREMODEL.