Jump to content
OMRON Forums

aims

Members
  • Posts

    42
  • Joined

  • Last visited

Posts posted by aims

  1. Hi,

     

    I would like to draw a circle on X and Y axis. I am using PMAC2-PC104.

    I study in the manual there is circle1 and cirlce2 command.

     

    I set i13=5;

     

    I came accros this 2 command but I dont have any idea how to draw a 2mm circle.

    X{} Y{} I{} J{}

    X{} Y{} R{}

     

    sqr(X) + sqr(y) = sqr®. I dont what is the value of X and Y that could give me R value 2.

     

    In short, I need X and Y to have circular move that give me 2mm radius of circle

     

    Please help me.

     

    Thank you

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

  3. 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???

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

  5. It has to be something in your C# code, then. Please post relevant code snippets. You could also email technical support with the snippets instead.

     

     

    I have found the reason why my application is lagging. I change

     

    pmacdoc.SelectDevice((int)this.Handle, out dwDevice, out bSuccess);

     

    to

     

    pmacdoc.SelectDevice(0, out dwDevice, out bSuccess);

     

    And it solve the problem. Everthings running good now.

  6. Hi Sir,

     

    I would like to ask for some advice on a c# application. What I encounter is my application run slow response. For example, I click a button that getresponxe(#1J+). after that, the motor is not move immediately, after 1 or 2 sec the motor start to move. This is my problem.

     

    FYI, when I run my c# application while I connecting my pmac with PEWIN32Pro software, my application run smoothly. The minute I click button to jog, the motor run immediately. Application consist of 2 thread: 1 for pos, vel and motor status (thread run all the time in 100 delay every cycle), 2 for handle button event for jog motor increment and abs.

     

    Do you guy have any idea? thank you.

  7. May I know what you mean by saying "restart"??? restart to Pcommserver.exe process or restart the PC???

     

    After the exception error happen, my application become lag and slow. I cant get the motor status but the method getresponcex() is still working but it slow to response a bit.

     

    For this moment, what i notice is when I am using the PEWIN32 PRO to communicate with PMAC turbo and after that, I am run my C# application again, everthings work smoothly.

     

    Any idea?

  8. I using VSE C# to develop a winform application. What i want to do is stop the application to read the motor status, speed and position when communication is lost.

    I simulate it by unplug the com cable. The error is "The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))". How do I clear the COM object.

     

    Please advice what is the right method to detect the com lost and stop my application.

  9. I have set up a PFM with servo drive. For encoder, I would like to use the encoder of the servo motor. I set i7010 = 3 (TURBO CLIPPER), so that i can read the signal of the servo encoder.

     

    The problem is when I am jog the motor, my drive faults. The error is "Invalid Pulse command". I wonder do i need to do a tuning in my PMAC? If i set i7010 = 8, everthing work fine. how do I use the servo encoder as a feedback? Do i miss out something?

  10. Yup...this what i am currently do. P for position and V for velocity But i dont why my UI will pop error on invalid data received on the velocity value after a few second. I am still debuging the UI, perhap it is because of my mistake on the calculation. By the way, could u please provide me the formula to calculate velocity based on the data received by using getresponse(#1V)?? i am sorry tat i am a bit confuse on what is explain in the manual.

     

    Because of the problem, i thinking of using other method then i found out the DPRam method. Unfortunately, it is removed. Thank you

  11. my apologize. I look in the VSE 2010 COM reference is show PCom lib 1.0 so I though is 1.0. In the properties window is show 4.3.3.0.

    So, what would you suggest me on how to read the velocity?

  12. Halo,

     

    Need some advice on turbo clipper. I setup a servo amplifier and motor using delta Tau PFM. My problem is the motor is running non stop after I am enable (#1J/).

    I am refer to the PFM typical setup in the turbo clipper hardware reference manual.

  13. I have use the DPR Real Time on the PcommServer version 1.0. In the manual in DPR Real time section there is 6 method we can use GETCOMMANDEDPOS() ...........................................................................................................................................76

    GETNETACTUALPOSITION() ....................................................................................................................................76

    GETFOLLOWERROR() ..............................................................................................................................................77

    GETVELOCITY().......................................................................................................................................................77

    GETMASTERPOS() ...................................................................................................................................................78

     

    But in the libraryn(vs 2010 express), i can not see the GETVELOCITY() method.

  14. Hi Sir,

     

    I notice inside the PcommServer Manual there is a method GetVelocity() and GetNetActualPosition(). But Inside the library (my version is 1.0), I can see the GetNetActualPosition() but I CAN NOT See GetVelocity(). How do I read the velocity of the motor in Turbo Clippper (i am a bit confuse on the calculation)? what method should I use to read the velocity?

    Could you please explain or give some example on the formula?

×
×
  • Create New...