 OMRON Forums

# Calculating current limit settings

## 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.

• Replies 1
• Created

#### Popular Days

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
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:
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;

```

##### Share on other sites This topic is now closed to further replies.

×
• Forums

• Events
• #### Browse

×
• Create New...