> 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/flow-control/subsystem.md).

# Subsystem

Ce bloc de fonction agit comme un conteneur de workflow autonome. Utilisez-le pour regrouper des étapes de traitement liées dans un espace de travail séparé et modifiable afin que les scénarios complexes restent organisés et plus faciles à gérer.

## 📥 Entrées <a href="#inputs" id="inputs"></a>

`No default inputs`\
Ce bloc ne déclare pas d'entrées par lui‑même. Les entrées peuvent être créées en ajoutant des prises d'entrée à l'intérieur de l'espace de travail du sous‑système et en les exposant sur la bordure du bloc.

## 📤 Sorties <a href="#outputs" id="outputs"></a>

`No default outputs`\
Ce bloc ne déclare pas de sorties par lui‑même. Les sorties sont définies par les blocs enfants placés à l'intérieur du sous‑système et exposées comme sorties du sous‑système.

## 🕹️ Contrôles <a href="#controls" id="controls"></a>

`Open Subsystem Editor`\
Ouvre l'espace de travail du sous‑système pour ajouter ou modifier le workflow contenu. (Généralement disponible par double‑clic sur le bloc ou via le menu contextuel du bloc.)

`Expose Input`\
Crée une prise d'entrée à l'intérieur du sous‑système et l'expose sur la bordure du bloc pour que le flux parent puisse fournir des données.

`Expose Output`\
Crée une prise de sortie à l'intérieur du sous‑système et l'expose sur la bordure du bloc pour renvoyer les résultats au flux principal.

`Run / Debug Inside`\
Exécute et débogue le workflow contenu indépendamment du scénario principal pour valider son comportement.

## 🎯 Principales fonctionnalités <a href="#features" id="features"></a>

* Encapsulation : regroupez les étapes de prétraitement, détection, suivi et export en une seule unité réutilisable.
* Espace de travail local : le sous‑système dispose de sa propre toile modifiable pour concevoir un comportement complexe sans encombrer le flux principal.
* Frontières claires : exposez uniquement les entrées et sorties nécessaires, en gardant le graphe principal simple.
* Tests isolés : ouvrez et exécutez l'espace de travail du sous‑système pour déboguer ou valider les sous‑flux indépendamment.
* Réutilisabilité : créez un sous‑système testé une fois, puis réutilisez‑le dans plusieurs projets.

## ⚙️ Fonctionnement <a href="#running-mechanism" id="running-mechanism"></a>

* Lorsque le scénario s'exécute, le sous‑système exécute son workflow interne.
* Les données entrent dans le sous‑système via les prises d'entrée que vous avez exposées à l'intérieur.
* Les blocs enfants à l'intérieur du sous‑système calculent leurs résultats en séquence.
* Les sorties exposées à l'intérieur du sous‑système sont récupérées et renvoyées au flux parent comme sorties du bloc.
* Si un bloc enfant signale une erreur ou un état invalide, le sous‑système reflétera ce statut afin que vous puissiez localiser et corriger le problème dans l'espace de travail.

## 📝 Guide d'utilisation <a href="#usage" id="usage"></a>

1. Ajoutez un bloc `Subsystem` à votre flux principal pour contenir une séquence complexe (acquisition → traitement → export).
2. Ouvrez l'espace de travail du sous‑système (`Open Subsystem Editor`) et ajoutez les blocs nécessaires.
3. À l'intérieur du sous‑système, exposez uniquement les entrées et sorties requises par le flux parent.
4. Testez le sous‑système indépendamment en utilisant les contrôles internes d'exécution/débogage avant de l'intégrer au scénario principal.
5. Réutilisez ou dupliquez des sous‑systèmes pour des tâches similaires afin d'accélérer le développement.

## 💡 Astuces <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Regroupez une chaîne complète de caméra dans un sous‑système : utilisez `Camera USB` ou `Camera IP (ONVIF)` → blocs de prétraitement comme `Image Resize` / `Blur` → détecteurs tels que `Object Detection` ou `Find Object` → visualisation avec `Draw Detections` → stockage avec `Image Logger` ou `Image Write`.
* Pour les flux de suivi, placez `Object Detection` (ou `Object Detection - Custom`) et `Object_Detection_Tracker` dans un même sous‑système pour conserver la logique de suivi et le post‑traitement ensemble.
* Encapsulez les étapes lourdes d'IA comme `Super Resolution`, `Depth Estimation (DepthAny. V2)` ou `Background Removal (RMBG-1.4)` dans des sous‑systèmes pour pouvoir activer/désactiver ou remplacer des modèles sans perturber le flux principal.
* Utilisez des sous‑systèmes pour implémenter une analyse en plusieurs étapes : par ex. sélection ROI avec `Image ROI Select` → analyse de forme avec `Find Contour` / `Measure Position Distance` → formatage des résultats avec `Data to JSON`.
* Pour l'analyse d'intersections ou de trafic, gardez la détection et le suivi dans un sous‑système et l'agrégation/export (par ex. le bloc `Traffic Intersection Analysis` ou `CSV Export`) dans un autre pour séparer les responsabilités.
* Pour le passage de données et l'état local, combinez les sous‑systèmes avec `Data Write Local` et `Data Read Local` pour conserver une mémoire locale sans polluer le flux global.
* Lors du dépannage, ouvrez le sous‑système et exécutez uniquement son contenu pour identifier rapidement quel bloc interne génère des sorties invalides ou inattendues.

## 🛠️ Dépannage <a href="#troubleshooting" id="troubleshooting"></a>

* `No outputs appearing`\
  Vérifiez que vous avez exposé des sorties à l'intérieur du sous‑système. Si rien n'est exposé, le bloc ne renverra pas de données au flux parent.
* `Inputs not received`\
  Assurez‑vous d'avoir créé et exposé des prises d'entrée à l'intérieur du sous‑système et que le flux parent est connecté à ces entrées exposées.
* `Child block reports invalid`\
  Ouvrez l'espace de travail du sous‑système et inspectez les blocs enfants. Les erreurs à l'intérieur du sous‑système apparaîtront là‑bas — corrigez la configuration du bloc enfant ou remplacez le bloc problématique.
* `Performance issues`\
  Si le sous‑système contient des traitements lourds (modèles IA, super‑résolution, opérations sur de grands ensembles), envisagez de profiler à l'intérieur du sous‑système et de déplacer les traitements non essentiels vers des sous‑systèmes séparés et à la demande.
* `Need to reuse or version`\
  Dupliquez le sous‑système et conservez une copie testable. Cela permet d'essayer différents paramètres ou modèles sans affecter le flux en production.
