Продолжительный импульсный режим
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)
|
void PWM_ABC_StopAllClose(void)
|
||||||
{
|
{
|
||||||
EALLOW;
|
EALLOW;
|
||||||
|
|||||||
@ -313,8 +313,6 @@ void sdfmGetResult(uint16_t N)
|
|||||||
uint16_t i = 0;
|
uint16_t i = 0;
|
||||||
int32_t OffsetCount = 0;
|
int32_t OffsetCount = 0;
|
||||||
|
|
||||||
// Gpio4out(1);
|
|
||||||
|
|
||||||
FilterResult[N][loopCounter[N]] = *SdfmReadData[N];
|
FilterResult[N][loopCounter[N]] = *SdfmReadData[N];
|
||||||
sdfmAdc[N] = FilterResult[N][loopCounter[N]] - sdfmOffset[N];
|
sdfmAdc[N] = FilterResult[N][loopCounter[N]] - sdfmOffset[N];
|
||||||
if(N != SDFM_U_DC) {
|
if(N != SDFM_U_DC) {
|
||||||
@ -337,12 +335,6 @@ void sdfmGetResult(uint16_t N)
|
|||||||
SDDFPARM_Reg_arr[N]->bit.AE = 0;
|
SDDFPARM_Reg_arr[N]->bit.AE = 0;
|
||||||
EDIS;
|
EDIS;
|
||||||
sdfmAdcErr[N] = 0;
|
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;
|
static uint16_t diod = 0;
|
||||||
|
|
||||||
// if(SciaRegs.SCIRXST.bit.RXERROR)
|
if(SciaRegs.SCIRXST.bit.RXERROR)
|
||||||
// {
|
{
|
||||||
// EALLOW;
|
EALLOW;
|
||||||
// SciaRegs.SCICTL1.bit.SWRESET = 0;
|
SciaRegs.SCICTL1.bit.SWRESET = 0;
|
||||||
// EDIS;
|
EDIS;
|
||||||
// }
|
}
|
||||||
// else
|
else
|
||||||
// {
|
{
|
||||||
// EALLOW;
|
EALLOW;
|
||||||
// SciaRegs.SCICTL1.bit.SWRESET = 1;
|
SciaRegs.SCICTL1.bit.SWRESET = 1;
|
||||||
// EDIS;
|
EDIS;
|
||||||
// }
|
}
|
||||||
|
|
||||||
if(FMSTRIsEnable())
|
if(FMSTRIsEnable())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -84,6 +84,9 @@ float UdcVolt = 0;
|
|||||||
volatile float VdcFactor = FACTOR_VDC;
|
volatile float VdcFactor = FACTOR_VDC;
|
||||||
volatile uint16_t VoltProcImit = 0;
|
volatile uint16_t VoltProcImit = 0;
|
||||||
uint32_t Impuls = 0;
|
uint32_t Impuls = 0;
|
||||||
|
uint32_t ImpulsHi = 0;
|
||||||
|
uint32_t ImpulsLow = 0;
|
||||||
|
uint32_t ImpulsStep = 0;
|
||||||
int16_t AngleOffset = 0xc000, vectorAngle;
|
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;
|
else CurrLoop.piIq.Ref = CurrentRegTuneAmpl;
|
||||||
break;
|
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:
|
case StayMode:
|
||||||
PWM_ABC_StartOut();
|
PWM_ABC_StartOut();
|
||||||
CurrLoop.piIq.Ref = CurrentRegTuneAmpl;
|
CurrLoop.piIq.Ref = CurrentRegTuneAmpl;
|
||||||
|
|||||||
@ -76,8 +76,9 @@ typedef struct
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
OffMode, //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
OffMode,
|
||||||
StepMode, //
|
StepMode,
|
||||||
|
StepModeImpulses,
|
||||||
StayMode,
|
StayMode,
|
||||||
CurrentRegTune,
|
CurrentRegTune,
|
||||||
TestPWNMode,
|
TestPWNMode,
|
||||||
|
|||||||
@ -31,10 +31,12 @@ Rele.Error - появляется если после включение рел
|
|||||||
Mode - режим работы.
|
Mode - режим работы.
|
||||||
0 - стоим, всё выключено,
|
0 - стоим, всё выключено,
|
||||||
1 - шаговый режим (задать ток CurrentRegTuneAmpl для шагового режима, скорость меняется через Nstep)
|
1 - шаговый режим (задать ток CurrentRegTuneAmpl для шагового режима, скорость меняется через Nstep)
|
||||||
2 - режим поворота на заданный угол (задать ток CurrentRegTuneAmpl для шагового режима, угол поворота через vectorSinCos.angle)
|
2 - шаговый импульсный режим
|
||||||
3 - режим настройки регулятора тока
|
3 - режим поворота на заданный угол (задать ток CurrentRegTuneAmpl для шагового режима, угол поворота через vectorSinCos.angle)
|
||||||
4 - шим по одному транзистору (панель TestPWM, см ниже)
|
4 - режим настройки регулятора тока
|
||||||
6 - вращение по датчику с контуром тока (задать ток CurrentRegTuneAmpl)
|
5 - шим по одному транзистору (панель TestPWM, см ниже)
|
||||||
|
6 - зарезервировано (переключится в 0)
|
||||||
|
7 - вращение по датчику с контуром тока (задать ток CurrentRegTuneAmpl)
|
||||||
|
|
||||||
|
|
||||||
CurrentRegTuneAmpl - заданный ток для формирования поля когда включен контур тока
|
CurrentRegTuneAmpl - заданный ток для формирования поля когда включен контур тока
|
||||||
@ -46,6 +48,9 @@ NoLoop - отключение контура тока (возможность з
|
|||||||
vectorUdq.q - поперечная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
|
vectorUdq.q - поперечная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
|
||||||
|
|
||||||
vectorUdq.d - продольная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
|
vectorUdq.d - продольная составляющая напряжения, при включенном регуляторе тока формируется регулятором, при отключенном можно задавать вручную
|
||||||
|
___________________________________________
|
||||||
|
|
||||||
|
В шаговом режиме можно задать одиночный импульс с шагом 0.0001 с.
|
||||||
|
|
||||||
Impuls - время импульса тока в секундах (когда значение не равно нулю работает обратный отсчёт и ток = CurrentRegTuneAmplInpuls, когда равно нулю значение тока = CurrentRegTuneAmpl)
|
Impuls - время импульса тока в секундах (когда значение не равно нулю работает обратный отсчёт и ток = CurrentRegTuneAmplInpuls, когда равно нулю значение тока = CurrentRegTuneAmpl)
|
||||||
|
|
||||||
@ -54,6 +59,14 @@ CurrentRegTuneAmplInpuls - величина импульса тока в амп
|
|||||||
AngleOffset - смещение датчика ротора относительно обмоток статора.
|
AngleOffset - смещение датчика ротора относительно обмоток статора.
|
||||||
___________________________________________
|
___________________________________________
|
||||||
|
|
||||||
|
Шаговый импульсный режим.
|
||||||
|
|
||||||
|
ток задаётся импульсами:
|
||||||
|
в течение времени ImpulsLow ток имеет значение CurrentRegTuneAmpl
|
||||||
|
в течение времени ImpulsHi ток имеет значение CurrentRegTuneAmplInpuls
|
||||||
|
время кратно 0.0001 с
|
||||||
|
___________________________________________
|
||||||
|
|
||||||
в левом окне блок TestPWM - в этом режиме можно включить ШИМ на любой транзистор.
|
в левом окне блок TestPWM - в этом режиме можно включить ШИМ на любой транзистор.
|
||||||
Для этого нужно включить реле, выбрать Mode = 4.
|
Для этого нужно включить реле, выбрать Mode = 4.
|
||||||
После этого переменная Num обозначает -- какие из транзисторов включены.
|
После этого переменная Num обозначает -- какие из транзисторов включены.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user