Userei la seguento logica di funzionamento (non è ancora perfetta ed eseguibile bene da un programma) , ma è migliore:
1) Se il sensore misura una distanza > = 500 mm, vuol dire fondo scala, allora non ci sono contenitori sul nastro, e il nastro normalmente è fermo.
2)Se misura una distanza fra 100 e 200 mm vuol dire che qualcuno ha messo il contenitore all'inizio del nastro, si attende quanche secondo per essere sicuro che il contenitore sia stabile,
poi si fa avanzare il nastro fino a quando misura una distanza di 300 mm,
3) alla distanza di 300 mm, ferma il nastro e apre il rubinetto.
4) Quando rileva contenitore pieno, chiude il rubinetto, attende qualche secondo per permettere che il rubinetto sgoccioli, e fa avanzare il nastro fino a quando rileva una distanza di 450 mm.
5)Quando rileva una distanza di 450 mm si ferma ritorna allo stato 1) ( si presuppone che qualcuno prenda il contenitore pieno, e ne metta uno vuoto,
Se in tutti gli stati precedenti si preme un pulsante stop,
si esegue:
ferma nastro, chiudi rubinetto, termina programma.
ripremendo il pulsante ( o meglio un altro pulsante) si riparte.
Occorre gestire le eccezioni:
Se durante le fasi, si rileva una distanza diversa da quella prevista (qualcuno ha aggiunto un contenitore vuoto o preso quello mezzo pieno , cosa si fa?
