Voglio uno scenario OT che simula una piccola linea di imbottigliamento composta da due sezioni e due PLC separati. Sezione 1, controllata da PLC1: c’è un serbatoio acqua Water Tank con una valvola di ingresso tank_input_valve e una valvola di uscita tank_output_valve. Un sensore analogico water_tank_level misura il livello del serbatoio in percentuale 0–100. Logica PLC1: mantieni il serbatoio tra 30 e 90. Se water_tank_level scende sotto 30 apri tank_input_valve. Se supera 90 chiudi tank_input_valve. La valvola di uscita tank_output_valve deve essere aperta solo quando la sezione 2 richiede riempimento. Sezione 2, controllata da PLC2: c’è un nastro trasportatore conveyor_belt che sposta bottiglie verso una stazione di riempimento. C’è un sensore booleano bottle_at_filler che indica quando una bottiglia è correttamente posizionata sotto il filler (distanza corretta). C’è un sensore analogico bottle_fill_level che misura il livello di riempimento della bottiglia in percentuale 0–100. Logica PLC2: il nastro conveyor_belt è acceso finché bottle_at_filler diventa vero, poi si ferma. Quando bottle_at_filler è vero e il livello bottiglia è sotto 95, PLC2 attiva una richiesta di riempimento fill_request verso PLC1. Quando fill_request è attivo, PLC1 apre tank_output_valve e l’acqua fluisce verso il filler. Il riempimento continua finché bottle_fill_level raggiunge 95, poi fill_request torna falso, PLC1 chiude tank_output_valve e PLC2 riaccende il nastro per portare la bottiglia successiva. Rete e comunicazioni: PLC1 e PLC2 sono su una rete OT e devono scambiarsi il segnale booleano fill_request e opzionalmente uno stato booleano tank_output_valve_state o water_available. Aggiungi anche una HMI sulla stessa rete che visualizza water_tank_level, bottle_fill_level, bottle_at_filler, stato nastro e stato valvole, e permette un comando start_stop_line booleano per avviare o fermare l’intera linea. Usa Modbus TCP sulla porta 502 per i collegamenti HMI↔PLC e per lo scambio minimo tra PLC2↔PLC1 se necessario.