DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.
arnoldgauge

I can’t say I’ve seen that behavior as we have done similar things in the past to have multiple robots running together. 

Do you have a thread on robot 1 that is setting the value back to 0 unless it’s ready to set it to 1. Also, how would the server/master know when all slaves have completed their tasks?  

What I’ve done in the past is each slave had a dedicated register or coil on the master which was an input to the master. Then once all slaves were complete the master would set an output coil or register which all robots were listening for to tell them to advance to the next task thereby keeping all the robots in sync. 

Another way is to give each robot a single bit on the register but they need to keep the current value of the register which you could then convert to a Boolean list so the robot only sets the bit it has control over and then writes the full value back to the output. 

I would think you’d want the master to set another status bit or register that then each slave would acknowledge by setting the register bit back to 0, when the value is back to 0 the master would turn off the handshake. 

There are a number of threads, but nothing that reads or writes the modbus registers in question.  Each slave has an individual "running vs stopped" register that the master uses to monitor the slave's status.

My goal was to have a single register that anyone can set (master or slave) to gracefully shutdown the entire system.  Kind of like a public bus, where anyone can pull the "stop requested" rope and the bus driver will stop the entire bus.  (Sorry, my analogy isn't the best here).   Once the master knows each slave is idle, it is safe to go onto the next step or stop the entire process.

I was able to create some additional registers and get my system working similar to your suggestion, it wasn't a big deal.  It just appears that if UR is acting as a modbus master, there can only be 1 device defined as an Output in the entire system for the register.  All others must be defined as Inputs. 

Just different than I expected.  If I'm controlling a SMC or Festo pneumatic cylinder via Modbus for example, I can have multiple devices connected to the same register.  Any of the devices can send an output (or read the value), and the most recent value is the updated on all devices.