Formato de archivo .grafcetio
Documentación técnica
El formato .grafcetio es un formato de archivo basado en JSON para almacenar e intercambiar diagramas GRAFCET. Esta documentación describe la estructura y todos los elementos disponibles.
1. Estructura del archivo
Un archivo .grafcetio es un archivo JSON con la siguiente estructura básica:
{
"version": "1.0",
"createdWith": "grafcet.io",
"createdAt": "2024-01-15T10:30:00.000Z",
"nodes": [...],
"edges": [...],
"counter": 5
}versionNúmero de versión del formato (actualmente siempre "1.0")createdWithNombre de la aplicación que creó el archivocreatedAtMarca de tiempo de creación en formato ISO 8601nodesArray con todos los símbolos GRAFCET (etapas, transiciones, acciones, etc.)edgesArray con todas las líneas de enlace (conexiones entre símbolos)counterContador interno para asignar IDs únicos
2. Símbolos GRAFCET
Todos los símbolos se almacenan en el array "nodes". Cada símbolo tiene la siguiente estructura básica:
{
"id": "step-1",
"type": "step",
"position": { "x": 400, "y": 240 },
"data": { "label": "1" }
}idIdentificador único del símbolo (ej: "step-1", "transition-2")typeTipo de símbolo (ver tipos abajo)positionPosición en el lienzo en píxeles (coordenadas x/y)dataDatos específicos del símbolo como etiqueta, tipo de acción, etc.
Tipos de símbolos disponibles
stepEtapaRepresenta un estado en el diagrama. Se muestra como un rectángulo con número de etapa.
Almacena: Número de etapa (ej: "1", "2", "10")
initialStepEtapa inicialEl estado de inicio del GRAFCET, activado automáticamente en la inicialización. Se muestra como un rectángulo con borde doble.
Almacena: Número de etapa (típicamente "0")
transitionTransiciónDefine la condición de transición entre etapas. Se muestra como una línea horizontal con texto de condición.
Almacena: Condición de transición (ej: "a", "a AND b", "!x", "*" para siempre verdadero)
actionAcciónDescribe una salida o acción ejecutada cuando la etapa está activa. Se coloca a la derecha de la etapa asociada.
Almacena: Nombre de acción, tipo de acción, valor de tiempo, condición adicional
andNodeDivergencia simultáneaPermite secuencias paralelas en GRAFCET. Se muestra como una doble línea horizontal.
Almacena: Ancho (predeterminado: 240px), etiqueta opcional
loopNodeBucleSímbolo de retroalimentación en el GRAFCET. Se muestra como una línea vertical con una flecha triangular hacia arriba. Dos símbolos con el mismo marcador de referencia reemplazan una línea de retroalimentación larga.
Almacena: Marcador de referencia (ej: "*", "A")
textAnotación de textoCampo de texto libre para comentarios y anotaciones. No es parte de la lógica GRAFCET.
Almacena: Texto a mostrar
Acción:
{
"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. Tipos de acciones (IEC 60848)
Las acciones pueden tener diferentes tipos que determinan su comportamiento. El tipo de acción se representa gráficamente:
| Tipo de acción | Representación | Descripción |
|---|---|---|
continuous | Caja simple | La acción está activa mientras el paso asociado esté activo |
set | Caja con flecha ↑ | La acción se activa y permanece activa después de la desactivación del paso |
reset | Caja con flecha ↓ | La acción se desactiva (restablece una acción previamente activada) |
delayed | Caja con anotación temporal | La acción comienza después del tiempo especificado |
limited | Caja con límite de tiempo | La acción termina automáticamente después del tiempo especificado |
pulse | Caja con símbolo de impulso | Impulso único al activar el paso |
conditional | Caja con línea de condición | La acción solo se ejecuta si se cumple la condición |
4. Líneas de enlace
Las líneas de enlace conectan los símbolos GRAFCET y definen el flujo. Se almacenan en el array "edges".
{
"id": "e-step-1-transition-1",
"source": "step-1",
"sourceHandle": "bottom",
"target": "transition-1",
"targetHandle": "top",
"type": "defaultEdge"
}idIdentificador único de la conexiónsourceID del símbolo de origen (donde comienza la línea)targetID del símbolo de destino (donde termina la línea)sourceHandlePunto de conexión en el símbolo de origentargetHandlePunto de conexión en el símbolo de destinotypeTipo de línea de enlace
Tipos de líneas
defaultEdgeactionEdgePuntos de conexión
Cada símbolo tiene puntos de conexión definidos para las líneas:
- "top" - Entrada desde arriba
- "bottom" - Salida hacia abajo
- "left" - Entrada desde la izquierda (para acciones)
- "right" - Salida hacia la derecha (para líneas de acción)
- Para divergencias: "handle-0", "handle-1", ... (arriba) y "source-0", "source-1", ... (abajo)
5. Formato de compartición compacto (v2)
Al compartir por enlace, grafcet.io usa un formato compacto con claves abreviadas. Los datos se comprimen con Deflate y se almacenan como Base64URL en la URL (?g=...). Esto reduce el tamaño de los datos en aproximadamente un 40%.
Campos de nodos
| Completo | Compacto |
|---|---|
| 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 |
Códigos de tipos de nodos
| Completo | Compacto |
|---|---|
| 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 |
Campos de enlaces
| Completo | Compacto |
|---|---|
| id | i |
| source | s |
| target | t |
| sourceHandle | sh |
| targetHandle | th |
| type | y |
| data.waypoints | w ([[x,y],...]) |
Códigos de conectores
| Completo | Compacto |
|---|---|
| top | T |
| bottom | B |
| left | L |
| right | R |
| handle-N | hN |
| source-N | sN |
Las posiciones se almacenan como arrays [x,y] con números enteros. Los enlaces v1 antiguos siguen siendo compatibles.