|
Istruzioni
Con l’aiuto del seguente esempio si può realizzare una semplice comunicazione MODBUS-Master-Slave tra due CPU S7-200.
L'esempio tratta il codice funzione 6 MODBUS (scrittura nel registro di hold slave) e può essere impiegato come base per la modifica a passi dei parametri per gli altri codici funzione supportati 1, 2, 3, 4, 5, 15 e 16.
Requisito
Per il funzionamento del protocollo MODBUS occorre procurarsi ed installare per prima la libreria dei comandi di STEP 7-Micro/WIN, poi STEP 7-Micro/WIN (nell’articolo con ID 17470979).
Il protocollo Modbus-Master viene supportato da STEP 7-Micro/WIN V4.0 Service Pack 5.
1. Struttura hardware L'esempio è strutturato per una comunicazione MODBUS tra le porte 0 di due CPU S7-200- (preferibilmente ciascuna con due interfacce di comunicazione). Lato master sarebbe anche possibile la scelta della porta 1 con la corrispondente scelta di blocco di libreria "MBUS_CTRL_P1" e "MBUS_MSG_P1". Ciascuna porta è collegata con un PC opp. PG con il software Micro/WIN. La comunicazione tra le CPU tramite la porta 1 avviene con l'aiuto di un cavo PPI (collegamento seriale dei pin 2, 3, 7 e 8 -> vedi la Figura 01). Inoltre deve ancora essere garantito il collegamento della massa del sensore (M).
  Figura 01
2. Coincidenza dei parametri Per la comunicazione MODBUS lato master sono necessari i blocchi di libreria "MBUS_CTRL" e "MBUS_MSG", e sul lato slave i blocchi "MBUS_INIT" e "MBUS_SLAVE".
In Micro/WIN creare un nuovo progetto, uno per master opp. slave con le reti ed i parametri indicati nella Figura 02.
Occorre fare attenzione che i parametri "Baud" e "Parity" sono identici, così come l'indirizzo "Slave" del blocco "MBUS_MSG" coincide con "Addr" del blocco "MBUS_INIT" (vedi la Figura 02).
Le impostazioni dei baudrate per l'interfaccia Porta 0 nella vista Micro/WIN "Blocco dati di sistema" è irrilevante per il protocollo MODBUS ("Mode" = "1").
  Figura 02
