Il FB ModbusSlave può operare su un unico banco di memoria di cui nel parametro Buffer occorre passare l’indirizzo di allocazione e nel parametro Size la dimensione. Per rispondere alla tua domanda l’unica soluzione possibile è di definire una struttura dati che contiene le due variabili che vuoi pubblicare.
MODBUSDATA: STRUCT
VarToMB1 : ARRAY[0..9] OF BYTE;
VarToMB2 : ARRAY[0..9] OF BYTE;
END_STRUCT;
Poi dichiari una variabile VarMB di tipo MODBUSDATA e ne passi l’indirizzo al parametro Buffer del FB.
VAR
VarMB : MODBUSDATA; (* Modbus data *)
END_VAR
Mdb.Buffer:=ADR(VarMB); //Modbus buffer address
Mdb.Size:=SIZEOF(VarMB); //Modbus buffer size
Attenzione all’allineamento, sai che i sistemi ARM hanno allineamento ad indirizzo multiplo 2 per le variabili a due bytes ed indirizzo multiplo 4 per le variabili 4 bytes. Quindi se le variabili in struttura sono ad 1 byte BOOL o BYTE vengono accodate ma se sono a 2 bytes o 4 bytes il compilatore inserisce bytes liberi per correggerne l’allineamento.