diff --git a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp index da7b567..b22b64e 100644 Binary files a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp and b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp differ diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.c b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.c index cac67a1..2d84520 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.c +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/pwm_init.c @@ -31,6 +31,7 @@ volatile uint16_t TimerBase = PERIOD_TIMER_BASE; + void PWM_ABC_StopAllClose(void) { EALLOW; diff --git a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c index c039016..5547be5 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c +++ b/Projects/epwm_test_biss_c_cpu2/src/Peripherals/sdfm.c @@ -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); } diff --git a/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c b/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c index 8b56985..5902072 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c +++ b/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c @@ -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()) { diff --git a/Projects/epwm_test_biss_c_cpu2/src/vector.c b/Projects/epwm_test_biss_c_cpu2/src/vector.c index a583936..fc8036e 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/vector.c +++ b/Projects/epwm_test_biss_c_cpu2/src/vector.c @@ -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; diff --git a/Projects/epwm_test_biss_c_cpu2/src/vector.h b/Projects/epwm_test_biss_c_cpu2/src/vector.h index d679006..ce39704 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/vector.h +++ b/Projects/epwm_test_biss_c_cpu2/src/vector.h @@ -76,8 +76,9 @@ typedef struct typedef enum { - OffMode, //����� ���������� - StepMode, // + OffMode, + StepMode, + StepModeImpulses, StayMode, CurrentRegTune, TestPWNMode, diff --git a/Projects/epwm_test_biss_c_cpu2/Описание проекта freemaster.txt b/Projects/epwm_test_biss_c_cpu2/Описание проекта freemaster.txt index cb1e17a..587f4d1 100644 --- a/Projects/epwm_test_biss_c_cpu2/Описание проекта freemaster.txt +++ b/Projects/epwm_test_biss_c_cpu2/Описание проекта freemaster.txt @@ -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 обозначает -- какие из транзисторов включены.