I have installed a ethernet/ip gateway from Real Time Automation 460EC-NNA1-D. https://www.rtautomation.com/product/460ec/
I have it, my computer and a cognex insight 2800 camera (this camera is not able to use the UR-Cap from cognex). I am able to ping each of the devices from my laptop so I know they are all communicating on the same network.
In the Ethernet scanner configuration I am able to change the delay between connect attempts (1000-60000ms) that is it.
For the EtherNet/IP adapter I am able to assign
Device label: robot
IP Address: 192.168.1.22 (this is the IP of the robot)
TCP Mode: Leave Open (can be leave open or close)
Configuration Instance: “Enter the Configuration Instance that matches the I/O adapter (if used). Many devices use 1 as a place holder when configuration isn’t needed.”
Input Instance (EIP adapter to 460EC)
Output Instance (460EC to EIP adapter)
The UR robot doesn’t recognize that there is an ethernet IP scanner hooked up to the system it is on. Any help would be beneficial. I have read through a number of forum posts and nothing seems to be helping me at my current expertise level.
Thank you.
I’m just going off what a fellow engineer setup before me, but we use a little PLC as our EIP scanner. Looking at your RTA device there, I believe it should work too, but the mapping seems a little off. For example, what you have is 3 32-bit floats mapped. The UR has 480 bytes in its Input, and 224 bytes in its output.
I have ours set for:
Input Instance: 100, Data Type: Integer 8-Bit Unsigned, Data Elements: 480
Output Instance: 112, Data Type: Integer 8-Bit Unsigned, Data Elements 224
Try that and see if it helps
Thank you. I will try that when I get in tomorrow. I had the data types as 32bit float because that is what the cognex camera had the numbers i am sending over labeled as.
Do you know where the instance numbers came from?
Thank you again
That allowed the robot to connect to the gateway. Thank you. Now to figure out the magic numbers for the camera.
The assembly instance data is either A) pulled in from the manufacturer supplied EDS file, or B) manually entered using the documentation.
A quick google of “cognex insight 2800 assembly instance” got me this link: https://www.cognex.com/support/downloads/ns/1/11/91/Integration%20with%20RSLogix%20v1.pdf
This gives me this information:
Telling me the Input instance is 13 and the output instance is 22 and the sizes, if using the AB Studio 5000 is 496 bytes, and goes on to list what each bit/byte is responsible for. You’re using the RTA module, so you may have to tweak the data size. But I would set the Data type as an Int 8-bit again, and try either the 496 or the 500 for the number of elements.
As an aside, I notice that RTA module is ranging from 800-1000 bucks. If your goal here is just to interface the camera to the robot, you can get really cheap PLCs that act as a simple ethernetIP scanner. The one we use from automation direct (https://www.automationdirect.com/adc/shopping/catalog/programmable_controllers/productivity1000_(stackable_micro)/cpus/p1-540) is listed at $228. You can get similarly cheap PLCs from Panasonic as well. No I/O necessary, but it makes mapping this signals very easy, and allows a bit more data manipulation than you might be getting from the RTA. Just a thought.
I had originally looked at those PLC’s but Automation Direct and any of the other EIP scanner PLC’s have been out of stock for quite a while.
What is the command on the UR that you are using? Is it the read_input_integer_register(some register 0 though 23)?
This is what I am trying now that both the camera and the robot are connecting to the gateway.
Thank you for all the help you have provided so far.
Yeah those Automation Direct ones are getting harder to get, that’s for sure. For passing data, yes I just use the appropriate registers. If you’re trying to remotely trigger the camera, that would be using one of the GB boolean registers. If you’re trying to read back the data, you’ll have to see what type of data it is. It’s likely a 32-bit value, based on your first post. In which case yes, I map that to a general purpose integer register. Then the “read_input_integer_register(n)” will give you back that value.
When mapping those registers, we go byte by byte. The UR’s EDS file at least breaks each of its 32bit registers into 4 8-bit registers. So you may have to do something similar for your RTA. Where you chop up the data from the camera into bytes and map them 1 to 1. Not sure what that looks like from the Camera/RTA’s perspective.
Thank you. I will have to do the same thing. Thank you.
I am not sure what i’m doing wrong. I am not able to pull any data from any of the bits. I even tried setting my camera to simply send the number 90 over and had both the camera and the robot’s set to the same data types. I tried sending it to to O2T[0] to O2T[224] and used var_1:=read_input_integer_register(0) through var_19:=read_input_integer_register(19) while mapping the 90 to:
O2T[0]…O2T[19]
then
O2T[20]…O2T[39]
Ran through all 224 bytes and only ever got 0’s
Can you verify the data is being received into the RTA module correctly? I’m not sure what you mean by mapping that value (90) across what looks like 40 registers. If you want to write an integer to the robot, you need to set everything up to send bytes (as mentioned before) as the data type, then send it to bytes 32, 33, 34, and 35 (if your RTA starts indexing at 0) or 33, 34, 35, 36 if your RTA starts at 1 like my PLC:
The headers are cutoff, but the farthest right column is the byte offset. You can see each DINT Input Register starts 4 bytes after the previous one (because a DINT is 4 bytes.
So for example, if the value in my camera was 90, stored in say camera[1] camera[2] camera[3] and camera[4], then my mapping needs to be: camera[1] → Robot[33], camera[2] → robot[34], camera[3] → robot[35], and camera[4] → robot[36]. Again, that’s assuming you’ve set it up to be in bytes, and your RTA indexes at 1. You may need to adjust the indices if it starts at 0.
Full UR ethernetIP model here: https://s3-eu-west-1.amazonaws.com/ur-support-site/18712/eip-iomessage.pdf
as for the mapping the value of 90 I chose a number that falls within the limits of an 8bit number and in cognex I can send data via the spreadsheets and instead of using data acquired from the image I just entered the number 90 into a cell and then pointed at the RTA to pull from that cell. My next step is to try and write to the gateway with a write_output_integer_register(0,147). I picked the number 147 because it was not displayed at all currently from the robot to the gateway.
I am not able to read anything from read_input_integer_register(33) or 34 or 35 or 36
testing_Gateway.urp (1.1 KB)
I have confirmed I am not reading any of the information being sent from the gateway. Using the URcap from this post
I am able to see that I am not recieving anything but 0’s.
I see:
Out_Int0 as 157 Shows up in T2O[288] 157
Out_Float4 as 123456 Shows up in 401,402,403(seems to match the hexadecimal)
So it appears I am able to write to the gateway from the robot but still can’t write to it.
Problem solved. Turns out due to my ignorance I didn’t realize I needed to map data into every single data point I was using not the just the specific ones.
By unchecking this it filled all the data points with zeros and then the data set was considered “valid” and the unit was able to go from Connected and idle to connected and running.
Glad to see you got it figured out! Those RTA modules and mappings can get very confusing. I usually end up doing what you did, and just poking around at stuff until it works
Thank you for all your help. I will be typing up a how on how I get this setup and posting on this thread so if anyone else runs into this issue there will be more clear on how I set it up. Thank you.
If you are able to share a blank version of your program for the Productivity1000 I would appreciate it. If this is protected by your companies IP policies I completely understand.
Thank you.
https://www.universal-robots.com/articles/ur/interface-communication/ethernet-ip-guide/
I mean a blank program for my Automation Direct is pretty much just the EDS file for the robot, which you can find at the bottom of the page here. It pulls in all the correct data. Then I just make a UDT and give it 2 arrays of ints. One for signals FROM the robot, and another TO the robot.
Beyond that, it’s just using Copy Data instructions to copy the bytes from the UR to the device, and from the device to the UR. Here’s an example of using it to copy the registers which correspond to the Speed Slider fraction to the first Float register of the UR. So FROM the speed slider registers, TO the float register.