// Ajouter une nouvelle watch tableVariable := Moteur.Vitesse; # Ajouter une variableMonitor := TRUE; # Surveiller en directForce := TRUE; # Forcer une valeurValue := 100; # Valeur forcéeForce := TRUE; # Activer le forçageValue := 1; # Valeur forcéeForce := FALSE; # Désactiver// 1. Ajouter un trace// 2. Sélectionner les variables à enregistrer// 3. Définir la durée et la fréquence// 4. Lancer l’enregistrement// Voir les pics de pression// Voir les oscillations PID// Voir les transitions d’états// Exporter les données pour analyse// OB121 = erreur dans un blocLogError();SetErrorFlag();ErrorCode := _ErrorID; # Code erreur// OB122 = erreur mémoireHandleMemoryFault();ErrorAddress := _FaultAddress;// Toujours logguer l’erreur// Toujours activer un flag d’erreur// Ne jamais tenter de corriger automatiquement// Documenter les erreurs dans un DB// Aller dans 'Diagnostic en ligne'// Voir les erreurs CPU// Voir les modules défaillants// Voir les alarmes systèmeModule.Status.Error; # Erreur moduleModule.Status.ErrorID; # Code erreurModule.Status.ChannelState; # État des canauxPN_Device.Status.Error; # Erreur appareilPN_Device.Status.ErrorID; # Code erreurPN_Device.Status.CommunicationState; # État communicationOPCUA_Server.Status.Active; # Serveur actifOPCUA_Server.Status.Errors; # Erreurs OPC UAMB_CLIENT.Status.Error; # Erreur ModbusMB_CLIENT.Status.Code; # Code erreur// Aller en ligne// Voir les blocs en vert// Surveiller les variables internes// Voir les transitions d’états// Ajouter un breakpoint dans SCL// Exécuter le programme// Le PLC s’arrête à la ligne définie// Surveiller les variables locales// Voir les appels de fonctions// Voir les exceptions TRY/CATCH// Toujours commencer par le diagnostic matériel// Utiliser les watch tables pour les tests rapides// Utiliser Trace pour les problèmes analogiques/PID// Documenter les erreurs dans un DB// Tester les OB d’erreur// Ne jamais déboguer directement dans OB1