Doc. AHIT101A0510.doc 10/02/2011 P. 7 / 18
PROTOCOLLO MODBUS® ASCII
Il protocollo Modbus® ASCII viene utilizzato
normalmente nelle applicazioni che richiedono di
comunicare via modem.
Le funzioni e gli indirizzi disponibili sono gli stessi
della versione RTU, ma i caratteri trasmessi sono in
ASCII e la terminazione del messaggio non e’
effettuata a tempo ma con dei caratteri di ritorno a
capo.
Se si seleziona il parametro P7.x.05 o P7.05 o come
protocollo Modbus® ASCII, la struttura del
messaggio di comunicazione sulla relativa porta di
comunicazione è così costituita:
:
Indirizzo
2 chars
Funzione
2 chars
Dati
(N chars)
LRC
2 chars
CR
LF
•
Il campo Indirizzo contiene l’indirizzo dello
strumento slave cui il messaggio viene inviato.
•
Il campo Funzione contiene il codice della funzione
che deve essere eseguita dallo slave.
•
Il campo Dati contiene i dati inviati allo slave o
quelli inviati dallo slave come risposta ad una
domanda. La massima lunghezza consentita e’ di
(ved. Pag. 3) registri consecutivi.
•
Il campo LRC consente sia al master che allo
slave di verificare se ci sono errori di trasmissione.
Questo consente, in caso di disturbo sulla linea di
trasmissione, di ignorare il messaggio inviato per
evitare problemi sia dal lato master che slave.
•
Il messaggio termina sempre con i caratteri di
controllo CRLF (0D 0A).
Esempio:
Per esempio, se si vuole leggere dal DME_CD con
indirizzo 8 il valore del contatore totale 2 che si trova
alla locazione 259 (103 Hex), il messaggio da spedire
è il seguente:
: 08 04 01 02 00 02 E7 CRLF
Dove:
: = ASCII 3Ah = Delimitatore inizio messaggio
08 = indirizzo slave.
04 = funzione di lettura locazione.
01 02 = indirizzo della locazione diminuito di un’unità,
contenente il valore del contatore totale 2
00 02 = numero di registri da leggere a partire
dall’indirizzo 04.
E7 = checksum LRC.
CRLF = ASCII 0Dh 0Ah = delimitatore fine
messaggio
La risposta del DME_CD è la seguente:
: 08 04 04 00 00 07 30 9B
CR
LF
Dove:
: = ASCII 3Ah = Delimitatore inizio messaggio
08 = indirizzo del DME_CD (Slave 08).
04 = funzione richiesta dal Master.
04 = numero di byte inviati dallo slave.
00 00 07 30 = valore esadecimale del contatore
totale 2 = 1840 = 18,40.
9B = checksum LRC.
CRLF = ASCII 0Dh 0Ah = delimitatore fine
messaggio
MODBUS® ASCII PROTOCOL
The Modbus® ASCII protocol is normally used in
application that require to communicate through a
couple of modems.
The functions and addresses available are the same
as for the RTU version, but the transmitted
characters are in ASCII and the message end is
delimited by Carriage return/ Line Feed instead of a
transmission pause.
If one selects the parameter P7.x.05 or P7.05 as
Modbus® ASCII protocol, the communication
message on the correspondent communication port
has the following structure:
:
Address
(2 chars)
Function
(2 chars)
Dates
(N chars)
LRC
(2
chars)
CR
LF
•
The Address field holds the serial address of the
slave destination device.
•
The Function field holds the code of the function
that must be executed by the slave.
•
The Data field
contains data sent to the slave or
data received from the slave in response to a query.
The maximum allowable length is of (read pag. 3)
consecutive registers.
•
The LRC field allows the master and slave
devices to check the message integrity. If a
message has been corrupted by electrical noise or
interference, the LRC field allows the devices to
recognize the error and thereby ignore the
message.
•
The message terminates always with CRLF
control character (0D 0A).
Example:
For instance, to read the value of the total counter 2
, which resides at location 259 (103 Hex), from the
slave with serial address 08, the message to send is
the following:
: 08 04 01 02 00 02 E7 CRLF
Whereas:
: = ASCII 3Ah message start delimiter
08 = slave address
04 = Modbus® function ‘Read input register’
01 02 = Address of the required register (total
counter 2) decreased by one
00 02 = Number of registers to be read beginning
from address 04
E7= LRC Checksum
CRLF = ASCII 0Dh 0Ah = Message end delimiter
The DME_CD answer is the following:
: 08 04 04 00 00 07 30 9B
CR
LF
Whereas:
: = ASCII 3Ah message start delimiter
08 = DME_CD address (Slave 08)
04 = Function requested by the master
04 = Number of bytes sent by the multimeter
00 00 07 30 = Hex value of the current phase of
total counter 2 =1840 = 18,40.
9B = LRC checksum
CRLF = ASCII 0Dh 0Ah = Message end delimiter