моделирование чет непонятное

This commit is contained in:
2025-11-21 00:30:07 +03:00
parent d918ffb860
commit b21d72b728
18 changed files with 99 additions and 36 deletions

View File

@@ -30,7 +30,7 @@
#define TEMP_1 0
#define TEMP_2 1
#define UPP_SIMULATE_I ///< Симулировт токи а не брать с АЦП
//#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП
/**
* @addtogroup UPP_PARAMS_DEFAULT Default params for external flash
@@ -144,6 +144,16 @@
#define ANGLE_TIM2_FREQ_MHZ 84 ///< Частота тиков таймера отсчета угла открытия тиристоров
#define HAL_PWREx_EnableOverDrive() HAL_ERROR
#endif
// ===== ОТЛАДОЧНЫЕ ШТУКИ ДЛЯ MATLAB ======
#if defined(MATLAB)
#undef UPP_INIT_BEFORE_READY_MS
#define UPP_INIT_BEFORE_READY_MS 100 ///< Сколько сканировать сеть, перед выставлением состояния готовности
#endif
/** //UPP_COMPILED_PARAMS
* @}

View File

@@ -81,9 +81,9 @@ void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement)
return;
hangle->Iref = Filter_Process(&hangle->refFilter, setpoint);
hangle->Imeas = measurement;
/* Ошибка регулирования = уставка - измеренное */
float err = hangle->Iref - measurement;
float err = hangle->Iref - hangle->Imeas;
/* ПИД регулирование */
float open_control = arm_pid_f32(&hangle->pid, err); // 0 - открыть максимально поздно, 1 - открыть макситмально рано

View File

@@ -27,6 +27,7 @@ typedef struct
Angle_Config_t Config; ///< Конфигурации алгоритма расчета угла открытия тиристоров
float Iref; ///< текущее задание тока в о.е. [0..1]
float Imeas; ///< измеренное значение тока в о.е. [0..1]
float alpha; ///< текущий угол открытия в о.е. [0..1] (% от периода)
arm_pid_instance_f32 pid; ///< ПИД регулятор для управления углом

View File

@@ -30,6 +30,8 @@ int UPP_App_Init(void)
upp.PUI.values = &MB_DATA.InRegs.pui;
upp.call = &MB_INTERNAL.FuncCalls;
UPP_DO.CEN(ENABLE);
if(HAL_TIM_Base_Start(&ustim) != HAL_OK)
{
return 1;
@@ -46,6 +48,7 @@ int UPP_App_Init(void)
{
return 1;
}
return 0;
}
@@ -82,7 +85,6 @@ int UPP_While(void)
HAL_IWDG_Refresh(&hiwdg);
BenchTime_Start(BT_SLOWCALC, angletim.Instance->CNT, HAL_MAX_DELAY);
UPP_DO.CEN(ENABLE);
// если ошибка вызываем СТОП
if(errors.pui.all)
{

View File

@@ -173,7 +173,7 @@ void UPP_Params_ControlInternal(void)
/**
* @brief Контроль внутренних параметров УПП.
* @brief Контроль параметров УПП на корректные значения.
* @return HAL Status.
*/
void UPP_Params_Saturate(void)

View File

@@ -358,6 +358,22 @@
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>136</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>../Core/Src/stm32f4xx_it.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
@@ -1193,7 +1209,7 @@
<Group>
<GroupName>MyLibs</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>

View File

@@ -17,8 +17,8 @@
<TargetCommonOption>
<Device>STM32F427ZGTx</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.2.17.1</PackID>
<PackURL>https://www.keil.com/pack/</PackURL>
<PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>
@@ -1004,8 +1004,8 @@
<TargetCommonOption>
<Device>STM32F417ZGTx</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.2.17.1</PackID>
<PackURL>https://www.keil.com/pack/</PackURL>
<PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>