L’esempio è nel programma che trovi sul manuale della FB MQTTBeebotte, in pratica ammettendo di dover pubblicare 8 variabili avremo.
// Dichiarazione array di 8 pubblicazioni.
TPublish : ARRAY[ 0..7 ] OF TPBeebotte; (* Topic publish *)
// Definizione per ogni pubblicazione della variabile da pubblicare.
// Viene definito il canale e la risorsa "Channel/Resource"
// Il tipo e l'indirizzo della variabile il cui valore và pubblicato.
TPublish[0](Resource:=ADR('Channel/Resource1'), DType:=REAL_TYPE, DBuffer:=ADR(Var1), DBLength:=0);
TPublish[1](Resource:=ADR('Channel/Resource2'), DType:=BOOL_TYPE, DBuffer:=ADR(Var2), DBLength:=0);
...
TPublish[7](Resource:=ADR('Channel/Resource7'), DType:=UINT_TYPE, DBuffer:=ADR(Var7), DBLength:=0);
// Eseguo pubblicazione ogni 5 secondi.
IF ((SysGetSysTime(TRUE)-TimeBf) > 5000000) THEN
TimeBf:=SysGetSysTime(TRUE)-TimeBf); //Time buffer (uS)
FOR i:=0 TO 7 DO TPublish[i].Publish:=TRUE; END_FOR;
END_IF;
Naturalmente la definizione dell’array và definita nella zona delle dichiarazioni, l’inizializzazione si può fare al primo loop ed il resto nel main. Ma se segui quanto riportato nel manuale credo sia tutto chiaro.