Debugger grafico

ISaGRAF incorpora un completo debugger grafico e simbolico. Il comando "Debug" della finestra Programmi avvia il debugger per controllare l'applicazione scaricata sul PLC destinazione. In questo modo il debugger comunica con il sistema destinazione tramite collegamento hardware. Il comando "Simulazione" della finestra Programmi avvia contemporaneamente il debugger ed un completo simulatore del target. Questo permette di controllare le applicazioni anche quando il sistema di I/O del target non sia ancora completo. La finestra Debugger contiene i comandi per controllare l'intera applicazione.

La finestra del debugger

Controllo dell'applicazione

Opzioni

Comandi "Scrittura"

Modifica on line

Scambi DDE

Quando viene avviato, il debugger, se l'applicazione del PLC destinazione è la stessa di quella dell'ambiente di lavoro, provvede ad aprire automaticamente la finestra Programmi in modalità debug. I comandi di questa finestra permettono di aprire le altre finestre ISaGRAF (editor grafici e testuali, il dizionario, elenchi di variabili, connessioni di I/O…). Tutte la finestre aperte durante una sessione di debug operano in modalità debug, il che significa che non è possibile apportare modifiche. I componenti del programma visualizzato (passi, transizioni, variabili…) vengono mostrati con lo stato o valore corrente che hanno in esecuzione. Un doppio click su un oggetto ne modifica lo stato o il valore nell'applicazione destinazione.

Eseguendo il debugger in modalità simulazione, le comunicazioni con il sistema destinazione ISaGRAF vengono interrotte. Il debugger comunica solamente con la finestra del simulatore. Poiché il sistema destinazione non è raggiungibile in questa modalità, i comandi "Scarica applicazione", "Avvia applicazione" e "Ferma applicazione" o non sono disponibili nel menù del debugger.


La finestra del debugger

La finestra Debugger contiene informazioni relative allo stato dell'applicazione. Collegata alle altre finestre ISaGRAF diventa un completo sistema interattivo di debug. Gli errori rilevati in esecuzione vengono mostrati nell'area in basso della finestra Debugger. I comandi del menù "Opzioni" permettono di nascondere, visualizzare o cancellare l'elenco degli errori.

