So I’ve got an application that uses 2 robots.
Between the two robots, there is a physcial common area upon which they may enter to collect/place parts.
I want to have a variable that would signify whether either one of the robots is within this area.
I.E Area Clear = 1 OR 0 (Needs to be ‘toggled’ by either robot)
What do I need to do to have a common variable between the two robots?
Can MODBUS be used to switch a variable on another robot? How would I address this?
Yep you got it, Modbus would be a great way to communicate between the two robots. You will have to do some setup in the network and Fieldbus tabs in each robot. One robot would write to the register and the other would just read. If you need to communicate back, you create another register and have the robot write back to the first. This may take some trial and error but hope that helps and best of luck!
Thanks for the reply.
So I’ve already successfully used MODBUS to communicate with a remote I/O unit on the same application, which has proved successful.
My initial thought was to use a reundant output address on said I/O unit [server] as a common read/write address for the 2 robot [2x Client]. I’ve tried this, and it doesn’t work as expected; If robot 1 writes to the address , robot 2 is able to read it , then write a different value . However, when robot 1 comes to write to the same address again, it is not ‘seen’ by robot 2. I feel like my issue is with trying to use both robots as clients, but I’m not seeing how else to do this?
My understanding of your solution would be to have the robots act as both client and server at the same time. What would the addressing of the server registers look like for this?
Do you know of any documentation I could take a look at regarding this? I’ve been endlessly searching the interwebs and not yet came across something of any value.
Don’t use the remote I/O unit.
Connect each robot to the other.
Set up a new device on Robot 1 with Robot 2’s IP address and visa versa (you can add multiple devices In the installation screen)
Assign the Register number you want to monitor.
Then you can see directly the values of a e.g. a general purpose register on the opposite robot.
If you wanted to you could even read the Joint value of (lets say Base) to see if the opposing robot is clear of the Zone
see attached Modbus server data list.
ModBus server data.pdf (451.5 KB)
Thanks for the reply
Large learning curve over the past 24 hours but I’ve achieved exactly what you have suggested.
Thanks for the addtional idea of using the base value to validate the area; smart programming!
I’ve attached a well written guide I found that defines how to acheive your suggestion (CB3 series, but still relevant), just in case somebody else comes across the same learning curve!
Guide.pdf (1.2 MB)
Also handy to add 127.0.0.1 to the modbus device list, as this is the internal server and allows for the proving out of the connection much easier than writing a test program!
excellent guide well written!
from small steps to large strides.