Продолжительный импульсный режим
This commit is contained in:
parent
0c392b202f
commit
3c857bc876
Binary file not shown.
@ -31,6 +31,7 @@ volatile uint16_t TimerBase = PERIOD_TIMER_BASE;
|
||||
|
||||
|
||||
|
||||
|
||||
void PWM_ABC_StopAllClose(void)
|
||||
{
|
||||
EALLOW;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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())
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 обозначает -- какие из транзисторов включены.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user