432 lines
12 KiB
C
432 lines
12 KiB
C
/*
|
|
* Diff.h
|
|
*
|
|
* Created on: 12-04-2017
|
|
* Author: Krzysztof Jakubczyk
|
|
*/
|
|
|
|
#ifndef DIFF_H_
|
|
#define DIFF_H_
|
|
|
|
#include "tdefs.h"
|
|
#include "analog_in.h"
|
|
#include "helper.h"
|
|
#include "config.h"
|
|
|
|
extern u16 pY_ZPrAE[25];
|
|
extern u16 pD_ZPrAE[25];
|
|
extern struct kom1_zprae Y2w_ZPrAE;
|
|
extern struct kom2_zprae Y3w_ZPrAE;
|
|
extern struct kom1_zprae D2w_ZPrAE;
|
|
extern struct kom1_zprae D3w_ZPrAE;
|
|
|
|
#define c1r 5 //ilosc powtorzen zadzialania bezwarunkowego
|
|
#define c1p 30 //ilosc powtorzen odpadu bezwarunkowego
|
|
#define c2r 2 //ilosc powtorzen zadzialania blokady 2h
|
|
#define c2p 7 //ilosc powtorzen odpadu blokady 2h
|
|
#define c3r 2 //ilosc powtorzen zadzialania blokady 5h
|
|
#define c3p 10 //ilosc powtorzen odpadu blokady 5h
|
|
#define c4r 5 //ilosc powtorzen zadzialania czasowej blokady
|
|
#define c5r 20 //ilosc powtorzen zadzialania stabilizowanej strefy dzialania !!!!!!!!Pawel bylo 2
|
|
#define c5p 2 //ilosc powtorzen odpadu stabilizowanej strefy dzialania
|
|
|
|
struct we_an_diff
|
|
{
|
|
u16 *samples_buf;
|
|
struct analog_in_params_extended *params;
|
|
};
|
|
|
|
struct licz
|
|
{
|
|
short l2h1[2];
|
|
short l2h2[2];
|
|
short l2h3[2];
|
|
short l5h1[2];
|
|
short l5h2[2];
|
|
short l5h3[2];
|
|
short Ir1[2];
|
|
short Ir2[2];
|
|
short Ir3[2];
|
|
short sbc1[2];
|
|
short sbc2[2];
|
|
short sbc3[2];
|
|
short chs1[2];
|
|
short chs2[2];
|
|
short chs3[2];
|
|
|
|
};
|
|
|
|
struct pobudzenia_czastkowe
|
|
{
|
|
u8 Irr1;
|
|
u8 Irr2;
|
|
u8 Irr3;
|
|
u8 Pb1;
|
|
u8 Ob1;
|
|
u8 BlZw1;
|
|
u8 Pb2;
|
|
u8 Ob2;
|
|
u8 BlZw2;
|
|
u8 Pb3;
|
|
u8 Ob3;
|
|
u8 BlZw3;
|
|
u8 Psf1;
|
|
u8 Psf2;
|
|
u8 Psf3;
|
|
u8 Bl2h_L1;
|
|
u8 Bl2h_L2;
|
|
u8 Bl2h_L3;
|
|
u8 Bl5h_L1;
|
|
u8 Bl5h_L2;
|
|
u8 Bl5h_L3;
|
|
};
|
|
|
|
struct wskazniki_prad_do_kompensacji
|
|
{
|
|
struct we_an_diff *Ip[4];
|
|
struct we_an_diff *Im[4];
|
|
|
|
float a_p[4][2];
|
|
float a_m[4][2];
|
|
};
|
|
|
|
struct Nastawy_przeliczone
|
|
{
|
|
// Adresy adr;
|
|
|
|
float khr_2h;///< wartosc rozruchowa blokady od 2 harmonicznej
|
|
float khp_2h;///< wartosc powrotowa blokady od 2 harmonicznej
|
|
float khr_5h;///< wartosc rozruchowa blokady od 5 harmonicznej
|
|
float khp_5h;///< wartosc powrotowa blokady od 5 harmonicznej
|
|
float Irr;///< wartosc rozruchowa dzialania bezwarunkowego
|
|
float Ipr;///< wartosc powrotowa dzialania bezwarunkowego
|
|
float Ihdr;///<wartosc rozruchowa pradu hamowania zwarcia zewnetrznego
|
|
float Irdr;///< wartosc rozruchowa pradu roznicowego zwarcia zewnetrznego
|
|
float kh1r;///<wartosc rozruchowa prosta 2
|
|
float kh1p;///<wartosc powrotowa prosta 2
|
|
float kh2r;///<wartosc rozruchowa prosta 3
|
|
float Ir3c;///< czesc stala nastawy odcinka 3
|
|
float Ip3c;///< czesc stala nastawy odcinka 3
|
|
float kh2p;///<wartosc powrotowa prosta 3
|
|
float kh1r2;///<wartosc rozruchowa prosta 2 (w kwadracie)
|
|
float kh1p2;///<wartosc powrotowa prosta 2 (w kwadracie)
|
|
float Iror;///<wartosc rozruchowa pradu prosta 1
|
|
float Irop;///<wartosc powrotowa pradu prosta 1
|
|
float Ir4;///< wartosc rozruchowa prosta 4
|
|
float Ip4;///< wartosc powrotowa prosta 4
|
|
float Ih1;///< wartosc pradu stabilizacji dla poczatku prostej 2
|
|
float Ihp;///< wartosc pradu stabilizacji dla poczatku prostej 3
|
|
float Ihg;///<wartosc pradu stabilizacji dla poczatku prostej 4
|
|
u16 t_sbc;///< czas blokady po stwierdzeniu zwarcia zewnetrznego
|
|
u32 tz; ///< opoznienie czasu zadzialania przekaznika
|
|
u8 on; ///< wartosc nastawy aktywnosci przekaznika 1- aktywny
|
|
u8 w; ///< wartosc nastawy dzialania na wylaczeniee 1 - wylaczenie 0 - tylko sygnalizacja
|
|
u8 bl; ///< wartosc nastawy aktywnosci blokady dzialania 1- blokada aktywna
|
|
u8 bl2h;///< wlaczenie blokady od drugiej harmonicznej
|
|
u8 bl5h;///< wlaczenie blokady od piatej harmonicznej
|
|
u8 sbc;///< wlaczenie strefy blokady czasowej
|
|
u8 h;///< wlaczenie granicznej stabilizacji
|
|
u8 r; ///< wlaczenie strefy bezwarunkowego wylaczenia
|
|
u8 cross_block; ///cross block do hrmonicznych
|
|
struct wskazniki_prad_do_kompensacji L[3]; ///< wskazniki pradow do wyliczenia skompensowanych wejsc faza 1,2,3
|
|
float a[4];///< wspolczynnik pradu do kompensacji
|
|
u16 buf_zero[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS*2];
|
|
//WA::Nastawa_przeliczona n_zero;
|
|
//WA::Wyjscie wejscie_zero;
|
|
struct analog_in_params_extended n_zero;
|
|
struct we_an_diff wejscie_zero;
|
|
|
|
float wsp_filtr_sin_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
float wsp_filtr_cos_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
float wsp_filtr_sin2h_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
float wsp_filtr_cos2h_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
float wsp_filtr_sin5h_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
float wsp_filtr_cos5h_[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS];
|
|
u8 p2d;
|
|
u8 p3d;
|
|
#ifdef IZAZ600
|
|
u8 Rej3kHz_adr_wej_OK;
|
|
#endif
|
|
};
|
|
|
|
struct wejscie_wew
|
|
{
|
|
float buf_Lr[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS*2][6];
|
|
u8 nr_probki;
|
|
float orta[6];
|
|
float ortb[6];
|
|
float Ir[6];
|
|
float orta2h[3];
|
|
float ortb2h[3];
|
|
float I2h[3];
|
|
float orta5h[3];
|
|
float ortb5h[3];
|
|
float I5h[3];
|
|
|
|
float buf_ip[SAMPLES_PER_MS*MAIN_FREQ_PERIOD_MS*2][9];
|
|
float Ip[9];
|
|
};
|
|
|
|
enum typ_kompensacji
|
|
{
|
|
zero, ///< brak wejscia
|
|
A, /// 1,0,0 1
|
|
B, /// -1,0,0 0,57735
|
|
C, /// 1,-1,0 0,57735
|
|
D, /// -1,1,0 0,57735
|
|
E, /// 1,0,-1 0,57735
|
|
F, /// -1,0,1 0,57735
|
|
N, /// 0,1,0 1
|
|
O, /// 0,-1,0 1
|
|
U,
|
|
V,
|
|
W,
|
|
X,
|
|
Y,
|
|
Z
|
|
};
|
|
|
|
enum jaki_uklad
|
|
{
|
|
bez_GT, ///<blad nastaw (nastawy sprzeczne dzialanie jak odstawienie funkcji)
|
|
tylko_G, ///< tylko generator
|
|
tylko_T2w_Y, ///< tylko transformator z dwoma uzwojeniami gora w ukladzie Y
|
|
tylko_T2w_D, ///< tylko transformator z dwoma uzwojeniami gora w ukladzie D
|
|
tylko_T3w_Y, ///< tylko transformator z trzema uzwojeniami gora w ukladzie Y
|
|
tylko_T3w_D, ///< tylko transformator z trzema uzwojeniami gora w ukladzie D
|
|
blokGT_T2w_Y, ///< blok generator transformator z dwoma uzwojeniami gora w ukladzie Y
|
|
blokGT_T2w_D, ///< blok generator transformator z dwoma uzwojeniami gora w ukladzie D
|
|
blokGT_T3w_Y, ///< blok generator transformator z trzema uzwojeniami gora w ukladzie Y
|
|
blokGT_T3w_D ///< blok generator transformator z trzema uzwojeniami gora w ukladzie D
|
|
};
|
|
|
|
struct kompensacja
|
|
{
|
|
enum typ_kompensacji Ig; //prad gornej strony trafo
|
|
enum typ_kompensacji Id; //prad dolnej strony trafo
|
|
enum typ_kompensacji Io; //prad odczepu
|
|
|
|
};
|
|
|
|
struct kom1
|
|
{
|
|
struct kompensacja k[7];
|
|
};
|
|
|
|
struct kom1_zprae
|
|
{
|
|
struct kompensacja k[13];
|
|
};
|
|
|
|
struct kom2
|
|
{
|
|
struct kompensacja k[7][7];
|
|
};
|
|
|
|
struct kom2_zprae
|
|
{
|
|
struct kompensacja k[13][13];
|
|
};
|
|
|
|
struct nast_trafo
|
|
{
|
|
float PT12;///<przekladnia uzwojen 1-2 transformatora
|
|
float PT13;///<przekladnia uzwojen 1-3 transformatora
|
|
|
|
//u16 Tr_zas;///<strona zasilania ukladu zabezpieczenia rożnicowego
|
|
u16 GrP1; ///<fabryczna grupa polaczen uzwojen transformatora dla uzwojenia GN (1)
|
|
u16 GrP2; ///<fabryczna grupa polaczen uzwojen transformatora dla uzwojenia SN (2)
|
|
u16 GrP3; ///<fabryczna grupa polaczen uzwojen transformatora dla uzwojenia SN (3)
|
|
};
|
|
|
|
struct dane_wewnetrzne_Diff
|
|
{
|
|
// Wyjscia_rejestratora R; ///< dane ostatniego zaklocenia
|
|
// Time czas_; // moment wystapienia zaklocenia (rejestr tymczasowy - przed zapisem)
|
|
u32 dl_; // dlugosc czasu trwania zaklocenia (rejestr tymczasowy - przed zapisem)
|
|
float maxIr1; // maksymalna watosc pradu rożnicowego wejscia 1 (rejestr tymczasowy - przed zapisem)
|
|
float maxIr2; // maksymalna watosc pradu rożnicowego wejscia 2 (rejestr tymczasowy - przed zapisem)
|
|
float maxIr3; // maksymalna watosc pradu rożnicowego wejscia 3 (rejestr tymczasowy - przed zapisem)
|
|
float maxIh1; // maksymalna watosc pradu stabilizacji wejscia 1 (rejestr tymczasowy - przed zapisem)
|
|
float maxIh2; // maksymalna watosc pradu stabilizacji wejscia 2 (rejestr tymczasowy - przed zapisem)
|
|
float maxIh3; // maksymalna watosc pradu stabilizacji wejscia 3 (rejestr tymczasowy - przed zapisem)
|
|
u32 licz_t; // licznik czasu od pobudzenia dla przekaznika czasowego
|
|
u8 wsk_rej; // nowy zapis rejestracji parametrow zaklocenia (spelnienie kryterium identyfikacji)
|
|
u8 sbc_P;
|
|
};
|
|
|
|
|
|
struct diff_logic
|
|
{
|
|
struct binary_io stan_bl;
|
|
u16 *I1_l1;
|
|
struct analog_in_params_extended *I1_l1_params;
|
|
u16 *I1_l2;
|
|
struct analog_in_params_extended *I1_l2_params;
|
|
u16 *I1_l3;
|
|
struct analog_in_params_extended *I1_l3_params;
|
|
u16 *I2_l1;
|
|
struct analog_in_params_extended *I2_l1_params;
|
|
u16 *I2_l2;
|
|
struct analog_in_params_extended *I2_l2_params;
|
|
u16 *I2_l3;
|
|
struct analog_in_params_extended *I2_l3_params;
|
|
u16 *I3_l1;
|
|
struct analog_in_params_extended *I3_l1_params;
|
|
u16 *I3_l2;
|
|
struct analog_in_params_extended *I3_l2_params;
|
|
u16 *I3_l3;
|
|
struct analog_in_params_extended *I3_l3_params;
|
|
u16 *I4_l1;
|
|
struct analog_in_params_extended *I4_l1_params;
|
|
u16 *I4_l2;
|
|
struct analog_in_params_extended *I4_l2_params;
|
|
u16 *I4_l3;
|
|
struct analog_in_params_extended *I4_l3_params;
|
|
|
|
struct binary_io test;
|
|
|
|
struct binary_io W;
|
|
struct binary_io Z;
|
|
struct binary_io P;
|
|
struct binary_io Pf1;
|
|
struct binary_io Pf2;
|
|
struct binary_io Pf3;
|
|
struct binary_io BL2h1;
|
|
struct binary_io BL2h2;
|
|
struct binary_io BL2h3;
|
|
struct binary_io BL5h1;
|
|
struct binary_io BL5h2;
|
|
struct binary_io BL5h3;
|
|
struct binary_io Zw1;
|
|
struct binary_io Zw2;
|
|
struct binary_io Zw3;
|
|
struct binary_io nieobs;
|
|
float *Ir1;
|
|
float *Ir2;
|
|
float *Ir3;
|
|
float *Ih1;
|
|
float *Ih2;
|
|
float *Ih3;
|
|
float *I2h1;
|
|
float *I2h2;
|
|
float *I2h3;
|
|
float *I5h1;
|
|
float *I5h2;
|
|
float *I5h3;
|
|
float *Ir_L1_ortb;
|
|
float *Ir_L2_ortb;
|
|
float *Ir_L3_ortb;
|
|
// float *Ih_L1_ortb;
|
|
// float *Ih_L2_ortb;
|
|
// float *Ih_L3_ortb;
|
|
|
|
enum jaki_uklad jaki_uklad;
|
|
struct dane_wewnetrzne_Diff dw;
|
|
struct licz l;
|
|
struct pobudzenia_czastkowe P_;
|
|
struct wejscie_wew w;
|
|
struct Nastawy_przeliczone nast_; // struktura z parametrami rozruchowymi
|
|
float Ir1_;
|
|
float Ir2_;
|
|
float Ir3_;
|
|
float Ih1_;
|
|
float Ih2_;
|
|
float Ih3_;
|
|
|
|
struct we_an_diff an_struct_i1_l1;
|
|
struct we_an_diff an_struct_i1_l2;
|
|
struct we_an_diff an_struct_i1_l3;
|
|
struct we_an_diff an_struct_i2_l1;
|
|
struct we_an_diff an_struct_i2_l2;
|
|
struct we_an_diff an_struct_i2_l3;
|
|
struct we_an_diff an_struct_i3_l1;
|
|
struct we_an_diff an_struct_i3_l2;
|
|
struct we_an_diff an_struct_i3_l3;
|
|
struct we_an_diff an_struct_i4_l1;
|
|
struct we_an_diff an_struct_i4_l2;
|
|
struct we_an_diff an_struct_i4_l3;
|
|
|
|
// float mul_I1[3];
|
|
// float mul_I2[3];
|
|
// float mul_I3[3];
|
|
// struct Nastawy_przeliczone_Diff_1 nast_;
|
|
};
|
|
|
|
struct diff_io
|
|
{
|
|
u32 stan_bl_in;
|
|
u32 ia_l1_ptr_in;
|
|
u32 ia_l1_params_ptr_in;
|
|
u32 ia_l2_ptr_in;
|
|
u32 ia_l2_params_ptr_in;
|
|
u32 ia_l3_ptr_in;
|
|
u32 ia_l3_params_ptr_in;
|
|
u32 ib_l1_ptr_in;
|
|
u32 ib_l1_params_ptr_in;
|
|
u32 ib_l2_ptr_in;
|
|
u32 ib_l2_params_ptr_in;
|
|
u32 ib_l3_ptr_in;
|
|
u32 ib_l3_params_ptr_in;
|
|
u32 ic_l1_ptr_in;
|
|
u32 ic_l1_params_ptr_in;
|
|
u32 ic_l2_ptr_in;
|
|
u32 ic_l2_params_ptr_in;
|
|
u32 ic_l3_ptr_in;
|
|
u32 ic_l3_params_ptr_in;
|
|
u32 id_l1_ptr_in;
|
|
u32 id_l1_params_ptr_in;
|
|
u32 id_l2_ptr_in;
|
|
u32 id_l2_params_ptr_in;
|
|
u32 id_l3_ptr_in;
|
|
u32 id_l3_params_ptr_in;
|
|
u32 test_in;
|
|
|
|
u32 w_out;
|
|
u32 z_out;
|
|
u32 p_out;
|
|
u32 pl1_out;
|
|
u32 pl2_out;
|
|
u32 pl3_out;
|
|
u32 bl_2h_L1_out;
|
|
u32 bl_2h_L2_out;
|
|
u32 bl_2h_L3_out;
|
|
u32 bl_5h_L1_out;
|
|
u32 bl_5h_L2_out;
|
|
u32 bl_5h_L3_out;
|
|
u32 zzew1_out;
|
|
u32 zzew2_out;
|
|
u32 zzew3_out;
|
|
u32 di_l1_float_out;
|
|
u32 di_l2_float_out;
|
|
u32 di_l3_float_out;
|
|
u32 ih_l1_float_out;
|
|
u32 ih_l2_float_out;
|
|
u32 ih_l3_float_out;
|
|
u32 i2h_l1_float_out;
|
|
u32 i2h_l2_float_out;
|
|
u32 i2h_l3_float_out;
|
|
u32 i5h_l1_float_out;
|
|
u32 i5h_l2_float_out;
|
|
u32 i5h_l3_float_out;
|
|
u32 ir_l1_ch_float_out;
|
|
u32 ir_l2_ch_float_out;
|
|
u32 ir_l3_ch_float_out;
|
|
u32 nieobs_out;
|
|
// u32 ih_l1_ch_float_out;
|
|
// u32 ih_l2_ch_float_out;
|
|
// u32 ih_l3_ch_float_out;
|
|
}__attribute__((__packed__));
|
|
|
|
|
|
extern int diff_init_io(struct diff_io *io, struct diff_logic *log);
|
|
extern void kryterium2(struct diff_logic *log,float Ir, float Ih, u8 *pob);
|
|
extern void kryterium3(struct diff_logic *log,float Ir, float Ih, u8 *pob);
|
|
extern u8 kryterium1(short *licz, u8 pobudzenie, u8 powrot, u8 st, u16 powz, u16 powp);
|
|
extern void przelicz_nastawy1(struct diff_logic *log,struct nast_trafo n);
|
|
extern void przelicz_1200Hz_1(struct diff_logic *log);
|
|
extern void przelicz_1200Hz_2(struct diff_logic *log);
|
|
|
|
|
|
#endif /* DIFF_H_ */
|