Output Gcode realtime to serial port (for scara)

More
19 Jun 2011 11:56 #10620 by perlmonkey
Hi,
I have a scara robot with its own controller, uses ac servo motors - it would be a real pain to get a new driver so that I can use step/dir pulses to run it. I'd like to just output the current gcode line from EMC and interpret it at the controller over the serial port. I write code for this robotics company so that's no biggie.
I just need to know if EMC can output the current gcode line to a serial port.

...or if anyone's done anything like this before any advice would be welcome.

ps, I tried step/dir connected to the PLC inputs of the controller, but uh, no. The Controller forces a 50% min overlap of motions and decelerates to 0 between each step.... so this will never work.


Regards,
PM

Please Log in or Create an account to join the conversation.

More
19 Jun 2011 14:16 #10623 by cncbasher
if the servo drves are ok why not use them ? , i presume the older cards are analog etc , a mesa or pico card options are the way to go especialy if more axis are required ,
or i may be missing something .. their are many apps that can drip feed a txt file to a serial port , but you would then need a motion controller as an interpreter

i personaly would and have in the past used emc to run analog servo drives, without any problems . even the newer pwm servo drives can be used also

Please Log in or Create an account to join the conversation.

More
19 Jun 2011 22:36 #10632 by andypugh
perlmonkey wrote:

Hi,
I have a scara robot with its own controller, uses ac servo motors - it would be a real pain to get a new driver so that I can use step/dir pulses to run it. I'd like to just output the current gcode line from EMC and interpret it at the controller over the serial port.


I assume that the robot currently takes joint position commands on the serial port, and does not transform cartesian axis positions into joint positions?

The only reason I can see to use EMC2 in this situation is to take advantage of the kinematics that can do that transformation (and it is a good reason).

I don't think it has been done. However it might not be too difficult.

I would start by writing a test driver in comp that simply outputs a valid byte sequence to the serial port using outb(), if that works then add input pins for joint positions, and extend the comp driver to output a valid byte stream for the robot.

I am sure that it will be harder in practice.

linuxcnc.org/docs/html/hal_comp.html

There is a HAL serial port driver, but it only attempts to write to individual pins. It might be a useful starting point, though.
git.linuxcnc.org/gitweb?p=emc2.git;a=blo...4b9387abd24a7ac6d707

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 01:48 #10635 by perlmonkey
Thanks for the responses guys. I can convert between joint and cartesian, however... After thinking about it a little more, there are many problems which would probably make this an exercise in futility.
1. Though the robot controller has an rtos, the only method to check state on the parallel PLC inputs is a loop, so there would be latency involved resulting in "missed steps".
2. Even if I use the serial port to read the actual GCode I'll still be using the robot's motion controller, so might as well just feed GCOde to the robot manually.
3. If I could get the PLC inputs timing so that I could run off of step/pulse, for a compound joint or cartesian move, say 2 axes at once (x,y), the robot moves x first then moves y. There is no way to combine the moves so that the velocity profiles overlap 100%. The moves are limited to 50% overlap. I even tried creating a task for each axis and controlling each independently based on PLC io, but the compiler won't allow this.
I could accumulate pulses and calculate a start and end position in 3d-space, but EMC would move on to the next move before the motion is complete....

So, I may give up on this for now; well, I'll probably use our native programming language instead of GCode... sadly.


My last option is to replace each AC servo with a stepper motor. The concern there is $$$$. I'd like to hear if anyone's used steppers in a scara robot successfully with EMC before I go and purchase motors and a driver board.

The google search for steppers begins.

PM

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 01:58 - 20 Jun 2011 02:04 #10636 by PCW
Is there any reason you cannot just scrap the controller, keep the drives and AC servo motors and use either Step & Dir or better, analog velocity mode to control the drives? I cant see any advantage to replacing AC servos with (slow hot inaccurate open loop) step motors...
Last edit: 20 Jun 2011 02:04 by PCW. Reason: punctuation

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 03:11 #10637 by perlmonkey
I'd love to keep the motors, but the drivers are integrated into the controller.
I am personally familiar with steppers, but not so familiar with AC servo's, so I don't know if anyone makes a board to drive them with step/pulse. Not sure if AC servo wiring is the same across all motors. I'll google, but anyone know of a supplier? Zaxis is 300w, arm1 is 100w, arm2 & roll axis are 50w.
What is analog velocity mode... is this an option in EMC?

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 06:50 #10639 by cncbasher
analog is + - 10v input signal , this gives direction of rotation ( polarity of signal ) and voltage ( give velocity speed ) it's then usualy up to shaft encoders to output a pulse giving positional information
i'd presume this is how the joints are configured . oh and yes this is a option in EMC , most industrial machines using servos of the older generation use this method ,

give some information on the machine and the AC servo's fitted , i'm sure someone will be able to identify
or post a picture of them

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 09:58 #10642 by andypugh
perlmonkey wrote:

Thanks for the responses guys. I can convert between joint and cartesian, however./quote]
My point was that one of the things that EMC2 is good at is converting cartesian XYZABC into robot joint positions. So you can feed in cartesian G-code and have EMC2 do the hard sums.

2. Even if I use the serial port to read the actual GCode I'll still be using the robot's motion controller, so might as well just feed GCOde to the robot manually.

Does the robot take cartesian G-code and convert internally, or take raw joint positions?

My last option is to replace each AC servo with a stepper motor.

That would be a retrograde step. One of the strengths of EMC2 is that is can do full closed-loop control of any sort of actuator, including AC and DC servos. With a PWM input drive you can even do it direct through the parallel port (but probably not very well)

There are step/dir servo drives out there, but they are not the preferred choice for EMC2, as that leaves the PID loop hidden in hardware, rather than accessible and probe-able inside the EMC2 software.

If you can find a spec for the components of the system we can probably suggest the simplest, cheapest and best solutions. (Which is likely to be three separate things).

As a starting point, this page might give you some ideas as to EMC2s capabilities.
wiki.linuxcnc.org/cgi-bin/emcinfo.pl?EMC2_Supported_Hardware

This video shows an industrial robot running a completely unmodified version of the EMC2 splash-screen.

Please Log in or Create an account to join the conversation.

More
20 Jun 2011 14:36 - 20 Jun 2011 14:37 #10666 by PCW
Well that's unfortunate... Are the motor drives all on the same physical card as the controller?
Last edit: 20 Jun 2011 14:37 by PCW.

Please Log in or Create an account to join the conversation.

Time to create page: 0.196 seconds
Powered by Kunena Forum