Ho realizzato il blocco funzione TSTATCommunication che gestisce la comunicazione, il FB può gestire fino a 16 termostati in rete RS485, ognuno con il proprio indirizzo modbus, basta nella FB definire i nodi utilizzati (Il nodo FF termina la gestione), nell’esempio è gestito il solo nodo 3.
Node[0]:=16#03; (* Modbus nodes *)
Node[1]:=16#FF; (* Modbus nodes *)
Per i dati in lettura e scrittura sul termostato sono state create le strutture dati TSTATDATARD e TSTATDATAWR, è possibile allocare un array di 16 elementi uno per ogni termostato.
Il FB esegue ciclicamente la lettura di 8 registri consecutivi, che trasferisce nella struttura TSTATDATARD, poi esegue la lettura del setpoint impostato sul termostato (Anche lui trasferito nella struttura TSTATDATARD).
La scrittura del setpoint è condizionata dalla attivazione del membro SPWrite nella struttura TSTATDATAWR. in questo modo il termostato mantiene il valore di setpoint impostato localmente dall’utente, mentre quando si desidera modificarne il valore da sistema centrale basterà definire il nuovo valore nel membro SetPoint della struttura TSTATDATAWR ed attivarne la scrittura, stampa e download programma.