NigelInWindsor
-
Posts
15 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Downloads
Posts posted by NigelInWindsor
-
-
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.
-
What is the correct way to check for nan in a real time c routine.
Is there a list of math functions for real time c routines.
-
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
-
I can only get the 86xxx to work at 1000 baud
When connected via a switch that is limited to 100 baud it fails to ping
-
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?
-
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.
-
The input to the reverse kinematic model is an X Y Z coordinate and a quaternion.
Is there anyway to force the trajectory generator to use Slerp interpolation on the quaternion in-order to avoid the non-linarites inherent in quaternions.
-
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.
-
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
-
How do I run the forward kinematic routine to get the current tool tip X Y Z Quaternion without running a program?
Cheers
-
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?
-
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.
-
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.
-
I'd like to get my existing C++ application that has been communicating with a TURBO PCI to alternatively communicate with a PPMAC.
Does anyone have a C++ library to link in to allow Programmatic communication to a PPMAC.
Programatically call undefine
in Power PMAC
Posted
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