Testez votre logique d'automatisation directement dans AutomationView. Le simulateur de cycle de scrutation intégré exécute vos séquences, évalue les transitions, traite les actions temporisées et met en surbrillance les étapes actives en temps réel.

Démarrez et pilotez le simulateur depuis la barre d'outils de l'Éditeur de Séquence, la barre latérale Variables, la Palette de commandes (Ctrl+Shift+P) ou les raccourcis clavier :
| Commande | Raccourci | Action |
|---|---|---|
| Start Simulation | F5 | Exécuter la simulation de cycle de scrutation en continu |
| Stop Simulation | Shift+F5 | Arrêter la simulation et réinitialiser l'état d'exécution |
| Step Simulation | F10 | Avancer d'un seul cycle de scrutation (démarre en pause si arrêté) |
| Reset Simulation | Ctrl+Shift+F5 (macOS : Cmd+Shift+F5) | Rétablir toutes les variables à leurs valeurs initiales et repartir des étapes initiales |
| Run Scenario | Palette de commandes / Menu Explorateur | Exécuter un scénario de test .yaml automatisé |
Chaque cycle de scrutation s'exécute en six phases déterministes conformément au modèle SFC IEC 61131-3 :
N, S, R, P, L, D, SD, DS, SL) sur les étapes actives.TON, TOF, TP, RTO) et les compteurs (CTU, CTD, CTUR, CTDR), puis applique toutes les écritures de variables.Ajustez l'intervalle du cycle de scrutation à tout moment à l'aide du paramètre automationview.emulation.cycleTimeMs (par défaut : 100 ms).
Vous pouvez soit Définir (Set, écriture ponctuelle), soit Forcer (Force, maintien sur tous les cycles) n'importe quelle variable, champ de structure ou élément de tableau :
| Action | Comportement |
|---|---|
| Set Value | Écrit une nouvelle valeur pour le prochain cycle de scrutation. Les actions du programme peuvent l'écraser lors des cycles suivants. |
| Force Value | Verrouille la variable à la valeur forcée sur tous les cycles de scrutation jusqu'à la libération du forçage. |
Pour modifier des variables en cours d'exécution :
TRUE et FALSE.Cliquez ou faites un clic droit sur n'importe quelle étape du canevas de l'Éditeur de Séquence pendant la simulation pour la basculer entre active et inactive :
Connectez un modèle de procédé déclaratif en YAML ou scripté en JavaScript pour simuler automatiquement le retour matériel physique (comme des capteurs de fin de course de vérin réagissant aux sorties de distributeurs).
Définissez automationview.emulation.plantModel dans les paramètres de votre espace de travail avec le chemin relatif de votre fichier de procédé (par exemple "plant.yaml" ou "plant.mjs").
plant.yaml)Définissez des règles matérielles à l'aide des cinq comportements intégrés :
| Type de règle | Description |
|---|---|
follow |
Copie une expression source booléenne ou numérique vers une entrée après un délai optionnel delay |
bistable |
Simule un actionneur double effet (extend_cmd / retract_cmd) avec temps de course et capteurs de fin de course (extended, retracted, position) |
ramp |
Fait évoluer une valeur analogique vers une cible ou selon une pente entre les bornes min et max |
pulse_train |
Génère des impulsions périodiques tant qu'une variable enable est à TRUE |
counter |
Incrémente ou décrémente une valeur sur les fronts montants des déclencheurs up / down |
rules:
- type: follow
source: GripperCloseCmd
target: PartPresentSensor
delay: 200ms
- type: bistable
extend_cmd: CylExtend
retract_cmd: CylRetract
travel_time: 500ms
retracted: CylAtHome
extended: CylAtWork
plant.mjs)Pour une physique personnalisée ou des calculs multi-axes, exportez une fonction createPlant(api) depuis un module .mjs :
export function createPlant(api) {
return {
reset() {
api.set('TankLevel', 0);
},
step(dtMs) {
const filling = Boolean(api.get('FillValve'));
const level = Number(api.get('TankLevel') ?? 0);
const next = filling ? Math.min(100, level + dtMs * 0.05) : level;
api.set('TankLevel', next);
api.set('TankFull', next >= 100);
}
};
}
Exécutez des scripts de test reproductibles écrits en .yaml pour vérifier automatiquement le comportement de vos séquences.
.yaml dans l'Explorateur et sélectionnez AutomationView: Run Scenario, ou exécutez AutomationView: Run Scenario depuis la Palette de commandes.| Action | Exemple | Description |
|---|---|---|
set |
set: { StartBtn: true } |
Écrire une ou plusieurs valeurs de variables |
pulse |
pulse: { variable: StartBtn, duration: 100ms } |
Maintenir une variable à TRUE pendant une durée, puis la remettre à FALSE |
force |
force: { EmergencyStop: false } |
Forcer des variables à des valeurs fixes |
release |
release: [EmergencyStop] |
Libérer des variables forcées |
wait |
wait: 500ms |
Faire avancer la simulation pendant une durée ou un nombre de cycles (cycles: 5) |
wait_until |
wait_until: "Clamp.Step2.X == true" |
Faire avancer la simulation jusqu'à ce qu'une condition devienne TRUE (avec timeout: 2s) |
assert |
assert: "PartCounter == 1" |
Vérifier qu'une condition est vraie au cycle courant |
expect_active |
expect_active: [Main.Step10] |
Vérifier que des étapes spécifiques sont actuellement actives |
name: Clamp cycle verification
cycle_time: 50ms
steps:
- set:
StartBtn: true
PartDetected: true
- wait_until: "Main.ClampPart.X == true"
timeout: 1s
- expect_active:
- Main.ClampPart
- assert: "CylExtend == true"