MorphuisOGrady
Member
Hi guys,
I have a number of identical machines who share resources such as water, feed material, air, conveying.
All are AB CompactLogix systems and I already implemented coordination of the resources via produced/consumed communications amongst the controllers.
In order to maintain a robust system I do not want any of them to be dependent on each other in the event of loss of comms due to a shut down of one of the machines. Each one should make its own decisions and is aware of the active step of all others.
If one machine is feeding, the others can or cannot depending on max number of users for that resource. This is working correctly.
The problem now is now what happens if multiple resources are waiting on the same resource. Using timers I can prioritize them. So if machine 1 has a 1 sec timer and machine 2 has a 2 sec timer before giving a OK_TO_USE_RESOURCE then machine 1 will always have priority.
What I now realise is I need to make a queue system. So if more need that resource too they will join a queue for first come first served.
How would you approach this for this scenario? If it was in a single controller it would be straightforward but I don't want a master PLC hosting the queue logic as it may not always be online.
Hope that makes sense. I'm not looking for logic, just some advice on how to implement it.
I have a number of identical machines who share resources such as water, feed material, air, conveying.
All are AB CompactLogix systems and I already implemented coordination of the resources via produced/consumed communications amongst the controllers.
In order to maintain a robust system I do not want any of them to be dependent on each other in the event of loss of comms due to a shut down of one of the machines. Each one should make its own decisions and is aware of the active step of all others.
If one machine is feeding, the others can or cannot depending on max number of users for that resource. This is working correctly.
The problem now is now what happens if multiple resources are waiting on the same resource. Using timers I can prioritize them. So if machine 1 has a 1 sec timer and machine 2 has a 2 sec timer before giving a OK_TO_USE_RESOURCE then machine 1 will always have priority.
What I now realise is I need to make a queue system. So if more need that resource too they will join a queue for first come first served.
How would you approach this for this scenario? If it was in a single controller it would be straightforward but I don't want a master PLC hosting the queue logic as it may not always be online.
Hope that makes sense. I'm not looking for logic, just some advice on how to implement it.