Описание пользователя
Глава 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.