Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente Prossima revisioneEntrambe le parti successive la revisione | ||
software:devices:modbus [2014/10/23 15:12] – modifica esterna 127.0.0.1 | software:devices:modbus [2015/09/15 15:16] – [5.5. Esempi] qem207 | ||
---|---|---|---|
Linea 6: | Linea 6: | ||
Il protocollo MODBUS< | Il protocollo MODBUS< | ||
integrare PLC’s, computers, terminals, inverter e altre apparecchiature. MODBUS è un protocollo di comunicazione | integrare PLC’s, computers, terminals, inverter e altre apparecchiature. MODBUS è un protocollo di comunicazione | ||
- | Master/ | + | Master/ |
- | collegati fino ad un massimo 247 slave sulla stessa linea. Ad ogni dispositivo è assegnato un indirizzo che distingue esso | + | |
da tutti gli altri dispositivi connessi.\\ | da tutti gli altri dispositivi connessi.\\ | ||
Il device MODBUS permette di scegliere quale porta seriale, presente sullo strumento, usare per il collegamento. | Il device MODBUS permette di scegliere quale porta seriale, presente sullo strumento, usare per il collegamento. | ||
Le caratteristiche della trasmissione dati (nr. dispositivo fisico, baud rate, parità, stop bits) e del modo di trasmissione devono | Le caratteristiche della trasmissione dati (nr. dispositivo fisico, baud rate, parità, stop bits) e del modo di trasmissione devono | ||
essere selezionate su ogni stazione e non possono essere modificate durante il funzionamento.\\ | essere selezionate su ogni stazione e non possono essere modificate durante il funzionamento.\\ | ||
- | Ci sono due modi di trasmissione utilizzabili nel protocollo Modbus. Ambedue i modi permettono le stesse capacità di | + | Con l' |
comunicazione. Il modo è selezionato dal master e deve essere unico per tutti i dispositivi connessi alla rete. I modi sono: | comunicazione. Il modo è selezionato dal master e deve essere unico per tutti i dispositivi connessi alla rete. I modi sono: | ||
* ASCII (American Standard Code for Information Interchange) | * ASCII (American Standard Code for Information Interchange) | ||
Linea 39: | Linea 38: | ||
del device. | del device. | ||
<code QCL> | <code QCL> | ||
- | ; | ||
- | ; | ||
- | ; | ||
INTDEVICE | INTDEVICE | ||
... | ... | ||
- | < | + | < |
... | ... | ||
</ | </ | ||
Linea 53: | Linea 49: | ||
|MODBUS|è la parola chiave che identifica il device descritto in questo documento,| | |MODBUS|è la parola chiave che identifica il device descritto in questo documento,| | ||
|TCamp|è tempo di campionamento del device,| | |TCamp|è tempo di campionamento del device,| | ||
- | |serial_port|è la definizione del tipo di porta seriale collegata | + | |channel|è la definizione del tipo di canale di comunicazione collegato |
Per quanto riguarda la dichiarazione dell’hardware utilizzato nella sezione “BUS” dell’unità di configurazione si dovrà fare | Per quanto riguarda la dichiarazione dell’hardware utilizzato nella sezione “BUS” dell’unità di configurazione si dovrà fare | ||
Linea 61: | Linea 57: | ||
<code QCL> | <code QCL> | ||
- | ; | ||
- | ; | ||
- | ; | ||
INTDEVICE | INTDEVICE | ||
- | modbus | + | modbus |
</ | </ | ||
Linea 160: | Linea 153: | ||
===== - Parte 1 : Modbus Master ===== | ===== - Parte 1 : Modbus Master ===== | ||
- | Il device MODBUS può utilizzare una porta seriale per comunicare in modalità master (parametro //mode// = 0). Esso da la | + | Il device MODBUS può utilizzare una porta seriale |
possibilità (tramite parametri, stati e comandi) a tutti gli strumenti di poter colloquiare con qualsiasi apparecchiatura utilizzante | possibilità (tramite parametri, stati e comandi) a tutti gli strumenti di poter colloquiare con qualsiasi apparecchiatura utilizzante | ||
protocollo Modbus.\\ | protocollo Modbus.\\ | ||
Linea 198: | Linea 191: | ||
**addr** = indice da cui iniziare a leggere o da cui iniziare a scrivere nello slave in questione. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ | **addr** = indice da cui iniziare a leggere o da cui iniziare a scrivere nello slave in questione. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ | ||
**tabreg** = per le operazioni di lettura (type = 1, 2, 3, 4), questo parametro indica la posizione nella “tabella dei dati letti” dove verrà memorizzato il dato letto sullo slave. Per le operazioni di scrittura (type = 5, 6, 15, 16), questo parametro indica da posizione nella “tabella dei dati da scrivere” dove si trova il dato da scrivere sullo slave. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ | **tabreg** = per le operazioni di lettura (type = 1, 2, 3, 4), questo parametro indica la posizione nella “tabella dei dati letti” dove verrà memorizzato il dato letto sullo slave. Per le operazioni di scrittura (type = 5, 6, 15, 16), questo parametro indica da posizione nella “tabella dei dati da scrivere” dove si trova il dato da scrivere sullo slave. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ | ||
- | **num** = numero di valori che si intendono leggere o scrivere (se il tipo richiesta type lo prevede). Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, (lettura di bit), mentre per valori type = 3, 4, 16 (scrittura multipla e lettura di word) i valori previsti sono tra 1 e 32. | + | **num** = numero di valori che si intendono leggere o scrivere (se il tipo richiesta type lo prevede). Sono previsti valori tra 1 e 128 per valori del parametro type = 1, 2, (lettura di bit), mentre per valori type = 3, 4, 16 (scrittura multipla e lettura di word) i valori previsti sono tra 1 e 32. |
=== - Comandi per inviare il messaggio: === | === - Comandi per inviare il messaggio: === | ||
Linea 269: | Linea 262: | ||
==== - Esempi ==== | ==== - Esempi ==== | ||
- | 1) Lettura del registro input nr.7 dello slave id 67 | + | 1) Impostazioni modbus e apertura del canale di comunicazione di tipo seriale |
+ | modbus.mode = 0 | ||
+ | modbus.prot = 1 | ||
+ | modbus.brate = 57600 | ||
+ | modbus.stopb = 1 | ||
+ | modbus.par = 0 | ||
+ | modbus.tout = 100 | ||
+ | modbus.OPENCOM | ||
+ | |||
+ | 3) Lettura del registro input nr.7 dello slave id 67 | ||
<code QCL> | <code QCL> | ||
- | MAIN: | + | modbus.idcard = 67 |
- | modbus:idcard = 67 | + | modbus.addr = 7 |
- | | + | modbus.tabreg = 7 |
- | | + | modbus.num = 1 |
- | | + | modbus.type = 4 |
- | | + | modbus.SEND |
- | SEND modbus | + | WAIT modbus.st_sended |
- | | + | IF (modbus.err) |
- | | + | CALL ErroreModbus |
- | | + | ENDIF |
- | + | slVelocita = modbus.iword7 | |
- | ENDIF | + | |
- | | + | |
- | + | ||
- | WAIT 1 | + | |
- | JUMP MAIN | + | |
</ | </ | ||
- | 2) Lettura dei holding register dal nr.600 al nr.606 dello slave id 8\\ | + | 4) Lettura dei holding register dal nr.600 al nr.606 dello slave id 8\\ |
Siccome l’area di scambio dati QCL non supporta l’indirizzo 600, si utilizza il parametro tabreg per salvare i dati letti all’indirizzo 10 | Siccome l’area di scambio dati QCL non supporta l’indirizzo 600, si utilizza il parametro tabreg per salvare i dati letti all’indirizzo 10 | ||
<code QCL> | <code QCL> | ||
- | MAIN: | + | modbus.idcard = 8 |
- | modbus:idcard = 8 | + | modbus.addr = 600 |
- | | + | modbus.num = 6 |
- | | + | modbus.tabreg = 10 |
- | | + | modbus.type = 3 |
- | | + | modbus.SEND |
- | SEND modbus | + | WAIT modbus.st_sended |
- | | + | IF (modbus.err) |
- | | + | CALL ErroreModbus |
- | | + | ENDIF |
- | | + | |
- | | + | swTemp1 = modbus.iword10 |
- | | + | slVelocita = modbus.ilong6 |
- | | + | slPosiz = modbus.ilong7 |
- | | + | swTemp1 = modbus.iword15 |
- | | + | |
- | + | ||
- | WAIT 1 | + | |
- | JUMP MAIN | + | |
</ | </ | ||