Skip to main content

Diagnosi in caso di arresto anomalo della visualizzazione

Un arresto anomalo della visualizzazione può avere diverse cause. Nella sezione seguente imparerai come rilevare le cause di un arresto anomalo della visualizzazione e quali azioni hanno senso per prevenire un arresto anomalo.

IL Arresta l'esecuzione sulle eccezioni gestite comando ti aiuta durante il controllo degli errori. Eseguire il comando prima dell'avvio dell'applicazione.

Suggerimento

Per impostazione predefinita, il Arresta l'esecuzione sulle eccezioni gestite il comando non è disponibile in nessun menu, ma può essere configurato in Strumenti → Personalizza come segue.

  1. Fare clic su Strumenti → Personalizza.

    IL Menù si apre la scheda. Per prima cosa è necessario definire una posizione nel menu per il comando. In questo caso ha senso selezionare un elemento sotto il file in linea menù.

  2. Selezionare la posizione desiderata e fare clic su Aggiungi comando pulsante.

    Tutti i comandi sono elencati nel file Aggiungi comando dialogo.

  3. Seleziona il in linea categoria a sinistra e poi il comando desiderato a destra. Clic OK per chiudere la finestra di dialogo. Quindi fare clic OK di nuovo per chiudere il personalizzare dialogo.

    IL Arresta l'esecuzione sulle eccezioni gestite il comando è ora disponibile nel file in linea menù.

Per una descrizione dettagliata della procedura per aggiungere il comando vedere il capitolo "???".

In alternativa al Interrompi l'esecuzione in caso di eccezioni gestite comando, è possibile impostare la definizione del compilatore VISU_NO_EXCEPTION_HANDLING per l'applicazione. Di conseguenza, l'eccezione non viene rilevata dalla visualizzazione e il sistema di programmazione mostra la posizione in cui il sistema è andato in crash.

Possibili cause dell'arresto anomalo di una visualizzazione in esecuzione

. Possibili cause dell'arresto anomalo di una visualizzazione in esecuzione
  • Nella visualizzazione, un elemento frame con una variabile di interfaccia con scope VAR_INPUT viene utilizzata e questa variabile di interfaccia (nell'esempio: PLC_PRG._itfTest1, _itfTest1 : ITF_TEST;) non è stato ancora assegnato nella domanda.

_visu_img_crash_var_input.png
_visu_img_crash_frame_itf.png
  • Nella visualizzazione, un elemento frame con una variabile di interfaccia (nell'esempio: fbTest) con portata VAR_IN_OUT viene utilizzato e questa variabile di interfaccia ha un blocco funzione come tipo di dati. Tuttavia, la variabile trasferita non punta a questo blocco funzione.

_visu_img_crash_var_inout.png
_visu_img_crash_frame_fb.png
  • Divisione per 0: In un'espressione con divisione, il divisore (nell'esempio: PLC_PRG.rVal2) non deve essere 0.

_visu_img_crash_div_zero.png
  • Uso di VAR_IN_OUT variabili di un blocco funzione nella visualizzazione:

    Se variabili con ambito VAR_IN_OUT sono dichiarati in un blocco funzione, una visualizzazione può accedere a queste variabili solo dopo che il programma ha chiamato il blocco funzione e il VAR_IN_OUT variabili sono state assegnate in un blocco funzione.

  • Utilizzo di puntatori zero e riferimenti zero: una variabile puntatore non deve essere zero (esempio: PLC_PRG.pValue^).

  • Errore nel codice interno; questo è visibile solo nello stack di chiamate.

Linea di azione per prevenire questi errori

. Linea di azione per prevenire questi errori
  • Utilizzare interfacce che inizialmente puntano a oggetti fittizi.

  • Chiamata Visu_Prg nel progetto solo quando tutte le inizializzazioni sono state eseguite.

  • Usa l'operatore SEL come nel seguente esempio: SEL(ptr<>0,0,ptr^.<>value)