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

Описания RDS

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

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

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

§3.7.3. Моделирование и переключение режимов

§3.7.3.2. Запуск расчета

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

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

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

#### §3.7.3. Моделирование и переключение режимов

##### §3.7.3.2. Запуск расчета

Это событие возникает при переходе RDS в режим расчета из режима моделирования (при запуске расчета из режима редактирования RDS сначала переходит в режим моделирования, а уже потом – в режим расчета). Реакция на него вводится на вкладке «события» левой панели редактора модели: раздел «моделирование и режимы», подраздел «запуск расчета» (см. рис. 462). В классе блока для нее создается функция с именем rdsbcppStartCalc с введенным пользователем текстом программы внутри:

      // Simulation start
      void rdsbcppBlockClass::rdsbcppStartCalc(RDS_PSTARTSTOPDATA StartStopData)
      {
         … пользовательский текст реакции …
      }

В функцию передается параметр StartStopData, представляющий собой указатель на структуру описания события RDS_STARTSTOPDATA:

      typedef struct {
        BOOL FirstStart;  // Расчет запущен с самого начала
        BOOL Loop;        // Расчет будет работать непрерывно
      } RDS_STARTSTOPDATA;
      typedef RDS_STARTSTOPDATA *RDS_PSTARTSTOPDATA;

Поля структуры имеют следующий смысл:

FirstStart(BOOL)
  TRUE, если расчет запущен с самого начала (сразу после загрузки схемы или сброса расчета), или FALSE, если расчет повторно запущен после остановки.
Loop(BOOL)
  TRUE, если расчет запущен в нормальном, циклическом, режиме, или FALSE, если после выполнения одного такта он будет автоматически остановлен (пользователь нажал кнопку «выполнить один такт»).

Следует помнить, что это событие возникает не только при первом запуске расчета, но и при его запуске после остановки, поэтому использовать реакцию на него для инициализации расчета без анализа поля FirstStart структуры описания события нельзя.

Пример реакции на это событие приведен в §3.6.12. При написании моделей блоков без использования модуля автокомпиляции событию запуска расчета соответствует константа RDS RDS_BFM_STARTCALC.