Ecco un esempio di come è possibile leggere dei dati dalla porta seriale di un HMI Weintek utilizzando il Free Protocol.

Materiale software/hardware occorrente:
- un modulo Arduino;
- Arduino IDE;
- Weintek Easybuilder Pro;
- un cavo USB.
Questo codice Arduino scrive dei dati sulla porta seriale, in questo caso un’onda sinusoidale.
const unsigned long BAUD = 9600;
const float PERIOD_MS = 20000.0f;
const float AMP = 100.0f;
void setup() {
Serial.begin(BAUD);
}
void loop() {
unsigned long t = millis();
float n = (2.0f * PI) * ( (float)t / PERIOD_MS );
float val = AMP * sin(n);
Serial.println(val, 2);
delay(100);
}
A scopo di diagnostica si può controllare l’output generato tramite il monitor seriale di Arduino IDE o anche tramite il programma HTERM.
Attenzione a impostare correttamente il Baudrate, il numero di bit di dati, di stop e il controllo parità.
Le impostazioni predefinite della comunicazione seriale di Arduino prevedono 8 bit per i dati, nessuna parità e un bit di stop.1

In Easy Builder Pro creiamo un nuovo progetto, va bene il modello MT8050ie.
Aggiungiamo un dispositivo di tipo Free Protocol e impostiamo anche qui i parametri di comunicazione.

Come porta di comunicazione utilizziamo la COM 1 (RS-232).


Impostiamo una macro che legga i dati dalla porta seriale, copiandoli poi su una variabile float dello HMI.
Ci sono due passaggi:
- lettura dei dati grezzi in ASCII dalla porta seriale (funzione INPORT);
- conversione in formato float (funzione ASCII2FLOAT).

macro_command main()
//read ASCII from serial and save in LW-0
char wResponse[6], receive_len
INPORT(wResponse[0], "Free Protocol", 6, receive_len)
if receive_len >= 6 then
SetData(wResponse[0], "Local HMI", LW, 0, 6)
end if
//convert read to float and save in LW-10
float output
ASCII2FLOAT(wResponse[0], output, 6)
SetData(output, "Local HMI", LW, 10, 1)
end macro_command
I dati della variabile float possono essere storicizzati (Data Storico > campionamento Dati > Nuovo … e specifichiamo l’indirizzo di memoria della variabile).
Il file di progetto Easy Builder Pro è scaricabile da questo link.
- Il manuale di Arduino di Paolo Aliverti ed. LSWR 2^ Ed. pag. 377 ↩︎