|
Propagazione di situazioni di pericolo ambientale.
Il Protocollo di comunicazione PC <-> PLC ver
1.0
|
La seguente specifica riguarda le modalità di protocollo di comunicazione tra il PC
Host e il PLC designato alla ricezione delle pressioni sui pulsanti di allarme e alla
accenzione delle sirene di allarme.
La comunicazione avviene attraverso la porta seriale delle due apparecchiature con le
seguenti specifiche:
Velocità di comunicazione |
9600 |
Numero di bit |
8 |
Controllo Parità |
N |
Bit di Stop |
1 |
La comunicazione tramite tale canale avviene per pacchetti da 7 byte
con le seguenti specifiche generali:
Byte n° |
Descrizione |
Tipo di carattere
(se generale) |
1 |
Bit di Start del pacchetto |
@ - chr$(???) |
2 |
Tipo di messaggio |
[A - B - C - E - F] |
3 |
1° informazione di stato |
|
4 |
2° informazione di stato |
|
5 |
CHK1 (vedi sotto) |
[0...F]H |
6 |
CHK2 (vedi sotto) |
[0...F]H |
7 |
Bit di End del pacchetto |
* chr$(???) |
Analizziamo più in dettaglio i byte del messaggio:
Byte 1 Identifica l'inizio del pacchetto ed è sempre costituito dal
carattere "@ "
Byte 2 Identifica il tipo di messaggio con la seguente codifica:
A Messaggio dal PC -> PLC per richiesta di attivazione di segnalazione
acustica
B Messaggio dal PLC -> PC per conferma ricezione messaggio di tipo A
C Messaggio dal PLC -> PC per segnalazione pressione tasto
D Messaggio dal PC -> PLC per conferma ricezione messaggio di tipo C
E Messaggio da PC -> PLC per test della linea e del PLC
F Messaggio da PLC -> PC per conferma ricezione messaggio di tipo E
Byte 3 Indica la prima informazione di stato contenuta nel pacchetto
(vedi sotto)
Byte 4 Indica la seconda informazione di stato contenuta nel pacchetto
(vedi sotto)
Byte 5,6 Sono caratteri di CheckSum per verificare che l'informazione
contenuta nel pacchetto sia ricevuta corettamente. Vengono cosi calcolati:
- Viene fatto lo XOR tra il byte 2,3 e 4
- Il risultato in esadecimale viene convertito in stringa e il risultato viene messo in
questi due byte.
Ricordando che la tabella di verità della funzione logica XOR è la seguente
A |
B |
A XOR B |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Prendiamo il seguente pacchetto:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
A |
1 |
B |
? |
? |
* |
e vediamo come si calcolano i due caratteri di checksum. Facciamo lo XOR dei caratteri
corrispondenti al secondo, terzo e quarto byte
STR |
Ascii |
Binario |
A |
65 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
49 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
A XOR 1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
B |
66 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
A XOR 1 XOR B |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
HEX(A XOR 1 XOR B) |
3 |
2 |
Dunque il risultato in esadecimale dello XOR è 32H e dunque pongo
il byte n° 5 come "3" (tre stringa) e il n° 6 com "2" (due stringa)
e dunque, il pacchetto da inviare risulta essere
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
A |
1 |
B |
3 |
2 |
* |
Vediamo ora in dettaglio le possibili comunicazione tra gli apparati.
Richiesta di segnalazione acustica
Messaggio PC -> PLC (tipo messaggio "A")
Questo messaggio viene inviato dal PC al PLC quando, allo scatenarsi di un evento di
preallarme, allarme o fine allarme il PLC deve attivare la segnalazione acustica adeguata.
Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
A |
INFO1 |
INFO2 |
CHK1 |
CHK2 |
* |
con INFO1 che indica il tipo di segnalazione che il PLC deve attivare
con la seguente codifica
1 |
-> |
PREALLARME |
2 |
-> |
ALLARME |
3 |
-> |
CESSATO ALLARME |
e con INFO2 che indica la chimica che ha generato l'allarme con la
seguente codifica
A |
-> |
FLEXSYS |
B |
-> |
WITCO |
C |
-> |
STS |
Messaggio PLC -> PC (tipo messaggio "B")
Questo messaggio viene inviato dal PLC al PC per confermare la corretta ricezione di un
messaggio di tipo "A" Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
B |
INT |
INT |
CHK1 |
CHK2 |
* |
con INT (uguale per ambedue i byte) con la seguente codifica
0 |
-> |
Messaggio correttamente ricevuto |
1 |
-> |
Errore nella ricezione |
Invio segnalazione avvenuta pressione pulsante
Messaggio PLC -> PC (tipo messaggio "C")
Questo messaggio viene inviato dal PLC al PC quando uno dei pulsanti collegati al PLC
viene premuto. Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
C |
TASTO |
0 |
CHK1 |
CHK2 |
* |
con TASTO che indica quale dei tasti è stato premuto con la seguente
codifica
1 |
-> |
TASTO PREALLARME |
2 |
-> |
TASTO ALLARME |
4 |
-> |
TASTO CESSATO ALLARME |
e con il byte n° 4 disponibile ad usi futuri e impostato per ora sempre a
"0"
Messaggio PC -> PLC (tipo messaggio "D")
Questo messaggio viene inviato dal PC al PLC per confermare la corretta ricezione di un
messaggio di tipo "C" Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
D |
INT |
INT |
CHK1 |
CHK2 |
* |
con INT (uguale per ambedue i byte) con la seguente codifica
0 |
-> |
Messaggio correttamente ricevuto |
1 |
-> |
Errore nella ricezione |
Test connessione PC < - > PLC attiva
Messaggio PC -> PLC (tipo messaggio "E")
Questo messaggio viene inviato dal PC al PLC per controllare la presenza della
comunicazione tra i due apparati. Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
E |
0 |
0 |
CHK1 |
CHK2 |
* |
Messaggio PLC -> PC (tipo messaggio "F")
Questo messaggio viene inviato dal PC al PLC per confermare la corretta ricezione di un
messaggio di tipo "E" Il pacchetto ha la seguente struttura
1 |
2 |
3 |
4 |
5 |
6 |
7 |
@ |
F |
INT |
INT |
CHK1 |
CHK2 |
* |
con INT (uguale per ambedue i byte) con la seguente codifica
0 |
-> |
Messaggio correttamente ricevuto |
1 |
-> |
Errore nella ricezione |
|
sono molto interessato a questo tuo articolo e vorrei avere, se è possibile, maggiori informazioni: il PLC è dell'AllenBradley?
E' possibile avere qualche informazione sugli schemi SFC o sulla programmazione del protocollo in ladder?
Grazie
IL PLC era un Siemens, non ricordo che modello però.
La programmazione non l'ho fatta io, mi sono interessato alla parte di comunicazione via seriale quindi non posso esserti d'aiuto non sapendo neanche cosa sia il protocollo in ladder.
Sorry.
intendevo la programmazione del plc in ladder (normalmente aperto, normalmente chiuso.... non so se ho reso l'idea)
sulla chat IRC non ci sei. Se non è un peso, potresti mandarmi maggiori informazioni via email sulla parte di comunicazione seriale su cui hai lavorato, oppure c'è un altro modo per contattarti?
Tutta la parte di comunicazione è qui
Dato che ti intendi di protocolli di comunicazione sapresti dirmi dove posso trovare informazioni rigurdanti le specifiche di del protocollo executive.
Se fossero dettagliate come la ta descrizione sarei molto contento.
Questo articolo è meraviglioso. Consente facilmente l'ingresso nel mondo della comunicazione PLC-PC fornendo un possibile spunto per iniziare a scrivere client proprietari lato pc.
Ma come descrivere connessioni e parametri fra porte logiche, timer, etc, e il loro stato (es: nc/na)?