Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
en:software:devices:modbus [2016/12/21 16:56] – [5.3. Richieste di lettura] qem103 | en:software:devices:modbus [2016/12/22 16:28] – [5.9. Estensione del protocollo] qem103 | ||
---|---|---|---|
Line 172: | Line 172: | ||
=== Read Coil === | === Read Coil === | ||
- | Funzione di lettura | + | |
- | impostare | + | Bit read function. You want to read the bits of a slave (// |
- | numero di bit che si intendono leggere. Bisogna impostare | + | (//addr// + //num// - 1) <= 512 e (//tabreg// + //num// - 1) <= 512 otherwise the request will fail (reporting by //wcmd//). |
- | master | + | |
- | soddisfare sempre le seguenti due condizioni:\\ | + | |
- | (//addr// + //num// - 1) <= 512 e (//tabreg// + //num// - 1) <= 512 altrimenti la richiesta non potrà essere eseguita | + | |
=== Read Input === | === Read Input === | ||
- | Funzione di lettura a bit. Si vogliono leggere i bit di un certo slave (// | + | |
+ | Bit read function. To read the bits of a slave (// | ||
=== Read Holding Register === | === Read Holding Register === | ||
- | Funzione di lettura a word. Si vogliono leggere le word di un certo slave (idcard). | + | |
- | Bisogna impostare | + | Word read function. For reading the word of the slave (idcard). |
- | indica il numero di word che si intendono leggere. Bisogna impostare | + | You must to set addr to indicate the address of the word in the slave from which to start reading. The num parameter indicates the number of word to be read. You must set tabreg |
- | dei dai letti” del master | + | (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 otherwise the request will fail (reporting by wcmd). |
- | Si raccomanda di soddisfare sempre le seguenti due condizioni:\\ | + | |
- | (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 altrimenti la richiesta non potrà essere eseguita | + | |
- | wcmd). | + | |
=== Read Input Register === | === Read Input Register === | ||
- | 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. | ||
- | ==== - Richieste di scrittura | + | Word read function. For reading the bit of the slave (idcard). The function is equal to the “Read Holding Register”. sets the parameter type = 4.\\ The meaning of the two functions is distinguished at the level of MODBUS protocol. Some slave can make available different memory areas depending if the read word are Holding or Input. In the case of slave Qmove the two requests have the same effect. |
+ | |||
+ | ==== - Write request | ||
=== Force coil === | === Force coil === | ||
- | Funzione di scrittura bit. Si vogliono scrivere | + | |
- | 5.\\ Bisogna impostare | + | Bit write function. For writing |
- | per indicare l’indice del bit nella “tabella dei dati da scrivere” in cui è contenuto il valore da scrivere. | + | |
=== Force register === | === Force register === | ||
- | Funzione di scrittura singola word. Si vuole scrivere | + | |
- | //type// = 6.\\ Bisogna impostare | + | Word write function. For write (force) the word of a slave (// |
- | impostare | + | |
=== Force multiple coil === | === Force multiple coil === | ||
- | Funzione di scrittura | + | |
- | //type// = 15.\\ Bisogna impostare | + | Multiples |
- | num il numero di bit da scrivere. Bisogna impostare | + | (addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 otherwise the request will fail (reporting by wcmd). |
- | da cui iniziano i valori da scrivere. Si raccomanda di soddisfare sempre le seguenti due condizioni:\\ | + | |
- | (addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 altrimenti la richiesta non potrà essere eseguita | + | |
=== Force multiple register === | === Force multiple register === | ||
- | 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 | ||
- | impostare in num il numero di word da scrivere. Bisogna impostare tabreg per indicare l’indice della word nella “tabella | ||
- | dei dati da scrivere” da cui iniziano i valori da scrivere. Si raccomanda di soddisfare sempre le seguenti due condizioni: | ||
- | (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante wcmd). | ||
- | ==== - Esempi | + | Multiples word write function. For write (forzare) the word of a slave (// |
+ | (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 otherwise the request will fail (reporting by wcmd). | ||
+ | |||
+ | ==== - Examples | ||
- | 1) Impostazioni modbus e apertura del canale di comunicazione di tipo seriale | + | 1) Modbus settings and opening of serial communication |
<code QCL> | <code QCL> | ||
modbus.mode = 0 ; modbus master | modbus.mode = 0 ; modbus master | ||
Line 257: | Line 247: | ||
</ | </ | ||
- | 3) Lettura del registro | + | 3) Reading the registry |
<code QCL> | <code QCL> | ||
modbus.idcard = 67 | modbus.idcard = 67 | ||
Line 267: | Line 257: | ||
WAIT modbus.st_sended | WAIT modbus.st_sended | ||
IF (modbus.err) | IF (modbus.err) | ||
- | CALL ErroreModbus | + | CALL ErrorModbus |
ENDIF | ENDIF | ||
- | slVelocita | + | slSpeed |
</ | </ | ||
- | 4) Lettura dei holding register | + | 4) Reading of the holding register |
- | Siccome l’area di scambio dati QCL non supporta l’indirizzo | + | The area of QCL data exchange does not support the address |
<code QCL> | <code QCL> | ||
modbus.idcard = 8 | modbus.idcard = 8 | ||
Line 283: | Line 273: | ||
WAIT modbus.st_sended | WAIT modbus.st_sended | ||
IF (modbus.err) | IF (modbus.err) | ||
- | CALL ErroreModbus | + | CALL ErrorModbus |
ENDIF | ENDIF | ||
| | ||
swTemp1 = modbus.iword10 | swTemp1 = modbus.iword10 | ||
- | slVelocita | + | slSpeed |
slPosiz = modbus.ilong7 | slPosiz = modbus.ilong7 | ||
swTemp1 = modbus.iword15 | swTemp1 = modbus.iword15 | ||
</ | </ | ||
- | ==== - Schema a blocchi | + | ==== - Block diagrams |
{{: | {{: | ||
==== - Broadcast ==== | ==== - Broadcast ==== | ||
- | Il Broadcast è un messaggio speciale che viene inviato dal Master e viene ricevuto contemporaneamente da tutti gli slave | ||
- | connessi. La funzionalitá broadcast (idcard = 0) è supportata solamente in modo master e se viene usato un messaggio | ||
- | con type = 5, 6, 15 e 16 (solo scrittura). In questa modalità lo stato st_sended viene attivato appena terminata la trasmissione | ||
- | e non alla ricezione della conferma dallo slave. Infatti non esiste nessuna risposta degli slave per questo tipo di | ||
- | messaggi. Non è possibile utilizzare il comando SENDSYC. | ||
- | ==== - Identificazione degli Slave ==== | + | The Broadcast is a special message that is sent by the Master and is received simultaneously from all connected slaves. The broadcast function (idcard = 0) is supported only in master mode and if you use a message with type = 5, 6, 15 and 16 (write only). In this mode the st_sended state is activated once ended the transmission and not on receipt of confirmation by the slave. There isn't answer on the slaves to such messages. You cannot use the SENDSYC command. |
- | La scheda quando funziona | + | |
- | di tipo QEM. In caso affermativo determina anche il modello di slave connesso. Questo permette di realizzare una diagnostica | + | ==== - Slaves indentification |
- | sulla corretta configurazione della rete. Non è possibile estendere questo controllo | + | |
- | perché il protocollo non prevede una modalità | + | When the card works in master mode allows, with specila command, tell if the slave connected is a QEM. If so also determines the pattern of slave connected. This allows a diagnostic on the correct network configuration. You cannot extend this control to all types of existing slaves because the protocol does not provide |
- | Il comando | + | The READSTYPE |
- | slave una richiesta modbus | + | For the MODBUS |
- | letto nel parametro | + | |
- | slave è connesso ma non è possibile identificarlo.\\ | + | |
- | Per il device | + | |
- | senso vedere il manuale | + | |
- | Esempio d' | + | Example of slave identification |
<code QCL> | <code QCL> | ||
modbus: | modbus: | ||
Line 328: | Line 310: | ||
ENDIF | ENDIF | ||
</ | </ | ||
- | ==== - Estensione del protocollo | + | ==== - Protocol extension |
- | Il protocollo di comunicazione | + | The modbus standard |
* INPUT STATUS, | * INPUT STATUS, | ||
* COIL STATUS, | * COIL STATUS, | ||
* INPUT REGISTER, | * INPUT REGISTER, | ||
* HOLDING REGISTER. | * HOLDING REGISTER. | ||
- | Questi | + | These 4 types treat signals as Digital Inputs, Digital Outputs, Analog Inputs, and Analog Outputs. |
- | (sia INPUT REGISTERS | + | To allow support for datatypes larger than 16 bit, has been designed an extension to the protocol to treat long 32 bit dimension values. Implementing this feature preserves the formatting of the message |
- | (esempio | + | |
- | Per permettere di suppportare tipi di dato di dimensione maggiore di 16 bit, è stata progettata una estensione al protocollo | + | |
- | per trattare valori di dimensione | + | |
- | messaggio | + | |
- | questa estensione è attiva | + | |
- | per ogni richiesta di registro. Se l’indirizzo è superiore a 5000 verrà risposto con valore | + | |
- | rimane invariato con risposta a 16 bit. | + | |
==== - Comandi e parametri ==== | ==== - Comandi e parametri ==== |