Come si utilizza la console di spionaggio

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Appendici / Come si utilizza la console di spionaggio

Certo non vi sarà sfuggito che quasi tutti i blocchi funzione forniti con le nostre libreria hanno un ingresso definito come SpyOn.  Non pensiamo al grande fratello che ci stà spiando od a guerre tra spie, l'attivazione di questo ingresso permette di poter "spiare" il funzionamento del FB. Per lo "spionaggio" viene eseguita la funzione SysWrSpyData che permette da programma utente di inviare dati verso la console di spionaggio accessibile da Telnet. Naturalmente l'esecuzione dello spionaggio (Solo se è attiva la console da telnet) rallenta l'esecuzione del FB.

In questo topic sul forum si trova un esempio che illustra il funzionamento "spiando" un FB di comunicazione ModbusMaster.

Vantaggi dello spionaggio

Il vantaggio di questo metodo di debug è che il sistema operativo memorizza le informazioni ricevute sulla chiamata alla funzione SysSpyData rendendo disponibili i dati anche a seguito di chiamate consecutive molto ravvicinate (Anche pochi mS). Nella visualizzazione, per ogni record viene indicata l'ora in cui è avvenuta ed il tempo intercorso dalla esecuzione del record precedente.

Infatti nell'esempio sotto viene spiato un client NTP che esegue richieste al server ogni 60 secondi  si vede che ogni richiesta inizia 60 secondi dopo il termine della richiesta precedente. Nel caso in cui le chiamate alla funzione SysSpyData siano troppo ravvicinate e non vi sia il tempo di visualizzarle nella console di spionaggio si perdono le memorizzazioni, questo è indicato dal valore (----) nella colonna tempo di ritardo.

Console di spionaggio

Accedendo al sistema in Telnet, si può utilizzare l'utility terminal menù Utilities→Terminal del nostro programma Toolly. Utilizzando una connessione TcpIp Client all'indirizzo IP del sistema porta 23, dopo l'autenticazione (Login: Admin, Password Admin) digitando il comando SpyData, saranno visualizzati i dati inviati dalle chiamate alla funzione SysSpyData eseguite nel programma. Come si vede nella figura la console di spionaggio sta spiando un FB SNTPRequest che esegue la sincronizzazione con un server di tempo su Internet.

Utilizzo del trigger

Nei vari oggetti che prevedono lo spionaggio nel capitolo Trigger di spy si trova indicazione del livello di trigger. Il trigger permette di attivare lo spionaggio solo su alcuni eventi tra quelli generati, in modo da evitare di saturare il buffer di spionaggio concentrandosi solo sugli eventi che ci interessano. Il livello di trigger si compone di 32 bits che possono essere attivati in combinazione di OR logico tra di loro. Se prendiamo ad esempio la tabella trigger del FB ModbusMaster che riporto qui sotto:

TriggerDescrizione
16#00000001Tx: Invio frame comando modbus.
16#00000002Rx: Ricezione frame risposta modbus.
16#40000000Er: Errore di esecuzione.
  • Per visualizzare solo i frame di invio comandi modbus, dovremo dare da Telnet il comando SpyData -t 00000001.
  • Per visualizzare solo gli errori di esecuzione, dovremo dare da Telnet il comando SpyData -t 40000000.
  • Per visualizzare sia i frame di comando che le risposte modbus, dovremo dare da Telnet il comando SpyData -t 00000003.

Consigli

Se nel programma si hanno molti FB eseguiti contemporaneamente è preferibile attivare lo spionaggio solo su uno alla volta in modo da non intasare il buffer di memorizzazione perdendo records.

Utilizzate nei vostri programmi la funzione SysSpyData questo vi permette di eseguire il debug e/o visualizzare informazioni utili sul funzionamento del programma semplicemente accedendo anche da remoto in Telnet al sistema. E quanto più il record di spionaggio che generate è chiaro più è indicativo del problema.

Ti è stato utile questo articolo ?