andyf Posted July 2, 2015 Posted July 2, 2015 I have a Parker SM232A 3 phase brushless DC motor with: Instantaneous current: 8.3 A peak Continuous current: 2.8 A peak Direct PWM driven by Power PMAC and 3U042 amplifier 4/8 A rms If I follow the Power PMAC User's Guide for calculating maxdac and i2tset by hand I get the following: maxdac = (8.3/13.01) * (32768 * .866) = 18103 i2tset = (2.8/13.01) * (32768 * .866) = 6107 However when setting this up using IDE motor setup it calculates: maxdac = 20904 i2tset = 7052 It seems the values from motor setup seem to ignore the .866 required for 3-phase calculation. Please advise.
Omron Forums Support Posted July 7, 2015 Posted July 7, 2015 Hi, The System Setup software performs the correct calculations according to our Chief Engineer. Below is the calculation algorithm used in the software: Motor[x].I2tSet Continuous current limit In these calculations assume: Ic = Safety.I2TProtection.ContCurrent Ii = Safety.I2TProtection.InstantaneousCurrent t = Safety.I2TProtection.MaxTimeAllowed MaxADC = AmplifierInfo.MaxADC Switch (Control_Type) Case (PositionCtrl) Case (VelocityCtrl) Motor[x].I2tSet = 0 Break; Case (TorqueCtrl) Motor[x].I2tSet = 32767 * Ic / Ii Break; Case (CommutationCtrl) Motor[x].I2tSet = SQRT( (32768*32768*Ic[RMS]/(ABS(Motor[x].PwmSf)*Ii_forAmplifier[RMS]))^2 - Motor[x].IdCmd^2 ) Break; Case (CurrentLoopCtrl) Motor[x].I2tSet = SQRT( (32768*SQRT(2)*Ic* COS( 360*ABS(Motor[x].PhaseOffset)/2048 - 90 ) / MaxADC)^2 - Motor[x].IdCmd^2 ) Break; Case (DirectMicroSteppingCtrl) Motor[x].I2tSet = 32768*SQRT(2)*Ic* COS( 360*ABS(Motor[x].PhaseOffset)/2048 - 90 ) / MaxADC Break; Motor[x].I2tTrip Integrated current shutdown limit Switch (Control_Type) Case (PositionCtrl) Case (VelocityCtrl) Motor[x].I2tTrip = 0 Break; Case (TorqueCtrl) Case (CommutationCtrl) Case (CurrentLoopCtrl) Motor[x].I2tTrip = ( Motor[x].MaxDac^2 + Motor[x].IdCmd^2 - Motor[x].I2tSet^2 ) * Safety.I2TProtection.MaxTimeAllowed // Note: Based upon calculated values and not PMAC values Break; Case (DirectMicroSteppingCtrl) Motor[x].I2tTrip = ( calcualtedMaxDac^2 - Motor[x].I2tSet^2 ) * Safety.I2TProtection.MaxTimeAllowed // Note: Based upon calculated values and not PMAC values Break; Motor[x].IdCmd Desired magnetization (direct) current Switch (Control_Type) Case (PositionCtrl) Case (VelocityCtrl) Case (TorqueCtrl) Motor[x].IdCmd = 0 Break; Case (CommutationCtrl) If (Motor Type = AC induction) Motor[x].IdCmd = (0.1 * 32768*32768*Ic[RMS])/(ABS(Motor[x].PwmSf)*AmplifierInfo.Ii[RMS]) Else Motor[x].IdCmd = 0 Endif Break; Case (CurrentLoopCtrl) If (Motor Type = AC induction) Motor[x].IdCmd = 0.1 * 32768*SQRT(2)*Ic* COS( 360*ABS(Motor[x].PhaseOffset)/2048 - 90 ) / MaxADC Else Motor[x].IdCmd = 0 Endif Break; Case (DirectMicroSteppingCtrl) Motor[x].IdCmd = 0.5 * 32768*SQRT(2)*Ic* COS( 360*ABS(Motor[x].PhaseOffset)/2048 - 90 ) / MaxADC Motor[x].MaxDac Instantaneous servo output limit In these calculations assume: MaxADC = AmplifierInfo.MaxADC Switch (Control_Type) Case (PositionCtrl) Case (VelocityCtrl) Switch(Output_Signal) Case (DAC) Motor[x].MaxDac = 32767 Break; Case (Filtered_PWM) Motor[x].MaxDac = 16384 Break; Break; Case (TorqueCtrl) Switch(Output_Signal) Case (DAC) Motor[x].MaxDac = 32767 * MIN(MotorInfo.Ii, AmplifierInfo.Ii)/ AmplifierInfo.Ii Break; Case (Filtered_PWM) Motor[x].MaxDac = 16384 * MIN(MotorInfo.Ii, AmplifierInfo.Ii)/ AmplifierInfo.Ii Break; Break; Case (CommutationCtrl) Motor[x].MaxDac = 32768*32768*MIN(MotorInfo.Ii[RMS], AmplifierInfo.Ii[RMS])/(ABS(Motor[x].PwmSf)*AmplifierInfo.Ii[RMS]) Break; Case (CurrentLoopCtrl) Motor[x].MaxDac = 32768*SQRT(2)*MotorInfo.Ii* COS( 360*ABS(Motor[x].PhaseOffset)/2048 - 90 ) / MaxADC Break; Case (DirectMicroSteppingCtrl) Motor[x].MaxDac = Motor_Max_Speed/60000*Elec._Cycles_per_Rev*2048*Sys.ServoPeriod/SlipGain*Sys.PhaseOverServoPeriod Break;
Recommended Posts