software:devices:modbus

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

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:48] – [6.1. Modo di funzionamento SLAVE] qem207software:devices:modbus [2015/09/16 16:52] – [3. Dichiarazione device nel file di configurazione] qem207
Linea 1: Linea 1:
 ====== DEVICE MODBUS ====== ====== DEVICE MODBUS ======
- 
- 
 ===== - Introduzione ===== ===== - Introduzione =====
  
Linea 31: Linea 29:
  
  
-===== - Installazione ===== 
-FIXME 
  
-==== - Dichiarazione device nel file di configurazione (.CNF) ====+ 
 +===== - Dichiarazione device nella unit di configurazione =====
  
 Dichiarazione del device utilizzato (device interno): nome del device assegnato, MODBUS, posizione dello slot e numero Dichiarazione del device utilizzato (device interno): nome del device assegnato, MODBUS, posizione dello slot e numero
Linea 60: Linea 57:
 modbus             MODBUS     0002    1 modbus             MODBUS     0002    1
 </code> </code>
- 
  
 ===== - Tabelle “scambio dati” per il MODBUS ===== ===== - Tabelle “scambio dati” per il MODBUS =====
Linea 207: Linea 203:
 ==== - 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 (//idcar//d). Viene impostato il parametro //type// = 1.\\ Bisogna Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (//idcar//d). Viene impostato il parametro //type// = 1.\\ Bisogna
 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 211:
 (//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 (//idcard//). La funzione è identica alla “//Read Coil//”. Il significato delle due funzioni si distingue a livello di protocollo MODBUS.\\ +Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (//idcard//). La funzione è identica alla “//Read Coil//”. Viene impostato il parametro type = 2.\\ Il significato delle due funzioni si distingue a livello di protocollo MODBUS. 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.
-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 (type = 3) ===+=== 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 223:
 wcmd). wcmd).
  
-=== Read Input Register (type = 4) === +=== Read Input Register === 
-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”. Viene impostato il parametro type = 4.\\ Il significato delle due funzione si distingue a livello di protocollo MODBUS. Alcuni slave possono mettere a disposizione delle zone di memoria differenti a seconda se le word lette sono Holding o Input. Nel caso di slave Qmove le due richieste hanno lo stesso effetto.
-Holding Register”. Il significato delle due funzione si distingue a livello di protocollo MODBUS. Alcuni slave possono +
-mettere a disposizione delle zone di memoria differenti a seconda se le word lette sono Holding o Input. Nel caso di slave +
-Qmove le due richieste hanno lo stesso effetto.+
  
 ==== - Richieste di scrittura ==== ==== - Richieste di scrittura ====
  
-=== Force coil (type = 5) ===+=== Force coil ===
 Funzione di scrittura bit. Si vogliono scrivere (forzare) i bit di un certo slave (//idcard//). Viene impostato il parametro //type// = Funzione di scrittura bit. Si vogliono scrivere (forzare) i bit di un certo slave (//idcard//). Viene impostato il parametro //type// =
 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 ===
 Funzione di scrittura singola word. Si vuole scrivere (forzare) la word di un certo slave (//idcard//). Viene impostato il parametro Funzione di scrittura singola word. Si vuole scrivere (forzare) la word di un certo slave (//idcard//). Viene impostato il parametro
 //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 ===
 Funzione di scrittura bit multipli. Si vogliono scrivere (forzare) i bit di un certo slave (//idcard//). Viene impostato il parametro Funzione di scrittura bit multipli. Si vogliono scrivere (forzare) i bit di un certo slave (//idcard//). Viene impostato il parametro
 //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 245:
 (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 ===
 Funzione di scrittura word multiple. Si vogliono scrivere (forzare) le word di un certo slave (//idcard//). Viene impostato il parametro Funzione di scrittura word multiple. Si vogliono scrivere (forzare) le word di un certo slave (//idcard//). Viene impostato il parametro
 //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 421: Linea 413:
  
 === - Parametri - Modbus Master === === - Parametri - Modbus Master ===
 +FIXME
 ^ Nome         ^ D  ^ R  ^ A    ^ Condizioni  ^ Descrizione                                                                                                                                                                                                           ^ ^ Nome         ^ D  ^ R  ^ A    ^ Condizioni  ^ Descrizione                                                                                                                                                                                                           ^
 | mode         | B  | R  | R/W  | -           | **Mode**\\ (0 ÷ 2)\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master.                                                                                                               | | mode         | B  | R  | R/W  | -           | **Mode**\\ (0 ÷ 2)\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master.                                                                                                               |
Linea 523: Linea 516:
 </code> </code>
 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 530: Linea 527:
 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 546: Linea 543:
 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 564: Linea 561:
 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 ====
 {{:software:devices:modbus:modbus_02.png?nolink400|}} {{:software:devices:modbus:modbus_02.png?nolink400|}}
  
  • Ultima modifica: 2020/07/13 15:15