Formato dei comandi :
Comando 01:
Read Dati Digitali
Con questo comando si possono richiedere uno o piu' variabili
digitali a partire dall'indirizzo specificato. I dati in risposta vengono
raggruppati in byte (8 dati per ogni byte).
Il primo byte ricevuto corrisponde agli 8 dati con indirizzo piu'
basso, il bit meno significativo di ogni byte corrisponde al dato con
indirizzo piu' basso.
ESEMPIO:
RICHIESTA
Campo
Indirizzo macchina
Comando
Indirizzo di partenza (byte high) 00
Indirizzo di partenza (byte low) 00
N° di dati (parte high)
N° di dati (parte low)
Checksum
RISPOSTA
Campo
Indirizzo macchina
Comando
Numero di byte dati in risposta 02
Dati (0-7)
Dati (8-9)
Checksum
Comando 05:
Write Digitali
Per assegnare 1 ad un indirizzo digitale bisogna trasmettere il dato
hex 0xFF00;
per assegnare 0 bisogna trasmettere il dato hex 0x0000.
Ogni altro tipo di dato viene gestito come errore.
La risposta normale è un echo della richiesta se l'assegnazione del
dato è andata a buon fine.
ESEMPIO:
RICHIESTA
Campo
Indirizzo macchina
Comando
Indirizzo (byte high)
Indirizzo (byte low)
Dato nuovo (parte high)
Dato nuovo (parte low)
Checksum
RISPOSTA
Campo
Indirizzo macchina
Comando
Indirizzo (byte high)
Indirizzo (byte low)
Dato nuovo (parte high)
Dato nuovo (parte low)
Checksum
6
hex
01
01
00
0A
...
hex
01
01
0E
03
...
hex
01
05
00
00
FF
00
...
hex
01
05
00
00
FF
00
...
Comando 03:
Read Dati Analogici
Con questo comando si possono richiedere uno o piu' variabili analogiche e intere a
partire dall'indirizzo specificato. La codifica adottata è binaria in complemento a 2. Le
variabili analogiche vengono rappresentate in decimi (ad esempio il valore 10,0 viene
trasmesso come 0064h = 100d)., le intere sono trasferite con il valore effettivo (ad
esempio 100 viene trasmesso come 0064h = 100d).
Le variabili intere sono quelle con indirizzo maggiore di 128.
Il numero di dati richiesti si intende a partire dall'indirizzo
ESEMPIO:
RICHIESTA
Campo
Indirizzo macchina
Comando
Indirizzo di partenza (byte high) 00
Indirizzo di partenza (byte low) 00
N° di dati richiesti (parte high)
N° di dati richiesti (parte low)
Checksum
RISPOSTA
Campo
Indirizzo macchina
Comando
Numero di byte dati in risposta 04
Byte hight dato 0
Byte low dato 0
Checksum
Comando 06:
Write Dati Analogici
Con questo comando si può scrivere una variabile analogica o intera. La codifica adot-
tata è binaria in complemento a 2.
Le variabili analogiche vengono rappresentate in decimi (ad esempio il valore 10,0
viene trasmesso come 0064h = 100d)., le intere sono trasferite con il valore effettivo
(ad esempio 100 viene trasmesso come 0064h = 100d).
Le variabili intere sono quelle con indirizzo maggiore di 128.
La risposta normale è un echo della richiesta se l'assegnazione del dato è andata a
buon fine.
ESEMPIO:
RICHIESTA
Campo
Indirizzo macchina
Comando
Indirizzo (byte high)
Indirizzo (byte low)
Dato nuovo (parte high)
Dato nuovo ((parte low)
Checksum
RISPOSTA
Campo
Indirizzo macchina
Comando
Indirizzo (byte high)
Indirizzo (byte low)
Dato nuovo (parte high)
Dato nuovo ((parte low)
Checksum
GESTIONE TIMEOUT ED ERRORI DI COMUNICAZIONE
Di seguito si analizzano i possibili casi in cui puo' evolversi la comunicazione e il com-
portamento previsto dal master e dallo slave come protocollo.
1.
Lo slave riceve la richiesta senza errori di comunicazione : slave : risponde come
previsto master : deve prevedere un timeout sulla risposta dello slave di almeno
500mS per dare allo slave la possibilità di elaborare i dati.
2.
Lo slave non riceve la richiesta per un errore di comunicazione slave : non dà
nessuna risposta master : deve prevedere un timeout sulla risposta
Lo slave riceve la richiesta, ma c'è un errore di comunicazione (es. checksum)
3.
slave : non dà nessuna risposta master : deve prevedere un timeout sulla
risposta
Lo slave riceve la richiesta senza errori di comunicazione ma i dati della richiesta
4.
(hex)
01
03
00
02
...
hex
01
03
0c
03
...
(hex)
01
06
00
00
1B
00
...
hex
01
06
00
00
1B
00
...