Skip to main content

Utilizzo dei punti di interruzione

I punti di interruzione sono comunemente usati per il debug dei programmi. CODESYS supporta i punti di interruzione in tutti gli editor IEC.

È possibile impostare punti di interruzione in posizioni specifiche del programma per forzare l'arresto dell'esecuzione e per monitorare i valori delle variabili. È possibile impostare speciali "punti di interruzione dei dati" per interrompere l'esecuzione del programma quando il valore di una variabile specifica cambia.

L'arresto in corrispondenza di un punto di interruzione o di un punto di interruzione dei dati può essere collegato a condizioni aggiuntive. Puoi anche ridefinire i punti di interruzione e i punti di interruzione dei dati come "punti di esecuzione" in cui viene eseguito codice specifico invece di arrestare il programma.

Suggerimento

Il Punti di interruzione view fornisce una panoramica di tutti i punti di interruzione definiti. Include anche comandi aggiuntivi per l'elaborazione delle modifiche batch in più punti di interruzione.

Nell'editor, i seguenti simboli identificano lo stato di un punto di interruzione o di un punto di esecuzione:

  • _cds_icon_breakpoint_activated.png: Il punto di interruzione è abilitato.

  • _cds_icon_breakpoint_deactivated.png: Il punto di interruzione è disabilitato.

  • _cds_icon_breakpoint_in_other_instance.png: Il punto di interruzione viene impostato in un'altra istanza della POU aperta nell'editor.

  • _cds_icon_breakpoint_halt.png: Il programma si ferma al punto di interruzione.

  • _cds_icon_breakpoint_conditional_activated.png: Il punto di interruzione con condizione è abilitato.

  • _cds_icon_breakpoint_conditional_deactivated.png: Il punto di interruzione con condizione è disabilitato.

  • _cds_icon_executionpoint_activated.png: Il punto di esecuzione è abilitato.

  • _cds_icon_executionpoint_deactivated.png: Il punto di esecuzione è disabilitato.

  • _cds_icon_executionpoint_conditional_activated.png: Il punto di esecuzione con condizione è abilitato.

  • _cds_icon_executionpoint_conditional_deactivated.png: Il punto di esecuzione con condizione è disabilitato.

  • _cds_icon_data_breakpoint_activated.png: Il punto di interruzione dei dati è abilitato.

  • _cds_icon_data_breakpoint_disabled.png: Il punto di interruzione dei dati è disabilitato.

  • _cds_icon_data_breakpoint_halt.png: Il programma si ferma al punto di interruzione dei dati.

  • _cds_icon_data_execution_point_enabled.png: Il punto di esecuzione dei dati è abilitato.

  • _cds_icon_data_execution_point_disabled.png: Il punto di esecuzione dei dati è disabilitato.

  • _cds_icon_data_executionpoint_halt.png: Il programma si ferma al punto di esecuzione dei dati.

  • _cds_icon_data_executionpoint_cond_activated.png: Il punto di esecuzione dati con condizione è abilitato.

  • _cds_icon_data_breakpoint_cond_activated.png: Il punto di interruzione dei dati con la condizione è abilitato.

Per ulteriori informazioni, vedere: Punti di interruzione

Punti di interruzione dei dati

Suggerimento

La funzione dei punti di interruzione dei dati dipende dal sistema di destinazione. Attualmente, i punti di interruzione dei dati sono possibili solo con il CODESYS Control Win.

L'esecuzione del programma si interrompe a un punto di interruzione dei dati quando il valore di una particolare variabile o indirizzo di memoria cambia. Come per i punti di interruzione "normali", l'arresto può essere collegato a una condizione aggiuntiva oppure è possibile elaborare codice specifico al posto dell'arresto (convertito in un punto di esecuzione dati).

È possibile impostare un punto di interruzione dei dati tramite Nuovo punto di interruzione dei dati comando nel Debug menu o tramite il Nuovo pulsante nel Punti di interruzione Visualizza. Specificare direttamente un nome di variabile qualificato o un indirizzo di memoria che deve essere monitorato per le modifiche al suo valore.

Esempio 37. Esempio

Nel codice di esempio seguente, la memoria della variabile iNumber viene sovrascritto involontariamente. Tuttavia, un punto di interruzione dei dati nella variabile iNumber rileverà quando il suo valore cambia. L'elaborazione si interrompe quindi con un messaggio corrispondente all'accesso all'array, che sovrascrive il valore della variabile: Idx = 7.

Vedi anche sotto: "Impostazione di un punto di interruzione dei dati"

PROGRAM PLC_PRG
VAR
  Idx : INT;
  Ary : ARRAY[0..3] OF BYTE;
  iNumber : INT := 55;
END_VAR
FOR idx := 0 TO 6 DO
  Ary[idx] := 0;
END_FOR


Punti di interruzione nelle applicazioni con più attività

Fondamentalmente, il debug non è possibile per più attività contemporaneamente. Mentre si lavora su un'attività con punti di interruzione o a passi, i punti di interruzione vengono ignorati in altre attività.

Se una POU contenente un punto di interruzione viene utilizzata da più attività, solo l'attività ("attività di debug") viene interrotta perché raggiunge prima il punto di interruzione. Tutti gli altri compiti continuano. Il Pila di chiamate la finestra di dialogo mostra quale attività è attualmente interrotta.

Se è necessario che un punto di interruzione influisca solo su un'attività specifica, è possibile definirlo nelle proprietà del punto di interruzione.

I punti di interruzione funzionano separatamente per ciascuna applicazione in modo che un "HALT ON BP" non influisca su altre applicazioni. Ciò vale anche per le applicazioni padre/figlio, anche se il punto di interruzione è impostato in un blocco utilizzato da più applicazioni e il cui codice si trova una sola volta sul PLC.

Importante

Gli I/O richiamati dall'"attività di debug" non vengono aggiornati in modo interrotto nel punto di interruzione, anche se si seleziona il Aggiorna I/O in Stop casella di controllo nelle impostazioni del PLC.

Suggerimento

Se l'applicazione si arresta a un punto di interruzione sul PLC, una modifica o un download in linea provoca l'interruzione di tutte le attività, il che significa che il PLC si arresterà. In questo caso, CODESYS ti chiede se continuare o meno con il login.

Impostazione di un singolo punto di interruzione (esempio nell'editor ST)

Requisito: l'applicazione è in modalità online e in esecuzione. La modalità operativa è Debug.

  1. Nell'editor, aprire una POU programmata in testo strutturato (ST).

  2. Posizionare il cursore sulla riga in cui verrà impostato un punto di interruzione.

  3. Clic Debug → Attiva/disattiva punto di interruzione oppure premere il F9 chiave.

    La linea è segnata in rosso e identificata dal _cds_icon_breakpoint_activated.png simbolo (punto di interruzione abilitato). Se il programma viene interrotto al punto di interruzione, la riga viene contrassegnata da _cds_icon_breakpoint_halt.png simbolo (arresto al punto di interruzione). L'elaborazione del programma viene interrotta. Questo è identificato nella riga di stato dal HALT ON BP stato evidenziato in rosso.

  4. Clic Debug → Avvia oppure premere il F5 chiave.

    Il programma continua.

  5. Imposta più punti di interruzione e controlla i valori delle variabili nella posizione di interruzione.

  6. Posizionare il cursore sulla riga in cui rimuovere un punto di interruzione.

  7. Clic Eseguire il debug → Attiva/disattiva punto di interruzione oppure premere il F9 chiave.

    La marcatura scompare. Il punto di interruzione viene eliminato.

Definizione di una condizione di punto di interruzione (esempio nell'editor ST)

  1. Nell'editor, aprire una POU programmata in testo strutturato (ST).

  2. Posizionare il cursore sulla riga in cui verrà impostato un punto di interruzione.

  3. Clic Debug → Nuovo punto di interruzione.

    Il Nuovo punto di rottura si apre la finestra di dialogo.

  4. Clicca il Condizione scheda.

  5. Clic Interrompi quando il numero di colpi è un multiplo di nel Conteggio colpi casella di riepilogo.

    Specificare il valore "5" nel campo a destra.

  6. Inoltre, puoi definire una condizione booleana per quando il punto di interruzione dovrebbe essere attivo. Seleziona il Rompi, quando è vero casella di controllo. Specificare una variabile booleana nel campo di testo a destra.

  7. Seleziona il Abilita immediatamente il punto di interruzione casella di controllo.

  8. Chiudi la finestra di dialogo.

    La linea è contrassegnata in rosso e identificata dal _cds_icon_breakpoint_conditional_activated.png simbolo.

Monitorare il programma in esecuzione. Finché la variabile booleana per la condizione è FALSE, la condizione del punto di interruzione non è soddisfatta e il programma continua a essere eseguito. Se imposti la variabile su TRUE, allora la condizione è soddisfatta e il programma si ferma al punto di interruzione ogni 5 passaggi.

Definizione di un punto di esecuzione (esempio nell'editor ST)

  1. Nell'editor, aprire una POU programmata in testo strutturato (ST).

  2. Posizionare il cursore nella posizione di un punto di esecuzione.

  3. Clic Debug → Nuovo punto di interruzione.

    Il Nuovo punto di rottura si apre la finestra di dialogo.

  4. Clicca il Impostazioni del punto di esecuzione scheda.

  5. Seleziona il Punto di esecuzione opzione.

    Nel Esegui il codice seguente campo, specificare la seguente istruzione:

    iCounter := iCounter + 1;

    Nel Stampa un messaggio nel registro del dispositivo campo, specificare il seguente testo:

    Execution point reached {iCounter}

  6. Chiudi la finestra di dialogo.

Quando il programma raggiunge il punto di esecuzione, non si ferma, ma esegue il codice sopra definito. Inoltre. viene inviato un messaggio al registro del dispositivo.

Impostazione di un punto di interruzione dei dati

Requisito: l'applicazione è in modalità online e in esecuzione.

  1. Clic Visualizza → Punti di interruzione.

  2. Clic Debug → Nuovo punto di interruzione dei dati.

  3. Nel Nuovo punto di interruzione dialogo, sul Dati scheda, fare clic su _cds_icon_input_assistent.png pulsante.

  4. Nel Assistente all'immissione dialogo (Guarda Variabili scheda), selezionare le variabili per le quali il programma deve arrestarsi quando viene modificato.

    In alternativa, specificare il nome completo della variabile in Dati scheda direttamente nella riga di input. Esempio: PLC_PRG.iNumber. Il numero esatto di byte da monitorare è specificato come Misurare. Per impostazione predefinita, qui viene impostato automaticamente un valore che corrisponde al tipo di dati. È inoltre possibile specificare un minor numero di byte da monitorare.

  5. Nel Punti di interruzione visualizzare, selezionare la riga con il punto di interruzione dei dati e fare clic su _cds_icon_breakpoint_activated_deactivate.png pulsante.

    La linea è contrassegnata e identificata dal _cds_icon_data_breakpoint_activated.png simbolo (punto di interruzione dati abilitato). Quando il programma raggiunge il punto di interruzione dei dati (ovvero quando cambia il valore delle variabili selezionate), l'elaborazione del programma si interrompe. Nella parte di implementazione della POU, la riga successiva è identificata da una freccia _cds_icon_data_executionpoint_halt.png. Questo è identificato nella riga di stato dal HALT ON BP stato evidenziato in rosso.

  6. Clic Debug → Avvia oppure premere il F5 chiave.

    Il programma continua a funzionare e si interrompe nuovamente quando il valore delle variabili cambia nuovamente.