Blocco funzionale ModbusServer
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.
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.
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. |
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. |
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. |