Навигация:
<< >> Оглавление Указатель

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

Глава 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.


<< >> Оглавление Указатель