I use direct PWM to control the torque motor, and the step-by-step method to find the phase. Every time the phase search is unsuccessful, no matter if the phase finding current or time is increased, what might be the reason?
//ACC-24E2+51E
//======================================== Motor1=====================================//
Motor[1].AdcMask = $FFF00000
Motor[1].AmpFaultLevel = 1
Motor[1].PhaseCtrl = 4
Motor[1].ServoCtrl=1
Motor[1].Ctrl=Sys.ServoCtrl
GLOBAL DcBusInput = 340;
GLOBAL Mtr1DCVoltage = 110;
Motor[1].PwmSf = 0.95 * 16384 * Mtr1DCVoltage / DcBusInput
Gate1[4].Chan[0].EncCtrl =7 //24E2
Gate1[4].Chan[0].OutputMode=0
Motor[1].PhaseOffset = 683
/*************************Motor1 I2T************************/
GLOBAL Ch1MaxAdc = 30;
GLOBAL Ch1RmsPeakCur = 20;
GLOBAL Ch1RmsContCur = 10;
GLOBAL Ch1TimeAtPeak = 0.5;
Motor[1].MaxDac = Ch1RmsPeakCur * 40132.44 / Ch1MaxAdc
Motor[1].I2TSet = Ch1RmsContCur * 40132.44 / Ch1MaxAdc
Motor[1].I2tTrip = (POW(Motor[1].MaxDac,2) - POW(Motor[1].I2TSet,2)) * Ch1TimeAtPeak
/*************************Motor1 Current Loop************************/
Motor[1].IiGain = 0.2
Motor[1].IpfGain = 5.5
Motor[1].IpbGain = 0
Motor[1].IaBias = 240
Motor[1].IbBias = -935
///System /opt/ppmac/setup/calcadcoffset 1
/*************************Motor1 Phasing************************/
Motor[1].PhasePosSf = 2048/(256*4*55040/44) //2048 * / (256 * 4* liner per commutation cycle)
Motor[1].pPhaseEnc = Gate1[12].Chan[0].PhaseCapt.a
Motor[1].PhaseFindingDac = Motor[1].I2tSet*0.5
Motor[1].PhaseFindingTime = 1000*Sys.ServoPeriod
Motor[1].AbsPhasePosOffset = 2048/5
/*************************Motor1 setup************************/
Motor[1].pEnc=EncTable[6].a
Motor[1].pEnc2=EncTable[6].a
Motor[1].pLimits=0 //Gate1[4].Chan[0].Status.a
Motor[1].LimitBits=25
Motor[1].pAmpFault=0 //Gate1[4].Chan[0].Status.a
Motor[1].AmpFaultBit=23
Motor[1].pDac=Gate1[4].Chan[0].Pwm[0].a
Motor[1].pAdc=Gate1[4].Chan[0].Adc[0].a
Motor[1].pAmpEnable=Gate1[4].Chan[0].Ctrl.a
Motor[1].pEncStatus=Gate1[12].Chan[0].Status.a
Motor[1].pCaptFlag=Gate1[12].Chan[0].Status.a
Motor[1].pCaptPos=Gate1[12].Chan[0].HomeCapt.a
Motor[1].MinPos=0
Motor[1].MaxPos=0
Motor[1].InPosBand=1;
/*************************Motor1 PID************************/
Motor[1].Servo.Kp=4
Motor[1].Servo.Kvfb=40
Motor[1].Servo.Kvff=40
Motor[1].Servo.Ki=0
/*************************ACC-51E************************/
Gate1[12].Chan[0].CaptCtrl=1
Gate1[12].Chan[0].EncCtrl=3
EncTable[6].type=4
EncTable[6].pEnc=Gate1[12].Chan[0].Status.a
EncTable[6].pEnc1=Gate1[12].Chan[0].Adc[0].a
EncTable[6].index5=0
EncTable[6].ScaleFactor=1/32 //1/1024