Approfitto della domanda per realizzare un blocco funzione che riceve la stringa ascii in uscita dallo strumento e acquisisce i valori delle grandezze che ti interessano. Il FB può essere di aiuto ad altri clienti che hanno esigenze simili alla tua e dimostra la facilità con quale con un semplice programma in ST con i nostri sistemi SlimLine grazie alla completa disponibilità di librerie permettono di risolvere il tuo problema.
Ecco lo screenshot del programma FBD principale, come si vede il FB SysSerialPort gestisce la porta seriale COM0 a cui è connesso lo strumento, lo stream di comunicazione File in uscita dal FB è passato al FB WT2xxAcquisition che è il blocco funzione che ho realizzato di cui allego stampa.
Come si vede il FB è realizzato con una macchina a stati (Operatore CASE), il cuore della ricezione è il case 10 dove si ricevono i caratteri e si salvano in RxData. La ricezione inizia e termina su di una pausa di 100 mS, lo strumento infatti invia le stringhe ogni periodo di tempo.
Per sicurezza ricevuta la stringa controllo se termina con “END”, poi avendo notato che le misure che mi interessano sono tutte precedyute da “3N ” mi posiziono su questi caratteri con la funzione SysStrFind e successivamente con la funzione SysVarsscanf eseguo l’acquisizione del valore che traferisco nella relativa variabile di uscita.
Come si vede ho inserito nel FB alcune chiamate alla funzione SysSpyData che permettono di spiarne il funzione dalla console di spionaggio (Download del programma WTPowerMeter).