Jump to content
OMRON Forums

NigelInWindsor

Members
  • Posts

    15
  • Joined

  • Last visited

Posts posted by NigelInWindsor

  1. What is the correct procedure to implement, before calling UNDEFINE and DELETE LOOKAHEAD within and at the end of a motion program.

    At the moment I simply place a DWELL 100 but this is prone to fail as it’s based on time and not based on whether the motion program has truly finished with all the resources.

    open prog 1

    :

    :

    DWELL 100

    cmd “&3 UNDEFINE”

    cmd “&3 delete lookahead”

    close

  2. Unit101; I agree, isnan() should work but it doesn't compile / link. I get Error : implicit declaration of function 'isnan'

     

    The other one that doesn't compile / link is remainder(). I assume I'm meant to use frem() but who knows.

     

    Thanks Steve, myisnan() does compile / link, I'll find out next week on the machine if it actually does what it says on the tin.

     

    I ask again, is there a manual listing the math functions and the headers that need to be included and indeed any pragma or #defines necessary to compile /link these functions.

  3. The current position of an Ethercat drive is a 4 byte (32 bit register $6064:0).

    When a spindle rolls over the maximum value (2^32 - 1) I assume there is a register somewhere that increments so that values greater than 2^32 can be computed.

     

    My problem is how do you reset this register?

     

    I Home zero the Ethercat drive by writing direct to the Ethercat registers

     

    cout12:0

    sdo=ecatsdo(0,5,$6098,0,35,0) // Home current Position

    sdo=ecatsdo(0,5,$6060,0,6,0) // Set Drive in Homing Mode

    sdo=ecatsdo(0,5,$6040,0,31,0) // Start homing

    sdo=ecatsdo(0,5,$6040,0,15,0) //control word back to normal

    sdo=ecatsdo(0,5,$6060,0,8,0) //Back to CycSyncPos Mode

     

    This works fine and sets the $6064:0 to zero however it obviously doesn't clear the PPMAC registers bits 33 and above

     

    Now I could just set Motor[x].HomePos = 0x1,0000,0000 but I'd prefer to actually clear the register

  4. PPMAC EtherLite

    CPU ARM86xxx

     

    The variety with only 2 RJ45 connectors not 3 or 4

     

    I can’t get the Ethernet to work when it’s plugged in to a 100 baud switch

    My 460 and my 465 both work at 100

    The 86xxx does work at 1000 baud

     

    Is it not designed to work at 100 baud?

  5. Thank you gentlemen, yes you have correctly deduced the problem.

    Circular interpolation wont work I'm afraid curt, as quartenions aren't linear.

     

    I agree with Jay, the only sensible approach is to feed i,j,k and rotate about the normal to the trajectory generator and then do an i,j,k and rotate to quaternion conversion in the inverse kinematic model (and a quaternion to ijk r conversion in the forward kinematic model).

     

    Cheers for confirming there's no other way. Would you consider adding a slerp interpolator to the trajectory generator at some time in the future, after all 6DOF Robots rely on quaternions to work.

  6. The time to open a connection using telnet on a brand new PPMAC 465 is precisely 60 seconds.

     

    SSH connections open effectively instantaneously.

     

    I assume this is a Linux issue but I've loaded the latest firmware in any case.

     

    I look forward to a suggested solution.

  7. Do you have ecat[0].enable=1 saved?

     

    What is likely happening is on power up the ethercat configuration is not valid since the robot device isn't present for a minute or two. If a project is not valid a factory default state is set.

     

    Check via the powerpmac's ftp site ftp://192.168.0.200/usrflash/Project/Log for pp_error_hist.log this will verify how the loading failure occurred.

     

    You can so set Ecat[0].enable=0 so there is not a power up fault.

     

    Once your ethercat robot controllers are up you can set Ecat[0].enable=1 in your code. Perhaps you can use an ecatsdo to see if the robot controller is up.

     

     

    You are correct Ecat[0].enable is set to 1. If I set it to 0 it doesn't force the factory reset $$$***.

     

    Can you suggest a way shortly after PPMAC boots to then get the PPMAC to enable the ECAT without issuing the $$$*** or at least can you expand on your ecatsdo suggestion

  8. When the PPMAC boots it checks the hardware configuration and if it has changed since the last power up then it issues $$$***

     

    The problem I have is that my Ethercat devices (2 off Robotic arms) take over 4 minutes to boot up. So the PPMAC doesn't see them and so issues the $$$***

     

    When all the Ethercat devices have booted, I then have to issue a $$$ in order to load the correct last configuration.

     

    Is there any way to disable the $$$*** and only do a $$$ during boot up?

  9. I've uninstalled a previous version of the IDE, even been through the entire registry and deleted anything to do with; PPMAC, DeltaTau, Power PMAC IDE, etc etc.

     

    When I install the latest version I keep getting this error message

     

    Microsoft Visual Studio Shell Isolated Edition

     

    Cannot find one or more components. Please reinstall the application

     

    Does anyone have a solution please.

    Capture.PNG.eb58a94fd19b37e0004d4fda764c42d4.PNG

  10. I'm trying to manually configure the ethercat structures to read the IO ports on the drive.

    I have to do this because ecat config doesn't find them and System Setup doesn't find them either.

     

    ECAT[0].Slave[2].PDO[10].index=$2190

    ECAT[0].Slave[2].PDO[10].subindex=0

    ECAT[0].Slave[2].PDO[10].bitlength=8

     

    ECAT[0].Slave[2].PDO[11].index=$2194

    ECAT[0].Slave[2].PDO[11].subindex=0

    ECAT[0].Slave[2].PDO[11].bitlength=8

     

    //Input Raw data from Copley xenus 2 axis

    ECAT[0].IO[102].Slave=2

    ECAT[0].IO[102].Index=ECAT[0].Slave[2].PDO[10].index

    ECAT[0].IO[102].Subindex=ECAT[0].Slave[2].PDO[10].subindex

    ECAT[0].IO[102].BitLength=ECAT[0].Slave[2].PDO[10].bitlength

    ECAT[0].IO[102].Input=1 //Input

    Ecat[0].Io[102].Type=8

     

    //Output Raw data from Copley xenus 2 axis

    ECAT[0].IO[103].Slave=2

    ECAT[0].IO[103].Index=ECAT[0].Slave[2].PDO[11].index

    ECAT[0].IO[103].Subindex=ECAT[0].Slave[2].PDO[11].subindex

    ECAT[0].IO[103].BitLength=ECAT[0].Slave[2].PDO[11].bitlength

    ECAT[0].IO[103].Input=0 //Output

    Ecat[0].Io[103].Type=8

     

    ECAT[0].IOCount=104

     

     

    when I enable the Ecat[0] I get a Struct Write Error

     

    Does anyone have any suggestions.

×
×
  • Create New...