рефакторинг to_float->u2f

и всякое декоративное по модели
This commit is contained in:
2025-11-30 21:22:04 +03:00
parent 854ea6f6c2
commit 0de4aad4ef
16 changed files with 97 additions and 62 deletions

View File

@@ -22,14 +22,16 @@ SIM__MCUHandleTypeDef hmcu; ///< Хендл для управления
*/
const int inLengths[IN_PORT_NUMB] = {
ADC_PORT_1_WIDTH,
IN_PORT_2_WIDTH
PUI_PORT_2_WIDTH,
INTERNAL_PORT_3_WIDTH
};
/**
* @brief Таблица смещений в выходном массиве IN
*/
const int inOffsets[IN_PORT_NUMB] = {
OFFSET_IN_ARRAY_1,
OFFSET_IN_ARRAY_2
OFFSET_IN_ARRAY_2,
OFFSET_IN_ARRAY_3
};
/**

View File

@@ -53,9 +53,10 @@
// Parameters of S_Function
// INPUT/OUTPUTS PARAMS START
#define IN_PORT_NUMB 2
#define IN_PORT_NUMB 3
#define ADC_PORT_1_WIDTH 6
#define IN_PORT_2_WIDTH 16
#define PUI_PORT_2_WIDTH 10
#define INTERNAL_PORT_3_WIDTH 16
#define OUT_PORT_NUMB 5
#define THYR_PORT_1_WIDTH 6
@@ -94,11 +95,12 @@
// INPUT/OUTPUTS AUTO-PARAMS START
/// === Полный размер буфера ===
#define TOTAL_IN_SIZE (ADC_PORT_1_WIDTH + IN_PORT_2_WIDTH)
#define TOTAL_IN_SIZE (ADC_PORT_1_WIDTH + PUI_PORT_2_WIDTH + INTERNAL_PORT_3_WIDTH)
/// === Смещения массивов (внутри общего буфера) ===
#define OFFSET_IN_ARRAY_1 0
#define OFFSET_IN_ARRAY_2 (OFFSET_IN_ARRAY_1 + ADC_PORT_1_WIDTH)
#define OFFSET_IN_ARRAY_3 (OFFSET_IN_ARRAY_2 + PUI_PORT_2_WIDTH)
/// === Полный размер буфера ===
#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + DO_PORT_2_WIDTH + PM_PORT_3_WIDTH + ANGLE_PORT_4_WIDTH + OUT_PORT_5_WIDTH)

View File

@@ -7,7 +7,6 @@
#include "app_wrapper.h"
float dbg[16];
extern float dbg_iref;
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
void Write_UPP_Outputs(real_T* Buffer, int ind_port)
@@ -121,18 +120,29 @@ 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));
dbg_iref = ReadInputArray(1, 0);
upp.call->go = ReadInputArray(1, 1);
upp.call->go = ReadInputArray(1, 0);
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;
MB_DATA.HoldRegs.pui_params.Tnt = ReadInputArray(1, 7) * 1000;
if (upp.workmode != UPP_Work)
{
MB_DATA.HoldRegs.pui_params.Iref = ReadInputArray(1, 1);
MB_DATA.HoldRegs.pui_params.Tnt = ReadInputArray(1, 2);
MB_DATA.HoldRegs.pui_params.Umin = ReadInputArray(1, 3);
MB_DATA.HoldRegs.pui_params.Umax = ReadInputArray(1, 4);
MB_DATA.HoldRegs.pui_params.Imax = ReadInputArray(1, 5);
MB_DATA.HoldRegs.pui_params.Imin = ReadInputArray(1, 6);
MB_DATA.HoldRegs.pui_params.TiMax = ReadInputArray(1, 7);
MB_DATA.HoldRegs.pui_params.Tdelay = ReadInputArray(1, 8);
MB_DATA.HoldRegs.pui_params.Interlace = ReadInputArray(1, 9);
MB_INTERNAL.param.nominal.U = ReadInputArray(1, 8) * 10;
MB_INTERNAL.param.nominal.I = ReadInputArray(1, 9) * 10;
MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(2, 0) * 65535;
MB_INTERNAL.param.angle.Angle_Min = ReadInputArray(2, 1) * 65535;
MB_INTERNAL.param.angle.PID_Kp = ReadInputArray(2, 2) * 10000;
MB_INTERNAL.param.angle.PID_Ki = ReadInputArray(2, 3) * 10000;
MB_INTERNAL.param.angle.PID_Kd = ReadInputArray(2, 4) * 10000;
MB_INTERNAL.param.nominal.U = ReadInputArray(2, 5) * 10;
MB_INTERNAL.param.nominal.I = ReadInputArray(2, 6) * 10;
}
// USER APP INPUT END
}

Binary file not shown.