Jump to content
OMRON Forums

Eric Hotchkiss

Omron
  • Posts

    558
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by Eric Hotchkiss

  1. The Power PMAC User's Manual has sections on its setup and use. You should see 4 sections with 8AS in the name in the table of contents.

    http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Manuals/Power%20PMAC%20Users%20Manual.pdf [FILE REMOVED]

     

    You can also use the ACC-8ES manual available here.

    http://forums.deltatau.com/filedepot/download.php?f=Old%20Website%20Manuals/Controllers/Accessories/ACC-8ES.pdf [FILE REMOVED]

  2. For default variable values you can check the software reference manual. It's currently available from the forum file depot.

    http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Manuals/Power%20PMAC%20Software%20Reference%20Manual.pdf [FILE REMOVED]

     

    In your sample program you suggest to get rid of the application and call both the jog and the PVT motion program , right ? Whyis it better in a background PLC than in motion program ? No issue if there are loops of several seconds ?

    I believe the point of the PLC was just to make sure there was a pause before each jog move or motion program run and check if the timing of consecutive jog moves is the issue. Is there a check for InPos between Jog moves? PMAC doesn't finish a jog move before moving to the next line.

     

    I can see in the dumps that the following error of motors freezed with Inpos=0 is always below 2 cts. Sometimes it happens when ActPos=DesPos=JogPos and most often with ActPos = DesPos != JogPos

    InPos does not go true while the motor is moving, regardless of following error.

     

    From the Software Reference Manual.

    The Motor[x].InPos status bit is set to 1 when all of the conditions for “in position” are satisified: the motor is closed-loop, the desired velocity is zero, the move timer is not active (no move, dwell, or delay being executed, the magnitude of the following error is less than or equal to Motor[x].InPosBand, and all of these conditions have been true for (Motor[x].InPosTime - 1) consecutive servo cycles. It is 0 otherwise. It is bit 11 of 32-bit element Motor[x].Status[0].
  3. I was dragging the following commands from the note.txt to the IDE terminal:

    #4,5,6,13,14j/
    &2Q78=1
    &2b2r
    

     

    This is not best practice. The Jog command is not guaranteed to finish before the &2B2R command is run. If it does not finish, the &2B2R will need to be re-issued. That being said, it worked when I tried it just now.

     

    One interesting thing I found while trying to debug the problem was that when changing the values of jogTa and jogTs on the motors of the CS there was no delay.

    The first image shows the movement when using JogTa = 6000 and JogTs = 2000, you can see that the time between enabling the motor and starting the motion program is approximately 8 seconds.

    On the second test, I changed the JogTa and JogTs of all motors to 0 and the delay was gone.

    Do you have any idea why? As I see it, Ta and Ts are associated with the movement time, do they have any special relation with the motion program being called?

     

    When you are in open loop (before issuing the jog command) encoder position is treated as trajectory position. When you issue a Jog/ command, a trajectory is created to bring that velocity to 0 based on JogTa and JogTs.

     

    Because your JogTa and JogTs are positive, this is very slow. If you set them negative (to indicate a rate instead of time) this move will pass much more quickly.

  4. If you want to use a direct pointer based on numerical addresses, it would look like this.

    volatile unsigned int *MyHomeCapt1;
    MyHomeCapt1 = (unsigned int *)piom + pshm->OffsetGate3[0]/4 + 0x80/4 + 0x74/4;

     

    It would be much easier to use gate pointers like below, however they will use more memory. I would recommend this method if possible.

    volatile GateIOStruct *GateIo[1];
    GateIo[0] = GetGateIOMemPtr(0);
    GateIo[0] -> DataReg[3] = (0xFF << 8);

     

    I am attaching a couple short sections about these pointer types.

    direct pointers.pdf

    gate pointers.pdf

  5. Motor[x].DesVelZero goes true when the trajectory (or desired position) stops moving. Motor[x].InPos should go true some time after once the following error stays below a limit value. If this were the case the suggestions would be:

     

    • Increase Motor[x].InPosBand (following error limit for In Pos)
    • Increase Motor[x].InPosTime (number of consecutive Servo Cycles)
    • Improve tuning.

     

    This could only delay motion is a PLC or motion program was checking the value of Motor[x].InPos. There are no built in checks of this variable that will stop motion or program execution.

     

    However, it sounds like you may be getting a runtime error which is causing the program to abort.

    When failure occurs, what are the values of the following?

    • Coord[x].RunTimeError
    • Coord[x].ErrorStatus

     

    You might try making some space by limiting the values of Sys.MotorsPerRtInt, Sys.MaxMotors or Sys.MaxCoords.

     

    You may need to adjust frequencies to make enough room for RtInt to finish more reliably. Can you post a picture of the tasks tab of your IDE task manager?

  6. Enabling the motors and starting the motion programs are going to be different commands. If the first process is not done before the second is started, then the second will fail.

     

    If commanded from the IDE terminal with no PLCs running, I would expect you to first be issuing a command like this:

    #1,2J/

     

    And then shortly later issuing a command like this:

    &1B1R

     

    However it sounds like you are issuing a single command for both. I thought this was a flag for a PLC, but no PLCs are running. Can you show me the command you are issuing in the terminal?

  7. It is normal to have some delay between putting enabling motors and starting the motion program. Trying to start a motion program will fail if the motors are not ready, so the motors must be enabled first. How much delay should be up to how these two operations were commanded. If a PLC is watching inputs to start the motors and program, it's logic would determine the delay.

     

    How were these motors commanded? If a PLC starts a motion program, is there a check for Motor[1].InPos?

  8. For the first question, are you trying to manually output a voltage or setup a motor? Either way you will have to first set the write protect key and then change the output mode to DAC. The difference would be commanding the output after setup.

    Sys.WpKey=$AAAAAAAA
    Gate3[0].Chan[0].OutputMode=$3

     

    SSI would be the same as the Power Brick LV manual. I would recommend looking at this one. You will have to replace PowerBrick. with Gate3.

    http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Manuals/Hardware%20Reference%20Manual/Power%20Brick%20LV%20ARM%20User%20Manual.pdf [FILE REMOVED]

  9. 1. I think what's missing is a setting for Motor[x].AbsPhasePosOffset. Take a look at "Stepper Phasing Force Test" and the following example on page 184 of the Power Brick LV ARM Manual.

     

    http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Manuals/Hardware%20Reference%20Manual/Power%20Brick%20LV%20ARM%20User%20Manual.pdf [FILE REMOVED]

     

    The power Brick has this material in it's manual because it's an all in one product, in your case you should be able to replace PowerBrick with Gate3.

     

     

    2. Methods that move the motor to phase (stepper or 4 guess) will work with a serial encoder, but an absolute read should be performed instead if possible.

    Also, I am surprised you did not need to set Motor[x].PhaseFound to 1.

     

     

    Different Results With Different CPUs.

    What firmware version was each CPU at? The current IDE expects at least a certain firmware version to run the correct tests at test and set.

  10. 1. I think what's missing is a setting for Motor[x].AbsPhasePosOffset. Take a look at "ABSOLUTE SERIAL ENCODER PHASING WITH GATE3" on page 183 of the Power Brick LV ARM Manual.

     

    http://forums.deltatau.com/filedepot/download.php?f=Power%20PMAC/Manuals/Hardware%20Reference%20Manual/Power%20Brick%20LV%20ARM%20User%20Manual.pdf [FILE REMOVED]

     

    The power Brick has this material in it's manual because it's an all in one product, in your case you should be able to replace PowerBrick with Gate3.

×
×
  • Create New...