Попробуйте обмануть, может в софте ошибка. В Estim.c при вычислении периода синус-косинуса фигурирует произведение NOMINAL_SPEED_RPM*NOPOLESPAIRS без умножения на 2, может пропустили,
Цитата:
|
// Constants are defined in "EstimParameter_Oriental.xls"
EstimParm.qRhoStateVar=0;
EstimParm.qOmegaMr=0;
EstimParm.qDiCounter=0;
EstimParm.qEsdStateVar=0;
EstimParm.qEsqStateVar=0;
EstimParm.qDIlimitLS = D_ILIMIT_LS;
EstimParm.qDIlimitHS = D_ILIMIT_HS;
EstimParm.qDeltaT=NORM_DELTAT;
EstimParm.qKfilterdq=KFILTER_ESDQ;
EstimParm.qInvPol=0x7FFF / NOPOLESPAIRS;
EstimParm.qVelEstimFilterK=KFILTER_VELESTIM;
|
тогда как в ACIM.c умножение на 2 имеется
Цитата:
|
// Number of pole pairs
MotorParm.iPoles = NOPOLESPAIRS;
// Basic loop period (in sec). (PWM interrupt period)
MotorParm.fLoopPeriod = LOOPTIME_TCY * TCY_SEC; //Loop period in cycles * sec/cycle
// Scale mechanical speed of motor (in rev/sec)
MotorParm.fScaleMechRPS = MotorParm.iScaleMechRPM/60.0;
// ============= Open Loop ======================
OpenLoopParm.qKdelta = 32767.0 * 2 * MotorParm.iPoles * MotorParm.fLoopPeriod * MotorParm.fScaleMechRPS;
|
Поставьте такие данные, типа двигатель на 200Гц.
NOMINAL_SPEED = 2840
MAXIMUM_SPEED = 3600
NOPOLEPAIRS = 4
Да и обратил внимание что данных и программе NOPOLE
SPAIRS а не NOPOLEPAIRS как в tuning_params.xlsx