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

Описания RDS

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

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

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

§3.7.2. Создание и уничтожение блока

§3.7.2.1. Инициализация блока

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

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

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

#### §3.7.2. Создание и уничтожение блока

Рассматриваются реакции на события, связанные с созданием и уничтожением блока.

##### §3.7.2.1. Инициализация блока

Событие инициализации – это самое первое событие в «жизни» блока. Оно возникает только один раз за все время работы модели в момент подключения этой модели к блоку: при добавлении блока в схему из библиотеки или из буфера обмена, при загрузке схемы из файла, при ручной смене модели блока пользователем через окно параметров блока и т.п. На момент возникновения события параметры блока еще не загружены и переменные еще не созданы, поэтому в реакции на него нельзя обращаться к переменным блока. Если попытаться обратиться к переменным блока в реакции на событие инициализации, будет выведено сообщение об ошибке (рис. 486).

Рис. 486. Сообщение о недопустимости обращения
к переменным блока

Не следует вводить в реакцию на инициализацию блока какие-либо команды, задающие начальные параметры расчета, выполняемого блоком. Событие инициализации возникает только один раз, а начальные параметры расчета необходимо задавать после каждого его сброса. Для этого можно использовать специальные флаги, обрабатываемые в реакции на такт расчета (см. пример в §3.6.4.2) или реакцию на сброс расчета.

Реакция на событие инициализации вводится на вкладке «события» левой панели редактора модели: раздел «создание и уничтожение», подраздел «инициализация блока» (см. рис. 463). Чаще всего эта реакция используется для настройки каких-либо объектов блока, параметры которых не настраиваются пользователем и не изменяются в процессе работы блока. Например, в примере из §3.6.12 в реакции инициализации модель блока добавляет свой собственный пункт в главное меню RDS.

Для реакции на инициализацию модуль автоматически создает в классе блока функцию без параметров с именем rdsbcppInit, внутрь которой вставляется текст программы, введенной пользователем на соответствующей вкладке редактора. Функция имеет следующий вид:

      // Block data creation and initialization
      void rdsbcppBlockClass::rdsbcppInit(void)
      {
         … пользовательский текст реакции …
      }

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