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, tamaño de fuente, negrita
enclosingStepEtapa envolventeEtapa que contiene una secuencia parcial (encapsulación). Se muestra como un rectángulo con dos líneas verticales.
Almacena: Número de etapa
macroStepMacroetapaHace referencia a un GRAFCET parcial (expansión de macro). Se muestra como un rectángulo con dos líneas horizontales.
Almacena: Número de macro
startTransitionTransición fuenteTransición sin etapa precedente que siempre está habilitada (IEC 60848).
Almacena: Condición de transición
pitTransitionTransición sumideroTransición sin etapa siguiente; desactiva la etapa precedente.
Almacena: Condición de transición
forcedCommandForzadoFuerza un estado en otro GRAFCET. Se muestra como una caja con borde doble.
Almacena: Designación, tipo de acción, valor de tiempo, condición adicional
orNodeDivergencia alternativaSelección entre ramas alternativas (divergencia/convergencia O). Se muestra como una sola línea horizontal.
Almacena: Ancho, etiqueta opcional
boxNodeMarco de comentarioMarco para agrupar o anotar áreas. No es parte de la lógica GRAFCET.
Almacena: Ancho, alto, etiqueta superior (número), etiqueta inferior (nombre)
startLoopRetorno (inicio)Símbolo de inicio de un salto/retorno; hace referencia al destino mediante un marcador de referencia común.
Almacena: Marcador de referencia
endLoopRetorno (destino)Símbolo de destino de un salto/retorno.
Almacena: Marcador de referencia
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
labeledEdgedefaultEdgeloopEdgePuntos 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)