Modifiche1
This commit is contained in:
parent
97f4c9e975
commit
5340ff59c7
|
|
@ -1,12 +1,11 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
id: flusso-comunicazione
|
id: flusso-comunicazione
|
||||||
|
sidebar_position: 7
|
||||||
title: Flusso di Scambio Dati (PLC-HMI-SCADA)
|
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
|
hide_table_of_contents: true
|
||||||
sidebar_position: 6
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Flusso di Scambio Dati (PLC - HMI - SCADA)
|
# Flusso di Scambio Dati (PLC - HMI - SCADA)
|
||||||
|
|
||||||
Questo documento descrive il processo di scambio dati tra PLC, HMI e SCADA
|
Questo documento descrive il processo di scambio dati tra PLC, HMI e SCADA
|
||||||
|
|
@ -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
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue