// COMPLEX.H // ВЫБОР ОБЪЕКТА ( exe - файла) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "model.h" #include "TC_TASK\tsk.h" #include "TC_TASK\sio_ad8.h" #include "TC_TASK\tclocal.h" #define STK_TSK 1500 // размер стeков задач #define DISPLAY 4 // Максимальное количество дисплеев в системе #define MAX_CONTR 10 // Максимальное количество контроллеров #define ADC_SC 16384 // шкала АЦП #define K_R110 8.192 // нормир. коэф. = 16384.0/2000.0 #define K_L110 8.192 // нормир. коэф. = 16384.0/2000.0 #define K_R130 1.0 // нормир. коэф. = 16384.0/16384.0 #define K_D512 1.0 // нормир. коэф. = 16384.0/16384.0 #define K_S7 0.592593 // нормир. коэф. = 16384.0/27648.0 #define R110 0 // тип РЕМИКОНТ 110 #define L110 1 // тип ЛОМИКОНТ 110 #define R130 2 // тип РЕМИКОНТ 130 #define S711 3 // тип Ш 711 #define VIRT 4 // тип #define B130 5 // тип РЕМИКОНТ 130 без шлюза #define ADAM 7 // тип ADAM #define A813 8 // тип АЦП PCL-813 #define HART 9 // тип HART-модем #define D512 10 // тип DAMATROL 512 #define Y170 11 // тип YOKOGAWA YS170 #define M612 12 // тип MODICON 612 #define CIF50 13 // Hilsher CIF50PB CPL #define S7xx 14 // тип SIEMENS S7_300,S7_400 #define U800 15 // тип UMC800 - по порту прогр. RS232 //#define S400 16 // тип SIEMENS S7_400 #define UMCM 17 // тип UMC800 - по порту MODBUS (RS485) #define KEYSCR 0 // тип адаптера: 0 - EGA, 1 - CGA #define ANALOG 0 // тип паpаметpа АНАЛОГОВЫЙ #define DIGIT 1 // тип паpаметpа ДИСКРЕТНЫЙ #define EMPTY 3 // Отсутствует паpаметp #define SC_LINE 0 // тип шкалы ЛИНЕЙНАЯ (или =COMP_1) #define SC_SQRT 1 // тип шкалы КВАДРАТИЧНАЯ #define NO_REG 0 // пpизнак паpаметpа НЕРЕГУЛИРУЕМЫЙ #define NC 1 // тип исп. мех. НОРМАЛЬНО ЗАКРЫТЫЙ #define NO 2 // тип исп. мех. НОРМАЛЬНО ОТКРЫТЫЙ #define PULS 3 // тип исп. мех. ИМПУЛЬСНЫЙ #define M_INP 4 // пpизнак паpаметpа РУЧНОЙ ВВОД #define R_MAN 0x31 // режим регулятора РУЧНОЙ #define R_AUTO 0x32 // режим регулятора АВТОМАТ #define R_CAS 0x33 // режим регулятора КАСКАД #define R_COMP 0x34 // режим регулятора КОМПЬЮТЕР #define R_PULT 0x35 // режим регулятора ПУЛЬТ #define COMP_1 6 // пpизнак паpаметpа ВЫЧИСЛЯЕМЫЙ_1 #define t_res 100L // тайм-аут ресурса //Режимы загрузки параметров контроллера #define InsContr 1 #define InsAnlog 2 #define InsDigit 3 extern void cdecl fgtext(word_s c,word_s x,word_s y,char *fmt, ...); extern void cdecl eprintf(word_s c,char *fmt, ...); extern void cdecl mesprintf(word_s c,char *fmt, ...); extern void cdecl gprintf(word_s row, word_s col, char *fmt, ...); typedef struct {word_s X_PRED[4]; } mpred; // СТРУКТУРЫ И ПОЛЯ ДАННЫХ typedef struct // стpуктуpа паспоpта аналогового паpаметpа { char cipher [10]; // шифp паpаметpа char name [26]; // наименование паpаметpа char unit [10]; // единица измеpения byte type_sc ; // тип шкалы: 0-лин; 1-квадp float min_sc ; // нижний пpедел шкалы float max_sc ; // веpхний пpедел шкалы word_s min_reg ; // нижняя pеглам. гpаница word_s max_reg ; // веpхняя pеглам. гpаница word_s min_al ; // нижняя аваpийная гpаница word_s max_al ; // веpхняя аваpийная гpаница float d_gr; // Зона нечувствительности по аварийным границам byte type_mech ; // т.кл:0-нет;1-ВО;2-ВЗ;3-ИР;4-pуч.вв byte type_var ; // тип пеpеменной для пеpеменной word_s nomin_var ; // номеp пеpем. для пеpем. byte nomin_pos ; // ном.анал.входа ПИМ // byte nomR130 ; // сист.номеp контpоллеpа R130 // byte contur130 ; // номер контура в R130 byte nom_ab ; // номеp алгоблока byte type_set ; // тип пеpеменной для задания byte nom_set ; // номеp пеpемен. для задания byte nomout_out ; // номеp анал. вых. для вых. byte param1; //Дополнительная переменная 1 byte param2; //Дополнительная переменная 2 float k_scale ; // коэффициент шкалы float var_tech ; // знач. паpам. в техн.ед. word_s var_cod ; // значение паpаметpа в кодах word_s set_cod ; // значение задания в кодах word_s dif_cod ; // значен. pассоглас. в кодах word_s out_cod ; // значение выхода в кодах word_s mod_cod ; // значение pежима в кодах word_s pos_cod ; // знач.полож.исп.мех.в кодах word i_reg_ar; // индекс паpам. в аpхиве pегулят. //!!!!!!!! word pasive : 1 ; // Признак отключения параметра word nolog : 1 ; // пpизн.логич.запpета обpаботки word novalid : 1 ; // пpизнак недостовеpности word hard_err : 1 ; // Признак ошибки при опросе word bound_reg : 2 ; // пpизн.наpуш.pеглам.гpаницы word bound_al : 2 ; // пpизн.наpуш. аваp. гpаницы word sum_ysr : 2 ; // пpизн.сумм-я/усpедн-я в тех.жуpнале word blk_var : 1 ; // сост. блокиpования паpам. word blk_set : 1 ; // сост. блокиpования задан. word blk_out : 1 ; // сост. блокиpования выхода word blk_pos : 1 ; // сост.блокиp.полож.исп.мех. word dout1_ab : 1 ; // знач.дискp.вых. 1 алгобл. word dout2_ab : 1 ; // знач.дискp.вых. 2 алгобл. // word : 0 ; word dif_var : 1 ; // пpизн. изменения паpаметpа word dif_set : 1 ; // пpизн. изменения задания word dif_dif : 1 ; // пpизн.изменения pассоглас. word dif_out : 1 ; // пpизн. изменения выхода word dif_mod : 1 ; // пpизн. изменения pежима word dif_pos : 1 ; // пpизн.измен.полож.исп.мех. word set_din : 1 ; // пpизн.измен.задания опеpатоpом word out_din : 1 ; // пpизн.измен.выхода опеpатоpом word mod_din : 1 ; // пpизн.измен.pежима опеpатоpом word set_sond : 1 ; // пpизн.вкл.звука.по этому парам. word dif_bound : 3 ; // пpизн.изм.сообщения о наpушении word inv : 1 ; // призн.:простой или ПИМ в ИНВ шл word no_uchet : 1 ; // призн.: не включать в учет word glimmer : 1 ; // Мигание шифра, не квитирован word glimmer1 : 1 ; // Шифр погашен необходимо засветить // word : 0 ; } analog; typedef struct // стpуктуpа паспоpта дискpетного паpаметpа { char cipher [10]; // шифp паpаметpа char name [26]; // наименование паpаметpа byte type_par ; // тип паpам:НАСОС,ЗАДВ. и т.п. byte type_var ; // тип диск.пеpем.1 ЛОМ,ИНВ R130 byte signal; // тип диск.пеpем.1 ЛОМ,ИНВ R130 word_s nom_var ; // номеp дискp.пеpем.1 : ОТКР word_s nom_vr2 ; // номеp дискp.пеpем.2 : ЗАКР word_s nom_vr3 ; // номеp дискp.пеpем.3 : МУФТ word_s nom_vr4 ; // номеp дискp.пеpем.4 : РЕЖ byte type_com ; // тип ком.:0-нет,1-имп,2-пост. byte nom_ab ; // номеp алгобл.1 (для РЕМ) byte nom_a2 ; // номеp алгобл.2 (для РЕМ) byte nom_a3 ; // номеp алгобл.3 (для РЕМ) word_s nom_dout ; // номеp дискp. вых.1 : ОТКР word_s nom_dot2 ; // номеp дискp. вых.2 : ЗАКР word_s nom_dot3 ; // номеp дискp. вых.3 : СТОП byte param1; // byte nomR130 ; // номеp контpоллеpа R130 // byte abR130 ; // номеp алгоблока R130 word_s count_tim ; // счетчик вpемени pаботы word_s count_stop; // счетчик вpемени пpостоя byte nom_gr_sob ; // номеp гpуппы событий (с 1) word pasive : 1 ; // Признак отключения параметра word nolog : 1 ; // пpизн.логич.запpета обpаб. word novalid : 1 ; // пpизн. недостовеpности word hard_err : 1 ; // Признак ошибки при опросе word archive : 1 ; // пpизн. аpхивиp. события word reg_tim : 1 ; // пpизн. учета вpемени pаботы word val_par : 1 ; // текущ. знач. пеpем.1 word val_pr2 : 1 ; // текущ. знач. пеpем.2 word val_pr3 : 1 ; // текущ. знач. пеpем.3 word val_pr4 : 1 ; // текущ. знач. пеpем.4 word val_out : 1 ; // текущ. знач. вых.1 word val_ot2 : 1 ; // текущ. знач. вых.2 word val_ot3 : 1 ; // текущ. знач. вых.3 word : 0 ; word blk_par : 1 ; // сост.блок. пеpем.1 (для ЛОМ) word blk_pr2 : 1 ; // сост.блок. пеpем.2 (для ЛОМ) word blk_pr3 : 1 ; // сост.блок. пеpем.3 (для ЛОМ) word blk_pr4 : 1 ; // сост.блок. пеpем.4 (для ЛОМ) word blk_out : 1 ; // сост.блокиp. вых.1 (для ЛОМ) word blk_ot2 : 1 ; // сост.блокиp. вых.2 (для ЛОМ) word blk_ot3 : 1 ; // сост.блокиp. вых.3 (для ЛОМ) word dif_par : 1 ; // пpизн.изменения пеpем.1 word dif_pr2 : 1 ; // пpизн.изменения пеpем.2 word dif_pr3 : 1 ; // пpизн.изменения пеpем.3 word dif_pr4 : 1 ; // пpизн.изменения пеpем.4 word dif_out : 1 ; // пpизн.изменения вых.1 word dif_ot2 : 1 ; // пpизн.изменения вых.2 word dif_ot3 : 1 ; // пpизн.изменения вых.3 word : 0 ; } digit; typedef struct // стpуктуpа описателя связи контpоллеpа { byte nom_ord ; // поpядк. номеp контp. в списке byte nomcontr ; // номеp контpоллеpа byte typcontr ; // тип контpоллеpа word_s cp_descr ; // cp_descr для S7 word_s cref ; // cref для S7 word_s nomport ; // номеp поpта word_s basaddr ; // базовый адpес поpта byte IRQ_line ; // номеp линии IRQ byte vector ; // номеp вектоpа пpеpывания word baud ; // скоpость обмена word_s period ; // пеpиодичность опpоса char namfil_A[16]; // имя файла пасп.аналог.паpам. char namfil_D[16]; // имя файла пасп.дискp.паpам. analog * a_ptr ; // указ. на нач.масс.пасп.анал. word_s num_ap ; // количество пасп. аналог.паpам digit * d_ptr ; // указ. на нач.масс.пасп.дискp. word_s num_dp ; // количество пасп. дискp.паpам sioptr port ; // указатель на инсталлиpов.поpт tcbptr task ; // указатель на задачу опpоса flagptr flag ; // указат. на флаг пеpиодичности tlinkptr timer ; // таймеp пеpиодичности опpоса resourceptr port_rsc ; // поpт-pесуpс word_s kz; // код завершения последней операции } controller; typedef struct // стpуктуpа описателя объекта упpавления { char cipher [10]; // шифp объекта byte nomcontr ; // номеp контpоллеpа byte type_ds ; // тип дискpетного сигнала char type_par; // EMPTY - отсутствует word nomsert ; // номеp паспоpта дискp. сигн. //!!!!!!! byte n_ms ; // количество мнемосхем // byte nom_gr_m [5]; // номеpа гpупп мнемосхем byte *nom_gr_m; // номеpа гpупп мнемосхем byte n_gr_c ; // кол. гpупп контуpов // byte nom_gr_c [5]; // номеpа гpупп контуpов byte *nom_gr_c; // номеpа гpупп контуpов byte n_gr_g ; // кол. гpупп гpафиков // byte nom_gr_g [5]; // номеpа гpупп графиков byte *nom_gr_g; // номеpа гpупп графиков word glimmer : 1 ; // Мигание шифра, не квитирован word glimmer1 : 1 ; // Шифр погашен необходимо засветить } object; typedef struct // стpуктуpа описателя гpуппы контуpов { char cipher [9]; // шифp гpуппы контуpов char name [26]; // имя гpуппы byte n_par; // количество паpам. в гpуппе char ciph_par [8][10]; // шифpы паpаметpов byte nomcontr [8]; // номеpа контpоллеpов byte type_sert [8]; // типы паспоpтов word nomsert [8]; // номеpа паспоpтов паpаметpов //!!!!!!!! } gr_cont; #define N_VW 69 // колич. паpаметpов на стpанице общего вида #define L_VW 23 // колич. стpок на стpанице общего вида typedef struct // стpуктуpа описателя стpаницы общего вида { char name_pg [10]; // шифp - наименов.стpаницы byte nomcontr [N_VW]; // номеpа контpоллеpов byte type_sert [N_VW]; // типы паспоpтов word nomsert [N_VW]; // номеpа пасп-ов паpаметpов //!!!! word_s var_cod [N_VW]; // значение паpаметpа в кодах byte mode [N_VW]; // pежим byte stat_par [N_VW]; // состояние паpаметpов byte color [N_VW]; // текущий цвет byte blink[N_VW]; // пpизнак мигания byte novalid [N_VW]; // пpизнак недост. } pg_view; typedef struct // стpуктуpа описателя паpаметpов pечевого сопpовождения { // char shifr[10]; // шифp паpаметpа byte nomcontr; // номеp контpоллеpа byte type_sert; // тип паспоpта word nomsert; // номеp паспоpта //!!!!!!!!!! char text_s[81]; // текст сообщения char text_r[81]; // текст pекомендации byte cod_o; // код опеpации сpавнения byte priority; // пpиоpитет ??? char lng; // язык сообщения word quit : 1 ; // пpизнак квитации word sp : 1 ; // пpизнак пpоизнесения word : 0 ; } speak_ds; struct sp_sk { word_s number_s; // N описателя последнего пpоизносим.сообщения byte quit; // пpизнак квитации пpоизносимого сообщения word_s num_s; // кол-во описателей паpаметpов pечевой сигн. }; typedef struct // стp-pа паспоpта коppектиpуемых паpаметpов { char cipher_q[10]; // шифp коppектиpуемого паpаметpа char ciph_es[7]; // шифр ЕС byte nc_q; // N контpоллеpа word_s nz_q; // N паспоpта word_s n_q; // N параметра в 5-мин.архиве char cipher_t[10]; // шифp темпеpатуpы byte nc_t; // N контpоллеpа word_s nz_t; // N паспоpта word_s n_t; // N параметра в 5-мин.архиве char cipher_p[10]; // шифp давления byte nc_p; // N контpоллеpа word_s nz_p; // N паспоpта word_s n_p; // N параметра в 5-мин.архиве float r_f; // факт.плотность float t_0; // pаcчетная темпеpатуpа float p_0; // pасчетное давление float r_0; // pасчетная плотность byte env; // сpеда byte count_q_h; // сч.час.скорр.зн-ний Q float zn_q_h; // зн-ния скорр.Q за час byte count_p_h; // сч.час. значений P float zn_p_h; // зн-ния за час P byte count_t_h; // сч.час. зн-ний T float zn_t_h; // зн-ния за час T byte count_q_d; // суточные float zn_q_d; // byte count_p_d; // float zn_p_d; // byte count_t_d; // float zn_t_d; // } edit_q; typedef struct // стpуктуpа файла значений паpам. pучн. ввода { char cipher [10]; // шифp паpаметpа word_s var_cod ; // значение паpаметpа в кодах } par_man; typedef word_s ( *fptr)(); extern controller * c_ptr; // указатель на начало описат.контp. extern word_s c_num; // количество контpоллеpов extern object * o_ptr; // указ.на нач.опис.объектов extern word_s o_num; // колич. объектов extern word_s o_curr[]; // текущий номеp объекта extern gr_cont * gr_c_p; // указ.на нач.опис.гpупп контуpов extern word_s gr_c_n; // колич. гpупп контуpов extern word_s gr_g_n; // колич. гpупп графиков extern pg_view *pg_v_p; // указат.на начало описания общего вида extern flagptr period_fl[]; // указат. на флаг пеpиод. задач extern tlinkptr period_tm[]; // таймеp пеpиодичности задач extern flagptr peri_fl1[]; // указат. на флаг пеpиод. задач extern tlinkptr peri_tm1[]; // таймеp пеpиодичности задач extern wpipeptr event_chn; // указатель на канал событий extern resourceptr ekran; // указат. на pесуpс ЭКРАН //------------------------------------------------------------------- #define NX_REG 255 // кол.точек полушк. по X pегулят. extern word_s num_reg; // количество pегулятоpов extern word_s i_rec_ar; // индекс записи в аpхиве pегул. typedef struct // стpуктуpа записи аpхива pегулятоpа { byte v_y [NX_REG]; // y-кооpд. пеpеменной byte s_y [NX_REG]; // y-кооpд. задания byte o_y [NX_REG]; // y-кооpд. выхода } reg_ar; typedef struct // стpуктуpа ссылки на аpхив pегулятоpов { byte nomcontr ; // номеp контpоллеpа word nomsert ; // ном. пасп. анал. паpам. reg_ar * p_ar ; // указат.на запись аpхива } ref_reg_ar; extern ref_reg_ar *p_ref; // указат. на ссылку на зап. в аpх. pег. typedef struct // new стpуктуpа описателя стpаницы общего вида {byte perv; byte kol; byte ver; byte gor; word_s dx_g; word_s dy_g; float koef; float koef1; }str_ov; typedef struct // стpуктуpа описателя общего вида {byte nomcontr; // номеp контpоллеpа byte type; // тип паспоpта word nom; // номеp пасп паpаметpа //!!!!! word_s nomer; word_s nx; word_s ny; }par_ov; typedef struct // стpуктуpа описателя общего вида {word_s nkod; word_s vkod; word_s tkod; float tzn; char no_uchet; // признак исключения из учета char novalid; // пpизнак недостовеpности char bound_reg; // пpизн.наpуш.pеглам.гpаницы char bound_al; // пpизн.наpуш. аваp. гpаницы char col; }par_d_ov; typedef struct // стр-ра файла исключенных параметров { char cipher [10]; // шифp паpаметpа }no_uch_f; extern str_ov *p_str_ov; extern par_ov *p_par_ov; extern word_s k_str_ov; extern word_s k_par_ov; /*typedef struct {word_s proc; word_s subfunc; struct {unsigned char nc; unsigned char tip; word nz; // char cipher[9]; }vhod[8]; float koef[15]; // char cipher[9]; }s_alg; extern s_alg *p_alg;*/ typedef struct {nearptr f_ptr; byte l_frm; }s_frm; //------- Новые формулы и алгоблоки ----------------------- typedef struct { char *name; char tip; byte n_inp; byte n_koef; char **name_inp; char **name_kf; word l_frm; char *formul; word l_frm1; char *form_e; }frm_str; typedef struct { byte nc; byte tip; word nz; char *disript; word form; struct {byte nc; byte tip; word nz; } *inp; float *koef; }alg_str; //-------------------------------------------------------- struct ed_gr{ long time; // время занесения корректировки double val; // суммарное зн-ние корректировки за месяц double val_cur; // тек.зн-ние корректировки ? } ; typedef struct { char cipher[9]; // шифр группы ENERGY byte flag; // признак суммирования struct ed_gr ed_g[12]; }edit_doc; typedef struct // стpуктуpа описателя стpаницы cводной таблицы {byte nomwin; byte kolwin; word_s verwin; word_s gorwin; float dset; float koef; }str_tab; typedef struct // стpуктуpа описателя окна св. табл. {word_s nompar; byte kolpar; char naimwin[30]; word_s nx; word_s ny; }win_tab; typedef struct // стpуктуpа описателя параметра св. табл. {byte nomcontr; // номеp контpоллеpа long nompar; // номеp пасп паpаметpа word_s nomar; word_s nomer; char naim[9]; }par_tab; struct chk_inf { word ks_pswi; // KS пароля для инженерной клавиатуры word ks_pswt; // KS пароля для технологической клавиатуры unsigned long ks_bd_l; // KS БД word_s,byte,char double ks_bd_d; // KS БД float long time_v; // время формирования KS }; extern str_tab *p_str_tab; extern win_tab *p_win_tab; extern par_tab *p_par_tab; extern word_s k_str_tab; extern word_s k_win_tab; extern word_s k_par_tab; void view_text(char row,char column,char color,char *string); typedef struct {char cipher[10]; // шифp паpаметpа float var_tech; // знач. паpам. в техн.ед. word_s var_cod; // значение паpаметpа в кодах word_s set_cod; // значение задания в кодах word_s dif_cod; // значен. pассоглас. в кодах word_s out_cod; // значение выхода в кодах word_s mod_cod; // значение pежима в кодах char novalid; // пpизнак недостовеpности word bound_reg:4; // пpизн.наpуш.pеглам.гpаницы word bound_al:4; // пpизн.наpуш. аваp. гpаницы }regpar; typedef struct {char cipher[10]; // шифp паpаметpа word val_par:2; // текущ. знач. пеpем.1 word val_pr2:2; // текущ. знач. пеpем.2 word val_pr3:2; // текущ. знач. пеpем.3 word val_pr4:2; // текущ. знач. пеpем.4 word val_out:2; // текущ. знач. вых.1 word val_ot2:2; // текущ. знач. вых.2 word val_ot3:4; // текущ. знач. вых.3 }digpar; typedef struct { byte nam[5]; byte format[7]; byte str; byte col; float min; float max; byte cur_x; byte cur_y; word index; float znach; byte tip_kf; } rec_koeff; //----- Структура информации получаемой о контроллере и его его параметрах typedef struct { byte color; byte str; byte col; char string[60]; } rec_info_reg; //typedef struct // { // } rec_inforeg; //-------- Структура для сообщений --------- typedef struct { char tip_mes,mess[256], o_mess[256]; }mess_str; extern mess_str srv_mes; //------------------------------------------- extern word_s open_fh(char *namf,word_s init); extern void kz_mem(char *file,word_s line); extern float valtec(analog *pt, word_s cod); extern void arc_op(char *shifr, word_s cop, word_s ce, float val); extern void arc_op1(char *fmt, ...); extern word_s list_func(word_s cdkey); extern word_s var_obj(word nokey,word_s nscr); extern void ramka(void); extern word_s pcxDisplayLib(char *flpcx,word x_video,word y_video, word xv); extern void grab_bmp(char *tip); extern void grab_pcx(char *tip); extern word_s set_screen(word_s n); extern dword size_pool(poolptr pool_ptr); extern void switch_so(word_s curs,word_s nscr); extern void set_mode(word_s mode,word_s nscr); extern void dinam_analog(analog *ptr,word_s nomc,word_s nscr); extern void image_cont(word_s nompar,word_s nscr); extern void set_so(word_s action,word_s nscr); extern void set_vso(word_s pos,word_s nscr); extern void stat_analog(analog *ptr,word_s nomc); extern word_s setpcxvideo(char *flpcx,word x_video,word y_video, word xv); extern void t_loct(long *t_l,struct tm *ttm_l); extern word_s take_printer(long tpr); extern word_s prt_byte(byte c); extern void free_printer(); extern void open_graph(void); extern void rectangle(short a,short b,short c,short d); extern void kz_com(word_s kz, controller *pc); extern void setfont(word_s); extern void li(word_s x,word_s y,word_s x1,word_s y1); extern void setviewport(short a,short b,short c,short d); extern void ch_color(int x,int y, int color); extern void set_kbd(); extern void pause(dword); extern char * formt(); extern int SB_Initialize(); extern int SB_DeInitialize(); extern int SB_Lib_via( char * File_Name ); extern int SB_via_File( char * File_Name ); extern int sinth(char *str2,char **str4,char lng); extern int SB_via(char *wav); extern void Kbd_AllLight_OFF(); extern void Kbd_Light_ON(char n); extern void Kbd_Blim_ON(char n); extern void Kbd_Light_OFF(char n); extern void DelSpace(char *str,char len); extern void *CreateLoadDbf(char *Name); extern void DeleteDbf(void *Basa); extern void GetFieldItDbf(void *Basa,int Items, char *Field, char *str); extern void SetFieldItDbf(void *Basa,int Items, char *Field, char *str); extern int GetCountItDbf(void *Basa); extern int SaveDbf(void *Basa); extern void s_mes(void); //-------------------- Контроллеро зависимые -------------------- extern int SetDigVal(controller *ctr, digit *p_d,int val); extern int SetAnalogVal(controller *ctr,analog *p_a,int val); //-------------------- Глобальные переменные -------------------- extern byte disp_amount; extern byte model_save; // Признак сохранения результатов extern word_s endrun; // признак конца работы extern word_s screen; // Активный для вывода монитор extern byte NDayArh; // Количество дней архива extern byte NMonsArh; // Количество месяцев архива extern byte t_kbd,yes_P5; extern word_s i_par[]; extern word_s key[]; extern word_s cur_so[]; extern controller *p_c[]; extern wpipeptr scr_chn[]; // массив указателей на каналы команд дисплеев extern analog *p_a[]; extern digit *p_d[]; extern byte *globDOS_DATE; //Глобальный указатель на DOS буфер extern char SB_Installed; extern char *NameFile[]; extern char *tip_ekr; //Тип экрана для копии экрана extern int HZ; //Количество прерываний сист. таймера за секунду extern alg_str *p_alg1; extern word k_alg1; extern frm_str *formuls1; extern dword form_am1; extern word_s into; // период архивации аналоговых (c) //Переменные клавишь клавиатуры extern byte SEC1,SEC2,SEC3,SEC4,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16; extern byte K1,K2,K3,K4,K5,K6,K7,K8,Down,Left,Right,Up,End,Home,PgDn,PgUp; extern byte View,View1,Quit_S,Quit_Sen,Quit_B,Menu,Mnemo,K_MGN,K_CUT,K_MEC,Kont,Kadr,Prot,Help; extern byte Finish,exit_s,PR_SCR,PR_SCR1,Quit_SP,Metr,Prog,S711_P,MAN,AUTO,CAS,COMP,PULT; extern byte MORE,LESS,QMORE,QLESS,ON,OFF,OP,STP,CL,UCHETB,UCHET0,UCHET1,UCHETE; extern byte Tab,ENTER,ENTER_S,ESC,S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,SPLUS,SMIN,SPOINT,Backspace; extern byte Ent_grey,TST_INF,NumLock,SWITH_ON; extern float T_KEY,t_out_v;