ГНЦ ИФВЭ
ОУ У-70
Система Управления комплекса У-70  

Программирование на Верхнем Уровне СУ

Библиотеки алгоритмов СУ

Здесь представлены процедуры, реализующие некоторые правила работы с данными в СУ. Процедуры включены в библиотеку prglib.a, которая имеет файл-заголовок prglib.h. Все запросы к БД ССУДА выполняются посредством процедур Надстройки над БД.
PrgSem_SetResult - установить семафоры физического или технологического параметра
PrgDB_PASS (устаревший вариант) - чтение и запись семафоров физических или технологических параметров
PrgDB_PD (устаревший вариант) - чтение и запись значений физических параметров
PrgDB_TD (устаревший вариант) - чтение и запись значений технологических параметров
PrgDBa_PDsave - запись значений измеренных физических параметров в "горячую" копию и в статистику измерений
 
PrgDB_PDsave (устаревший вариант)
PrgDBa_TDsave - запись значений измеренных технологических параметров в "горячую" копию и в статистику измерений
 
PrgDB_TDsave (устаревший вариант)
PrgIni_StatPlane - изменение значения счетчика записей измерений
PrgIni_GetStatPlane - получение номера плоскости таблицы для статистичеких  значений параметров
PrgArc_GetName - чтение полного имени архивной записи
PrgSample_Make - инициализация в памяти полного имени архивной записи
PrgSample_End - удалить из памяти полное имя архивной записи
PrgSample_GetName - получить строку из полного имени архивной записи
PrgSample_GetLength - получить длину строки из полного имени архивной записи
Пример - компиляция и сборка ПП

void PrgSem_SetResult (unsigned short int code, unsigned short int *sem1, unsigned short int *sem2);

Установить семафоры физического или технологического параметра:

code - код ошибки;
sem1 - семафор результата:
sem2 - управляющий семафор (код команды пользователя).

Алгоритм:

if (!code)then sem1=(++sem1%255); else sem1=code;  sem2=0;
Устаревший вариант:

int PrgDB_PASS (int fl_op, short int nplane, short int natt, short int tup1, short int ntup, void *buf, int buflen, short int *id, char *name);

Функция чтения и записи значения одного из семафоров для нескольких физических или технологических параметров, таблица типа PASSPORT:

fl_op - семафор операции:
 
fl_op=0 - чтение,
 
fl_op=1 - запись;
nplane - номер плоскости таблицы;
natt - номер семафора;
tup1 - начальный номер строки таблицы;
tup2 - конечный номер строки таблицы;
buf - адрес буфера для  значений семафора;
buflen - размер буфера в байтах;
id - идентификатор таблицы, определенный посредством функций PrgDB_open или PrgDB_openLocal;
name - имя таблицы.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

Устаревший вариант:

int PrgDB_PD int fl_op, short int nplane, short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *id, char *name);

Функция чтения и записи значений нескольких физических параметров, таблица типа DATA:

fl_op - семафор операции:
 
fl_op=0 - чтение,
 
fl_op=1 - запись;
nplane - номер плоскости таблицы;
tup1 - начальный номер строки таблицы;
ntup - число строк таблицы;
att1 - начальный номер столбца таблицы;
natt - число столбцов таблицы;
buf - адрес буфера для  значений семафора;
buflen - размер буфера в байтах;
id - идентификатор таблицы, определенный посредством функций PrgDB_open или PrgDB_openLocal;
name - имя таблицы.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

Устаревший вариант:

int PrgDB_TD ( int fl_op, short int nplane, short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *id, char *name);

Функция чтения и записи значений нескольких технологических параметров, таблица типа DATA:

fl_op - семафор операции:
 
fl_op=0 - чтение,
 
fl_op=1 - запись;
nplane - номер плоскости таблицы;
tup1 - начальный номер строки таблицы;
ntup - число строк таблицы;
att1 - начальный номер столбца таблицы;
natt - число столбцов таблицы;
buf - адрес буфера для  значений семафора;
buflen - размер буфера в байтах;
id - идентификатор таблицы, определенный посредством функций PrgDB_open или PrgDB_openLocal;
name - имя таблицы.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

