aims Posted December 17, 2015 Share Posted December 17, 2015 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. Link to comment Share on other sites More sharing options...
Richard Naddaf Posted December 17, 2015 Share Posted December 17, 2015 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. Link to comment Share on other sites More sharing options...
steve.milici Posted December 17, 2015 Share Posted December 17, 2015 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. Link to comment Share on other sites More sharing options...
aims Posted December 18, 2015 Author Share Posted December 18, 2015 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??? Link to comment Share on other sites More sharing options...
aims Posted December 18, 2015 Author Share Posted December 18, 2015 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. Link to comment Share on other sites More sharing options...
aims Posted December 18, 2015 Author Share Posted December 18, 2015 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. Link to comment Share on other sites More sharing options...
steve.milici Posted December 18, 2015 Share Posted December 18, 2015 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. Link to comment Share on other sites More sharing options...
Recommended Posts