Razvalyaev
7e0063eee0
Все основные файлы подтянуты без изменений Изменены (только папка main_matlab): - заглушки для ненужных функций (main_matlab.c) - iq библиотека (IQmathLib_matlab.c) - библиотеки DSP281x
106 lines
2.3 KiB
C
106 lines
2.3 KiB
C
/*
|
|
* 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;
|
|
|
|
//
|
|
|
|
|
|
}
|
|
|