/*
 * uf_alg.h
 *
 *  Created on: 10 ôåâð. 2020 ã.
 *      Author: yura
 */

#ifndef _UF_ALG_ING_H_
#define _UF_ALG_ING_H_

#include "svgen_mf.h"


#define CONST_IQ_05  8388608 //0.5
#define CONST_IQ_1  16777216 //1.0



/* Ãëîáàëüíàß ñòðóêòóðà UF ALG */
typedef struct
{

    _iq tetta;
    _iq tetta_bs;


    _iq winding_displacement_bs1;
    _iq winding_displacement_bs2;

    _iq hz_to_angle;
    _iq Kplus;

    _iq Ud;
    _iq Uq;

    _iq Ualpha;
    _iq Ubeta;

    _iq svgen_dq_Ta;
    _iq svgen_dq_Tb;
    _iq svgen_dq_Tc;


}   UF_ALG_VALUE;




#define UF_ALG_VALUE_DEFAULT {0,0,0,0,0,0,0,0,0,0,0,0,0}



extern UF_ALG_VALUE uf_alg ;

extern SVGENMF svgen_mf1;
extern SVGENMF svgen_mf2;


//void uf_const_f(_iq Fzad_uf1,_iq Fzad_uf2,_iq Uzad_uf1, _iq Uzad_uf2, int Revers,unsigned int enable_alg_u_disbalance);

void uf_const_f_24_Ing(_iq Fzad_uf1,_iq Fzad_uf2,_iq Uzad_uf1, _iq Uzad_uf2, unsigned int enable_alg_u_disbalance, _iq kplus_u_disbalance, _iq k_u_disbalance,
                   _iq U_1, _iq U_2, unsigned int flag_km_0,
                   _iq Uzad_max,
                   _iq *Kplus_out);

void uf_disbalance_uzpt(_iq Uzad_uf1, unsigned int disable_alg_u_disbalance, _iq kplus_u_disbalance, _iq k_u_disbalance,
                        _iq U_1, _iq U_2,
                        _iq Uzad_max,
                        _iq *Kplus_out);

void init_alpha_Ing(unsigned int bs);
void InitVariablesSvgen_Ing(unsigned int freq);
void test_calc_simple_dq_pwm24_Ing(_iq Fzad_uf1,_iq Uzad_uf1, unsigned int disable_alg_u_disbalance, _iq kplus_u_disbalance, _iq k_u_disbalance,
                                   _iq U_1, _iq U_2, unsigned int flag_km_0,
                                   _iq Uzad_max,
                                   _iq master_tetta,
                                   _iq master_Uzad_uf1,
                                   unsigned int master,
                                   unsigned int n_bs,
                                   _iq *Kplus_out,
                                   _iq *tetta_out,
                                   _iq *Uzad_out);

void test_calc_vect_dq_pwm24_Ing(_iq Theta_zad,_iq Ud_zad, _iq Uq_zad,
                                   unsigned int disable_alg_u_disbalance, _iq kplus_u_disbalance, _iq k_u_disbalance,
                                   _iq U_1, _iq U_2, unsigned int flag_km_0,
                                   _iq Uzad_max,
                                   unsigned int master,
                                   unsigned int n_bs,
                                   _iq *Kplus_out,
                                   _iq *Uzad_out);

#endif /* _UF_ALG_H_ */