Skip to main content

Diagnostic sur crash de visualisation

Un crash de visualisation peut avoir différentes causes. Dans la section suivante, vous apprendrez comment vous pouvez détecter les causes d'un plantage de visualisation et quelles actions sont judicieuses pour éviter un plantage.

Le Arrêter l'exécution des exceptions gérées commande vous aide lors de la vérification des erreurs. Exécutez la commande avant le démarrage de l'application.

Astuce

Par défaut, le Arrêter l'exécution des exceptions gérées La commande n'est disponible dans aucun menu, mais elle peut être configurée dans Outils → Personnaliser comme suit.

  1. Cliquez sur Outils → Personnaliser.

    Le Menu l'onglet s'ouvre. Vous devez d’abord définir une position dans le menu pour la commande. Dans ce cas, il est judicieux de sélectionner un élément sous le En ligne menu.

  2. Sélectionnez la position souhaitée et cliquez sur le Ajouter une commande bouton.

    Toutes les commandes sont répertoriées dans le Ajouter une commande dialogue.

  3. Sélectionnez le En ligne catégorie à gauche puis la commande souhaitée à droite. Cliquez sur D'ACCORD pour fermer la boîte de dialogue. Puis clique D'ACCORD encore une fois pour fermer le Personnaliser dialogue.

    Le Arrêter l'exécution des exceptions gérées la commande est désormais disponible dans le En ligne menu.

Pour une description détaillée de la procédure pour ajouter la commande, voir le chapitre "???".

Comme alternative à la Arrêter l'exécution sur les exceptions gérées commande, vous pouvez définir la définition du compilateur VISU_NO_EXCEPTION_HANDLING pour la candidature. Par conséquent, l'exception n'est pas détectée par la visualisation et le système de programmation indique l'emplacement où le système s'est écrasé.

Causes possibles du blocage d'une visualisation en cours d'exécution

. Causes possibles du blocage d'une visualisation en cours d'exécution
  • Dans la visualisation, un élément de cadre avec une variable d'interface avec une portée VAR_INPUT est utilisée, et cette variable d'interface (dans l'exemple : PLC_PRG._itfTest1, _itfTest1 : ITF_TEST;) n'a pas encore été attribué dans l'application.

_visu_img_crash_var_input.png
_visu_img_crash_frame_itf.png
  • Dans la visualisation, un élément frame avec une variable d'interface (dans l'exemple : fbTest) avec portée VAR_IN_OUT est utilisé et cette variable d'interface a un bloc fonctionnel comme type de données. Cependant, la variable transférée ne pointe pas vers ce bloc fonction.

_visu_img_crash_var_inout.png
_visu_img_crash_frame_fb.png
  • Division par 0: Dans une expression avec division, le diviseur (dans l'exemple : PLC_PRG.rVal2) ne doit pas être 0.

_visu_img_crash_div_zero.png
  • Utilisation de VAR_IN_OUT variables d'un bloc fonction dans la visualisation :

    Si variables avec portée VAR_IN_OUT sont déclarées dans un bloc fonction, une visualisation ne peut accéder à ces variables qu'après que le programme a appelé le bloc fonction et que VAR_IN_OUT variables ont été affectées dans un bloc fonction.

  • Utilisation de pointeurs zéro et de références zéro : Une variable pointeur ne doit pas être nulle (exemple : PLC_PRG.pValue^).

  • Erreur dans le code interne ; ceci n'est visible que dans la pile des appels.

Marche à suivre pour éviter ces erreurs

. Marche à suivre pour éviter ces erreurs
  • Utilisez des interfaces qui pointent initialement vers des objets factices.

  • Appel Visu_Prg dans le projet uniquement lorsque toutes les initialisations ont été effectuées.

  • Utiliser l'opérateur SEL comme dans l'exemple suivant : SEL(ptr<>0,0,ptr^.<>value)