Ir al contenido

Ejemplos de diagramas Mermaid

flowchart TD
    A[Inicio] --> B{¿Alarma activa?}
    B -->|Sí| C[Notificar HMI]
    B -->|No| D[Monitorizar]
    C --> E[¿Reconocida?]
    E -->|Sí| D
    E -->|No| C
    D --> B

sequenceDiagram
    Actor Op as Alarma
    Op->>Bit: La alarma se dispara
    Bit->>Group: Notifica alarma
    Group->>Super: Propaga alarma
    Super->>Global: Propaga alarma
    

classDiagram
    class FB_AbstractAlarmData {
        <<abstract>>
        +BOOL bEnable
        +INT iLevel
        +Run()*
        +Reset()*
    }
    class FB_AlarmBit {
        +BOOL bInput
        +Run()
        +Reset()
    }
    class FB_AlarmBitWithOM {
        +BOOL bOM
        +Run()
        +Reset()
    }

    FB_AbstractAlarmData <|-- FB_AlarmBit
    FB_AbstractAlarmData <|-- FB_AlarmBitWithOM

stateDiagram-v2
    [*] --> Inactiva
    Inactiva --> Activa : Condición detectada
    Activa --> Reconocida : Operador ACK
    Reconocida --> Inactiva : Condición resuelta
    Activa --> Inactiva : Reset forzado
    Reconocida --> Activa : Condición persiste

erDiagram
    GRUPO ||--o{ OBJETO : contiene
    OBJETO ||--o{ ALARMA : genera
    ALARMA {
        int id
        string mensaje
        int nivel
        datetime timestamp
    }
    OBJETO {
        int id
        string nombre
        string descripcion
    }
    GRUPO {
        int id
        string nombre
    }

gantt
    title Planificación implementación alarmas
    dateFormat  YYYY-MM-DD
    section Diseño
    Definir jerarquía     :done,    d1, 2026-01-01, 7d
    Definir niveles       :done,    d2, after d1, 5d
    section Desarrollo
    FB_AlarmBit           :active,  a1, 2026-01-13, 10d
    FB_AlarmBitWithOM     :         a2, after a1, 10d
    Trace system          :         a3, after a2, 14d
    section Pruebas
    Test unitario         :         t1, after a3, 7d
    Test integración      :         t2, after t1, 7d

pie title Distribución de alarmas por nivel
    "Crítico"   : 15
    "Alto"      : 28
    "Medio"     : 40
    "Bajo"      : 17

gitGraph
    commit id: "Init"
    branch develop
    checkout develop
    commit id: "FB_AlarmBit"
    commit id: "FB_AlarmBitWithOM"
    branch feature/trace
    checkout feature/trace
    commit id: "Trace v1"
    commit id: "Trace v2"
    checkout develop
    merge feature/trace
    checkout main
    merge develop id: "Release 1.0"

mindmap
  root((Alarmas PLC))
    Tipos
      AlarmBit
      AlarmBitWithOM
      AlarmBitForSafety
    Niveles
      Crítico
      Alto
      Medio
      Bajo
    Trazado
      Grupo
      Objeto
      Alarma
    HMI
      Visualización
      Reconocimiento
      Histórico

timeline
    title Historia del módulo de alarmas
    2023 : Versión inicial
         : FB_AlarmBit básico
    2024 : FB_AlarmBitWithOM
         : Soporte multilingüe
    2025 : FB_AlarmBitForSafety
         : Sistema de trazado
    2026 : Integración con HMI avanzada
         : Trace v2

journey
    title Ciclo de vida de una alarma
    section Detección
      Condición activa: 5: PLC
      Generar alarma: 5: FB_AlarmBit
    section Notificación
      Enviar a HMI: 4: PLC
      Mostrar al operador: 3: HMI
    section Resolución
      Revisar causa: 2: Operador
      Reconocer alarma: 4: Operador, HMI
      Resolver condición: 3: Operador
      Borrar alarma: 5: PLC, HMI

quadrantChart
    title Alarmas por frecuencia vs impacto
    x-axis Baja frecuencia --> Alta frecuencia
    y-axis Bajo impacto --> Alto impacto
    quadrant-1 "Críticas"
    quadrant-2 Molestas
    quadrant-3 Ignorar
    quadrant-4 Monitorizar
    Fallo motor: [0.8, 0.9]
    "Presión baja": [0.6, 0.7]
    Temperatura: [0.5, 0.4]
    Puerta abierta: [0.3, 0.2]
    Nivel bajo: [0.7, 0.5]

requirementDiagram
    requirement req_alarm {
        id: 1
        text: El sistema debe generar alarmas en menos de 100ms
        risk: high
        verifymethod: test
    }
    requirement req_ack {
        id: 2
        text: El operador debe poder reconocer alarmas desde HMI
        risk: medium
        verifymethod: demonstration
    }
    element FB_AlarmBit {
        type: component
    }
    FB_AlarmBit - satisfies -> req_alarm
    FB_AlarmBit - satisfies -> req_ack

block-beta

  columns 4
    Input:1 space:1 Output:1
    space
    PLC["PLC S7-1x00"]:3
    space:2
    _alarmBit:3
    space:2
    _trace:3
    space
    _hmi:3

    Input --> PLC
    PLC --> Output
    PLC --> _alarmBit
    _alarmBit --> _trace
    _trace --> _hmi

xychart-beta
    title "Alarmas por hora"
    x-axis ["00h","02h","04h","06h","08h","10h","12h","14h","16h","18h","20h","22h"]
    y-axis "Número de alarmas" 0 --> 50
    bar [5, 3, 2, 4, 12, 28, 45, 38, 42, 30, 15, 8]
    line [5, 3, 2, 4, 12, 28, 45, 38, 42, 30, 15, 8]

sankey-beta
PLC,FB_AlarmBit,40
PLC,FB_AlarmBitWithOM,30
PLC,FB_AlarmBitForSafety,20
FB_AlarmBit,HMI,35
FB_AlarmBit,Log,5
FB_AlarmBitWithOM,HMI,25
FB_AlarmBitWithOM,Log,5
FB_AlarmBitForSafety,Safety,15
FB_AlarmBitForSafety,Log,5

architecture-beta

  group plc(server):["PLC S7-1x00"]
    service fb_alarm(server):[FB_AlarmBit] in plc
    service fb_trace(server):[FB_Trace] in plc
    service fb_hmi(server):[FB_HMI] in plc

  service hmi(internet):[Panel HMI]
  service scada(cloud):[SCADA]

  fb_alarm:R --> L:fb_trace
  fb_trace:R --> L:fb_hmi
  fb_hmi:R --> L:hmi
  hmi:R --> L:scada

packet-beta
    title Trama de comunicación alarma
    0-7: "ID Alarma"
    8-15: "Nivel"
    16-31: "Timestamp"
    32-47: "Objeto ID"
    48-55: "Estado"
    56-63: "Flags"