Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Power Clipper+Acc8AS commutation setting
#1
Halo,

I have linear air bearing servo motor:
1. Number of commutation cycle = 1
2. Count/N Commutation cycle = 609600
3. 1mm : 100000 counts (incremental encoder)

you may refer to the attachment photo for the commutation setting of the motor.

Now, I have an amplifier card that need Dual DAC analog signal to drive this motor using ACC-8AS.

How to calculate setting of commutation based on the Power Clipper???
I have tried:
motor[1].phasepossf = 2048/609600/256 ===failed
motor[1].phasepossf = 256/609600 ===failed


The below is my setting and you may refer to the attachment file for full setting:
Sys.WpKey=$AAAAAAAA

Clipper[0].PhaseFreq= 9036.000 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].PhaseClockDiv = 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].PhaseClockMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].ServoClockDiv= 3 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[0].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[1].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[2].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[3].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Sys.ServoPeriod = 0.442673749446658 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Sys.PhaseOverServoPeriod=0.25 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200

EncTable[1].type = 1; // Single 32-bit read
EncTable[1].pEnc = Clipper[0].Chan[0].ServoCapt.a; // Primary source, ch 1 Servo Capture
EncTable[1].pEnc1 = Sys.Pushm; // Secondary source, none
EncTable[1].index1 = 0; // left shift, none
EncTable[1].index2 = 0; // right shift, none
EncTable[1].index3 = 0; //
EncTable[1].index4 = 0; //
EncTable[1].ScaleFactor = 1/256
Clipper[0].Chan[0].EncCtrl = 7 //encoder direction


//Hardware Setup
Motor[1].PhaseCtrl = 1
Motor[1].pAdc = 0
Motor[1].pPhaseEnc = Clipper[0].Chan[0].PhaseCapt.a
Motor[1].PhaseEncRightShift = 0
Motor[1].PhaseEncLeftShift = 0
Motor[1].PhasePosSf = 2048/609600/256
Clipper[0].DacClockDiv = 5
Clipper[0].DacStrobe = $FFFF0000
Clipper[0].Chan[0].OutputMode = 1
Motor[1].PhaseFindingTime=15 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].PhaseFindingDac=800
Gate3[0].Chan[0].PackOut = 1
Gate3[0].Chan[0].PackIn = 1

//Motor Setup
Motor[1].pDac = Gate3[0].Chan[0].Dac[0].a
Motor[1].DacShift = 0
Motor[1].PwmSf = 32767
Motor[1].PhaseOffset = 171
Motor[1].IaBias = 0
Motor[1].IbBias = 0
Motor[1].MaxDac = 2000
Motor[1].I2tSet = 0
Motor[1].I2tTrip = 0
Motor[1].ServoCtrl = 1
Motor[1].EncType = 5
Motor[1].FatalFeLimit = 0
Motor[1].WarnFeLimit = 0
Motor[1].MaxPos = 0
Motor[1].MinPos = 0
Motor[1].pEnc = EncTable[1].a
Motor[1].pEnc2 = EncTable[1].a
Motor[1].pLimits = Clipper[0].Chan[0].Status.a
Motor[1].pAmpFault = Clipper[0].Chan[0].Status.a
Motor[1].AmpFaultLevel = 1


Assuming the encoder direction is correct. Why I am fail to phasing and commutate the motor?
Anyone has experience setting up this kind of amplifier???
Anyone hv any idea???PLease help me.
Reply
#2
How did you generate these settings? Gate3 [].Chan [].PackIn/PackOut are not the correct syntax. It's PackInData, and PackOutData.

Motor [].PhasePosSf = 2048 * 0.00001 / (60.96 * 256)

You are using 2 DAC outputs to perform sinewave commutation so your OutputMode setting should be at least  $3.

Also, the MaxDac is somewhat low. Did you calculate that or were you just being conservative? I think you meant to set it to 32767 instead of the PwmSf.

Note that you can test the voltage outputs with a digital multimeter.
Reply
#3
You can test the DAC outputs by deactivating the motor and directly writing to Gate3[0].Chan[0].Dac[0] and Gate3[0].Chan[0].Dac[1]. To be safe disconnect the DAC wires from the drive first. Gate3[0].Chan[0].Dac[0] = 100000000 should output about 5% DAC voltage, or about 1/2v.
Reply
#4
Hi Richard,