Il pannello di controllo (l'area posta sotto al menù del debugger) mostra lo stato globale dell'applicazione destinazione ed informazioni relative al tempo ciclo di esecuzione. Quello seguente è l'elenco dei possibili stati che può assumere il target:

Collegamento…:	Il debugger stabilisce una comunicazione con il sistema target.

Disconnesso:	Il debugger non riesce a comunicare con il sistema target. Controllare la validità dei cavi di connessione e dei parametri di comunicazione.

Nessuna applicazione:	La connessione funziona, ma non sono attualmente presenti applicazioni ISaGRAF sul sistema target. Scaricare un'applicazione.

'nome' Attivo:	La connessione funziona ed esiste un'applicazione attiva sul sistema target. Il debugger sta stabilendo la comunicazione con l'applicazione, se è la stessa dell'ambiente di lavoro...

IN ESECUZIONE:	L'applicazione target è in modalità "Tempo Reale".

FERMO:	L'applicazione target è in modalità "Ciclo a ciclo".

BreakPoint:	L'applicazione target è in modalità "Ciclo a ciclo" poiché è stato raggiunto un breakpoint.

Errore fatale:	L'applicazione target è terminata a causa di un grave errore.

Le possibili informazioni sul tempo ciclo di esecuzione sono le seguenti:

Permesso:	timing programmato.

Corrente:	timing esatto dell'ultima esecuzione completa del ciclo.

Massimo:	massimo timing rilevato dall'avvio dell'applicazione.

Overflow:	numero di cicli di esecuzione con un timing superiore al timing permesso.

Tutti i valori temporali sono in millisecondi. I valori temporali non vengono visualizzati quando il debugger viene usato in modalità simulata.


Controllo dell'applicazione

Il menù "File" ed il menù "Controlli" contengono i comandi per l'installazione ed il controllo sul sistema ISaGRAF target dell'applicazione ISaGRAF correntemente in modifica.

Nota:	Alcuni di questi comandi non sono disponibili in fase di simulazione, poiché l'applicazione processata dal simulatore viene gestita automaticamente dall'ambiente ISaGRAF.

Fermare l'applicazione target

Attivare l'applicazione target

Trasferire l'applicazione

Numero di versione

Modifica on line

Modalità tempo reale

Modalità ciclo a ciclo

Esegui un ciclo

Tempo di ciclo

Rimozione di tutti i breakpoint

Sbloccare le variabili I/O


Fermare l'applicazione target

Il comando "File / Ferma applicazione" ferma l'esecuzione dell'applicazione correntemente attiva nel sistema target ISaGRAF.


Attivare l'applicazione target

Il comando "File / Avvia applicazione" avvia l'applicazione che si trova nel sistema target. Quando un'applicazione viene scaricata, viene avviata automaticamente, senza bisogno di usare il comando "Avvia", che viene, invece, tipicamente usato dopo il comando "Ferma".

Nota:	l'applicazione target deve essere fermata (resa inattiva) prima di poter scaricare una nuova applicazione.


Trasferire l'applicazione

Il comando "File / Scarica applicazione" permette di trasferire il codice dell'applicazione al sistema target. Selezionare il tipo di codice da scaricare in base al processore del sistema target ed alle opzioni dell'applicazione.


Numero di versione

Il comando "File / Numero di versione" permette di vedere l'identificazione completa sia dell'ambiente di lavoro che delle applicazioni target. L'applicazione di lavoro è quella correntemente aperta nell'ambiente di lavoro ISaGRAF. L'applicazione target è quella che viene eseguita sul PLC target ISaGRAF. Vengono visualizzate le seguenti voci:

VERSIONE:	Rappresenta il numero di versione del codice dell'applicazione. Questo numero viene calcolato dal generatore di codice.

DATA:	Questa voce mostra data ed ora della creazione del codice.

CRC:	Questo è un checksum (numero di verifica) calcolato sulla tavola dei simboli. Questo numero viene calcolato dal generatore di codice e dipende dai contenuti del dizionario delle variabili.

Nota:	Il comando "Numero di versione" è disponibile anche durante la simulazione. In modalità debug reale, questo comando non può essere richiamato senza che il target PLC sia connesso.


Modifica on line

Il comando "File / Aggiornamento applicazione" permette di modificare "on line" l'applicazione target in esecuzione. Questo comando viene trattato in dettaglio nelle sezioni successive di questo capitolo. Non è disponibile quando il debugger viene usato in modo simulazione.


Modalità tempo reale

Il comando "Controlli / Tempo reale" non è disponibile senza un'applicazione attiva. Imposta l'esecuzione dell'applicazione target nella normale modalità "tempo reale": i cicli di esecuzione vengono scanditi dal tempo ciclo programmato.


Modalità ciclo a ciclo

Il comando "Controlli / Ciclo per ciclo" non è disponibile senza un'applicazione attiva. Imposta l'esecuzione dell'applicazione target nella normale modalità "ciclo per ciclo": in questa modalità i cicli vengono eseguiti uno ad uno, in base ai comandi "Esegui un ciclo" dati dal menù del debugger.


Esegui un ciclo

Quando l target si trova in modalità ciclo a ciclo, il comando "Controlli / Esegui un ciclo" avvia l'esecuzione di un ciclo.


Tempo di ciclo

Il comando "Controlli / Cambia il tempo di ciclo" permette di modificare il tempo ciclo programmato. Questo tempo viene visualizzato come "Permesso" nella barra di controllo della finestra del debugger. Il tempo ciclo può essere modificato solo in modalità "Ciclo per ciclo". Il tempo ciclo viene inserito in milli-secondi come numero intero.


Rimozione di tutti i breakpoint

Il comando "Controlli / Elimina tutti i breakpoint" rimuove tutti i breakpoint correntemente installati (raggiunti o ancora attivi) in tutta l'applicazione. I breakpoint esistenti non vengono automaticamente rimossi alla chiusura della finestra del debugger.


Sbloccare le variabili I/O

Il comando "Controlli / Sblocca tutte le variabili di I/O" sblocca tutte le variabili di I/O correntemente bloccate nell'applicazione. Quando una variabile di I/O è bloccata, nessun cambiamento di stato in ingresso o in uscita viene effettuato sul corrispondente dispositivo di I/O. Le variabili assegnate agli I/O vengono ancora scritte dall'applicazione o dal debugger. Le variabili ancora bloccate non vengono automaticamente sbloccate alla chiusura della finestra del debugger.


Opzioni

Il menu "Opzioni" contiene le opzioni per controllare le informazioni visualizzate nella finestra del debugger.

Parametri di comunicazione

Opzioni di visualizzazione


Parametri di comunicazione

I parametri di temporizzazione di comunicazione possono essere modificati quando il debugger è attivo. Da qui possono essere impostati solo il Time out di comunicazione e il Tempo di rinfresco. Gli altri parametri di comunicazione (baudrate, frequenza, parità…) devono essere impostati dal menù "Debug" della finestra Programmi.

Per Time out di comunicazione si intende il tempo lasciato al sistema destinazione per rispondere ad una richiesta dell'ambiente di lavoro. Il Tempo di rinfresco è il periodo di tempo utilizzato per l'INVIO delle richieste "di lettura" da parte del debugger per l'aggiornamento dei dati nelle finestre aperte.

Tutti i valori temporali vengono visualizzati ed inseriti come numeri interi in milli-secondi. Non è possibile impostare i parametri temporali di comunicazione con il debugger in modalità simulazione.


Opzioni di visualizzazione

L'opzione "Visualizza tempi di ciclo" nasconde o mostra i valori del tempo ciclo nella barra di controllo del debugger. Quando questa opzione è abilitata, tutti i componenti del tempo ciclo (permesso, corrente, massimo, overflow) vengono visualizzati ed aggiornati. Disabilitando questa opzione si riduce il carico di comunicazione del debugger.

Quando l'opzione "Visualizza errori" è abilitata, gli errori di esecuzione rilevati vengono elencati nell'area inferiore della finestra del debugger. Quando questa opzione e disabilitata, la lista degli errori viene chiusa. Disabilitando questa opzione, si riduce il carico di visualizzazione e comunicazione del debugger. Il comando "Opzioni / Cancella errori" azzera l'elenco degli errori di esecuzione correntemente visualizzato nella finestra del debugger.

Il comando "Opzioni / Minimizza finestra" riduce la dimensione della finestra del debugger che viene visualizzata come un piccolo pannello sempre in primo piano contenente lo stato dell'applicazione e dei pulsanti grafici per i comandi più frequentemente usati.


Comandi "Scrittura"

Il debugger simbolico ISaGRAF offre molti comandi per cambiare il valore o lo stato dei componenti dell'applicazione. La selezione del componente da modificare avviene con un doppio click sul nome o sul disegno in una finestra di editing, quando la finestra del debugger è aperta.

Variabili

Oggetti SFC


Variabili

Lo stato di una variabile viene modificato con un doppio click sul nome, in una delle seguenti finestre:

-	Dizionario

-	Elenchi di variabili o diagrammi temporali

-	Programmi LD o FBD

-	Connessioni I/O

I seguenti comandi sono contenuti nella finestra di dialogo di debug:

-	Assegnazione di un nuovo valore alla variabile

-	Blocca una variabile di I/O (solo per le variabili I/O)

-	Sblocca una variabile di I/O (solamente per le variabili I/O bloccate)

-	Avvia o Ferma una variabile timer (modalità aggiornamento automatico)

I valori simbolici usati per rappresentare i valori booleani "FALSE" e "TRUE" sono le stringhe definite per la specifica variabile nel dizionario (riquadro Valori della finestra Variabile booleana). Il valore analogico specificato per un comando "Scrivi" deve essere inserito in formato intero o reale, in base alla definizione della variabile data nel dizionario. La stringa specificata per un comando "Scrivi" per un messaggio non può essere più lunga della capacità del messaggio associato alla variabile nel dizionario.


Oggetti SFC

I comandi del menù "File" della finestra Programmi aperta in modalità di debug, permettono di controllare i programmi SFC in fase di debug dell'applicazione. Il programma SFC deve essere evidenziato dall'elenco dei programmi. Sono disponibili i seguenti programmi:

Avvia programma SFC:	Abilita il programma evidenziato, inserendo un token SFC in ciascuno dei passi iniziali.

Termina programma SFC:	Termina il programma evidenziato, rimuovendo tutti i token esistenti.

Sospendi programma SFC:	Rimuove tutti i token esistenti del programma evidenziato e ne memorizza la posizione.

Riavvia programma SFC:	Riavvia un programma sospeso posizionando nuovamente i token che erano stati rimossi dal comando "Sospendi".

Per quanto riguarda i programmi figli, questi comandi corrispondono alle funzioni GSTART", "GKILL", "GFREEZE" e "GRST" del linguaggio di programmazione.

In fase di debug, è possibile eseguire un'operazione di controllo di un passo SFC con un doppio click sulla sua rappresentazione grafica nella finestra di editing SFC.

Il debugger ISaGRAF permette inoltre di:

-	Inserire un breakpoint all'attivazione della transizione

-	Eliminare un breakpoint precedentemente aggiunto alla transizione

-	Attivare manualmente la transizione (sposta o aggiunge i token)

Selezionare la transizione desiderata nel diagramma SFC editato in modalità debug e quindi utilizzare il comando "Modifica / Breakpoint".

Nel caso di una transizione sono possibili due tipi di attivazione: Incondizionata e Condizionata. Con l'Attivazione condizionata: viene creato un token nei passi successivi alla transizione. Vengono rimossi i token dei passi precedenti. Con l'Attivazione incondizionata: viene creato un token nei passi successivi la transizione. I token presenti nei passi precedenti non vengono rimossi.


Modifica on line

Con la Modifica "On line", è possibile apportare modifiche all'applicazione durante l'esecuzione del processo. Questo tipo di intervento si rende necessario nel caso di processi chimici in cui una qualsiasi interruzione potrebbe mettere a repentaglio la produzione o la sicurezza. Questa funzione va usata con molta cautela. ISaGRAF potrebbe non essere in grado di rilevare tutti i possibili conflitti generati dalle operazioni definite dall'utente in seguito a modifiche on line.

Sequenze di codice

Variabili

Input e output

Operazioni in esecuzione

Requisiti di memoria

Limitazioni

Operazioni


Sequenze di codice

Poiché ISaGRAF offre molte possibilità di accedere dal debugger a variabili, programmi o schede I/O, le funzioni di "Modifica on line" esaminate qui, si riferiscono solamente alle modifiche di sequenze di codice. Una sequenza di codice è costituita da un insieme completo di istruzioni ST, IL, LD o FBD eseguite in una riga. In un programma di "inizio ciclo" o "fine ciclo", una sequenza di codice è costituita dall'intero elenco di istruzioni del programma. In un programma SFC una sequenza di codice corrisponde alla programmazione di secondo livello di un passo o di una transizione. La "modifica on line" consiste nel sostituire una o più sequenze di codice senza che venga fermata l'esecuzione del ciclo PLC. Poiché il controllo dei token SFC è assai critico, non è possibile modificare una struttura SFC con l'aggiunta, la rinumerazione o la rimozione di passi, transizioni o programmi SFC.


Variabili

Il database delle variabili è un componente molto importante dell'applicazione, altre applicazioni possono accedervi in qualsiasi momento (su PLC multi-processo). Dal debugger è anche possibile apportare modifiche ai valori delle variabili. Per questa ragione, ISaGRAF non permette, on line, di aggiungere, rinominare o rimuovere una variabile. È, tuttavia, possibile modificare il modo in cui una variabile viene usata dall'applicazione. È anche possibile, nella prima versione dell'applicazione, riservare delle variabili interne o I/O "inutilizzate", in modo che modifiche successive possano farne uso.

Esistono diverse tipologie di variabili nel data base del target ISaGRAF. Limitazioni agiscono su ciescuna di esse:

-	Varibili dichiarate

Sono quelle dichiarate usando il dizionario di ISaGRAF. Non possono essere nè cambiate nè rinominate on line. E' raccomandabile che nell'applicazione siano dichiarate e inizializzate alcune variabili extra, anche se non attualmente utilizzate. In seguito a future modifiche, tali variabili extra permetteranno all'applicazione di continuare a lavorare senza cambiamento del numero di checksum.

-	Istanze di blocchi funzione

Ogni istanza di blocco funzione scritto in linguaggio "C" o in IEC corrisponde a dati memorizzati nel data base di esecuzione del target ISaGRAF. Quando vengono aggiunte o sottratte istanze di blocchi funzione, non è più possibile il cambiamento On Line. E' consigliabile lavorare in linguaggio ST con istanze BF dichiarate nel dizionario, piuttosto di aggiungere blocchi (che corrisponderanno a nuove istanze automaticamente dichiarate) in linguaggio Quick LD o con diagrammi FBD. Inoltre, ogni modifica nella definizione di blocchi funzione disponibili nella libreria di ISaGRAF renderà impossibile il cambiamento On Line.

-	Passi

Ad ogni passo SFC corrisponde una parte del data base dove sono memorizzati gli attributi dinamici dei passi SFC (attività, tempo, e flag). Aggiungere o rimuovere passi SFC cambia il data base dell'applicazione e non sono permessi cambiamenti On Line.

-	Variabili nascoste allocate dai compilatori

Il compilatore ISaGRAF genera variabili temporanee "nascoste" per risolvere espressioni complesse. In qualche caso, il cambiamento di un espressione può portare ad un un set di variabili temporanee nascoste, ciò renderà impossibile il cambiamento On Line. Per evitare tale situazione, si possono aggiungere le righe seguenti nel file ISA.INI, di modo da forzare l'allocazione di un numero minimo di variabili temporanee nascoste in ogni programma, anche se non utilizzate durante la compilazione della prima versione. Di seguito vengono dati dei valori come esempio:

[DEBUG]

MNTVboo=8	; per booleani

MNTVana=4	; per interi e reali

MNTVtmr=4	; per timer

MNTVmsg=2	; per messaggi

Quando queste istruzioni vengono scritte in ISA.INI, il compilatore produce un messaggio di avviso nel caso una nuova compilazione dell'applicazione porti ad un numero superiore di variabili temporanee allocate.


Input e output

Poiché il sistema I/O ISaGRAF è molto aperto, eventuali modifiche richieste devono essere implementate dall'OEM, usando le caratteristiche specifiche del corrispondente hardware. Il sistema ISaGRAF non permette, on line, di aggiungere, collegare o rimuovere variabili I/O o di modificare la descrizione di una scheda I/O. Operazioni come la modifica dei parametri delle schede ed il blocco di canali I/O, sono disponibili con le caratteristiche standard OEM e la funzione "OPERATE".


Operazioni in esecuzione

La modifica di un'applicazione in esecuzione avviene con le seguenti operazioni:

-	modificare il codice sorgente dell'applicazione nell'ambiente di lavoro

-	generare il nuovo codice dell'applicazione

-	trasferire il codice della nuova applicazione usando il comando "Aggiornamento applicazione" invece di "Scarica applicazione"

-	passare dalla precedente alla nuova applicazione durante i cicli di esecuzione PLC usando il comando "Attiva aggiornamento".

Questa procedura garantisce che sul PLC sia sempre in esecuzione un'applicazione affidabile e permette di controllare il tempo delle operazioni campione in modo molto efficiente e sicuro. Permette anche di modificare spesso il progetto. Per quanto riguarda il processo stesso, la modifica "on line" corrisponde, essenzialmente, alla serie di comandi "Ferma, Scarica e Avvia ". La sola differenza è che lo stato delle variabili non viene perduto ed il tempo dello scambio è molto breve (generalmente la durata di 1 o 2 cicli). Durante lo scambio, le variabili non subiscono modifiche: tutte le variabili interne di input o output mantengono lo stesso valore prima e dopo la modifica dell'applicazione. Nel momento dello scambio, non vengono eseguite operazioni ed i token SFC non vengono mossi.


Requisiti di memoria

Per supportare la "Modifica on line", il PLC destinazione deve avere abbastanza spazio libero in memoria per contenere la versione modificata del codice dell'applicazione. Durante lo scambio, entrambe le versioni del codice dell'applicazione devono essere contenute nella memoria del PLC.


Limitazioni

Come precedentemente descritto, sono possibili modifiche solamente a sequenze codice. Non possono essere modificate definizione di variabili, parametri dell'applicazione  e connessioni di I/O. Durante il trasferimento di una versione modificata dell'applicazione, ISaGRAF esegue un confronto tra l'applicazione modificata e quella in esecuzione, al fine di rilevare i cambiamenti non sicuri. Nel caso lo scambio si riveli pericoloso o impossibile, viene generato un errore di trasferimento. Una delle protezioni messe in atto da ISaGRAF consiste nel confrontare il checksum della tavola dei simboli, per rilevare la modifica del nome di qualsiasi variabile, programma o elemento SFC. Le azioni non-memorizzate (N) di un passo attivo al momento dello scambio vanno perdute. Non vengono eseguite le azioni di attivazione del nuovo passo. Le azioni eseguite alla disattivazione del passo sono quelle portate con il nuovo codice dell'applicazione. Se durante lo scambio una transizione è valida, viene aggiornata la condizione ad essa associata. Non viene eseguito il salvataggio di sicurezza sul PLC della nuova applicazione scaricata. Il salvataggio è costituito dalla versione precedentemente scaricata con i comandi standard di trasferimento.


Operazioni

L'aggiornamento del codice di un'applicazione in esecuzione avviene con le seguenti operazioni:

-	Prima di apportare qualsiasi modifica ad un'applicazione in esecuzione, si raccomanda vivamente di fare una copia del progetto corrente con un nome diverso. Le modifiche possono essere effettuate sulle copie.

-	Prima di modificare qualsiasi programma, assicurarsi che l'opzione "Aggiorna diario" del programma di editing sia abilitata, per facilitare la manutenzione del programma in futuro.

-	Una volta modificata una o più sequenze (senza che siano state modificate le strutture SFC e la gerarchia dei programmi), è necessario generare nell'ambiente di lavoro il codice della nuova applicazione prima del trasferimento.

-	Usando il debugger, con il vecchio progetto, connettersi al PLC destinazione ed eseguire tutte le operazioni che possano rendere più veloce o sicuro l'aggiornamento dell'applicazione.

-	Usando il debugger, con il nuovo progetto, connettersi al PLC destinazione. Se è stato cambiato il nome dell'applicazione, non è possibile accedere al data base del target. È necessario usare il comando "File / Aggiornamento applicazione".

-	Il trasferimento dell'applicazione modificata avviene selezionando l'opzione "Aggiornamento Successivo" . Questo può rallentare leggermente il PLC nella fase di trasferimento.

-	Al completamento del trasferimento, è possibile eseguire il comando "File / Attiva aggiornamento" per avviare lo scambio nel momento più opportuno. Lo scambio avrà la durata di 1 o 2 cicli.

Una volta eseguito correttamente lo scambio, vengono mostrati i programmi dell'applicazione modificata in esecuzione. In caso contrario, rimane l'applicazione in esecuzione esistente.


Scambi DDE

Il debugger ISaGRAF comprende un server DDE (Dynamic Data Exchange). È possibile stabilire un ciclo di notifica tra il debugger ed altre applicazioni, per la visualizzazione dinamica del valore corrente delle variabili in applicazioni non ISaGRAF.

Il server DDE del debugger ISaGRAF supporta solamente le transazioni "advise" e "poke". Le transazioni "request" possono essere usate solo per le variabili che vengono già spiate in un ciclo di notifica. Non sono disponibili altri servizi DDE come "execute". Una volta stabilito un ciclo di notifica su una variabile, il valore viene aggiornato nell'applicazione client ogni volta che cambia. È possibile esaminare qualsiasi tipo di variabile. L'identificazione del collegamento dinamico usa i seguenti nomi:

Service name:	"ISaGRAF"

Topic name:	Nome del progetto ISaGRAF

Item name:	Nome della variabile

Nel caso la variabile sia locale ad un programma, il suo nome deve essere seguito dal nome del programma cui appartiene scritto tra parentesi con la seguente sintassi:

nome_variabile(nome_programma)

Il server DDE del debugger ISaGRAF agisce solamente sull'applicazione ISaGRAF correntemente in fase di debug. Il server ISaGRAF è in grado di esaminare fino a 256 variabili. Il server DDE funziona con il debugger sia connesso che in simulazione. Il tempo di aggiornamento è quello impostato tra il debugger ed il sistema destinazione o il simulatore ISaGRAF.