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"