Jump to content
OMRON Forums

Calculating current limit settings


andyf

Recommended Posts

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.

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

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;			 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...