Aller au contenu

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.

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.01

Formule : 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.5

Formule : center + N(0, stddev)

Marche aléatoire bornée. Avec état — mémorise la position entre les ticks.

generator:
type: random-walk
min: 0
max: 100
step: 0.5

Cycle à travers une liste de valeurs à intervalles fixes. Entièrement déterministe, sans RNG.

generator:
type: step
values: [0, 25, 50, 75, 100]
interval: 60

Trajectoire linéaire depuis une valeur de départ. Se maintient après la durée.

generator:
type: ramp
start_value: 0
rate: 10
duration: 300

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.0

Formule : valeur = mean + alpha * (prev - mean) + sigma * sqrt(1 - alpha^2) * N(0, 1)alpha = exp(-dt / tau)

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 }

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: fault

Le déclencheur on: "fault" ne s’active que quand l’instance a des défaillances actives.

Ces générateurs transforment l’entrée d’autres membres, paramètres ou sous-générateurs intégrés.

Tous les générateurs dynamiques acceptent un champ input :

input: { member: "speed_feedback" } # Lire depuis un membre précédent
input: { param: "rated_rpm" } # Lire depuis un paramètre
input: { generator: { type: noise, center: 50, stddev: 1 } } # Sous-générateur intégré

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" }

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" }

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" }

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" }

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" }

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" }

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.0

Laisse 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" }

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.02

Formule : factor * source + offset + N(0, noise * |base|)

Le membre source doit être déclaré plus tôt dans la map members du modèle.

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.5

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: 5

Champs 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).