Чет делал систему управления углом и поломалось всё... Угол неправильно рассчитывается и не в то время включается тиристор

This commit is contained in:
2025-11-17 18:49:43 +03:00
parent e69eb0c8c9
commit b887114510
20 changed files with 976 additions and 244 deletions

View File

@@ -7,7 +7,7 @@
#include "app_wrapper.h"
float dbg[16];
extern float iref_dbg;
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
void Write_Thyristors(real_T* Buffer, int ind_port)
@@ -33,7 +33,7 @@ void Write_PowerMonitor(real_T* Buffer, int ind_port)
int nn = 0;
for (int i = 0; i < 3; i++)
{ //0-2
WriteOutputArray(upp.pm.measured.U[i], ind_port, nn++);
WriteOutputArray(upp.pm.measured.fast.U[i], ind_port, nn++);
}
for (int i = 0; i < 3; i++)
{ //3-5
@@ -41,23 +41,23 @@ void Write_PowerMonitor(real_T* Buffer, int ind_port)
}
for (int i = 0; i < 3; i++)
{ //6-8
WriteOutputArray(upp.pm.measured.F[i], ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.F[i], ind_port, nn++);
}
for (int i = 0; i < 3; i++)
{ //9-11
WriteOutputArray(upp.pm.measured.I[i], ind_port, nn++);
WriteOutputArray(upp.pm.measured.fast.I[i], ind_port, nn++);
}
for (int i = 0; i < 2; i++)
{ //12-13
WriteOutputArray(upp.pm.measured.T[i], ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.T[i], ind_port, nn++);
}
{ //14-19
WriteOutputArray(upp.pm.measured.Uvec, ind_port, nn++);
WriteOutputArray(upp.pm.measured.Ivec, ind_port, nn++);
WriteOutputArray(upp.pm.measured.Imean[0], ind_port, nn++);
WriteOutputArray(upp.pm.measured.Imean[1], ind_port, nn++);
WriteOutputArray(upp.pm.measured.Imean[2], ind_port, nn++);
WriteOutputArray(upp.pm.measured.Fmean, ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.Uamp, ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.Iamp, ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.I[0], ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.I[1], ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.I[2], ind_port, nn++);
WriteOutputArray(upp.pm.measured.final.Fmean, ind_port, nn++);
}
}
@@ -74,8 +74,14 @@ void app_readInputs(const real_T* Buffer) {
ADC_Set_Channel_Value(ADC3, 8, ReadInputArray(0,4));
ADC_Set_Channel_Value(ADC3, 10, ReadInputArray(0,5));
alpha_dbg = ReadInputArray(1, 0);
iref_dbg = ReadInputArray(1, 0);
upp.call->go = ReadInputArray(1, 1);
MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(1, 2)*65535;
MB_INTERNAL.param.angle.Angle_Min = ReadInputArray(1, 3)*65535;
MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(1, 4) * 10000;
MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(1, 5) * 10000;
MB_INTERNAL.param.angle.PID_Kd = ReadInputArray(1, 6) * 10000;
// USER APP INPUT END
}
@@ -92,20 +98,24 @@ void app_writeOutputBuffer(real_T* Buffer) {
int nn = 0;
WriteOutputArray(iref_dbg, 2, nn++);
WriteOutputArray(upp.pm.measured.final.Iamp, 2, nn++);
WriteOutputArray(upp.hangle.alpha, 2, nn++);
//WriteOutputArray(upp.hangle.htim->Instance->CNT, 2, nn++);
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR1) - upp.hangle.htim->Instance->CNT, 2, nn++);
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR2) - upp.hangle.htim->Instance->CNT, 2, nn++);
WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR3) - upp.hangle.htim->Instance->CNT, 2, nn++);
//WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR1) - upp.hangle.htim->Instance->CNT, 2, nn++);
//WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR2) - upp.hangle.htim->Instance->CNT, 2, nn++);
//WriteOutputArray((long long)(upp.hangle.htim->Instance->CCR3) - upp.hangle.htim->Instance->CNT, 2, nn++);
//WriteOutputArray(dbg[0], 2, nn++);
//WriteOutputArray(dbg[1], 2, nn++);
//WriteOutputArray(dbg[2], 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_A_POS].State, 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_A_NEG].State, 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_B_POS].State, 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_B_NEG].State, 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_C_POS].State, 2, nn++);
WriteOutputArray(upp.hpwm.AllPhases[PHASE_C_NEG].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_A_POS].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_A_NEG].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_B_POS].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_B_NEG].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_C_POS].State, 2, nn++);
//WriteOutputArray(upp.hpwm.AllPhases[PHASE_C_NEG].State, 2, nn++);
// USER APP OUTPUT END
}

Binary file not shown.