Générateurs
Catalogue complet des 18 types de générateurs Miravo pour la simulation de signaux industriels réalistes — sinus, bruit, marche aléatoire, corrélé et plus.
Les générateurs produisent les valeurs des membres à chaque tick. Miravo embarque 18 types de générateurs organisés en trois catégories.
Générateurs source
Section intitulée « Générateurs source »Ces générateurs produisent des valeurs depuis leur propre configuration sans nécessiter d’entrée d’autres membres.
Oscillation sinusoïdale avec bruit optionnel.
generator: type: sine center: 1750 # Supporte $param.X amplitude: 50 period: 3600 noise: 0.01Formule : center + amplitude * sin(2 * pi * t / period) + N(0, noise * |center|)
Bruit gaussien autour d’une valeur centrale.
generator: type: noise center: 22.0 # Supporte $param.X stddev: 0.5Formule : center + N(0, stddev)
random-walk
Section intitulée « random-walk »Marche aléatoire bornée. Avec état — mémorise la position entre les ticks.
generator: type: random-walk min: 0 max: 100 step: 0.5Cycle à travers une liste de valeurs à intervalles fixes. Entièrement déterministe, sans RNG.
generator: type: step values: [0, 25, 50, 75, 100] interval: 60Trajectoire linéaire depuis une valeur de départ. Se maintient après la durée.
generator: type: ramp start_value: 0 rate: 10 duration: 300mean-reverting-noise
Section intitulée « mean-reverting-noise »Processus d’Ornstein-Uhlenbeck. Variance bornée contrairement à la marche aléatoire.
generator: type: mean-reverting-noise mean: 50 # Supporte $param.X tau: 10 sigma: 2.0Formule : valeur = mean + alpha * (prev - mean) + sigma * sqrt(1 - alpha^2) * N(0, 1) où alpha = exp(-dt / tau)
timetable
Section intitulée « timetable »Interpolation par morceaux sur des points de passage temps-valeur. Supporte l’interpolation linear et step.
generator: type: timetable repeat: true interpolation: step points: - { time: 0, value: 0 } - { time: 21600, value: 1200 } - { time: 64800, value: 900 } - { time: 86400, value: 0 }state-machine
Section intitulée « state-machine »Transitions d’état probabilistes. Avec état.
generator: type: state-machine initial: "idle" transitions: - from: idle to: running probability: 0.1 - from: running to: idle probability: 0.05 - from: running to: faulted on: faultLe déclencheur on: "fault" ne s’active que quand l’instance a des défaillances actives.
Générateurs dynamiques
Section intitulée « Générateurs dynamiques »Ces générateurs transforment l’entrée d’autres membres, paramètres ou sous-générateurs intégrés.
Résolution de l’entrée
Section intitulée « Résolution de l’entrée »Tous les générateurs dynamiques acceptent un champ input :
input: { member: "speed_feedback" } # Lire depuis un membre précédentinput: { param: "rated_rpm" } # Lire depuis un paramètreinput: { generator: { type: noise, center: 50, stddev: 1 } } # Sous-générateur intégréfirst-order-lag
Section intitulée « first-order-lag »Filtre passe-bas PT1. Modélise le lag thermique, la réponse des capteurs.
generator: type: first-order-lag tau: 30 gain: 1.0 # Supporte $param.X bias: 0 # Supporte $param.X input: { member: "speed_feedback" }integrator
Section intitulée « integrator »Accumulateur avec saturation ou rebouclage. Modélise les heures de fonctionnement, les niveaux de réservoir, les totaux d’énergie.
generator: type: integrator gain: 0.000278 bias_rate: 0 clamp: [0, 100000] input: { member: "power_draw" }transport-delay
Section intitulée « transport-delay »Retarde l’entrée d’un temps configurable. Tampon circulaire avec interpolation.
generator: type: transport-delay delay: 15 # Supporte $param.X interpolation: linear input: { member: "entry_signal" }slew-rate-limiter
Section intitulée « slew-rate-limiter »Limite le taux de variation avec des vitesses montée/descente asymétriques.
generator: type: slew-rate-limiter rate_up: 100 rate_down: 50 input: { member: "speed_command" }second-order
Section intitulée « second-order »Réponse dynamique du second ordre. Modélise le dépassement sous-amorti ou l’établissement sur-amorti.
generator: type: second-order omega_n: 0.5 zeta: 0.3 gain: 1.0 # Supporte $param.X bias: 0 # Supporte $param.X input: { member: "load_setpoint" }hysteresis-relay
Section intitulée « hysteresis-relay »Commutation à deux seuils avec zone morte. Sortie chaîne ou numérique.
generator: type: hysteresis-relay threshold_rising: 8.5 # Supporte $param.X threshold_falling: 7.5 # Supporte $param.X output_high: 1 output_low: 0 input: { member: "header_pressure" }weighted-sum
Section intitulée « weighted-sum »Combinaison linéaire de plusieurs entrées.
generator: type: weighted-sum bias: 0 # Supporte $param.X terms: - input: { member: "inflow_rate" } weight: 1.0 # Supporte $param.X - input: { member: "outflow_rate" } weight: -1.0Laisse passer l’entrée uniquement quand un membre Boolean est vrai. Utilisé pour le gating marche/arrêt.
generator: type: gate enabled_member: running disabled_value: 0 input: { member: "speed_command" }Générateurs composites
Section intitulée « Générateurs composites »correlated
Section intitulée « correlated »Dérive une valeur d’un autre membre avec une transformation linéaire.
generator: type: correlated source: speed_feedback factor: 0.008 # Supporte $param.X offset: 2.0 # Supporte $param.X noise: 0.02Formule : factor * source + offset + N(0, noise * |base|)
Le membre source doit être déclaré plus tôt dans la map members du modèle.
health-dependent
Section intitulée « health-dependent »Délègue à différents sous-générateurs selon l’étape de cycle de vie actuelle.
generator: type: health-dependent stages: healthy: type: noise center: 2.5 stddev: 0.3 degraded: type: noise center: 4.0 stddev: 0.8 critical: type: noise center: 7.0 stddev: 1.5Références aux paramètres
Section intitulée « Références aux paramètres »De nombreux champs de générateurs supportent les références $param.X. Celles-ci se résolvent à la valeur du paramètre de l’instance à l’exécution :
parameters: rated_rpm: type: float default: 1750
members: speed: kind: variable data_type: Double generator: type: noise center: "$param.rated_rpm" stddev: 5Champs supportés : center (sine, noise), mean (mean-reverting-noise), factor/offset (correlated), gain/bias (first-order-lag, second-order), delay (transport-delay), seuils (hysteresis-relay), bias/weight (weighted-sum).