Продолжительный импульсный режим

This commit is contained in:
seklyuts 2024-08-27 12:26:59 +03:00
parent 0c392b202f
commit 3c857bc876
7 changed files with 44 additions and 26 deletions

View File

@ -31,6 +31,7 @@ volatile uint16_t TimerBase = PERIOD_TIMER_BASE;
void PWM_ABC_StopAllClose(void)
{
EALLOW;

View File

@ -313,8 +313,6 @@ void sdfmGetResult(uint16_t N)
uint16_t i = 0;
int32_t OffsetCount = 0;
// Gpio4out(1);
FilterResult[N][loopCounter[N]] = *SdfmReadData[N];
sdfmAdc[N] = FilterResult[N][loopCounter[N]] - sdfmOffset[N];
if(N != SDFM_U_DC) {
@ -337,12 +335,6 @@ void sdfmGetResult(uint16_t N)
SDDFPARM_Reg_arr[N]->bit.AE = 0;
EDIS;
sdfmAdcErr[N] = 0;
// Gpio4out(0);
// if(N == SDFM_IA) Gpio54out(0);
// if(N == SDFM_IB) Gpio55out(0);
// if(N == SDFM_IC) Gpio56out(0);
}

View File

@ -26,18 +26,18 @@ void frmmstr_run(void)
{
static uint16_t diod = 0;
// if(SciaRegs.SCIRXST.bit.RXERROR)
// {
// EALLOW;
// SciaRegs.SCICTL1.bit.SWRESET = 0;
// EDIS;
// }
// else
// {
// EALLOW;
// SciaRegs.SCICTL1.bit.SWRESET = 1;
// EDIS;
// }
if(SciaRegs.SCIRXST.bit.RXERROR)
{
EALLOW;
SciaRegs.SCICTL1.bit.SWRESET = 0;
EDIS;
}
else
{
EALLOW;
SciaRegs.SCICTL1.bit.SWRESET = 1;
EDIS;
}
if(FMSTRIsEnable())
{

View File

@ -84,6 +84,9 @@ float UdcVolt = 0;
volatile float VdcFactor = FACTOR_VDC;
volatile uint16_t VoltProcImit = 0;
uint32_t Impuls = 0;
uint32_t ImpulsHi = 0;
uint32_t ImpulsLow = 0;
uint32_t ImpulsStep = 0;
int16_t AngleOffset = 0xc000, vectorAngle;
@ -146,6 +149,14 @@ void vectorControl(int16_t CurrentA, int16_t CurrentB, int16_t CurrentC, int16_t
}
else CurrLoop.piIq.Ref = CurrentRegTuneAmpl;
break;
case StepModeImpulses:
PWM_ABC_StartOut();
vectorSinCos.Angle = Step;
if(ImpulsStep <= ImpulsLow) CurrLoop.piIq.Ref = CurrentRegTuneAmpl;
else CurrLoop.piIq.Ref = CurrentRegTuneAmplInpuls;
if(ImpulsStep < (ImpulsLow + ImpulsHi)) ImpulsStep++;
else ImpulsStep = 0;
break;
case StayMode:
PWM_ABC_StartOut();
CurrLoop.piIq.Ref = CurrentRegTuneAmpl;

View File

@ -76,8 +76,9 @@ typedef struct
typedef enum
{
OffMode, //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StepMode, //
OffMode,
StepMode,
StepModeImpulses,
StayMode,
CurrentRegTune,
TestPWNMode,

View File

@ -31,10 +31,12 @@ Rele.Error - появляется если после включение рел
Mode - режим работы.
0 - стоим, всё выключено,
1 - шаговый режим (задать ток CurrentRegTuneAmpl для шагового режима, скорость меняется через Nstep)
2 - режим поворота на заданный угол (задать ток CurrentRegTuneAmpl для шагового режима, угол поворота через vectorSinCos.angle)
3 - режим настройки регулятора тока
4 - шим по одному транзистору (панель TestPWM, см ниже)
6 - вращение по датчику с контуром тока (задать ток CurrentRegTuneAmpl)
2 - шаговый импульсный режим
3 - режим поворота на заданный угол (задать ток CurrentRegTuneAmpl для шагового режима, угол поворота через vectorSinCos.angle)
4 - режим настройки регулятора тока
5 - шим по одному транзистору (панель TestPWM, см ниже)
6 - зарезервировано (переключится в 0)
7 - вращение по датчику с контуром тока (задать ток CurrentRegTuneAmpl)
CurrentRegTuneAmpl - заданный ток для формирования поля когда включен контур тока
@ -46,6 +48,9 @@ NoLoop - отключение контура тока (возможность з
vectorUdq.q - поперечная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
vectorUdq.d - продольная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
___________________________________________
В шаговом режиме можно задать одиночный импульс с шагом 0.0001 с.
Impuls - время импульса тока в секундах (когда значение не равно нулю работает обратный отсчёт и ток = CurrentRegTuneAmplInpuls, когда равно нулю значение тока = CurrentRegTuneAmpl)
@ -54,6 +59,14 @@ CurrentRegTuneAmplInpuls - величина импульса тока в амп
AngleOffset - смещение датчика ротора относительно обмоток статора.
___________________________________________
Шаговый импульсный режим.
ток задаётся импульсами:
в течение времени ImpulsLow ток имеет значение CurrentRegTuneAmpl
в течение времени ImpulsHi ток имеет значение CurrentRegTuneAmplInpuls
время кратно 0.0001 с
___________________________________________
в левом окне блок TestPWM - в этом режиме можно включить ШИМ на любой транзистор.
Для этого нужно включить реле, выбрать Mode = 4.
После этого переменная Num обозначает -- какие из транзисторов включены.