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/20 17:55] – [4. Tabelle “scambio dati” per il MODBUS] qem103 | en:software:devices:modbus [2016/12/21 17:59] – [Force multiple coil] qem103 | ||
---|---|---|---|
Line 3: | Line 3: | ||
The MODBUS< | The MODBUS< | ||
- | The MODBUS device lets you choose which serial port use for connection. The characteristics | + | The MODBUS device lets you choose which serial port use for connection. The features s of data transmission (number of device, baud rate, parity, stop bits) and the transmission mode must be selected on each station and cannot be changed during the operation.\\ |
With using a serial line, there are two modes of transmission used in the Modbus Protocol. Both ways allow the same communication skills. The mode is selected by the master and must be unique for all devices connected to the network. The modes are: | With using a serial line, there are two modes of transmission used in the Modbus Protocol. Both ways allow the same communication skills. The mode is selected by the master and must be unique for all devices connected to the network. The modes are: | ||
* ASCII (American Standard Code for Information Interchange) | * ASCII (American Standard Code for Information Interchange) | ||
Line 53: | Line 53: | ||
===== - Tables "data exchange" | ===== - Tables "data exchange" | ||
- | ==== - Dati letti dal device ==== | + | ==== - Data read from the device ==== |
- | |::: | + | |::: |
- | |::: | + | |::: |
- | ^Registro\\ Modbus| ||||||||||||||||| | + | ^Modbus\\ register| ||||||||||||||||| |
|0001| |||||||iword1| |||||||2< | |0001| |||||||iword1| |||||||2< | ||
|0002| |||||||iword2| |||||||2< | |0002| |||||||iword2| |||||||2< | ||
Line 91: | Line 91: | ||
|0032| |||||||iword32| |||||||2< | |0032| |||||||iword32| |||||||2< | ||
- | NOTA 1: la “ iword1 ” è la word più significativa della “ ilong1 ” (long = doppia | + | NOTE 1: the “ iword1 ” is the most significant |
- | della “ ilong2 ”, ...\\ | + | NOTE 2: the “ st_ibit0 ” parameter less significant |
- | NOTA 2: il parametro | + | |
- | significativo | + | |
- | ==== - Dati scrivibili da QCL e condivisibili | + | ==== - Writable data from QCL and sharable |
- | |::: | + | |::: |
- | |::: | + | |::: |
- | ^Registro\\ Modbus| ||||||||||||||||| | + | ^Modbus\\ register| ||||||||||||||||| |
|0001| |||||||oword1| |||||||2< | |0001| |||||||oword1| |||||||2< | ||
|0002| |||||||oword2| |||||||2< | |0002| |||||||oword2| |||||||2< | ||
Line 134: | Line 132: | ||
|0032| |||||||oword32| |||||||2< | |0032| |||||||oword32| |||||||2< | ||
- | NOTA 1: la “ oword1 ” è la word più significativa della “ olong1 ” (long = doppia | + | NOTE 1: the “ oword1 ” is the most significant |
- | della “ olong2 ”, ...\\ | + | NOTE 2: the “ st_obit0 ” parameter is the less significant |
- | NOTA 2: il parametro | + | |
- | più significativo | + | |
- | ===== - Descrizione funzionamento come master | + | ===== - Master operation description |
- | Il device MODBUS può utilizzare una porta seriale o TCPIP per comunicare in modalità master (parametro //mode// = 0). Esso da la | + | |
- | possibilità (tramite parametri, stati e comandi) a tutti gli strumenti di poter colloquiare con qualsiasi apparecchiatura utilizzante | + | |
- | protocollo Modbus.\\ | + | |
- | Il device rende disponibile una area di scambio dati dove il QCL può scrivere o leggere i valori condivisi con gli slave della | + | |
- | rete. Questa area è rappresentata da una lista di parametri del device suddivisa in due gruppi per differenziare il tipo di | + | |
- | accesso dei dati da parte del device. La prima sezione è identificata come INPUT la seconda come OUTPUT. | + | |
- | La sezione INPUT, per il funzionamento master, è l’area di deposito dei dati letti. Viene utilizzata quindi da tutte le funzioni | + | |
- | di lettura (parametro //type// = 1, 2, 3 o 4). La sezione OUTPUT, nel funzionamento master, è l’area di deposito dei dati | + | |
- | che il master deve trasferire agli slave. Viene utilizzata da tutte le funzioni di scrittura (parametro //type// = 5, 6, 15 o 16). | + | |
- | Per semplificare lo scambio dati tra apparecchiature, | + | |
- | usati in QCL e cioè WORD, LONG e FLAG. Il tipo “BYTE” non compare perché il modbus utilizza solitamente la dimensione | + | |
- | word per ogni indirizzo dei registri. Siccome il protocollo modbus seleziona i dati in base al numero di registro di accesso, | + | |
- | mentre il QCL seleziona in base al simbolo del parametro, si crea una tabella di riferimento in cui ogni simbolo | + | |
- | QCL trova il corrispondente numero del registro di accesso nel protocollo Modbus. Per ottenere una maggior flessibilità di | + | |
- | indirizzamento, | + | |
- | simboli che compaiono nella stessa riga della tabella si riferiscono alle medesime locazioni di memoria. | + | |
- | ==== - Accesso dei dati input e coil ==== | + | The MODBUS device can use a serial port or TCPIP to communicate in master mode (parameter // |
+ | The device provides a data exchange area where the QCL can write or read values shared with the slaves on the network. This area is represented by a list of parameters of the device divided into two groups to differentiate the type of access of the data by the device. The first section is identified as INPUT the second as OUTPUT. The INPUT section, for master operation, is the storage area of reads data. It is used by all reader functions (parameter // | ||
- | I dati tipo input o //coi//l hanno nel protocollo modbus una dimensione a bit. Per la memorizzazione di queste informazioni | + | ==== - Input and coil Data Access ==== |
- | nella tabella di scambio dati è definita la seguente modalità: ogni registro (e quindi ogni parametro word del device) rappresenta | + | |
- | 16 elementi che vengono numerati da sinistra verso destra. Per le scritture o letture multiple quando i bit da leggere | + | |
- | sono superiori a quelli contenuti nel registro l’operazione continua nel registro successivo.\\ | + | |
- | Gli stati // | + | |
- | tabella. | + | |
- | ==== - Modo di funzionamento MASTER ==== | + | The data input or //coil// type have in the modbus Protocol a bit size. To store this information in the table of data exchange is defined as follows mode: each register (and then every word parameter of the device) represents 16 elements that are numbered from left to right. For the Scriptures or multiple readings when bits read are higher than those contained in the register the operation continues in the next register.\\ |
+ | The // | ||
- | La modalità master viene impostata con il parametro mode = 0. La scheda genera messaggi modbus solamente su comando | + | ==== - Mode of MASTER operation ==== |
- | del QCL e non automaticamente. Per “formattare” la stringa del messaggio modbus vi sono una serie di parametri.\\ | + | |
- | Mediante i due comandi SEND o SENDSYC si inviano la richiesta di lettura o scrittura allo slave, una serie di stati | + | |
- | permettono una verifica sull’operazione eseguita. Vediamo in dettaglio: | + | |
- | === - Parametri per formattare il messaggio: === | + | The master mode is set with the mode parameter |
- | **type** = tipo di richiesta che si vuole processare (lettura o scrittura di word o di bit).\\ | + | Using the two commands SEND or SENDSYC you send the read or write request to the slave, |
- | **idcard** = indirizzo dell’unità slave verso cui si vuole inviare la richiesta.\\ | + | |
- | **addr** = indice da cui iniziare | + | |
- | **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 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: === | + | === - Parameters for formatting the message: === |
- | SEND invia il messaggio di richiesta allo slave.\\ | + | |
- | SENDSYC invia il messaggio di richiesta ad uno slave QEM di tipo MODBUS e segnala l’operazione conclusa (// | + | |
- | === - Variabili di Stato per diagnostica operazione: === | + | **type** |
- | Quando l’operazione di trasmissione messaggio è conclusa, viene impostata a 1 la variabile di stato st_sended. Se è | + | **idcard** = address of the slave drive to which you want to send the request.\\ |
- | stato utilizzato il comando SEND lo stato viene posto a 1 quando il master riceve la conferma del messaggio inviato. Se | + | **addr** = the index from which to start reading or at which to start writing in the slave.\\ |
- | invece è stato utilizzato nel master il comando SENDSYC allora questo stato verrà impostato a 1 quando lo slave QEM | + | **tabreg** = for read operations (type = 1, 2, 3, 4), This parameter indicates the position in the “table of data read” where will store the read data on the slave. |
- | avrà eseguito il comando RECEIVED. In caso di errore, invece, questo stato viene posto comunque a 1 (dopo il tempo | + | **num** = number of values that are read or write (if the request type so provides). Are accepted values are between 1 and 128 for values of type parameter = 1, 2, (reading of bits), while for type value = 3, 4, 16 (multiple word reading and writing) the accepted value are between 1 and 32. |
- | //toutsyc//) ma il parametro err segnala la causa dell’errore | + | |
- | Il comando SENDSYC si rende necessario quando si vuole sincronizzare la scrittura del master di un pacchetto dati con la lettura degli stessi dati da parte dello slave (può essere usato quando sia master che slave sono Qmove). | + | |
- | ==== - Richieste di lettura | + | === - Commands to send the message: === |
+ | |||
+ | SEND sends the request message to the slave.\\ | ||
+ | SENDSYC sends the request message to a QEM slave of MODBUS type and reports the operation concluded (// | ||
+ | |||
+ | === - State variables for diagnostic operation: === | ||
+ | |||
+ | When ended the message send operation, the status st_sended variable is set to 1. If you used the SEND command the state is set to 1 when the master receive the confirmation of the message being sent. If you have used the SENDSYC command in the master then this status will be set to 1 when the slave QEM will execute the RECEIVED command. In case of error, This status is still in set to 1 (After the //toutsyc// time) but the err parameter indicates the cause of the error (see the description of this parameter for details).\\ | ||
+ | The SENDSYC coomand it becomes necessary when you want to synchronize master data packet writing by reading the same data from the slave (can be used when both master and slave are Qmove). | ||
+ | |||
+ | ==== - Read request | ||
=== 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 === |