Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente Prossima revisioneEntrambe le parti successive la revisione | ||
software:devices:modbus [2015/09/16 11:47] – [6.1.1. Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP] qem207 | software:devices:modbus [2015/09/16 11:56] – [Read Holding Register (type = 3)] qem207 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== DEVICE MODBUS ====== | ====== DEVICE MODBUS ====== | ||
- | |||
- | |||
===== - Introduzione ===== | ===== - Introduzione ===== | ||
Linea 60: | Linea 58: | ||
modbus | modbus | ||
</ | </ | ||
- | |||
===== - Tabelle “scambio dati” per il MODBUS ===== | ===== - Tabelle “scambio dati” per il MODBUS ===== | ||
Linea 207: | Linea 204: | ||
==== - Richieste di lettura ==== | ==== - Richieste di lettura ==== | ||
- | === - Read Coil (type = 1) === | + | === Read Coil === |
Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (// | Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (// | ||
impostare //addr// per indicare l’indirizzo del bit nello slave da cui si intende iniziare a leggere. Il parametro //num// indica il | impostare //addr// per indicare l’indirizzo del bit nello slave da cui si intende iniziare a leggere. Il parametro //num// indica il | ||
Linea 215: | Linea 212: | ||
(//addr// + //num// - 1) <= 512 e (//tabreg// + //num// - 1) <= 512 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante //wcmd//). | (//addr// + //num// - 1) <= 512 e (//tabreg// + //num// - 1) <= 512 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante //wcmd//). | ||
- | === - Read Input (type = 2) === | + | === Read Input === |
- | Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (// | + | Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (// |
- | Alcuni slave possono mettere a disposizione delle zone di memoria differenti a seconda se i bit letti sono Coil o Input. Nel caso di slave Qmove le due richieste hanno lo stesso effetto. | + | |
- | === - Read Holding Register | + | === Read Holding Register === |
Funzione di lettura a word. Si vogliono leggere le word di un certo slave (idcard). Viene impostato il parametro //type// = 3.\\ | Funzione di lettura a word. Si vogliono leggere le word di un certo slave (idcard). Viene impostato il parametro //type// = 3.\\ | ||
Bisogna impostare addr per indicare l’indirizzo della word nello slave da cui si intende iniziare a leggere. Il parametro num | Bisogna impostare addr per indicare l’indirizzo della word nello slave da cui si intende iniziare a leggere. Il parametro num | ||
Linea 228: | Linea 224: | ||
wcmd). | wcmd). | ||
- | === - Read Input Register (type = 4) === | + | === Read Input Register (type = 4) === |
Funzione di lettura ingressi a word. Si vogliono leggere i bit di un certo slave (idcard). La funzione è identica alla “Read | Funzione di lettura ingressi a word. Si vogliono leggere i bit di un certo slave (idcard). La funzione è identica alla “Read | ||
Holding Register”. Il significato delle due funzione si distingue a livello di protocollo MODBUS. Alcuni slave possono | Holding Register”. Il significato delle due funzione si distingue a livello di protocollo MODBUS. Alcuni slave possono | ||
Linea 236: | Linea 232: | ||
==== - Richieste di scrittura ==== | ==== - Richieste di scrittura ==== | ||
- | === - Force coil (type = 5) === | + | === Force coil (type = 5) === |
Funzione di scrittura bit. Si vogliono scrivere (forzare) i bit di un certo slave (// | Funzione di scrittura bit. Si vogliono scrivere (forzare) i bit di un certo slave (// | ||
5.\\ Bisogna impostare addr per indicare l’indirizzo del bit nello slave in cui si intende scrivere. Bisogna impostare tabreg | 5.\\ Bisogna impostare addr per indicare l’indirizzo del bit nello slave in cui si intende scrivere. Bisogna impostare tabreg | ||
per indicare l’indice del bit nella “tabella dei dati da scrivere” in cui è contenuto il valore da scrivere. | per indicare l’indice del bit nella “tabella dei dati da scrivere” in cui è contenuto il valore da scrivere. | ||
- | === - Force register (type = 6) === | + | === Force register (type = 6) === |
Funzione di scrittura singola word. Si vuole scrivere (forzare) la word di un certo slave (// | Funzione di scrittura singola word. Si vuole scrivere (forzare) la word di un certo slave (// | ||
//type// = 6.\\ Bisogna impostare addr per indicare l’indirizzo della word nello slave in cui si intende scrivere. Bisogna | //type// = 6.\\ Bisogna impostare addr per indicare l’indirizzo della word nello slave in cui si intende scrivere. Bisogna | ||
impostare tabreg per indicare l’indice della word nella “tabella dei dati da scrivere” in cui è contenuto il valore da scrivere. | impostare tabreg per indicare l’indice della word nella “tabella dei dati da scrivere” in cui è contenuto il valore da scrivere. | ||
- | === - Force multiple coil (type = 15) === | + | === Force multiple coil (type = 15) === |
Funzione di scrittura bit multipli. Si vogliono scrivere (forzare) i bit di un certo slave (// | Funzione di scrittura bit multipli. Si vogliono scrivere (forzare) i bit di un certo slave (// | ||
//type// = 15.\\ Bisogna impostare addr per indicare l’indirizzo del bit nello slave in cui si intende scrivere. Si deve impostare in | //type// = 15.\\ Bisogna impostare addr per indicare l’indirizzo del bit nello slave in cui si intende scrivere. Si deve impostare in | ||
Linea 253: | Linea 249: | ||
(addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante wcmd). | (addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante wcmd). | ||
- | === - Force multiple register (type = 16) === | + | === Force multiple register (type = 16) === |
Funzione di scrittura word multiple. Si vogliono scrivere (forzare) le word di un certo slave (// | Funzione di scrittura word multiple. Si vogliono scrivere (forzare) le word di un certo slave (// | ||
//type// = 16.\\ Bisogna impostare addr per indicare l’indirizzo della word nello slave in cui si intende scrivere. Si deve | //type// = 16.\\ Bisogna impostare addr per indicare l’indirizzo della word nello slave in cui si intende scrivere. Si deve | ||
Linea 484: | Linea 480: | ||
==== - Modo di funzionamento SLAVE ==== | ==== - Modo di funzionamento SLAVE ==== | ||
- | La modalità slave viene impostata con il parametro mode = 1 o mode = 2. Bisogna introdurre nei parametri il codice dell’ID slave tramite il parametro idcard. | + | La modalità slave viene impostata con il parametro mode = 1 o mode = 2. Bisogna introdurre nei parametri il codice dell’ID slave tramite il parametro idcard. |
- | * aggiornare i parametri tipo owordNN, olongNN (che verranno poi letti dal master) | + | |
- | * processare i parametri tipo iwordNN, ilongNN (che sono stati scritti dal master) | + | |
**Impostazioni modbus e apertura del canale di comunicazione di tipo seriale** | **Impostazioni modbus e apertura del canale di comunicazione di tipo seriale** | ||
Linea 525: | Linea 519: | ||
</ | </ | ||
FIXME | FIXME | ||
+ | |||
+ | Le operazioni che spettano all’applicativo QCL sono essenzialmente due: | ||
+ | * aggiornare i parametri tipo owordNN, olongNN (che verranno poi letti dal master) | ||
+ | * processare i parametri tipo iwordNN, ilongNN (che sono stati scritti dal master) | ||
=== - Aggiornamento dei parametri tipo owordNN === | === - Aggiornamento dei parametri tipo owordNN === | ||
Per aggiornare i parametri tipo owordNN il QCL deve scrivere i valori nei parametri quindi inviare il comando VALIDATE. | Per aggiornare i parametri tipo owordNN il QCL deve scrivere i valori nei parametri quindi inviare il comando VALIDATE. | ||
Linea 532: | Linea 530: | ||
solamente dopo il comando VALIDATE. | solamente dopo il comando VALIDATE. | ||
- | == Esempio: == | + | **Esempio** |
<code QCL> | <code QCL> | ||
modbus.olong1 = anpos.speed | modbus.olong1 = anpos.speed | ||
Linea 548: | Linea 546: | ||
solo allora lo stato st_msgrx viene disattivato. | solo allora lo stato st_msgrx viene disattivato. | ||
- | Esempio: | + | **Esempio** |
<code QCL> | <code QCL> | ||
WAIT modbus.st_msgrx | WAIT modbus.st_msgrx | ||
Linea 566: | Linea 564: | ||
Tutte le richieste di scrittura che arrivano dal master MODBUS fanno riferimento ai dati di tipo //iwordNN// accedendo quindi | Tutte le richieste di scrittura che arrivano dal master MODBUS fanno riferimento ai dati di tipo //iwordNN// accedendo quindi | ||
alla stessa area dati. Lo slave mette a disposizione i parametri //iwordNN// dove il master potrà scrivere i dati. | alla stessa area dati. Lo slave mette a disposizione i parametri //iwordNN// dove il master potrà scrivere i dati. | ||
- | === - Schema a blocchi === | + | ==== - Schema a blocchi |
{{: | {{: | ||