From 864a2dfcacafd0b604b01d3078536938ddb95d20 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Mon, 20 Jan 2025 11:41:55 +0300 Subject: [PATCH] =?UTF-8?q?#8=20=D0=A7=D1=83=D1=82=D1=8C=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=20adc=5Fsim=20=D0=B8=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=20=D1=80=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=9F=D0=A7=20=D0=B2=D1=8B=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=20app=5Fconfigs.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inu/app_wrapper/app_configs.h | 26 ++++++++++------ Inu/app_wrapper/app_init.c | 2 +- Inu/app_wrapper/app_init.h | 6 ++-- Inu/app_wrapper/app_io.c | 10 +++++++ Inu/app_wrapper/app_io.h | 6 ++-- Inu/xilinx_wrapper/adc_sim.c | 54 +++++++++++++++++----------------- Inu/xilinx_wrapper/adc_sim.h | 7 +++-- inu_23550.slx | Bin 85840 -> 85836 bytes 8 files changed, 65 insertions(+), 46 deletions(-) diff --git a/Inu/app_wrapper/app_configs.h b/Inu/app_wrapper/app_configs.h index 048f358..4b9bb68 100644 --- a/Inu/app_wrapper/app_configs.h +++ b/Inu/app_wrapper/app_configs.h @@ -5,19 +5,27 @@ Дата последнего обновления: 2021.11.08 **************************************************************************/ -#ifndef DEF -#define DEF +#ifndef _APP_CONFIG +#define _APP_CONFIG // раскомментировать, если есть сдвиг между обмотками ГЭД (30 град.) #define SHIFT +#define ALG_MODE_SIMULINK ALG_MODE_SCALAR_OBOROTS +/* + ALG_MODE_UF_CONST, + ALG_MODE_SCALAR_OBOROTS, + ALG_MODE_SCALAR_POWER, + ALG_MODE_FOC_OBOROTS, + ALG_MODE_FOC_POWER +*/ #define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_NORMAL_ABC -/* V_PWM24_PHASE_SEQ_NORMAL_ABC, - красивый ток, некрасивое напряжения - V_PWM24_PHASE_SEQ_NORMAL_BCA, - всё херня - V_PWM24_PHASE_SEQ_NORMAL_CAB, - всё херня - V_PWM24_PHASE_SEQ_REVERS_ACB, - всё херня - V_PWM24_PHASE_SEQ_REVERS_CBA, - жопа - V_PWM24_PHASE_SEQ_REVERS_BAC - жопа +/* V_PWM24_PHASE_SEQ_NORMAL_ABC, + V_PWM24_PHASE_SEQ_NORMAL_BCA, + V_PWM24_PHASE_SEQ_NORMAL_CAB, + V_PWM24_PHASE_SEQ_REVERS_ACB, + V_PWM24_PHASE_SEQ_REVERS_CBA, + V_PWM24_PHASE_SEQ_REVERS_BAC */ -#endif //DEF +#endif //_APP_CONFIG diff --git a/Inu/app_wrapper/app_init.c b/Inu/app_wrapper/app_init.c index a91845d..acc02e7 100644 --- a/Inu/app_wrapper/app_init.c +++ b/Inu/app_wrapper/app_init.c @@ -41,7 +41,7 @@ void app_init(void) { edrk.zadanie.iq_ZadanieU_Charge = _IQ(2500 / NORMA_ACP); edrk.temper_limit_koeffs.sum_limit = _IQ(1); simple_scalar1.fzad_add_max = _IQ(FZAD_ADD_MAX); - edrk.Mode_ScalarVectorUFConst = ALG_MODE_SCALAR_OBOROTS; + edrk.Mode_ScalarVectorUFConst = ALG_MODE_SIMULINK; //edrk.Mode_ScalarVectorUFConst = ALG_MODE_FOC_OBOROTS; edrk.zadanie.iq_power_zad = _IQ(1); diff --git a/Inu/app_wrapper/app_init.h b/Inu/app_wrapper/app_init.h index 92f7b46..c10d0e7 100644 --- a/Inu/app_wrapper/app_init.h +++ b/Inu/app_wrapper/app_init.h @@ -1,5 +1,5 @@ -#ifndef INIT28335 -#define INIT28335 +#ifndef _APP_INIT +#define _APP_INIT #include "app_includes.h" @@ -10,4 +10,4 @@ void edrk_init_variables_matlab(void); void set_zadanie_u_charge_matlab(void); void init_Uin_rms(void); void init_flag_a(void); -#endif //INIT28335 +#endif //_APP_INIT diff --git a/Inu/app_wrapper/app_io.c b/Inu/app_wrapper/app_io.c index b4ac3c8..d6e2c21 100644 --- a/Inu/app_wrapper/app_io.c +++ b/Inu/app_wrapper/app_io.c @@ -119,4 +119,14 @@ void writeOutputParameters(real_T* xD) { xD[nn++] = xpwm_time.Tc1_0; xD[nn++] = xpwm_time.Tc1_1; + + + xD[nn++] = (AdcSim.udc1.adc_val); + xD[nn++] = (AdcSim.udc2.adc_val); + xD[nn++] = (AdcSim.ia1.adc_val); + xD[nn++] = (AdcSim.ib1.adc_val); + xD[nn++] = (AdcSim.ic1.adc_val); + xD[nn++] = (AdcSim.ia2.adc_val); + xD[nn++] = (AdcSim.ib2.adc_val); + xD[nn++] = (AdcSim.ic2.adc_val); } \ No newline at end of file diff --git a/Inu/app_wrapper/app_io.h b/Inu/app_wrapper/app_io.h index 60bcabb..2bde950 100644 --- a/Inu/app_wrapper/app_io.h +++ b/Inu/app_wrapper/app_io.h @@ -1,8 +1,8 @@ #include "simstruc.h" #include "app_includes.h" -#ifndef PARAM -#define PARAM +#ifndef _APP_IO +#define _APP_IO void readInputParameters(const real_T* u); @@ -13,5 +13,5 @@ extern int CAN_timeout[UNIT_QUA]; extern RS_DATA_STRUCT rs_a; extern RS_DATA_STRUCT rs_b; extern _iq iq_norm_ADC[COUNT_ARR_ADC_BUF][16]; -#endif //PARAM +#endif //_APP_IO diff --git a/Inu/xilinx_wrapper/adc_sim.c b/Inu/xilinx_wrapper/adc_sim.c index 1f2cfea..d6ec37d 100644 --- a/Inu/xilinx_wrapper/adc_sim.c +++ b/Inu/xilinx_wrapper/adc_sim.c @@ -9,27 +9,27 @@ void Simulate_ADC(SimStruct* S) adcMeasure(&AdcSim.Measure, IN, 0); - adcConvert(&AdcSim.convertion, &AdcSim.udc1, AdcSim.Measure.udc1, 0); - adcConvert(&AdcSim.convertion, &AdcSim.udc2, AdcSim.Measure.udc2, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ia1, AdcSim.Measure.ia1, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ib1, AdcSim.Measure.ib1, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ic1, AdcSim.Measure.ic1, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ia2, AdcSim.Measure.ia2, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ib2, AdcSim.Measure.ib2, 0); - adcConvert(&AdcSim.convertion, &AdcSim.ic2, AdcSim.Measure.ic2, 0); + adcConvert(&AdcSim.convertion, &AdcSim.udc1, AdcSim.Measure.udc1); + adcConvert(&AdcSim.convertion, &AdcSim.udc2, AdcSim.Measure.udc2); + adcConvert(&AdcSim.convertion, &AdcSim.ia1, AdcSim.Measure.ia1); + adcConvert(&AdcSim.convertion, &AdcSim.ib1, AdcSim.Measure.ib1); + adcConvert(&AdcSim.convertion, &AdcSim.ic1, AdcSim.Measure.ic1); + adcConvert(&AdcSim.convertion, &AdcSim.ia2, AdcSim.Measure.ia2); + adcConvert(&AdcSim.convertion, &AdcSim.ib2, AdcSim.Measure.ib2); + adcConvert(&AdcSim.convertion, &AdcSim.ic2, AdcSim.Measure.ic2); } void Init_ADC_Simulation() { adcInitConvertion(&AdcSim.convertion, NORMA_ACP, 2.5, 4096); - adcInitMeasure(&AdcSim.udc1, K_LEM_ADC[0], R_ADC[0], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.udc2, K_LEM_ADC[1], R_ADC[1], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ia1, K_LEM_ADC[2], R_ADC[2], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ib1, K_LEM_ADC[3], R_ADC[3], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ic1, K_LEM_ADC[4], R_ADC[4], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ia2, K_LEM_ADC[5], R_ADC[5], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ib2, K_LEM_ADC[6], R_ADC[6], DEFAULT_ZERO_ADC); - adcInitMeasure(&AdcSim.ic2, K_LEM_ADC[7], R_ADC[7], DEFAULT_ZERO_ADC); + adcInitMeasure(&AdcSim.udc1, K_LEM_ADC[0], R_ADC[0], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.udc2, K_LEM_ADC[1], R_ADC[1], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ia1, K_LEM_ADC[2], R_ADC[2], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ib1, K_LEM_ADC[3], R_ADC[3], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ic1, K_LEM_ADC[4], R_ADC[4], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ia2, K_LEM_ADC[5], R_ADC[5], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ib2, K_LEM_ADC[6], R_ADC[6], DEFAULT_ZERO_ADC, 0); + adcInitMeasure(&AdcSim.ic2, K_LEM_ADC[7], R_ADC[7], DEFAULT_ZERO_ADC, 0); } @@ -40,11 +40,12 @@ void adcInitConvertion(AdcConvertionHandle* hconv, int norma_adc, double adc_amp hconv->adc_bit_depth = adc_bit_depth; } -void adcInitMeasure(AdcMeasureHandle* hmeasure, int k_lem_adc, int r_adc, int offset) +void adcInitMeasure(AdcMeasureHandle* hmeasure, int k_lem_adc, int r_adc, int offset, double real_satur) { - hmeasure->k_lem_adc = k_lem_adc; - hmeasure->r_adc = r_adc; - hmeasure->offset = offset; + hmeasure->k_lem_adc = k_lem_adc; + hmeasure->r_adc = r_adc; + hmeasure->offset = offset; + hmeasure->real_satur = real_satur; } void adcMeasure(AdcRealMeasureHandle *hrmeasure, const real_T* u, int startind) @@ -59,16 +60,15 @@ void adcMeasure(AdcRealMeasureHandle *hrmeasure, const real_T* u, int startind) hrmeasure->ic2 = u[startind++]; } -void adcConvert(AdcConvertionHandle* hconv, AdcMeasureHandle* hmeasure, double realMeasure, double MeasureSatur) +void adcConvert(AdcConvertionHandle* hconv, AdcMeasureHandle* hmeasure, double realMeasure) { - if (MeasureSatur != 0) + if (hmeasure->real_satur != 0) { - if (realMeasure > MeasureSatur) - realMeasure = MeasureSatur; - else if (realMeasure < -MeasureSatur) - realMeasure = -MeasureSatur; + if (realMeasure > hmeasure->real_satur) + realMeasure = hmeasure->real_satur; + else if (realMeasure < -hmeasure->real_satur) + realMeasure = -hmeasure->real_satur; } - // AdcMirror.ADCRESULT0 = (unsigned short)(realMeasure/MeasureSatur*2048. + (float)offset.Udc1); hmeasure->adc_val = (unsigned short)(realMeasure / hmeasure->k_lem_adc * hmeasure->r_adc / hconv->norma_adc / hconv->adc_amplitude * hconv->adc_bit_depth + (float)hmeasure->offset); } \ No newline at end of file diff --git a/Inu/xilinx_wrapper/adc_sim.h b/Inu/xilinx_wrapper/adc_sim.h index f4ea857..57453d1 100644 --- a/Inu/xilinx_wrapper/adc_sim.h +++ b/Inu/xilinx_wrapper/adc_sim.h @@ -35,6 +35,7 @@ typedef struct { int adc_val; + double real_satur; int r_adc; int k_lem_adc; int offset; @@ -63,10 +64,10 @@ AdcSimHandle AdcSim; void Simulate_ADC(SimStruct* S); void Init_ADC_Simulation(); -void adcInitConvertion(AdcConvertionHandle* hconv, int norma_adc, int adc_amplitude, int adc_bit_depth); -void adcInitMeasure(AdcMeasureHandle* hmeasure, int k_lem_adc, int r_adc, int offset); +void adcInitConvertion(AdcConvertionHandle* hconv, int norma_adc, double adc_amplitude, int adc_bit_depth); +void adcInitMeasure(AdcMeasureHandle* hmeasure, int k_lem_adc, int r_adc, int offset, double real_satur); void adcMeasure(AdcRealMeasureHandle* hrmeasure, const real_T* u, int startind); -void adcConvert(AdcConvertionHandle* hconv, AdcMeasureHandle* hmeasure, double realMeasure, double MeasureSatur); +void adcConvert(AdcConvertionHandle* hconv, AdcMeasureHandle* hmeasure, double realMeasure); #endif //PWM_SIM diff --git a/inu_23550.slx b/inu_23550.slx index 5f1aba396d7a364bc6b6419fdb775e4ee6d57a96..88a966b433204596706852d794191fb81cdcbceb 100644 GIT binary patch delta 9023 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 Wi2kGfFI@vdsS03uS10rD?f(a0PkSH$ delta 9046 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 ufD*I@$A8#I|FFsa+rwx