Validation et enregistrement
Lors de l'enregistrement, chaque fonction modifiée est vérifiée :
- Entrée obligatoire non reliée — un port obligatoire n'a pas de source.
- Incohérence de type — une liaison dont les types ne correspondent pas (sans conversion choisie).
- Cible interdite — une sortie pointant vers un objet sur lequel elle ne doit pas écrire.
- Boucle sans bloc temporisateur — une boucle de rétroaction qui s'exécuterait indéfiniment ; insérez un bloc temporisateur pour la valider.
L'enregistrement est toujours autorisé — mais une fonction qui échoue à la validation est enregistrée désactivée (« désactivée par la validation ») et ne s'exécute pas tant qu'elle n'est pas corrigée. Le résultat est signalé (« Enregistré. Une fonction présente des problèmes et reste désactivée. ») et le panneau de validation liste chaque anomalie en ciblant précisément la carte, le port ou la liaison concernée.
📘 Note : Ce comportement est intentionnel : vous pouvez enregistrer une feuille de travail en cours en fin de journée sans perturber ce qui fonctionne déjà.

Surveillance et maintenance
Passez la zone de travail en mode Surveillance pour observer l'exécution des logiques : les valeurs en direct s'affichent sur les ports et les liaisons, et chaque carte reçoit un pied d'état :
| État | Signification |
|---|---|
| OK | Fonctionnement normal ; affiche l'heure de la dernière exécution. |
| SUSPENDED | Une dérogation manuelle depuis l'application a mis la fonction en pause (un occupant a manœuvré le volet roulant à la main). Affiche le décompte et un bouton Reprendre maintenant. |
| DISABLED | Désactivée — par l'utilisateur ou par la validation. |
| ERROR | Problème explicite — par ex. entrée inactive : « capteur muet depuis 18 min — sortie maintenue ». |
Historique d'exécution. Ouvrez l'historique d'une fonction pour examiner ses dernières exécutions — chacune avec ses valeurs d'entrée et les sorties générées — et exportez le journal. C'est la réponse à la question « pourquoi les volets roulants ont-ils bougé à 14:02 ? ».
Test / simulation. Pour tester sans attendre les conditions réelles, forcez une valeur d'entrée :
- Ouvrez la boîte de dialogue de test de la fonction et sélectionnez le port d'entrée.
- Saisissez la valeur forcée et une durée de Rétablissement après (15 minutes par défaut, 1 heure maximum).
- Cliquez sur Forcer la valeur. Le port est marqué SIM ; la liaison réelle sous-jacente reste intacte.
Le serveur rétablit automatiquement la valeur forcée selon son propre temporisateur — fermer l'onglet du navigateur ne laisse pas une simulation active — et le début ainsi que la fin de la simulation figurent dans l'historique d'exécution.
Suppression d'une fonction. La suppression affiche d'abord une boîte de dialogue d'impact : les fonctions qui consomment ses sorties et les widgets matérialisés qu'elle a créés — pour chaque widget, vous choisissez de le conserver (il devient un appareil virtuel standard) ou de le supprimer également.

Mécanismes de sécurité
Le moteur protège l'installation contre les erreurs de logique :
- Rupture de boucle — une limite de profondeur de propagation arrête les chaînes qui bouclent à travers les appareils pour empêcher une exécution infinie.
- Limitation de débit — une fonction qui s'emballe (20 exécutions en 10 secondes) est automatiquement suspendue pendant 60 secondes et signalée en mode Surveillance, au lieu d'inonder le bus.
- Dimensionnement — la recommandation indicative est d'environ 200 fonctions par installation. Au-delà, privilégiez la consolidation (une seule Valeur calculée avec 8 entrées au lieu d'une arborescence d'additions) et vérifiez si certaines logiques ne doivent pas être traitées directement dans les appareils.
📘 Note : Ces mécanismes limitent les anomalies ; ils ne remplacent pas la conception. Tout élément devant obligatoirement rester sécurisé en cas de panne (vent, gel) doit également être protégé directement dans les paramètres de l'actionneur.