en:software:devices:modbus

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
en:software:devices:modbus [2016/12/21 17:43] – [Read Input Register] qem103en:software:devices:modbus [2016/12/23 14:53] – [5.10.1. Simbologia adottata] qem103
Line 182: Line 182:
 === Read Holding Register === === Read Holding Register ===
  
-Word read function. Si vogliono leggere le word di un certo slave (idcard). Sets the parameter //type// = 3.\\+Word read function. For reading the word of the slave (idcard). Sets the parameter //type// = 3.\\
 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 to indicate the index of the word in the “read data table” of the master from which you want are writes the read words. The read values will be saved in the “read data table”. It is recommended to always meet the following two conditions:\\ 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 to indicate the index of the word in the “read data table” of the master from which you want are writes the read words. The read values will be saved in the “read data table”. It is recommended to always meet the following two conditions:\\
 (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 otherwise the request will fail (reporting by wcmd). (addr + num - 1) <= 32 e (tabreg + num - 1) <= 32 otherwise the request will fail (reporting by wcmd).
Line 190: Line 190:
 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. 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.
  
-==== - Richieste di scrittura ====+==== - Write request ====
  
 === Force coil === === Force coil ===
-Funzione di scrittura bitSi vogliono scrivere (forzarebit 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 scrivereBisogna impostare tabreg +Bit write functionFor writing (forcethe bit of the slave (//idcard//). Sets the parameter //type// = 5.\\ You must set addr to indicate the address of the bit in the slave that you want to writeYou must set tabreg to indicate the index of the bit in the write data table” that contains the value to be written.
-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 wordSi vuole scrivere (forzarela 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 scrivereBisogna +Word write functionFor write (forcethe word of a slave (//idcard//). Sets the parameter //type// = 6.\\ You must set addr to indicate the address of the word in the slave that you intend to writeYou must set tabreg to indicate the index of the word in the data write table” that contains the value to be written.
-impostare tabreg per indicare l’indice della word nella tabella dei dati da scrivere” in cui è contenuto il valore da scrivere.+
  
 === Force multiple coil === === Force multiple coil ===
-Funzione di scrittura bit multipliSi vogliono scrivere (forzarebit 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 scrivereSi deve impostare in +Multiples bit write functionFor write (forcethe bit of a slave (//idcard//). Sets the parameter //type// = 15.\\ You must set addr to indicate the address of the bit in the slave that you intend to writeYou must set in num the number of bits to writeYou must set tabreg to indicate the bit index of the data write table” from which to begin the values to be writtenIt is recommended to always meet the following two conditions:\\ 
-num il numero di bit da scrivereBisogna impostare tabreg per indicare l’indice del bit nella tabella dei dati da scrivere +(addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 otherwise the request will fail (reporting by wcmd).
-da cui iniziano i valori da scrivereSi raccomanda di soddisfare sempre le seguenti due condizioni:\\ +
-(addr + num - 1) <= 512 e (tabreg + num - 1) <= 512 altrimenti la richiesta non potrà essere eseguita (segnalazione mediante wcmd).+
  
 === Force multiple register === === Force multiple register ===
-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 
-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 (//idcard//). Sets the parameter //type// = 16.\\ You must set addr to indicate the address of the word in the slave that you intend to write. You must set in num the number of word to write. You must set tabreg to indicate the index of the word in the “dat write table” from which to begin the values to be written. It is recommended to always meet the following two conditions:\\ 
 +(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 253: Line 247:
 </code> </code>
  
-3) Lettura del registro input nr.7 dello slave id 67+3) Reading the registry input nr.7 of the slave id 67
 <code QCL> <code QCL>
 modbus.idcard = 67 modbus.idcard = 67
Line 263: Line 257:
 WAIT modbus.st_sended WAIT modbus.st_sended
 IF (modbus.err) IF (modbus.err)
-    CALL ErroreModbus+    CALL ErrorModbus
 ENDIF ENDIF
-slVelocita = modbus.iword7+slSpeed = modbus.iword7
 </code> </code>
  
-4) Lettura dei holding register dal nr.600 al nr.606 dello slave id 8\\ +4) Reading of the holding register from nr.600 to nr.606 of the 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+The area of QCL data exchange does not support the address 600, you use the tabreg parameter to save the data read at 10 address
 <code QCL> <code QCL>
 modbus.idcard = 8 modbus.idcard = 8
Line 279: 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 = modbus.ilong6+slSpeed = modbus.ilong6
 slPosiz = modbus.ilong7 slPosiz = modbus.ilong7
 swTemp1 = modbus.iword15 swTemp1 = modbus.iword15
 </code> </code>
-==== - Schema a blocchi ====+==== - Block diagrams ==== 
 {{:software:devices:modbus:modbus_01.png?nolink400|}} {{:software:devices:modbus:modbus_01.png?nolink400|}}
  
 ==== - 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 5615 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 messagesYou cannot use the SENDSYC command.
-La scheda quando funziona in modalità Master permettecon un speciale comandodi riconoscere se lo slave collegato è +
-di tipo QEM. In caso affermativo determina anche il modello di slave connesso. Questo permette di realizzare una diagnostica +
-sulla corretta configurazione della rete. Non è possibile estendere questo controllo a tutti i tipi di slave esistenti +
-perché il protocollo non prevede una modalità standard di riconoscimento slave.\\ +
-Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcardinvia allo +
-slave una richiesta modbus nr.17 per il riconoscimento. Lo slave risponderà con un suo valore predefinito e potrà essere +
-letto nel parametro stype del masterNel caso lo slave non sia prodotto da QEM srl, il parametro avrà valore –1 ad indicare che lo +
-slave è connesso ma non è possibile identificarlo.\\ +
-Per il device MODBUS lo slave ID è diverso a seconda dello slave QEM utilizzato. Per una codifica degli slave in questo +
-senso vedere il manuale Firmware dello slave utilizzato.+
  
-Esempio d'identificazione dello slave nr.12:+==== - Slaves indentification ==== 
 + 
 +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 a standard way of slave recognition.\\ 
 +The READSTYPE command executed after selecting the slave (through idcard parameter) send a nr.17 modbus request to the slave for recognition. The slave will responds with a default value and can be read in the stype parameter of the master. If the slave is not produced by QEM, the parameter will be –1 value to indicate that the slave is connected but you cannot identify it.\\ 
 +For the MODBUS device the ID slave is different depending on the slave QEM used. For encoding of the slaves see the slave Firmware used. 
 + 
 +Example of slave identification nr.12:
 <code QCL> <code QCL>
 modbus:idcard = 12 modbus:idcard = 12
Line 324: Line 310:
 ENDIF ENDIF
 </code> </code>
-==== - Estensione del protocollo ====+==== - Protocol extension ====
  
-Il protocollo di comunicazione modbus standard definisce tipi di dati di scambio:\\+The modbus standard communication protocol defines types of Exchange data:\\
   * INPUT STATUS,   * INPUT STATUS,
   * COIL STATUS,   * COIL STATUS,
   * INPUT REGISTER,   * INPUT REGISTER,
   * HOLDING REGISTER.   * HOLDING REGISTER.
-Questi tipi trattano i segnali tipo Digital Inputs, Digital Outputs, Analog Inputs, and Analog Outputs. I valori dei registri +These types treat signals as Digital Inputs, Digital Outputs, Analog Inputs, and Analog Outputs. The values of the registers (INPUT REGISTERS and HOLDING REGISTERS), are defined as values in 16 bit, each with a unique address, (example INPUT REGISTER #1, INPUT REGISTER #2, INPUT REGISTER #3, ecc.).\\ 
-(sia INPUT REGISTERS che HOLDING REGISTERS), sono definiti come valori a 16 bit, ognuno con un unico indirizzo, +To allow support for datatypes larger than 16 bit, has been designed an extension to the protocol to treat long 32 bit dimension valuesImplementing this feature preserves the formatting of the message standard modbus it uses the contents of two consecutive addresses to represent a 32 bit valueWhen this extension is enabled (wider = 1), depending on the address used the slave responds with a 16-bit or 32-bit value for each log requestIf the address is greater than 5000 will be returned a 32-bit valueif under the Protocol remains unchanged with response to 16 bits. 
-(esempio INPUT REGISTER #1, INPUT REGISTER #2, INPUT REGISTER #3, ecc.).\\ + 
-Per permettere di suppportare tipi di dato di dimensione maggiore di 16 bit, è stata progettata una estensione al protocollo +==== - Commands and parameters ====
-per trattare valori di dimensione long 32 bit. L’implementazione di questa funzionalitá mantiene la formattazione del +
-messaggio standard modbus e utilizza il contenuto di due indirizzi consecutivi per rappresentare un valore 32 bit. Quando +
-questa estensione è attiva (wider = 1), a seconda dell’indirizzo utilizzato lo slave risponderà con un valore a 16 bit 32 bit +
-per ogni richiesta di registroSe l’indirizzo è superiore a 5000 verrà risposto con valore a 32 bit, se inferiore il protocollo +
-rimane invariato con risposta a 16 bit.+
  
-==== - Comandi e parametri ====+=== - Used symbols ===
  
-=== - Simbologia adottata === +The parameter namecondition or command is taken back to the left side of the table.
-Il nome del parametrostato o comando viene riportato alla sinistra della tabella.+
  
 **R**\\ **R**\\
-Indica se il relativo parametro o stato è ritentivo (al momento dell’inizializzazione del device mantiene lo stato precedentemente definito), oppure lo stato che assume al momento dell’inizializzazione del device.\\ +Indicates if the parameter or state is retentive (upon initialization of the device maintains the previously defined state), or the state assumes upon initialization of the device.\\ 
-Se il device non necessita di inizializzazione il campo “R” indica il valore che il parametro o stato assume all’accensione della scheda.\\ +If the device does not need to initialize the “R” field indicates the value that the parameter or state take at the at power-up card.\\ 
-R = Ritentivo\\ +R = Retentive\\ 
-0 = Al momento dell’inizializzazione del device il valore viene forzato a zero.\\ +0 = Upon initialization of the device the value is forced to zero.\\ 
-1 = Al momento dell’inizializzazione del device il valore viene forzato a uno.\\ +1 = Upon initialization of the device the value is forced to one.\\ 
-- = Al momento dell’inizializzazione del device viene presentato il valore significativo.+- = Upon initialization of the device is presented significant value.
  
 **D**\\ **D**\\
-Indica la dimensione del parametro.\\+Indicates the size of the parameter.\\
 F = Flag\\ F = Flag\\
 B = Byte\\ B = Byte\\
  • Last modified: 2020/07/13 14:58