dodany kod c od Krzyska po wielu modyfikacjach przez Gemini zeby usunac zalezność od TI-RTOS

This commit is contained in:
2026-02-19 11:59:33 +01:00
parent bf9c4596b8
commit d086ef28de
336 changed files with 52294 additions and 1006 deletions

431
src/Diff.h Normal file
View File

@@ -0,0 +1,431 @@
/*
* 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_ */