Using EMC2 to control an ABB Robot

More
14 Mar 2011 21:18 #7834 by balugas
Hello

I'm trying to use emc2 to control an ABB robot and i need some help to do that.
I started to use puma_560 configuration and changing kinematics for my robot. My problem now is that this robot has a particular language to make all the controls (Rapid) and i have to use it. What i need is to get all the information of controls of the emc2 and then create a program to make the translation to that particular language. How can i get what is been sent to the parallel port? For example writing it on a file?

Thanks

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

More
14 Mar 2011 21:36 #7836 by andypugh
That sounds hard. It seems that you want to take G-code and convert it into some other motion-control language, whereas what EMC2 does is take G-code and convert it into motor movement signals on physical wires.

If the robot can be controlled by a motion-control language, then why use EMC2 at all?

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

More
14 Mar 2011 21:57 #7838 by balugas
This is a school project that i am developing and it was my professor's proposal. What we want to do is Machining 3D using the ABB robot. For that we want to get the controls to the boards and then transform them in to instructions that ABB can understand... I know that this is going to be hard but i have to solve it...

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

More
14 Mar 2011 22:17 #7840 by andypugh
OK, so the role of EMC2 is to convert cartesian (X,Y,Z) to robot elbow, wrist etc positions?

Do you have any documentation on the ABB control protocol? Do you know what form communications take between the control PC and the robot? (ie, is it serial absolute position commands in Rapid, or step-and-direction pulses on individual parallel port pins?

How does the robot connect to the PC at the moment? ie what sort of connector.

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

More
14 Mar 2011 22:31 #7841 by balugas
Yes, thats what i want to do. I have all the information about ABB robot.
The communication between the robot and the PC can be made by serial RS232/RS422 or Ethernet.

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

More
14 Mar 2011 22:49 #7842 by andypugh
Is it definitely ethernet, and not ModBus or similar?

I rather think that EMC2 is the wrong tool for this job. You probably want to borrow the equations used in the kinematics file and write some new software which converts G-code into Rapid, using those equations.

Alternatively you need to bypass all the existing "cleverness" and hook EMC2 directly to the motor drivers. EMC2 can do what you want, but not (easily) the way you want to do it.

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

More
15 Mar 2011 19:47 #7863 by balugas
As I can see in the manuals, the communication between the robot controller and PC is RAP (robot application protocol). RAP provides a set of services that a user can use for controlling and monitoring ABB robots from an external computer...
By the way, how Puma is controlled with EMC2?

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

More
15 Mar 2011 20:12 #7865 by andypugh
balugas wrote:

By the way, how Puma is controlled with EMC2?

The Puma kinematics in EMC2 assumes that EMC2 controls each motor directly, either with step/dir inputs to stepper drivers or analogue voltages to servo amps.

If you look at the sample configs, and look inside the HAL files you will see lines like

net axis.0.motor-pos-cmd => stepgen.0.value
and
net stepgen.0.step => parport.0.pin-01-out

That converts an axis position to a steam of stepper-motor control pulses on parallel port pin.

It would be just about plausible to create your own HAL function using comp
linuxcnc.org/docs/html/hal_comp.html
Which took the several axis.N.motor-pos-cmd signals and assembled them into RAP messages to be sent to the serial port. It might even work.

Try reading this page: linuxcnc.org/docs/html/hal_basic_hal.html

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

More
15 Mar 2011 20:17 #7866 by balugas
Ok. I'm going to study those files and see what i can do...

Thanks.

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

More
21 Mar 2011 17:01 #7978 by Kirk_Wallace
The first thing that comes to mind with using the RAP interface is that serial or Ethernet will not be in real-time with EMC2. The only real-time communications are with PCI or the parallel port. The common FPGA signal generators use EPP to communicate. I would consider routing EMC2's motion signals to the parallel port, to an AVR (Arduino?) which could convert the register data into RAP. For the FPGA's, I believe all of the register data is sent and received every servo period. The receive function reads parallel port bytes into HAL pins starting at register 0 (current joint A, B, C, D, E ... position and status) and sequentially up to the end register. At the end of the servo thread, the send function sends the new motion information out the same way. Modbus would be similar except you need the parallel port for real-time and moving a complete data package in then out gets rid of most of the communications overhead and preserves real-time. You waste a lot of time sending redundant data, but you know your going to get fresh and on-time data every servo period.

If this where not a school assignment, it seems easier to just scrap RAP and have EMC2 control the joints directly.
--
Kirk Wallace
www.wallacecompany.com/machine_shop/
www.wallacecompany.com/E45/index.html
California, USA

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

Time to create page: 0.796 seconds
Powered by Kunena Forum