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

Описания RDS

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.7. Краткий перечень вводимых в модель описаний и реакций на события

§3.7.7. Загрузка и запись мгновенного состояния блока

§3.7.7.1. Загрузка состояния блока

# Описание пользователя

## Глава 3. Использование стандартных модулей автокомпиляции

### §3.7. Краткий перечень вводимых в модель описаний и реакций на события

#### §3.7.7. Загрузка и запись мгновенного состояния блока

Рассматриваются реакции на события, возникающие при сохранении и восстановлении мгновенного состояния части схемы. Эти события порождаются вызовами специальных сервисных функций RDS и позволяют возвращать схему «назад во времени» по команде от одного из ее блоков.

##### §3.7.7.1. Загрузка состояния блока

Событие загрузки состояния возникает у блока в процессе работы сервисной функции rdsLoadSystemState, вызвав которую какая-либо модель блока может восстановить ранее сохраненное состояние блоков всей схемы или ее отдельной подсистемы. В реакции на это событие модель должна загрузить все данные, сохраненные ей же при реакции на событие сохранения состояния (см. §3.7.7.2). Загрузка состояния может использоваться для того, чтобы вернуть схему «назад во времени» и повторить расчет, например, с другими входными данными. В интерфейсе пользователя RDS не предусмотрено сохранения состояния схемы и возврата ее в запомненное состояние – этим должны заниматься модели блоков. Сохранение и загрузка состояний блоков и подсистем подробно описаны в §2.14.3 руководства программиста.

Следует помнить, что значения статических переменных блока сохраняются и восстанавливаются автоматически. Модель должна сохранять и восстанавливать только значения динамических переменных, за которые она отвечает, и значения своих внутренних параметров, если таковые имеются.

Текст реакции на событие загрузки состояния вводится на вкладке «события» левой панели редактора модели: раздел «загрузка и запись состояния», подраздел «загрузка состояния блока». В классе блока для этой реакции создается функция с именем rdsbcppLoadState:

      // Loading block parameters for stored state
      void rdsbcppBlockClass::rdsbcppLoadState(void)
      {
         … пользовательский текст реакции …
      }

Внутри этой функции данные должны загружаться вызовами функции rdsReadBlockData в том же порядке, в котором они сохранялись вызовами rdsWriteBlockData при сохранении состояния.

При написании моделей блоков без использования модуля автокомпиляции событию загрузки состояния соответствует константа RDS RDS_BFM_LOADSTATE.