// Некоторые определения для S7_300, S7_400 //======================================================================= typedef struct // структура данных регулятора S7_300, S7_400 { byte nom_ab; // номер алгоблока ( DB-блока ) byte type_FM; // тип алгоблока: 0 = SM, 1 = FM word_s MOD_MAN; // режим byte FLAGS_SM[2]; // признаки с DB типа SM byte FLAGS_FM[2]; // признаки с DB типа FM word_s PV_cod; // переменная word_s SP_cod; // задание word_s MV_cod; // выход float kfs[8]; // GAIN,TI,TD,TM_LAG,DEADB_W,LMN_LLM,LMN_HLM,DISV } reg_S7; typedef struct // структ. данных для опр. аналоговых параметров S7_300 { word_s addr; // адрес первого опраш. парам. на reck'e word_s len; // длина запраш. данных в байтах } an_S300; typedef struct // структура DB регулятора сигнального модуля SM { //-------------------------------------------------------------------------- unsigned COM_RST : 1 ; // 0; complete restart 0.0 unsigned MAN_ON : 1 ; // 1; РЕЖИМ: 0 = АВТ, 1 = РУЧН (см. 1.0) 0.1 unsigned PVPER_ON : 1 ; // 0; 0 = сигнал АЦП ОТКЛ, 1 = ВКЛ 0.2 unsigned P_SEL : 1 ; // 1; 0 = пропорц.сост. ОТКЛ, 1 = ВКЛ 0.3 unsigned I_SEL : 1 ; // 1; 0 = интегр.сост. ОТКЛ, 1 = ВКЛ 0.4 unsigned INT_HOLD : 1 ; // 0; integral action hold 0.5 unsigned I_ITL_ON : 1 ; // 0; initialization integral action 0.6 unsigned D_SEL : 1 ; // 0; 0 = диффер.сост. ОТКЛ, 1 = ВКЛ 0.7 unsigned MOD_CAS : 1 ; // 0; РЕЖИМ: 0=как 0.1, 1=КАСК (наш бит) 1.0 unsigned resv_1_1 : 1 ; // 1.1 unsigned resv_1_2 : 1 ; // 1.2 unsigned resv_1_3 : 1 ; // 1.3 unsigned resv_1_4 : 1 ; // 1.4 unsigned resv_1_5 : 1 ; // 1.5 unsigned resv_1_6 : 1 ; // 1.6 unsigned resv_1_7 : 1 ; // 1.7 long CYCLE; // >=1ms; 1s; время цикла, сек 2 float SP_INT; // -100..100%; 0.0; ЗАДАНИЕ, % 6 float PV_IN; // -100..100%; 0.0; поле имитации переменной, % 10 word_s PV_PER; // 0; вход датчика в коде до 27648 14 float MANUAL; // -100..100%; 0.0; ВЫХОД в РУЧН, % 16 float GAIN; // 2.0; коэффициент усиления 20 long TI; // >=CYCLE; 20s; время интегрирования, сек 24 long TD; // >=CYCLE; 10s; время дифференцирования, сек 28 long TM_LAG; // >=CYCLE/2; 2s; время фильтрации, сек 32 float DEADB_W; // >=0.0%; 0.0; зона нечуствительности 36 float LMN_HLM; // ..100%; 100.0; верхняя граница выхода, % 40 float LMN_LLM; // -100%.. 0.0; нижняя граница выхода, % 44 float PV_FAC; // 1.0; коэфф. нормализации переменной 48 float PV_OFF; // 0.0; смещ. нормализ. переменной, % 52 float LMN_FAC; // 1.0; коэфф. нормализации выхода 56 float LMN_OFF; // 0.0; смещение нормализ. выхода, % 60 float I_ITLVAL; // -100..100%; 0.0; иниц. величина интегр. сост. 64 float DISV; // -100..100%; 0.0; расстройка,нарушение,разбаланс 68 float LMN; // 0.0; выход, % 72 word_s LMN_PER; // 0; выход в коде до 27648 76 word resv2; // 78 float LMN_P; // 0.0; пропорц. составляющ., % 80 float LMN_I; // 0.0; интегральная составляющая, % 84 float LMN_D; // 0.0; диффер. составляющ., % 88 float PV; // 0.0; переменная, % 92 //--------------------------------------------------------------------------- } DB_SM_S7; typedef struct // структура DB регулятора функционального модуля FM { //--------------------------------------------------------------------------- float DEADB_W; // >=0.0%; 0.0; зона нечуствительности 28 float GAIN; // 1.0; коэффициент усиления 32 float TI; // >=samp.t; 3000.0; время интегрирования, сек 36 float TD; // >=0.0; 0.0; время дифференцирования, сек 40 float TM_LAG; // >=samp.t/2; 5.0; время фильтрации, сек 44 float LMN_SAFE; // -100..100%; 0.0; сохранение выхода 48 float LMN_HLM; // ..100%; 100.0; верхняя граница выхода, % 52 float LMN_LLM; // -100%..; 0.0; нижняя граница выхода, % 56 float MTR_TM; // >=samp.t; 60.0; motor manipulated value, sec 60 float PULSE_TM; // >=0.0; 0.2; minimum pulse time, sec 64 float BREAK_TM; // >=0.0; 0.2; minimum break time, sec 68 float SP_RE; // ЗАДАНИЕ; 0.0; внешнее задание 72 float LMN_RE; // ВЫХОД; 0.0; внешний выход, % 76 float LMNRSVAL; // -100..100%, 0.0; нач.знач. выхода при имитации 80 unsigned SAFE_ON : 1 ; // safety position on 84.0 unsigned LMNTRKON : 1 ; // match (LMN from analog inpyt) 84.1 unsigned LMN_REON : 1 ; // РЕЖИМ; ext. manip. value on 84.2 unsigned LMNRHSRE : 1 ; // high lim signal of rep MV 84.3 unsigned LMNRLSRE : 1 ; // low -"- 84.4 unsigned LMNSOPON : 1 ; // manipulated signal operat. on 84.5 unsigned LMNUP_OP : 1 ; // manipulated signal up operat. 84.6 unsigned LMNDN_OP : 1 ; // manipulat. signal down operat 84.7 unsigned MONERSEL : 1 ; // 85.0 unsigned LMNRS_ON : 1 ; // 85.1 unsigned FUZID_ON : 1 ; // 85.2 unsigned SPINT_EN : 1 ; // 0: ЗАДАНИЕ=SP_INT, 1: ЗАДАНИЕ=SP_RE 85.3 unsigned P_SEL : 1 ; // 85.4 unsigned PFDB_SEL : 1 ; // 85.5 unsigned resv_85_6 : 1 ; // 85.6 unsigned resv_85_7 : 1 ; // 85.7 word_s D_EL_SEL; // D-element input for controller 86 word_s MOD_ADDR; // FM355/455 module address 88 word_s CHANNEL; // номер канала 90 word resv_92; // признаки ? 92 float SP; // задание 94 float PV; // переменная 98 float ER; // рассогласование 102 float DISV; // расстройка,нарушение,разбаланс 106 float LMN; // выход, % 110 float LMN_A; // man.var.A of split range funct 114 float LMN_B; // man.var.B of split range funct 118 word resv_122; // признаки ? 122 word resv_124; // признаки ? 124 word_s RET_VALU; // * Return value SFC 58/59 126 float SP_INT; // внутреннее задание 128 float SP_OP; // setpoint operation 132 float LMN_OP; // выход operation 136 word resv_140; // признаки ? 140 //--------------------------------------------------------------------------- } DB_FM_S7;