Приложения
Приложение А. Функции, константы и структуры 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 руководства программиста.
См. также