ADDMADDM: conversione di una stringa in un indirizzo
Il blocco funzione ADDM converte un indirizzo di destinazione rappresentato come stringa in una struttura ADDRESS. Si può utilizzare la struttura ADDRESS come voce in un blocco funzione di comunicazione.
ADDM - Descrizione specifica del parametro
Ingresso/Uscita |
Tipo |
Commento |
---|---|---|
AddrTable |
ADDRESS |
questa è la struttura ADDRESS che deve essere completata dal blocco funzione. |
Ingresso |
Tipo |
Commento |
---|---|---|
Execute |
BOOL |
Esegue la funzione sul fronte di salita. |
Addr |
STRING |
Indirizzo nel tipo STRING da convertire in tipo ADDRESS (vedere i dettagli sotto). |
Uscita |
Tipo |
Commento |
---|---|---|
Done |
BOOL |
DoneQuando la funzione viene completata correttamente, è impostato a TRUE NOTA: Quando l'operazione viene interrotta con l'ingresso Abort, Done non è impostato a 1 (solo Aborted). |
Error |
BOOL |
Error è impostato a TRUE quando la funzione si arresta se viene rilevato un errore. Quando viene rilevato un errore, le relative informazioni sono contenute in CommError e OperError. |
CommError |
BYTE |
CommError contiene codici di errore delle comunicazioni. |
NOTA: Un fronte di salita sull'ingresso Execute esegue la conversione e restituisce un aggiornamento immediato di AddrTable. Tuttavia, AddrTable conserva l'ultimo valore quando viene rilevato un errore (ovvero quando la stringa Addr non è corretta).
I blocchi funzione richiedono un fronte di salita per poter essere inizializzati. Il blocco funzione deve prima riconoscere l'ingresso Execute come FALSE per poter rilevare un successivo fronte di salita.
|
FUNZIONAMENTO IMPREVISTO DELL'APPARECCHIATURA |
Effettuare sempre la prima chiamata a un blocco funzione con l'ingresso Execute impostato a FALSE in modo che possa rilevare un successivo fronte di salita. |
Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature. |
STRINGA Addr per il formato di indirizzo ASCII
Per l'indirizzamento ASCII è richiesto solo il numero della porta di comunicazione:
'<communication port number>'
Ad esempio, per inviare un messaggio definito dall'utente sulla linea seriale 2 utilizzare la stringa '2'.
Questa tabella definisce i campi nell'uscita ADDM per il formato dell'indirizzo ASCII:
Campo |
Tipo |
Valore |
Esempio |
---|---|---|---|
_Type |
BYTE |
Riservato |
Non utilizzato |
_CliID |
BYTE |
Riservato |
Non utilizzato |
Rack |
BYTE |
Numero rack (sempre 0) |
0 |
Module |
BYTE |
Numero modulo (sempre 0) |
0 |
Link |
<communication port number> |
2 |
|
_ProtId |
BYTE |
Non utilizzato |
Non utilizzato |
AddrLen |
BYTE |
0 |
0 |
UnitId |
BYTE |
Non utilizzato |
Non utilizzato |
AddrExt |
ADDR_EXT |
Non utilizzato |
Non utilizzato |
Addr STRING per il formato dell'indirizzo di Modbus TCP
Indirizzo di uno slave standard di Modbus TCP
Per il formato dell'indirizzo standard di Modbus TCP sono richiesti il numero della porta di comunicazione (3 per la porta Ethernet incorporata) e l'indirizzo IP di destinazione:
'<communication port number>{<IP address>}'
NOTA: Uno slave standard Modbus TCP utilizza l'indirizzo Modbus 255 (il valore predefinito UnitId). Tuttavia, un dispositivo Modbus TCP può avere un valore diverso (un dispositivo TeSys, ad esempio, ha l'indirizzo Modbus 1). In questo caso, aggiungere il valore UnitId:
'<communication port number>{<IP address>}<UnitId>'
La porta TCP 502 è utilizzata in modo predefinito. È possibile utilizzare una porta non standard aggiungendo all'indirizzo IP il numero di porta richiesto:
'<communication port number>{<IP address>:<port>}'
Ad esempio, per inviare un messaggio all'indirizzo IP slave di Modbus TCP 192.168.1.2 che utilizza la porta TCP 502 standard, immettere la stringa: '3{192.168.1.2}'
La funzione ADDM completa l'ingresso/uscita AddrTable con questi valori:
Campo |
Tipo |
Valore |
Esempio |
---|---|---|---|
_Type |
BYTE |
Riservato |
Non utilizzato |
_CliID |
BYTE |
Riservato |
Non utilizzato |
Rack |
BYTE |
Numero rack |
0 |
Module |
BYTE |
Numero modulo |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 per Modbus |
0 |
AddrLen |
BYTE |
UnitID + AdrExt lunghezza in byte |
7 |
UnitId |
BYTE |
indirizzo Modbus (valore predefinito = 255) |
255 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
<porta> (valore predefinito = 502) |
502 |
Indirizzo di uno slave Modbus seriale tramite gateway Ethernet/seriale
È anche possibile indirizzare uno slave Modbus tramite un gateway Ethernet o una linea seriale:
La richiesta include il numero della porta di comunicazione, l'indirizzo IP del gateway (con o senza porta TCP) e l'indirizzo slave Modbus seriale (parametro UnitId):
'<communication port number>{<IP address>}<slave address>'
Ad esempio, per inviare un messaggio all'indirizzo slave Modbus seriale 5 tramite il gateway Ethernet/seriale sull'indirizzo IP 192.168.1.2 che utilizza la porta TCP 502 standard, immettere la stringa: '3{192.168.1.2}5'
La funzione ADDM completa l'ingresso/uscita AddrTable con questi valori:
Campo |
Dimensioni |
Valore |
Esempio |
---|---|---|---|
_Type |
BYTE |
Riservato |
Non utilizzato |
_CliID |
BYTE |
Riservato |
Non utilizzato |
Rack |
BYTE |
Numero rack |
0 |
Module |
BYTE |
Numero modulo |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 per Modbus |
0 |
AddrLen |
BYTE |
UnitID + AdrExt lunghezza in byte |
7 |
UnitId |
BYTE |
<Indirizzo slave> |
5 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
numero porta TCP (valore predefinito = 502) |
502 |
Questo esempio mostra l'implementazione del blocco funzione ADDM in combinazione con il blocco funzione SINGLE_WRITE. Il blocco funzione ADDM converte la data STRING '1.8' alla variabile stSlave8OnSL1 del tipo ADDRESS. Se la conversione riesce, viene attivato l'ingresso Execute del successivo blocco funzione SINGLE_WRITE.