Cycle de vie et défaillances
Modélisez la dégradation des actifs avec des étapes de cycle de vie et injectez des défaillances via des déclencheurs conditionnels et effets en cascade.
Les étapes de cycle de vie et les défaillances modélisent la dégradation à long terme et les modes de panne.
Étapes de cycle de vie
Section intitulée « Étapes de cycle de vie »Les actifs progressent à travers des étapes de cycle de vie basées sur les heures de fonctionnement. Chaque étape applique des effets aux valeurs des membres, simulant l’usure réelle.
lifecycle: stages: - name: healthy duration_hours: [4000, 7000] effects: {} - name: degraded duration_hours: [1000, 2000] effects: vibration_baseline: { multiplier: 1.4 } bearing_temperature: { offset: 8 } - name: critical duration_hours: [300, 700] effects: vibration_baseline: { multiplier: 2.0 } bearing_temperature: { offset: 18 } flow_rate: { multiplier: 0.85 }Comment ça fonctionne
Section intitulée « Comment ça fonctionne »- Chaque instance démarre dans la première étape avec des heures de fonctionnement aléatoires
- Le moteur suit les heures de fonctionnement basées sur le temps de simulation
- Quand les heures dépassent la durée de l’étape, l’actif passe à l’étape suivante
- Les durées d’étape sont randomisées dans la plage
[min, max]par instance
Effets d’étape
Section intitulée « Effets d’étape »Les effets modifient les valeurs de sortie des générateurs via : valeur * multiplier + offset
| Champ | Défaut | Description |
|---|---|---|
multiplier | 1.0 | Mise à l’échelle multiplicative |
offset | 0 | Décalage additif |
Les effets s’appliquent à tout membre numérique référencé par son nom.
Exposer l’état de cycle de vie
Section intitulée « Exposer l’état de cycle de vie »Utilisez une liaison pour exposer l’étape actuelle comme membre :
lifecycle_stage: kind: variable data_type: String access: read binding: type: lifecycle-stageDéfaillances
Section intitulée « Défaillances »Les défaillances modélisent des modes de panne spécifiques avec des déclencheurs, des effets et des durées.
faults: - name: cavitation trigger: condition: "discharge_pressure < 2.5" probability: 0.01 effects: vibration_radial: { spike: 1.8, duration_ticks: 180 } flow_rate: { multiplier: 0.75, duration_ticks: 180 } motor_current: { offset: 3, duration_ticks: 180 }
- name: bearing_wear trigger: lifecycle_stage: degraded probability: 0.004 effects: vibration_axial: { multiplier: 1.4, duration_ticks: 600 } bearing_temperature: { offset: 6, duration_ticks: 600 }Types de déclencheurs
Section intitulée « Types de déclencheurs »| Champ | Description |
|---|---|
lifecycle_stage | Évaluer seulement quand l’actif est dans cette étape |
condition | Expression comme "pressure < 2.5" évaluée contre les valeurs des membres |
probability | Probabilité de déclenchement par tick (0 à 1) |
Les déclencheurs peuvent combiner lifecycle_stage avec probability — la défaillance ne joue le dé que quand l’actif est dans l’étape spécifiée.
Types d’effets
Section intitulée « Types d’effets »Les effets sont appliqués dans l’ordre : spike, puis multiplier, puis offset.
| Champ | Description |
|---|---|
spike | Spike multiplicatif (ex. 1.8 signifie 1,8x la valeur actuelle) |
multiplier | Mise à l’échelle multiplicative continue |
offset | Décalage additif |
duration_ticks | Durée de l’effet avant effacement automatique |
Les effets sur les membres de type String court-circuitent — ils remplacent directement la valeur du membre.
Injecter des défaillances à l’exécution
Section intitulée « Injecter des défaillances à l’exécution »Déclenchez des défaillances manuellement via le CLI ou l’API admin :
Via le CLI :
miravo inject pump-001 cavitationVia l’API admin :
curl -s http://127.0.0.1:8080/commands \ -H 'content-type: application/json' \ -d '{"type":"triggerFault","instanceId":"pump-001","fault":"cavitation"}'Effacer une défaillance :
curl -s http://127.0.0.1:8080/commands \ -H 'content-type: application/json' \ -d '{"type":"clearFault","instanceId":"pump-001","fault":"cavitation"}'Liaisons d’état de défaillance
Section intitulée « Liaisons d’état de défaillance »Exposez l’état de défaillance comme membres :
fault_active: kind: variable data_type: Boolean access: read binding: type: fault-active # true quand une défaillance est active
fault_count: kind: variable data_type: UInt16 access: read binding: type: fault-count # Nombre de défaillances actives
active_fault_code: kind: variable data_type: String access: read binding: type: active-fault-code # Nom de la défaillance active fallback: none
health_state: kind: variable data_type: String access: read binding: type: health-state # Combine l'état de cycle de vie et de défaillance