Thanks for your question! The source code for the Conveyor block has been made available for anyone to read/modify keeping in mind the complexity of such requirements. Your requirement exactly fits the bill. The source for the conveyor is called desConveyorSystem.m.
From what I understand, the block was authored to work in the following way (accumulate mode, which is what I think you are looking for):
- It has three storages
- The first storage has a capacity of 1. This storage allows to model the rolling-in behavior of an entity, that's trying to get on to the conveyor. An entity spends time equal to (entity length + min separation distance)/conveyor speed.
- The second storage has an infinite capacity and represents THE conveyor proper.
- The third storage again has a capacity of 1, whcih is there to model the rolling-out behavior of an entity leaving the block. It spends (entity length)/conveyor speed.
- An entity after entering storage 2, spends time equal to (conveyor length - min separation distance - entity length/conveyor speed). Beyond which it is held in storage 2 based on the number of entities that are already ahead of it in the storage (Since storage 2 is a FIFO queue), whcih are inturn blocked as entities try to roll out of storage 3.
The FIFO blocking behavior takes care of introducing any additional delay an entity has to go through before it gets out of the system.
So for your use case, you might have to play around with the times an entity spends in storage 1 and storage 2.