diff --git a/docs/Omron/Statistiche/flusso-comunicazione1.mdx b/docs/Omron/Statistiche/flusso-comunicazione copy.md similarity index 97% rename from docs/Omron/Statistiche/flusso-comunicazione1.mdx rename to docs/Omron/Statistiche/flusso-comunicazione copy.md index c18be3a..257b10e 100644 --- a/docs/Omron/Statistiche/flusso-comunicazione1.mdx +++ b/docs/Omron/Statistiche/flusso-comunicazione copy.md @@ -1,12 +1,11 @@ - --- id: flusso-comunicazione +sidebar_position: 7 title: Flusso di Scambio Dati (PLC-HMI-SCADA) -sidebar_label: Flusso Comunicazione +sidebar_label: Flusso di Comunicazione +pagination_prev: null hide_table_of_contents: true -sidebar_position: 6 --- - # Flusso di Scambio Dati (PLC - HMI - SCADA) Questo documento descrive il processo di scambio dati tra PLC, HMI e SCADA diff --git a/docs/Omron/Statistiche/flusso-comunicazione1.md b/docs/Omron/Statistiche/flusso-comunicazione1.md new file mode 100644 index 0000000..b95962a --- /dev/null +++ b/docs/Omron/Statistiche/flusso-comunicazione1.md @@ -0,0 +1,99 @@ + +--- +id: flusso-comunicazione1 +sidebar_position: 6 +title: Flusso di Scambio Dati (PLC-HMI-SCADA) +sidebar_label: Flusso di Comunicazione +pagination_prev: null +hide_table_of_contents: true +--- + +# Flusso di Scambio Dati (PLC - HMI - SCADA) + +Questo documento descrive il processo di scambio dati tra PLC, HMI e SCADA +per la gestione del **cambio ricetta** e del **meccanismo di heartbeat (watchdog)**. + +--- + +## Sequence Diagram – Cambio Ricetta e Heartbeat + +```mermaid +sequenceDiagram + autonumber + participant HMI as HMI (Operatore) + participant PLC as PLC + participant SCADA as SCADA + + Note over HMI: Operatore abilita controllo remoto + HMI->>PLC: RemoteControlEn = TRUE + + Note over SCADA: Invio nuova produzione (indice ricetta, lotto, …) + SCADA->>PLC: ProductionChangeRequest = TRUE + + PLC-->>SCADA: AckChangeRecipe = TRUE + SCADA-->>PLC: ProductionChangeRequest = FALSE + PLC-->>SCADA: AckChangeRecipe = FALSE + + PLC-->>HMI: AckChangeRecipeToHMI = TRUE (apri pop-up) + + alt Operatore ACCETTA + HMI->>PLC: RecipeChangeOk = TRUE + PLC->>PLC: Carica ricetta / aggiorna dati + PLC-->>SCADA: RecipeChangeOK = TRUE (2s) + else Operatore RIFIUTA (o chiude) + HMI->>PLC: RejectRecipeChange = TRUE (o CloseMESWindow) + PLC-->>SCADA: RecipeChangeReject = TRUE (2s) + else Operatore POSTICIPA + HMI->>PLC: BatchChangePopupDismiss = TRUE + PLC->>PLC: Avvia timer 30s + PLC-->>SCADA: RecipeChangePostpone = TRUE + PLC-->>HMI: (allo scadere 30s) ri-apri pop-up + end + + par Heartbeat / Watchdog + loop ogni 1s + PLC-->>SCADA: PlcHeartbeat_Toggle (inverti bit) + SCADA-->>PLC: ScadaHeartbeat_Echo = PlcHeartbeat_Toggle + end + PLC->>PLC: Se mismatch > 3s ⇒ MesCommunicationFault = TRUE + end +``` + +--- + +## State Diagram – Macchina a stati (S60_RecipeManagement) + +```mermaid +stateDiagram-v2 + [*] --> Idle + + Idle --> Handshake_In: ProductionChangeRequest ↑ + Handshake_In --> Wait_Request_Low: AckChangeRecipe = TRUE + Wait_Request_Low --> Popup_To_HMI: ProductionChangeRequest = FALSE, AckChangeRecipe = FALSE + + Popup_To_HMI --> Wait_Operator: AckChangeRecipeToHMI = TRUE + + state Wait_Operator { + [*] --> AwaitChoice + AwaitChoice --> ApplyRecipe: RecipeChangeOk = TRUE + AwaitChoice --> RejectRecipe: RejectRecipeChange = TRUE + AwaitChoice --> Postpone: BatchChangePopupDismiss = TRUE + + ApplyRecipe --> ReportOK: (carica/aggiorna dati) + ReportOK --> [*] + + RejectRecipe --> ReportReject + ReportReject --> [*] + + Postpone --> Timer30s + Timer30s --> Popup_To_HMI: allo scadere 30s (riapri pop-up) + } + + note right of ReportOK + Egress.RecipeChangeOK = TRUE (2s) + end note + + note right of ReportReject + Egress.RecipeChangeReject = TRUE (2s) + end note +```