Типы ISaGRAF определены как типы “C” в файле определения функции:
boolean
T_BOO
long (32 бита)
Integer analog
T_ANA
long
Real analog
T_REAL
float (32 бита, плавающее значение с одиночной точностью)
timer
T_TMR
long
message
T_MSG
char* (32 битный указатель)
Каждое поле структуры “str_srg” соответствует одному параметру функции. Возвращаемый параметр - последний в структуре. Параметры вызова возникают в структуре в том же порядке, в котором они были установлены в определении функции. Имена идентификаторов вводятся во время определения функции в менеджере библиотек ISaGRAF.
Файл определений изменяется каждый раз, когда интерфейс функций изменяется менеджером библиотек ISaGRAF. Это обеспечивает полное соответствие между реализацией функции и его использованием в программах ISaGRAF.
Исходный текст
Ниже представлен стандартный скелет “C” функции:
/* Пример функции пользователя - Номер “255” - имя ”SAMPLE”*/
#include "tasy0def.h" /* Общие определения ядра ISaGRAF */
#include "grus0255.h" /* определения интерфейса для функции */
void USP_sample (str_arg *arg)
{
/* тело функции */
}
/*Следующая функция используется для инициализации функции и объявления ее реализации. Она реализует связь с ядром ISaGRAF, используя имя функции. Эта функция полностью генерируется менеджером библиотек ISaGRAF*/
UFP uspdef_sample (char *name)
{
strcpy (name, "SAMPLE"); /* дает имя функции */
return (USP_sample); /* возвращает реализацию функции */
}
/* конец файла */
Включенный файл “TASY0DEF.h” из ядра ISaGRAF требуется для системозависимых определений. Он, также содержит тип UFP, который представляет указатель на пустую функцию, и используется для объявления функции.
Связь между проектами и “C” реализацией
Логическая связь между реализацией функции и ее использованием в программах проекта ISaGRAF осуществляется через имя функции.