I have change PackInData, and PackOutData correctly. (Anyway, it in the power pmac manual page 233).
I use Motor [].PhasePosSf = 2048 * 0.00001 / (60.96 * 256).
I set output mode to 3.

Now, I only notice that i need to do phasing first. My apologize that I read through the manual but still phasing is failed.
I use stepper mode.
Motor[1].PhaseFindingTime=300 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].PhaseFindingDac=500

This is my new setting.
Sys.WpKey=$AAAAAAAA

Clipper[0].PhaseFreq= 9036.000 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].PhaseClockDiv = 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].PhaseClockMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].ServoClockDiv= 3 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[0].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[1].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[2].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Clipper[0].Chan[3].PwmFreqMult= 0 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Sys.ServoPeriod = 0.442673749446658 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200
Sys.PhaseOverServoPeriod=0.25 // Global Clock //15-Dec-15 :1:13 PM - 192.168.0.200

EncTable[1].type = 1; // Single 32-bit read
EncTable[1].pEnc = Clipper[0].Chan[0].ServoCapt.a; // Primary source, ch 1 Servo Capture
EncTable[1].pEnc1 = Sys.Pushm; // Secondary source, none
EncTable[1].index1 = 0; // left shift, none
EncTable[1].index2 = 0; // right shift, none
EncTable[1].index3 = 0; //
EncTable[1].index4 = 0; //
EncTable[1].ScaleFactor = 1/256
Clipper[0].Chan[0].EncCtrl = 7 //encoder direction


//Hardware Setup
Motor[1].PhaseCtrl = 1
Motor[1].pAdc = 0
Motor[1].pPhaseEnc = Clipper[0].Chan[0].PhaseCapt.a
Motor[1].PhaseEncRightShift = 0
Motor[1].PhaseEncLeftShift = 0
Motor[1].PhasePosSf = 204800000 / 15605.76
Clipper[0].DacClockDiv = 5
Clipper[0].DacStrobe = $FFFF0000
Clipper[0].Chan[0].OutputMode = 3
Motor[1].PhaseFindingTime=300 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].PhaseFindingDac=500
Gate3[0].Chan[0].PackOutData = 1
Gate3[0].Chan[0].PackInData = 1

//Motor Setup
Motor[1].pDac = Gate3[0].Chan[0].Dac[0].a
Motor[1].DacShift = 0
Motor[1].PwmSf = 32767
Motor[1].PhaseOffset = 171
Motor[1].IaBias = 0
Motor[1].IbBias = 0
Motor[1].MaxDac = 32767
Motor[1].I2tSet = 0
Motor[1].I2tTrip = 0
Motor[1].ServoCtrl = 1
Motor[1].EncType = 5
Motor[1].FatalFeLimit = 0
Motor[1].WarnFeLimit = 0
Motor[1].MaxPos = 0
Motor[1].MinPos = 0
Motor[1].pEnc = EncTable[1].a
Motor[1].pEnc2 = EncTable[1].a
Motor[1].pLimits = Clipper[0].Chan[0].Status.a
Motor[1].pAmpFault = Clipper[0].Chan[0].Status.a
Motor[1].AmpFaultLevel = 1

Motor[1].pAbsPhasePos=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosFormat=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosSf=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosOffset=0


How do I phase this motor properly???
Reply
#5
hi Steve,

I am sorry that I couldn't get the 0.5 vdv. What is get is 0.05 vdc only.
I do motor[1].servoctrl = 0, I use multimeter to tap the Acc-8as pin 1 and pin 6.
I try to change Gate3[0].Chan[0].Dac[0] = 100000000 to 200000000 and no change on the voltage.
Reply
#6
Hi,

I read in the manual on the below command and i am confuse. How do this setting related to the phasing?

Motor[1].pAbsPhasePos=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosFormat=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosSf=0 // Encoder //15-Dec-15 :1:19 PM - 192.168.0.200
Motor[1].AbsPhasePosOffset=0

thank you.
Reply
#7
Can you read back the value written to Gate3[0].Chan[0].Dac[0]? Make sure Sys.WpKey = $AAAAAAAA. No voltage is an indication something is still not setup properly. As this is a technical support issue, please send an email to support with your current saved configuration pp_save.cfg from the configuration folder.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)