int PrgDBa_PDsave (short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *idn);

Функция записи значений нескольких измеренных физических параметров в "горячую" копию и в статистику измерений, таблица типа DATA:

tup1 - начальный номер строки таблицы;
ntup - число строк таблицы;
att1 - начальный номер столбца таблицы;
natt - число столбцов таблицы;
buf - адрес буфера для  значений семафора;
buflen - размер буфера в байтах;
idn - номер структуры, в которой определена таблица посредством функций PrgDBa_open или PrgDBa_openLocal.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

Устаревший вариант:

int PrgDB_PDsave (short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *id, char *name);

Функция записи значений нескольких измеренных физических параметров в "горячую" копию и в статистику измерений, таблица типа DATA. Отличие от нового варианта:

id - идентификатор таблицы, определенный посредством функций PrgDB_open или PrgDB_openLocal;
name - имя таблицы.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

int PrgDBa_TDsave (short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *idn);

Функция записи значений нескольких измеренных технологических параметров в "горячую" копию и в статистику измерений, таблица типа DATA на диске Рабочей Станции:

tup1 - начальный номер строки таблицы;
ntup - число строк таблицы;
att1 - начальный номер столбца таблицы;
natt - число столбцов таблицы;
buf - адрес буфера для  значений семафора;
buflen - размер буфера в байтах;
idn - номер структуры, в которой определена таблица посредством функций PrgDBa_open или PrgDBa_openLocal.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

Устаревший вариант:

int PrgDB_TDsave (short int tup1, short int ntup, short int att1, short int natt, void *buf, int buflen, short int *id, char *name);

Функция записи значений нескольких измеренных технологических параметров в "горячую" копию и в статистику измерений, таблица типа DATA на диске Рабочей Станции. Отличие от нового варианта:

id - идентификатор таблицы, определенный посредством функций PrgDB_open или PrgDB_openLocal;
name - имя таблицы.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

void PrgIni_StatPlane (void);

Процедура вызывается после записи статистики измерений в БД. Процедура изменяет значение переменной prg_stat_plane в пределах от prg_stat_plane_start до prg_stat_plane_end.

int PrgIni_GetStatPlane (int fl, int *n);

Процедура для получения номера плоскости статистики номер n в таблице измеренных значений технологических, fl=0, или физических, fl=1, параметров.

Результат:

0 - нет значений для n<0 или n>prg_stat_plane_end;
иначе - номер плоскости.
int PrgArc_GetName (short int nplane, short int ntuple, struct regimes_names_tup *p);

Чтение полного имени архивной записи для физических параметров из каталога архива "холодных" копий:

nplane - номер архива;
ntuple - номер записи в архив (номер "холодной" копии);
p - определяемая структура regimes_names_tup, содержащая полное имя архивной записи.

Возвращает 0 в случае успеха. Если была ошибка, то возвращает 1 и код ошибки в переменной prg_err.

void PrgSample_Make (short int nplane, short ntuple);

Инициализация в памяти полного имени архивной записи для физических параметров и чтение полного имени из каталога архива "холодных" копий:

nplane - номер архива;
ntuple - номер записи в архив (номер "холодной" копии).

Полное имя архивной записи состоит из 3-х строк:

имя пользователя, который сделал эту запись;
дата создания этой записи;
комментарий.
void PrgSample_End (void);

Удалить из памяти полное имя архивной записи для физических параметров, определенное посредством процедуры PrgSample_Make.

char *PrgSample_GetName (int n);

Получить строку с номером n (0,1,2) из полного имени архивной записи, определенного посредством процедуры PrgSample_Make.

short int PrgSample_GetLength (int n);

Получить длину (в байтах) строки с номером n (0,1,2) из полного имени архивной записи, определенного посредством процедуры PrgSample_Make.

Пример

Компиляция и сборка программы (файл name.c), использующей процедуры Надстройки над БД ССУДА и перечисленные выше процедуры:

cc name.c /prg/prglib.a /usr/usera/voevodin/rt-data/ccydalib/ccydalib.a

Автор © Клименков Е.В.