I have a Pick and Place that loads parts into a container on a line object. When the container is full, the container moves onto another line where it is then picked up by a worker. In my simulation, the worker is not fast enough to pick up the full containers as they reach the end of the line. Eventually the full containers build up and due to capacity limits, it comes to a point where the Pick and Place tries to put parts into a full container which basically stops the simulation. To try and avoid this, I tried using the following in the Pick and Place's target control:
waituntil RHTrayConveyorA_MP1.cont.Full = false
The idea is to have the pick and place wait until there is an empty container available to place the parts in. A new container is introduced when the worker is able to remove a full one. The above does not work as it errors with "Cannot watch 'Cont'".
Any ideas how I can work around this? Thanks!
Could you upload your model here? If not, could you create another simulation with this same behavior in order to share with us?
Maybe you can assign the object inside the "RHTrayConveyorA_MP1" to a variable of object type to then "watch" the "full" propertie.
I would recomend using a sensor to solve this. A sensor could get triggered by the container when it reaches a point along the line, at which point you can then trigger the pick and place robot to do its job knowing the container is at that set posistion.
As this should change the pick and place to work from a event that the container triggered then it should solve your issue.
To successfully pick&place a MU you need to be sure:
Assumed the target is a SingleProc it would be sufficient to state:
waituntil RHTrayConveyorA_MP1.occupied and not RHTrayConveyorA_MP1.cont.Full
Assumed the target is a line it will become a little bit more complicated, because it depends on where at the line you want to stop and handle the container. JamesMs approach (enhanced probably by a watchable attribute i.e. named ReadyToBeLoaded) should help you then.
Hey guys thanks for the input! What I ended up doing was setting up an observer for the tray MU "full" attribute. When the tray is full, a method is executed to update a variable which basically tells the Pick and Place to wait depending on the status. I've attached the activity I'm working on if anyone's curious (see Moulding frame).