Free Protocol su Weintek HMI

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.

  1. Il manuale di Arduino di Paolo Aliverti ed. LSWR 2^ Ed. pag. 377 ↩︎

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *