ISaGRAF. Version 3.4


“C” функциональные блоки - часть 12


Логическая связь между реализацией функции и ее использованием в программах проекта ISaGRAF осуществляется через имя функции. Служба объявления добавляется в исходный “C” код функционального блока. Эта служба вызывается только один раз, когда приложение стартует и сообщает ядру ISaGRAF имя, которое соответствует реализованной службе. Вот стандартный формат такой службы объявления:

ABP fbldef_xxx (char *name, IBP *initproc, RBP *readproc)

{

             strcpy (name, "XXX");                         /* name of the f.block */

             *initproc = (IBP)FBINIT_xxx;                              /* initialization service */

             *readproc = (RBP)FBREAD_xxx;                        /* read service */

             return ((ABP)FBACT_xxx);                  /* activation service */

}

/* xxx is the name of the function block */

Имя функционального блока, использующееся оператором strcpy, должно быть написано заглавными буквами. Оно должно быть написано маленькими буквами в реализации служб и в имени службы объявления.

Использование префиксов ”FBACT_”, ”FBINIT_”, ”FBREAD_” и “fbldef_” для реализации служб и определения службы позволяет пользователю именовать функции ключевыми словами языка “C” или именами существующих функций из “C” библиотек ISaGRAF.  Никакие другие операторы нельзя добавлять в службу объявления.

Служба объявления вызывается для любого интегрированного функционального блока, даже если он не используется в приложении ISaGRAF.  Ядро  ISaGRAF выдает ошибку, если в приложении используется не реализованный функциональный блок.

Прежде чем линковать новые функциональные блоки с ядром, пользователь должен написать другой файл с исходным текстом, под именем “GRFB0LIB.C” и вставить его с сохраненным функциональным блоком в список файлов для линкера. “GRFB0LIB.C” содержит только массив служб объявления. Этот массив читается во время инициализации приложения, для того чтобы создать динамические связи с функциональными блоками написанными на “C”.


- Начало -  - Назад -  - Вперед -