/* * pll_tools.c * * Created on: 13 íîÿá. 2024 ã. * Author: Evgeniy_Sokolov */ #include <edrk_main.h> #include <params.h> #include <params_alg.h> #include <params_norma.h> #include <params_pwm24.h> #include <params_temper_p.h> #include <project.h> #include "IQmathLib.h" #include "mathlib.h" #include "adc_tools.h" #include "limit_power.h" #include "pll_tools.h" //#pragma DATA_SECTION(pll1, ".slow_vars") PLL_REC pll1 = PLL_REC_DEFAULT; void init_50hz_input_net50hz(void) { //1. Èíèöèàëèçàöèß pll1.setup.freq_run_pll = (FREQ_RUN_PLL); // ÷àñòîòà çàïóñêà ðàñ÷åòà Ãö. pll1.setup.rotation_u_cba = 0;//0;//1; // ÷åðåäîâàíèå ôàç: 0 - ïðàâèëüíîå A-B-C, 1 - íåïðàâèëüíîå A-C-B pll1.init(&pll1); // ðàñ÷åò è èíèöèàëèçàöèß âíóòðåííèõ ïåðåìåííûõ // Êîíåö Èíèöèàëèçàöèè } void calc_pll_50hz(void) { // ïåðåäà÷à äàííûõ â àëãîðèòì. pll1.input.Input_U_AB = analog.iqUin_A1B1; pll1.input.Input_U_BC = analog.iqUin_B1C1; pll1.input.Input_U_CA = analog.iqUin_C1A1; // ðàñ÷åò, çàïóñêàòü ñ ÷àñòîòîé óêàçàííîé â setup.freq_run_pll pll1.calc_pll(&pll1); // Êîíåö ðàñ÷åòà } void get_freq_50hz_float(void) { float int_delta_freq_test; // 3. Ïîëó÷åíèå äàííûõ ó íîðìàëüíîì âèäå. // ïîëó÷åíèå äàííûõ î ÷àñòîòåí ñåòè â Ãö*100. // ìîæíî âûçûâàòü ðåæå - òîëüêî äëß ïîëó÷åíèÿ äàííûõ. pll1.get_freq_float(&pll1); if (edrk.Status_Ready.bits.preImitationReady2) edrk.freq_50hz_1 = 5001; else edrk.freq_50hz_1 = pll1.output.int_freq_net; if (delta_freq_test>0) { int_delta_freq_test = _IQtoF( delta_freq_test) * pll1.setup.freq_run_pll / PI * 50.00; // freq*100 edrk.freq_50hz_1 -= int_delta_freq_test; } // } void get_freq_50hz_iq(void) { // 3. Ïîëó÷åíèå äàííûõ ó íîðìàëüíîì âèäå. // ïîëó÷åíèå äàííûõ î ÷àñòîòåí ñåòè â Ãö*100. // ìîæíî âûçûâàòü ðåæå - òîëüêî äëß ïîëó÷åíèÿ äàííûõ. pll1.get_freq_iq(&pll1); if (edrk.Status_Ready.bits.preImitationReady2) edrk.iq_freq_50hz = level_50hz; else edrk.iq_freq_50hz = pll1.output.iq_freq_net; if (delta_freq_test>0) edrk.iq_freq_50hz -= delta_freq_test; // }