> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/french/function-blocks/blocks-reference/data-logic/signal-operators/delay-step.md).

# Delay Step

Ce bloc de fonction décale le signal entrant d'une exécution (une étape). Il renvoie la valeur reçue précédemment sur la prise `Input` et met à jour sa mémoire interne avec l'entrée courante pour la prochaine exécution. Utilisez ce bloc lorsque vous avez besoin d'un décalage d'une étape dans le traitement des signaux ou pour rompre des boucles de rétroaction immédiates.

## 📥 Entrées

`Input` — Signal d'entrée générique à retarder. Accepte n'importe quel type de donnée.

## 📤 Sorties

`Output` — La valeur fournie lors de l'étape d'exécution précédente. Lors de la toute première exécution, cette valeur peut être vide (pas de valeur précédente).

## 🕹️ Contrôles

Aucun contrôle interactif ou widget pour ce bloc.

## ⚙️ Mécanisme d'exécution

À chaque cycle d'exécution, le bloc :

* Renvoie via `Output` la valeur qu'il a stockée lors du cycle précédent.
* Remplace la valeur stockée par l'`Input` courant pour l'utiliser lors du cycle suivant.

Ce comportement crée un délai stable d'une étape entre l'entrée et la sortie sans modifier le contenu du signal.

## 🎯 Fonctionnalités

* Délai simple et fiable d'une étape pour des données génériques.
* Utile pour créer des relations temporelles entre signaux.
* Aide à rompre les boucles de rétroaction immédiates dans les graphes nécessitant des mises à jour d'état séquentielles.

## 📝 Instructions d'utilisation

1. Connectez n'importe quel bloc producteur de signal à la prise `Input`.
2. Utilisez la prise `Output` là où vous avez besoin de la valeur de l'étape précédente.
3. Si la valeur vide du premier passage n'est pas acceptable, gérez-la avec un bloc tel que `Replace None` ou initialisez conditionnellement les données en amont.

## 💡 Astuces

* Combinez avec `Edge Rising` ou `Edge Falling` pour détecter des transitions en vous appuyant sur l'historique d'une étape (utile pour le rebond ou la détection de séquences).
* Utilisez avec `Set - Reset` ou `Counter` pour construire des machines à états simples ou une logique de comptage nécessitant l'information d'état précédent.
* Insérez avant des blocs logiques comme `And` / `Or` lorsque vous avez besoin d'aligner temporellement plusieurs signaux.
* Utilisez conjointement avec `Data Memory` ou `Data Write Local` / `Data Read Local` pour construire des systèmes à états plus complexes ou pour préserver des valeurs sur plusieurs étapes ou sous-systèmes.
* Placez avant `Demux` / `Mux` ou `Batch Processing` lorsque vous retardez des structures de données composites afin de garder l'alignement des séquences.
* Si votre flux de travail utilise des bascules manuelles, associez à `Logic Input` pour créer un timing manuel par étapes avec historique d'une étape.

## 🛠️ Dépannage

* La sortie apparaît vide au premier lancement : c'est normal. Pour éviter les problèmes, initialisez les données en amont ou utilisez `Replace None` pour substituer une valeur par défaut.
* Les signaux semblent désynchronisés : rappelez-vous que les sorties sont toujours en retard d'une étape par rapport aux entrées. Assurez-vous que les autres blocs du flux soient alignés ou insérez des blocs `Delay Step` supplémentaires si nécessaire.
* Boucles de rétroaction inattendues : utilisez ce bloc pour rompre les cycles immédiats ; l'ajout d'un délai d'une étape résout souvent les problèmes de stabilité et d'ordre d'exécution.
