Formato file .grafcetio
Documentazione tecnica
Il formato .grafcetio è un formato di file basato su JSON per memorizzare e scambiare diagrammi GRAFCET. Questa documentazione descrive la struttura e tutti gli elementi disponibili.
1. Struttura del file
Un file .grafcetio è un file JSON con la seguente struttura di base:
{
"version": "1.0",
"createdWith": "grafcet.io",
"createdAt": "2024-01-15T10:30:00.000Z",
"nodes": [...],
"edges": [...],
"counter": 5
}versionNumero di versione del formato (attualmente sempre "1.0")createdWithNome dell'applicazione che ha creato il filecreatedAtTimestamp di creazione in formato ISO 8601nodesArray con tutti i simboli GRAFCET (fasi, transizioni, azioni, ecc.)edgesArray con tutte le linee di collegamento (connessioni tra simboli)counterContatore interno per l'assegnazione di ID univoci
2. Simboli GRAFCET
Tutti i simboli sono memorizzati nell'array "nodes". Ogni simbolo ha la seguente struttura di base:
{
"id": "step-1",
"type": "step",
"position": { "x": 400, "y": 240 },
"data": { "label": "1" }
}idIdentificatore univoco del simbolo (es: "step-1", "transition-2")typeTipo di simbolo (vedi tipi sotto)positionPosizione sul canvas in pixel (coordinate x/y)dataDati specifici del simbolo come etichetta, tipo di azione, ecc.
Tipi di simboli disponibili
stepFaseRappresenta uno stato nel diagramma. Visualizzata come un rettangolo con numero di fase.
Memorizza: Numero di fase (es: "1", "2", "10")
initialStepFase inizialeLo stato di partenza del GRAFCET, attivato automaticamente all'inizializzazione. Visualizzata come un rettangolo con bordo doppio.
Memorizza: Numero di fase (tipicamente "0")
transitionTransizioneDefinisce la condizione di transizione tra le fasi. Visualizzata come una linea orizzontale con testo della condizione.
Memorizza: Condizione di transizione (es: "a", "a AND b", "!x", "*" per sempre vero)
actionAzioneDescrive un'uscita o azione eseguita quando la fase è attiva. Posizionata a destra della fase associata.
Memorizza: Nome azione, tipo di azione, valore tempo, condizione aggiuntiva
andNodeDivergenza simultaneaPermette sequenze parallele nel GRAFCET. Visualizzata come una doppia linea orizzontale.
Memorizza: Larghezza (predefinito: 240px), etichetta opzionale
loopNodeCicloSimbolo di retroazione nel GRAFCET. Visualizzato come una linea verticale con una freccia triangolare verso l'alto. Due simboli con lo stesso marcatore di riferimento sostituiscono una lunga linea di retroazione.
Memorizza: Marcatore di riferimento (es: "*", "A")
textAnnotazione testoCampo di testo libero per commenti e annotazioni. Non fa parte della logica GRAFCET.
Memorizza: Testo da visualizzare
Azione:
{
"id": "action-1",
"type": "action",
"position": { "x": 500, "y": 230 },
"data": {
"label": "Motor ein",
"actionType": "continuous"
}
}{
"id": "action-2",
"type": "action",
"position": { "x": 500, "y": 350 },
"data": {
"label": "Ventil öffnen",
"actionType": "delayed",
"time": "5s",
"condition": "p1"
}
}3. Tipi di azioni (IEC 60848)
Le azioni possono avere diversi tipi che determinano il loro comportamento. Il tipo di azione è rappresentato graficamente:
| Tipo di azione | Rappresentazione | Descrizione |
|---|---|---|
continuous | Box semplice | L'azione è attiva finché la fase associata è attiva |
set | Box con freccia ↑ | L'azione viene attivata e rimane attiva dopo la disattivazione della fase |
reset | Box con freccia ↓ | L'azione viene disattivata (ripristina un'azione precedentemente attivata) |
delayed | Box con annotazione temporale | L'azione inizia solo dopo il tempo specificato |
limited | Box con limite di tempo | L'azione termina automaticamente dopo il tempo specificato |
pulse | Box con simbolo di impulso | Impulso singolo all'attivazione della fase |
conditional | Box con linea di condizione | L'azione viene eseguita solo se la condizione è soddisfatta |
4. Linee di collegamento
Le linee di collegamento connettono i simboli GRAFCET e definiscono il flusso. Sono memorizzate nell'array "edges".
{
"id": "e-step-1-transition-1",
"source": "step-1",
"sourceHandle": "bottom",
"target": "transition-1",
"targetHandle": "top",
"type": "defaultEdge"
}idIdentificatore univoco della connessionesourceID del simbolo sorgente (dove inizia la linea)targetID del simbolo destinazione (dove termina la linea)sourceHandlePunto di connessione sul simbolo sorgentetargetHandlePunto di connessione sul simbolo destinazionetypeTipo di linea di collegamento
Tipi di linee
defaultEdgeactionEdgePunti di connessione
Ogni simbolo ha punti di connessione definiti per le linee:
- "top" - Ingresso dall'alto
- "bottom" - Uscita verso il basso
- "left" - Ingresso da sinistra (per azioni)
- "right" - Uscita verso destra (per linee di azione)
- Per divergenze: "handle-0", "handle-1", ... (sopra) e "source-0", "source-1", ... (sotto)
5. Formato di condivisione compatto (v2)
Quando si condivide tramite link, grafcet.io utilizza un formato compatto con chiavi abbreviate. I dati vengono compressi con Deflate e memorizzati come Base64URL nell'URL (?g=...). Questo riduce la dimensione dei dati di circa il 40%.
Campi dei nodi
| Completo | Compatto |
|---|---|
| id | i |
| type | t |
| position | p ([x,y]) |
| data.label | l |
| data.actionType | a |
| data.time | ti |
| data.condition | co |
| data.width | w |
| data.height | h |
| data.bottomLabel | bl |
| data.rotation | r |
| zIndex | z |
Codici dei tipi di nodi
| Completo | Compatto |
|---|---|
| step | S |
| initialStep | I |
| transition | T |
| action | A |
| enclosingStep | E |
| enclosingInitialStep | EI |
| macroStep | M |
| andSplit | AS |
| andJoin | AJ |
| andNode | AN |
| text | X |
| endLoop | L |
| loopNode | LN |
| forcedCommandUp | FU |
| forcedCommandDown | FD |
| boxNode | B |
Campi dei collegamenti
| Completo | Compatto |
|---|---|
| id | i |
| source | s |
| target | t |
| sourceHandle | sh |
| targetHandle | th |
| type | y |
| data.waypoints | w ([[x,y],...]) |
Codici dei connettori
| Completo | Compatto |
|---|---|
| top | T |
| bottom | B |
| left | L |
| right | R |
| handle-N | hN |
| source-N | sN |
Le posizioni sono memorizzate come array [x,y] con numeri interi. I vecchi link v1 rimangono compatibili.