RobotStudio event

GUIDE: ABB Internal EtherNet/IP Adapter configuration with Beckhoff EL6652 Scanner

Options
Jaycephus
Jaycephus ✭✭
edited December 2018 in RobotStudio
I recently documented this with an ABB IRC5 RW 6.08, and Beckhoff EL6652 EIP Master (Scanner)

ABB Robot Configuration

Ethernet IP Setting

Configuration: Communication: IP Setting:
Right-click to create new, choose a DIFFERENT SUBNET than the other settings for this. 
It should not go on the "Private Network" subnet. "Private Network" is the front-panel Service port network, also referred to as "LAN," not to be confused with the ports labeled LAN1 through LAN4.
The port labeled LAN3 (connector X5) is chosen by default as a segregated network, but not configured by default. 
If wanting to use this as intended, select LAN3 as the interface, give it a unique IP and subnet, such as that shown in the image below. Give it a unique Label.



I/O System Industrial Network Config

Configuration: I/O System: Industrial Network:
The "EtherNetIP" Industrial Network is configured by default, and a network of this name MUST exist for use by the pre-configured EIP Internal Adapter.
It cannot be deleted. BUT it can be reconfigured. It is configured to use the Private Network by default for some reason.
In this case, change the Connection field from "Private Network" to whatever the new LAN3 IP Setting was named in the step above, such as "EIP_LAN3_Port."

EtherNET/IP Adapter (slave)

Configuration: I/O System: EtherNet/IP Internal Device:
The pre-configured internal EIP device is an Adapter (slave) and is suitable for use with an external Master (Scanner).
The only requirement here is to edit the size of the Input and Output Assemblies to match the requirements.
*Input and Output size to be edited to match actual requirements. 8 bytes each by default.



EtherNET/IP Adapter Configuration

From the EDS file:

