0
$\begingroup$

Rosanswers logo

At work I am trying to integrate a Rinco Ultrasonic Welding Generator with a KUKA industrial robot. I have some experience with integrating a sensor with this robot, so I'd like to use this project to increase my skills with ROS. For now I want to focus on controlling all functionality of the generator from ROS.

CANOpen

The generator supports communications based on RS485 and CANOpen. I have a detailed manuals of both communications options (easily found online) and the .EDS files for the CANOpen communication. For the project I'd like to get more into working with industrial field busses, so using CANOpen has my preference.

My questions

The questions I am currently trying to answer:

  1. Will I be able to use canopen_master for the communication with the power supply. I am not exactly clear which device profile my device falls under. I expect CiA301 but not sure. How can I find out? Is this part of the .EDS file?
  2. For hardware I'd like to use a Raspberry Pi in the controlbox (located near the toolplate) for the EEF. I already have ethernet and power running through the robot arm. Therefor I was looking at either a CANgineBerry or a PICAN board. For the last one I am not sure if it supports CANOpen or SocketCAN. Are they actually different? Does anyone have experience with either of these boards (or another) in combination with the canopen_master?

Thanks for your help.


Originally posted by RikTonnaer on ROS Answers with karma: 36 on 2018-07-12

Post score: 0


Original comments

Comment by gvdhoorn on 2018-07-20:
Just a comment: rs485 is also often considered a fieldbus. If you want to work message oriented (instead of dictionary based), I believe rs485 would make sense.

Comment by gvdhoorn on 2018-07-20:
As to the canopen profile: does the manual not state compliance with some profile?

Comment by RikTonnaer on 2018-07-22:
Message oriented would be my preference. However I expect to need to control the power supply in real-time in the future. The manual states that when using RS485 for this device gives a 5 ms delay.

I can send you the docs directly.

Comment by RikTonnaer on 2018-07-22:
On CANopen device profile the docs say: Object 0x1000 Device Type This object indicates the device type. As there is no device profile for ultrasonic generators, this object is set to 0 (no standard device).

Comment by gvdhoorn on 2018-07-23:
Pedantic, but:

However I expect to need to control the power supply in real-time in the future

As long as the delay is constant or has an upper-bound, it would still be real-time. But I understand you want minimum latency?

Comment by RikTonnaer on 2018-07-24:
For the first iteration of the system (spot welding and multiple spot welding in sequence) I see no strict requirements on latency.

The second iteration would involve contiuously welding in which the welding parameters need to be controlled. However I do not know (yet) what latency is acceptable.

Comment by RikTonnaer on 2018-07-24:
Do you have any pointers to RS485 based equipement drivers in ROS that I could use as template/inspiration?

Comment by gvdhoorn on 2018-07-24:
re: example: no, not directly. RS485 is basically a serial port, so unless you're doing something special (ie: multidrop) can be used as one. It also depends on a bit on what hw you're using in that case (ie: there are inexpensive USB<->RS485 converters, but also dedicated expansion boards).

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I am not exactly clear which device profile my device falls under. I expect CiA301 but not sure.

Every CANopen device must support CiA 301, it is the base for all CANopen communication.

How can I find out? Is this part of the .EDS file?

Object 0x1000 contains the device type. The actual value might or might not be listed in the EDS file.

Will I be able to use canopen_master for the communication with the power supply.

Should work. You can start with http://wiki.ros.org/canopen_chain_node, it will give acces to all objects of the EDS/DCF. Mostly meant for testing.

It should be subclassed to work with spefific devices, like canopen_motor_node for CiA 402 drives. As an alternative you can write your own interface, even without ROS

Therefor I was looking at either a CANgineBerry or a PICAN board. For the last one I am not sure if it supports CANOpen or SocketCAN.

SocketCAN is a kernel driver interface for CAN devices. (like eth0). CANopen is a protocol spefification. (like TCP/IP)

In addition ros_canopen has a plugin-system for using non-SocketCAN devices as well.

The website of the latter states "SocketCAN driver, appears as can0 to application" However, I was not able to find the support status of the CANgineBerry.

Does anyone have experience with either of these boards (or another) in combination with the canopen_master?

I think I have tested it with a PEAK USB dongle on Raspberry PI. If SocketCAN works, ros_canopen should work as well.


Originally posted by Mathias Lüdtke with karma: 1596 on 2018-07-24

This answer was ACCEPTED on the original site

Post score: 4

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.