Blocco funzionale ModbusServer

Presentazione

Il blocco funzionale ModbusServer fa parte della libreria SE_ModbusTCP_Slave e gestisce le richieste ModbusTCP di scrittura e lettura dati tra il controller HMI SCU in qualità di server e i client Modbus. È possibile gestire fino a 10 connessioni client. Il blocco funzionale agisce su aree dati definite nel HMI SCU che rappresentano registri di ingresso e uscita.

Il blocco funzionale ModbusServer viene eseguito in un POU assegnato a un task e pertanto, se il controller è in modalità STOP, il task con il blocco funzionale ModbusServer non sarà in esecuzione.

L'ID unità del ModbusServer è 255.

Codici funzione supportati

Sono supportati i seguenti codici funzione Modbus:

Codice funzione

Descrizione

3 (03 esadecimale) o 4 (04 esadecimale)

Lettura di più registri

6 (06 esadecimale)

Scrittura registro singolo

16 (10 esadecimale)

Scrittura registri multipli

23 (17 esadecimale)

Lettura/scrittura registri multipli

È possibile gestire fino a 10 connessioni client contemporaneamente. Tutte le richieste client vengono elaborate all'interno di un ciclo del controller, una richiesta per connessione client.

Rappresentazione grafica

G-SE-0043454.1.gif-high.gif

 

 

Parametri

Questa tabella descrive gli ingressi del blocco funzione:

Ingresso

Tipo

Val. predefinito

Descrizione

wPort

WORD

502

Porta server, 502 è il valore predefinito Modbus1

pInputData

POINTER TO WORD

-

Indirizzo della prima parola della tabella dati di ingresso.

pOutputData

POINTER TO WORD

-

Indirizzo della prima parola della tabella dati di uscita.

uiInputDataSize

UINT

-

Dimensione della tabella dati di ingresso.

uiOutputDataSize

UINT

-

Dimensione della tabella dati di uscita.

xEnable

BOOL

FALSE

Se è TRUE, il blocco funzionale viene eseguito. I valori degli ingressi del blocco funzionale possono essere modificati e le uscite vengono aggiornate continuamente.

Se è FALSE, l'esecuzione del blocco funzione viene interrotta e le relative uscite vengono reimpostate.

xReset

BOOL

 FALSE

Se è TRUE, riattiva la comunicazione e il bit di errore.

tTimeout

UDINT

0

Timeout di scrittura Modbus in ms. Il blocco funzionale deve essere reimpostato dopo un timeout per consentire nuovamente la comumincazione.

1   La porta 502 è la porta predefinita utilizzata per il protocollo TCP/IP Modbus. Se il protocollo TCP/IP Modbus (server o client) è già configurato in Vijeo-Designer per il controller, utilizzare una porta diversa nel blocco funzionale per la comunicazione tra il server e i client.

Questa tabella descrive le uscite del blocco funzione:

Uscita

Tipo

Val. predefinito

Descrizione

xBusy

BOOL

-

Quando è TRUE, il blocco funzionale sta gestendo una richiesta client.

Quando è FALSE, il blocco funzionale ha terminato di gestire una richiesta client.

Il blocco funzionale deve essere mantenuto in un task attivo del programma applicativo almeno finché xBusy è TRUE. In caso contrario, le tabelle dati vengono impostate a 0 mentre le uscite del blocco funzionale rimangono statiche.

xError

BOOL

-

Se è TRUE, indica che è stato rilevato un errore. L'esecuzione del blocco funzionale è stata terminata.

Il blocco funzionale deve essere reimpostato per consentire nuovamente la comumincazione.

byClientConnections

BYTE

0

Numero di connessioni attive.

Codici restituiti

Questa tabella elenca i valori dei codici restituiti per la libreria SE_ModbusTCP_Slave che vengono inviati ai client per diverse richieste errate o in risposta a operazioni riuscite:

Nome

Tipo

Valore

Descrizione

RESPONSE_SUCCESS

BYTE

16#0

Comunicazione riuscita.

ILLEGAL_FUNCTION

BYTE

16#1

Il codice funzione non è supportato dal server.

ILLEGAL_DATA_ADDRESS

BYTE

16#2

L'offset del registro non è supportato dal server.

ILLEGAL_DATA_VALUE

BYTE

16#3

Valore non corretto.

SLAVE_DEVICE_FAILURE

BYTE

16#4

È stato rilevato un errore sul dispositivo server.

ACKNOWLEDGE

BYTE

16#5

Risposta del server a una richiesta client valida.

SLAVE_DEVICE_BUSY

BYTE

16#6

Risposta del server a una richiesta client inviata mentre era già in corso un'operazione.

GATEWAY_PATH_UNAVAILABLE

BYTE

16#A

Errore rilevato in caso di comunicazione tramite gateway (gateway configurato scorrettamente/occupato)

GATEWAY_DEVICE_FAILED_TO_RESPOND

BYTE

16#B

Il dispositivo collegato al gateway non ha risposto.

Elenco delle costanti globali

Questa tabella presenta l'elenco delle costanti globali (GCL) per la libreria SE_ModbusTCP_Slave:

Nome

Tipo

Valore

Descrizione

MODBUS_TCP_MAXCLIENTS

UINT

10

Elenco GCL non modificabile contenente il numero massimo di connessioni attive.