Vendor Code: 75
Vendor Name: "ABB Robotics"
Product Type: 43 (generic device)
Product Code: 1
Product Name: "ABB EtherNet/IP Adapter Device"
Connection Input Size (bytes): 8 default, final TBD
Connection Output Size (bytes): 8 default, final TBD
Input Assembly: 100
Output Assembly: 112
Configuration Assembly: 128 (turns out manual is wrong! It's not '0')


Note Regarding Configuration Assembly:

The ABB manual states:


This is incorrect with respect to the Configuration Assembly.

The ABB EDS file referred to in the ABB manual defines two Assemblies (Input & Output), and has the following line under "Connection1":

"20 04 24 80 2C 70 2C 64";    $ exclusive output

The fourth byte, '80,' is 128 decimal, and is the value expected for the Configuration Assembly, per this Beckhoff documentation:



IO Configuration Example

In the screenshot below, two Group input and output variables have been defined to match the 8 bytes for each of the Input and Output configs.
The Device Mapping of the first 'double word' is "0-31," using the first 32 bits of the defined 8-byte data block being transferred. 
Digital Inputs could have been configured as well. In that case, it might have been 8, each configured as 0 through 7, respectively.
Then the subsequent double word number (Group Input) would need to be mapped as "8-39."
Be aware that the PLC side would need to match the same arrangement. 
It is not necessary to map out all of the memory on the ABB side. The configured memory block will be transferred regardless.
The vars mapped on the ABB side merely need to match what is used on the PLC side, but the configured EIP memory blocks need to match on both sides.



Beckhoff PLC Configuration

Beckhoff ECat EtherNetIP Master-Slave (el6652en).pdf

For scanning from a fresh PLC to a buscoupler, make sure that "TwinCAT Ethernet Protocol" appears in the list of drivers and protocols under the port that will connect to the buscoupler.
If not, it can be installed from the TwinCAT directory with TcRteInstall.exe:



In a new project, in Config mode, do a Scan to find the EL6652 device.
In the case of a buscoupler, it may automatically ask to scan for 'boxes.' Or the terminal may need to be manually added.

Refer to the Beckhoff manual Beckhoff ECat EtherNetIP Master-Slave (el6652en).pdf  for a detailed process starting from scratch in setting up TwinCAT 2 or 3.


With the EL6652 listed as one of the terminals on the PLC or buscoupler, right-click on I/O: Devices, and add the EtherNet/IP Scanner (EL6652).
(This was subsequently named "EL6652 Device" in the screenshot below.)



Select the EtherNet/IP Scanner (EL6652) just added, and select the Adapter tab.
Click search, and the EL6652 terminal should be found. Select it and click OK on the pop-up selector.
The IP Address should be filled out with a default IP number, and the MAC Address will remain empty on this screen.
This establishes a link between the terminal and the device. It may be done automatically on a system with only one EL6652 terminal.



Switch to the Settings tab, and fill in the IP Address and Network MaskGateway should be left as 0.0.0.0 if this is a direct connection.
(This becomes the defined IP Number and Mask of the Master. No other Master IP Number needs to be configured or changed.)



Right-click on the EL6652 Device and add a new item: Generic EtherNet/IP Slave.
(This was subsequently named "ABB Adapter" in the screenshot below.)



Click on the Adapter and select the Settings tab. Set the IP Address to match the EtherNet/IP adapter (slave) device to be connected.
(It should be on the same subnet as the Master IP Number configured earlier.)



Right-click on the Adapter and select Append IO Connection: Default.



The IO Connection will be added with an empty Input and Output folder.
(This was subsequently named "Conn1" in the screenshot below.)
Click on the IO Connection object and click the Settings tab:
Set the Configuration Instance number and data size, Input Assembly Instance number and data size, and the Output Assembly Instance number and data size:
The Cycle Time Multiplier is essentially the RPI in milliseconds. (The sync task's base cycle rate multiplied by this number. The Base rate is normally always 1ms.)
Be aware that Fanuc has a minimum allowed RPI of 8ms, and ABB is 0.2ms. This is a Master-side setting that just needs to be within the allowed range of the slave.


* See previous note above Regarding Configuration Assembly:


The data size of the Connection will be determined by the IO added under the Connection object.
Right-click on the Input or Output folder and add variables of the desired names and sizes.
These could be bits, bytes, words, dwords, etc. But Fanuc may only be able to handle up to word sizes.
ABB can handle data of arbitrary sizes, such as a 5-bit number, or a 32-bit number. (have not found the upper limit yet. 64-bit?)
These are handled as individual bits, or else unsigned integers.
The only caveat is matching byte margins, or mapping properly between devices. 
If wanting to define 6 bits for digital I/O, it is best to define a full 8 contiguous, I think.
The total size of the I/O defined determines the data size that the slave device needs to be configured as.
In the screenshot below, the two Input and Output DWords match the 8 Input and Output bytes of the default ABB settings.

- Jay

Comments

  • labu
    labu ✭✭
    Options
    Great Advice and guideline.


  • EdwinRosario
    Options
    Hi,
    First of all, I would like to say thank you for your contribution. This information will help me in my project.
    I am working with a ABB IRC5 RW 5.3  and a Beckhoff PLC CX5140. The IRC5 has a Ethernet Fieldbus Adapter Salve DSQC 669 and the PLC has a Beckhoff EL6652 Ethernet Master Terminal. I would like to communicate both devices and send and shared datas through the bus. 
    I have many doubts  about the RAPID code. Could you please give me some example about the RAPID code to send a receive data through the Ethernet bus? Is there a Function or a Instruction in RAPID language  to manage the datas?  I need to use Sockets (SocketSend , SocketReceive)?  Do you know  a Manual or some Documentation where can I find information about this?

    I would be very grateful if you could give some suggestions.
    Best Regards,
    Edwin
  • Jaycephus
    Options
    Hi,
    First of all, I would like to say thank you for your contribution. This information will help me in my project.
    I am working with a ABB IRC5 RW 5.3  and a Beckhoff PLC CX5140. The IRC5 has a Ethernet Fieldbus Adapter Salve DSQC 669 and the PLC has a Beckhoff EL6652 Ethernet Master Terminal. I would like to communicate both devices and send and shared datas through the bus. 
    I have many doubts  about the RAPID code. Could you please give me some example about the RAPID code to send a receive data through the Ethernet bus? Is there a Function or a Instruction in RAPID language  to manage the datas?  I need to use Sockets (SocketSend , SocketReceive)?  Do you know  a Manual or some Documentation where can I find information about this?

    I would be very grateful if you could give some suggestions.
    Best Regards,
    Edwin
    This may be too late of a reply, but just for future readers;

    The basic way to do EtherNet/IP comms on a robot-to-PLC connection would be to set up a handshaking and data transfer structure used on both sides. I often like to have as much high-level logic in the PLC, and the robot is just performing discrete tasks, like 1) Home, 2) Pick(location), 3) Place(location), or a similar process breakdown, depending on the application. The project I was doing for the above setup was an induction-welding process, and I still managed to break down the comms like this, though the process was more complex with recipes for the settings of a given process run, and unique weld paths.

    So in that case, you would define Digital I/O and if needing numbers, Group I/O, with numbers up to 32-bits. One downside is that the numbers are unsigned integers, but there are techniques for using decimal values and for using negative numbers. Even character-encoding for USINTs from a barcode reader could be handled, but not natively. A number of 8-bit Group Inputs could be created to receive the data code from the EtherNet/IP-capable Barcode reader, and then converted from ASCII encoding to a pure number or string. 

    Once you have Digital I/O or Group I/O, they are just variables that you can use in RAPID code like any other I/O. 
    - Jay