Le tabelle seguenti descrivono significato e possibilità di scelta per i parametri di blocco di libreria:
MASTER
MBUS_CTRL
|
Parametro |
Significato |
Possibilità di scelta |
|
EN |
Abilitazione |
|
|
Mode |
Presentazione del protocollo |
0=PPI, 1=MODBUS |
|
Baud |
Velocità di trasferimento in kbit/s |
1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 |
|
Parity |
Parità |
0= nessuna, 1= dispari, 2= pari |
|
Timeout |
Massimo tempo per la risposta della slave in ms |
|
|
Done |
Segnalazione di finito |
|
|
Error |
Codice di errore |
1) |
Tabella 01
1) vedi la guida STEP 7-Micro/WIN: "Codice di errore per l'esecuzione della Modbus-Master-Opration MBUS_MSG"
MBUS_MSG
|
Parametro |
Significato |
Possibilità di scelta |
|
EN |
Abilitazione |
|
|
First |
Attivazione |
|
|
Slave |
Indirizzo slave |
|
|
RW |
"lettura" opp. "scrittura" |
0= lettura, 1= scrittura |
|
Addr |
Indirizzo di inizio MODBUS |
0 .. 128 = uscite digitali A0.0 .. A15.7
1001 .. 10128 = ingressi digitali I0.0 .. I15.7
30001 .. 30092 = ingressi analogici AIW0 .. AIW62
40001 .. 49999 = registro di hold2 |
|
Count |
Numero di bit (0xxxx, 1xxxx) /parole (3xxxx, 4xxxx) |
|
|
DataPtr |
Pointer sull'inizio della memoria delle variabili |
|
|
Done |
Segnalazione di finito |
|
|
Error |
Codice di errore |
1) |
Tabella 02
1) vedi la guida STEP 7-Micro/WIN: "Codice di errore per l'operazione della Modbus-Master-Operation MBUS_MSG"
SLAVE
MBUS_INIT
|
Parametro |
Significato |
Possibilità di scelta |
|
EN |
Abilitazione |
|
|
Mode |
Presentazione del protocollo |
0=PPI, 1=MODBUS |
|
Addr |
Indirizzo slave |
|
|
Baud |
Velocità di trasferimento in kbit/s |
1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 |
|
Parity |
Parità |
0=nessuna, 1=dispari, 2=pari |
|
Delay |
Allungamento del segnale in ms |
|
|
MaxIQ |
Numero degli ingressi e delle uscite digitali disponibili |
2) |
|
MaxAI |
Numero delle parole di ingresso analogiche disponibili |
2) |
|
MaxHold |
max. numero delle voci di registro di hold |
2) |
|
HoldStart |
Pointer sull'inizio del registro di hold (40001) |
|
|
Done |
Segnalazione di finito |
|
|
Error |
Codice di errore |
3) |
Tabella 03
2) I massimi indirizzi real utilizzabili dipendono dal tipo di CPU utilizzata e dal suo valore max.
3) vedi la Guida STEP 7-Micro/WIN: "Codice di errore per l'esecuzione del protocollo Modbus-Slave"
MBUS_SLAVE
|
Parametro |
Significato |
Possibilità di scelta |
|
EN |
Abilitazione |
|
|
Done |
Segnalazione di finito |
|
|
Error |
Codice di errore |
3) |
Tabella 04
3) vedi la guida STEP 7-Micro/WIN: "Codice di errore per l'esecuzione del protocollo Modbus-Slave"
3. Indirizzamento della memoria per le librerie Dopo aver terminato il progetto si deve ancora definire nel contenitore dei blocchi di programma Micro/WIN la memoria per la libreria. Nel riservare la memoria per la libreria fare attenzione che l'area scelta non si sovrapponga all'area di memoria delle variabili per i dati (nel master: "DataPtr" + "Count" e nello slave: "HoldStart" + "MaxHold")!
  Figura 03
4. Trasferimento di valori del registro di hold Dopo il caricamento dei progetti nella singola CPU, tramite l'attivazione dello stato tabella si può scrivere sull'area di memoria delle variabili del master selezionato e sorvegliarla sul lato slave.
Con l'attivazione dell'ingresso master I0.0 il contenuto della parola di variabile VW2 viene trasmesso alla CPU slave e qui scritto il valore di variabile VW2.
Questo trasferimento di valori del registro di hold viene ripartito nella Figura 04:
il pointer "DataPtr" rappresenta l'inizio dell'aria di memoria delle variabili da leggere.
Il parametro "Count" stabilisce nell'indirizzamento "Addr" = "4xxxx" (registro di hold) il numero delle parole da leggere.
L'area di memoria delle variabili deve essere scritta ("RW" = "1") all'indirizzo di start del registro di hold "Addr" = "40002".
Il registro di hold funziona a parole come salvaposto per l'area della memoria delle variabili slave:
il pointer "HoldStart" stabilisce l'indirizzo di inizio della memoria delle variabili equivalente all'indirizzo di start del registro del registro hold 40001.
Il pointer della memoria delle variabili slave può essere calcolato come segue:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
Inoltre si deve ancora fare attenzione che il numero massimo di voci delle parole di registro di hold "MaxHold" copra anche quest'area:
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
  Figura 04
Ulteriori informazioni sulla libreria STEP 7-Micro/WIN-MOBDUS si trovano nel manuale di sistema dell'S7-200 (nell’articolo con ID 1109582) e nella guida di STEP 7-Micro/WIN. |