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/20 18:06] – [4.2. Dati scrivibili da QCL e condivisibili in MODBUS] qem103en:software:devices:modbus [2016/12/23 17:17] – [6.3.1. Simbologia adottata] qem103
Line 3: Line 3:
  
 The MODBUS<sup>®</sup> protocol represents an industrial communication system distributed and developed by Gould-Modicon to integrate PLC’s, computers, terminals, inverter and other devices. MODBUS is a Master/Slave communication protocol where only one device can be Master and monitors all activities of the serial line or TCPIP. As for the serial line can be connected up to a maximum of 247 slave along the same lines. Each device is assigned an address that distinguishes it from all other connected devices.\\ The MODBUS<sup>®</sup> protocol represents an industrial communication system distributed and developed by Gould-Modicon to integrate PLC’s, computers, terminals, inverter and other devices. MODBUS is a Master/Slave communication protocol where only one device can be Master and monitors all activities of the serial line or TCPIP. As for the serial line can be connected up to a maximum of 247 slave along the same lines. Each device is assigned an address that distinguishes it from all other connected devices.\\
-The MODBUS device lets you choose which serial port use for connection. The characteristics 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.\\+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 136: Line 136:
  
  
-===== - 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, la struttura dell’area di scambio include tipi di dato comunemente +
-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, la stessa area di scambio dati può essere manipolata dal QCL con parametri di dimensione diversa. Tutti i +
-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 //mode// 0). Allows (via parameters, states and commands) all instruments to be able to communicate with any equipment utilizing Modbus.\\ 
 +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 //type// 1, 2, 3 o 4). The OUTPUT section, in the master operation, is the area of data storage that the master should transfer to the slaves. It is used by all writing functions (parameter //type// 5, 6, 15 o 16). To facilitate the exchange of data between devices, the structure of the Exchange area includes data types commonly used in QCL namely WORD, LONG and FLAG. The “BYTE” type does not appear because the modbus usually uses the word size for each address registers. The modbus protocol selects data based on the number of access log register, while the QCL selects based on the parameter symbol, you create a reference table in which each QCL symbol find the corresponding number in the register of access in Modbus protocol. To obtain greater flexibility for addressing, the same area of Exchange data can be manipulated by the QCL with different dimension parameterized. All the symbols that appear in the same row of the table refer to the same memory locations.
  
-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 //st_ibit0//... e //st_obit1//... sono utili per agevolare l’accesso alle informazioni di tipo bit solo nel primo registro della +
-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 //st_ibit0//... and //st_obit1//... states are useful in order to facilitate access to information bit, only in the first table log.
  
-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 0The card generates modbus messages only on QCL ordering and does not automaticallyTo "format" the modbus message string there are number of parameters.\\ 
-**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, a number of States allow an audit on the operation being executedWe see in detail:
-**idcard** = indirizzo dell’unità slave verso cui si vuole inviare la richiesta.\\ +
-**addr** = indice da cui iniziare leggere o da cui iniziare a scrivere nello slave in questione.\\  +
-**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 = 56, 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 (//st_sended//) solamente quando lo slave esegue il comando RECEIVED.+
  
-=== - Variabili di Stato per diagnostica operazione: === +**type** request type that you want to process (reading or writing word or bit).\\ 
-Quando l’operazione di trasmissione messaggio è conclusa, viene impostata a 1 la variabile di stato st_sendedSe è +**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 inviatoSe +**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 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. For write operations (type = 5615, 16), this parameter indicates the position in the “table of data to be written” where is the data to be written on the slave. Are accepted values are between and 512 for values of type parameter = 1, 2, 5, 15 (writing and reading of bits), while for type value = 3, 4, 6, 16 (writing and reading of wordthe expected values are between 1 and 32.\\ 
-avrà eseguito il comando RECEIVEDIn caso di erroreinvecequesto 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 (vedere la descrizione di questo parametro per i dettagli).\\ +
-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 (//st_sended//) only when the slave executes the RECEIVED command. 
 + 
 +=== - 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 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 leggereIl parametro //num// indica il +Bit read function. You want to read the bits of a slave (//idcar//d). Sets the parameter //type// = 1.\\ You must set //addr// to indicate the address of the bit in the slave from which to start readingThe //num// parameter indicates the number of bits that are readYou must to set //tabreg// to indicate the index of the bit in the data read table” the master from which you want to be written the read bitsThe raedings value will be saved in the data read table”. It is recommended to always meet the following two conditions:\\ 
-numero di bit che si intendono leggereBisogna impostare //tabreg// per indicare l’indice del bit nella tabella dei dai letti” del +(//addr// + //num// - 1) <= 512 e (//tabreg// + //num// - 1) <= 512 otherwise the request will fail (reporting by //wcmd//).
-master da cui si vuole che siano scritti i bit lettiI valori letti saranno salvati nella tabella dei dati letti”. 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 (segnalazione mediante //wcmd//).+
  
 === Read Input === === Read Input ===
-Funzione di lettura a bitSi 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 Input. Nel caso di slave Qmove le due richieste hanno lo stesso effetto.+ 
 +Bit read functionTo read the bits of a slave (//idcard//). The function is equal to the “//Read Coil//”. Sets the parameter type = 2.\\ The meaning of the two functions is distinguished at the level of MODBUS protocolSome slave can make available different memory areas depending if the bits are Coil or Input. In the case of slave Qmove the two requests have the same effect.
  
 === Read Holding Register === === Read Holding Register ===
-Funzione di lettura a wordSi 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 leggereIl parametro num +Word read functionFor reading the word of the slave (idcard). Sets the parameter //type// = 3.\\ 
-indica il numero di word che si intendono leggereBisogna impostare tabreg per indicare l’indice della word nella tabella +You must to set addr to indicate the address of the word in the slave from which to start readingThe num parameter indicates the number of word to be readYou 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 wordsThe read values will be saved in the read data table”. It is recommended to always meet the following two conditions:\\ 
-dei dai letti” del master da cui si vuole che siano scritte le word letteI valori letti verranno salvati nella tabella dei dati letti”. +(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 (segnalazione mediante +
-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 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 277: 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 287: 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 303: 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 = 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 in modalità Master permettecon un speciale comandodi riconoscere se lo slave collegato è + 
-di tipo QEM. In caso affermativo determina anche il modello di slave connessoQuesto permette di realizzare una diagnostica +==== - Slaves indentification ==== 
-sulla corretta configurazione della reteNon è possibile estendere questo controllo tutti i tipi di slave esistenti + 
-perché il protocollo non prevede una modalità standard di riconoscimento slave.\\ +When the card works in master mode allowswith specila commandtell if the slave connected is a QEM. If so also determines the pattern of slave connectedThis allows a diagnostic on the correct network configurationYou cannot extend this control to all types of existing slaves because the protocol does not provide a standard way of slave recognition.\\ 
-Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcard) invia allo +The READSTYPE command executed after selecting the slave (through idcard parametersend a nr.17 modbus request to the slave for recognitionThe 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.\\ 
-slave una richiesta modbus nr.17 per il riconoscimentoLo slave risponderà con un suo valore predefinito e potrà essere +For the MODBUS device the ID slave is different depending on the slave QEM usedFor encoding of the slaves see the slave Firmware used.
-letto nel parametro stype del master. Nel caso lo slave non sia prodotto da QEM srlil 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 utilizzatoPer una codifica degli slave in questo +
-senso vedere il manuale Firmware dello slave utilizzato.+
  
-Esempio d'identificazione dello slave nr.12:+Example of slave identification nr.12:
 <code QCL> <code QCL>
 modbus:idcard = 12 modbus:idcard = 12
Line 348: 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 +
-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 ====+==== - Commands and parameters ====
  
-=== - Simbologia adottata === +=== - Used symbols === 
-Il nome del parametrostato o comando viene riportato alla sinistra della tabella.+ 
 +The parameter namecondition or command is taken back to the left side of the table.
  
 **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\\
Line 386: Line 342:
 S = Single Float S = Single Float
  
-== Condizioni == +== Conditions == 
-Vengono descritte tutte le condizioni necessarie affinché il parametro sia considerato corretto o perché il comando venga accettato.\\ + 
-In alcuni casi vengono specificati dei valori limite per l’accettazione del parametrose vengono introdotti dei valori esterni +Describes all the conditions necessary for the parameter so that the parameter is considered correct or because the command is accepted.\\ 
-ai limiti impostatiil dato viene comunque accettatopertanto devono essere previsti opportuni controlli dell’applicativo tali +In some cases, limit values are specified for the acceptance of the parameterif any values outside the limits set are introducedthe data is however acceptedtherefore appropriate controls of the application must be provided to ensure the proper functioning.\\ 
-da garantire il corretto funzionamento.\\ +To execute a commandall conditions must be metotherwise the command does not execute.
-Per l’esecuzione di un comandotutte le relative condizioni devono necessariamente essere soddisfattein caso contrario +
-il comando non viene eseguito.+
    
 **A**\\ **A**\\
-Indica la modalità di accesso.\\ +Indicates the access mode.\\ 
-R = Read (lettura).\\ +R = Read.\\ 
-W = Write (scrittura).\\+W = Write.\\
 RW = Read / Write.\\ RW = Read / Write.\\
  
-=== - Parametri === +=== - Parameters === 
-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.                                                                                                               | +Name         ^ D  ^ R  ^ A    ^ Conditions  Description                                                                                                                                                                                                           ^ 
-| prot         | B  | R  | R/W  | -           | **Protocol**\\ (0 ÷ 1)\\ Definisce il tipo di protocollo Modbus da utilizzare.\\ **0** = ASCII,\\ **1** = RTU,\\ **2** = TCPIP                                                                                        | +| mode         | B  | R  | R/W  | -           | **Mode**\\ (0 ÷ 2)\\ Defines if the board should function as a master or slave.\\ **0** = master.                                                                                                               | 
-| wider        | B  | R  | R/W  | -           | **Wide Registers**\\ (0 ÷ 1)\\ Indica se utilizzare l’estensione del protocollo per i registri a 32bitVedere capitolo Estensione del protocollo” :\\ **0** = normale,\\ **1** = protocollo esteso.                 | +| prot         | B  | R  | R/W  | -           | **Protocol**\\ (0 ÷ 1)\\ Defines the type of modbus protocol to use.\\ **0** = ASCII,\\ **1** = RTU,\\ **2** = TCPIP                                                                                        | 
-| idcard       | W  | R  | R/W  | -           | **Identification Card**\\ (0 ÷ 255)\\ Nel funzionamento come master è il numero del dispositivo al quale s'intende trasmettereNel modo master è valida anche l’impostazione zero per il funzionamento broadcast.    | +| wider        | B  | R  | R/W  | -           | **Wide Registers**\\ (0 ÷ 1)\\ Indicates if to use the 32-bit registers protocol extensionSee the Extension of the Protocol” section :\\ **0** = normal,\\ **1** = extended protocol.                 | 
-| type         | B  | 1  | R/W  | -           | **Type**\\ Definisce il tipo di richiesta che il master deve eseguire.\\ Valori ammessi: 1, 2, 3, 4, 5, 6, 15, 16                                                                                                     | +| idcard       | W  | R  | R/W  | -           | **Identification Card**\\ (0 ÷ 255)\\ In the operation as the master is the device number that you want to transmitIn master mode setting of zero is also valid for operation broadcast.    | 
-| addr         | L  | 1  | R/W  | -           | **Address**\\ (1 ÷ 65535)\\ Definisce l’indirizzo utilizzato dal master per definire quale sia il dato da leggere o scrivere.                                                                                         | +| type         | B  | 1  | R/W  | -           | **Type**\\ Defines the type of request that the master must perform.\\ Allowed values: 1, 2, 3, 4, 5, 6, 15, 16                                                                                                     | 
-| tabreg       | W  | 1  | R/W  | -           | **Destination**\\ (1 ÷ 512)\\ Definisce l’indirizzo nelle tabelle dei dati in cui scrivere il dato letto o in cui trovare il dato da scrivere.                                                                        | +| addr         | L  | 1  | R/W  | -           | **Address**\\ (1 ÷ 65535)\\ Defines the address used by the master to define the data to be read or write.                                                                                         | 
-| num          | W  | 1  | R/W  | -           | **Number**\\ (1 ÷ 512)\\ È il numero d'elementi da scrivere o leggere nella richiesta che compone il master.                                                                                                          | +| tabreg       | W  | 1  | R/W  | -           | **Destination**\\ (1 ÷ 512)\\ Defines the address data tables into which to write the data read or where to find the data to write.                                                                        | 
-| brate        | L  | R  | R/W  | -           | **Baud rate**\\ Baud rate della seriale.\\ Valori validi: 4800, 9600, 19200, 38400, 57600, 115200.                                                                                                                    | +| num          | W  | 1  | R/W  | -           | **Number**\\ (1 ÷ 512)\\ Is the number of items to be written to or read in the request of the master.                                                                                                          | 
-| stopb        | B  | R  | R/W  | -           | **Stop bit**\\ Valori validi: 1, 2.                                                                                                                                                                                   | +| brate        | L  | R  | R/W  | -           | **Baud rate**\\ Serial Baud rate.\\ Allowed values: 4800, 9600, 19200, 38400, 57600, 115200.                                                                                                                    | 
-| par          | B  | R  | R/W  | -           | **Parity**\\ (0 ÷ 2)\\ **0** = none (nessuna),\\ **1** = odd (dispari),\\ **2** = even (pari).                                                                                                                        | +| stopb        | B  | R  | R/W  | -           | **Stop bit**\\ Allowed values: 1, 2.                                                                                                                                                                                   | 
-| tout         | W  | R  | R/W  | -           | **Timeout**\\ (0 ÷ 9999 msec)\\ Per la modalitá master è il tempo massimo in cui lo slave deve rispondere.\\ Impostandolo a zero il Timeout è disabilitato.                                                           | +| par          | B  | R  | R/W  | -           | **Parity**\\ (0 ÷ 2)\\ **0** = none,\\ **1** = odd,\\ **2** = even.                                                                                                                        | 
-| toutsyc      | W  | R  | R/W  | -           | **Time out synchronize**\\ (0 ÷ 9999 msec)\\ Utilizzato solamente per la modalitá master è il tempo massimo che puó trascorrere tra l’invio del comando SENDSYC e l’esecuzione del comando RECEIVED nello slave QEM.  |+| tout         | W  | R  | R/W  | -           | **Timeout**\\ (0 ÷ 9999 msec)\\ For the master mode is the maximum time the slave must respond.\\ Setting it to zero, the Timeout is disabled.                                                           | 
 +| toutsyc      | W  | R  | R/W  | -           | **Time out synchronize**\\ (0 ÷ 9999 msec)\\ Only used to master mode is the maximum time that can elapse between sending the SENDSYC command and the RECEIVED command execution on the QEM slave.  |
 | iword1÷32    | W  | 0  | R    | -           | **Input Word nr.** (1Input Long nr. (1÷16)32)                                                                                                                                                                         | | iword1÷32    | W  | 0  | R    | -           | **Input Word nr.** (1Input Long nr. (1÷16)32)                                                                                                                                                                         |
-| st_ibit0÷15  | F  | 0  | R    | -           | **Input bit nel parametro iword1**                                                                                                                                                                                    |+| st_ibit0÷15  | F  | 0  | R    | -           | **Input bit in the iword1 parameter**                                                                                                                                                                                    |
 | ilong1÷16    | L  | 0  | R    | -           | **Input Long nr.** (1÷16)                                                                                                                                                                                             | | ilong1÷16    | L  | 0  | R    | -           | **Input Long nr.** (1÷16)                                                                                                                                                                                             |
 | oword1÷32    | W  | 0  | R/W  | -           | **Output Word nr.** (1÷32)                                                                                                                                                                                            | | oword1÷32    | W  | 0  | R/W  | -           | **Output Word nr.** (1÷32)                                                                                                                                                                                            |
-| st_obit0÷15  | F  | 0  | R/W  | -           | **Output bit nel parametro oword1**                                                                                                                                                                                   |+| st_obit0÷15  | F  | 0  | R/W  | -           | **Output bit in the oword1 parameter**                                                                                                                                                                                   |
 | olong1÷16    | L  | 0  | R/W  | -           | **Output Long nr.** (1÷16)                                                                                                                                                                                            | | olong1÷16    | L  | 0  | R/W  | -           | **Output Long nr.** (1÷16)                                                                                                                                                                                            |
  
-La possibilità di comunicare con il protocollo TCPIP è stata sviluppata in un tempo successivo rispetto alla nascita del device MODBUS. Per questo modivo l'impostazione della porta e dell'indirizzo IP viene eseguita mediante alcuni parametri che hanno un significato diverso.+The ability to communicate with the TCPIP protocol It was developed at a later time than the birth of the MODBUS deviceFor this reason the IP address and port setting is achieved using some parameters that have a different meaning.
  
-Per configurare il numero della porta TCPIP è necessario andare a scrivere sui parametri //stopb// //par//Rispettivamente :+To configure the TCPIP port number You must go and write about the //stopb// and //par// parametersRespectively :
   * **stopb** = tcpip_port / &H00000100   * **stopb** = tcpip_port / &H00000100
   * **par** = tcpip_port ANDB &H000000FF   * **par** = tcpip_port ANDB &H000000FF
-Per impostare lo slave TCPIP a cui si vuole eseguire la richiesta è necessario andare a scrivere sul parametro //brate//.\\  +To set the TCPIP slave to which you want to execute the request you must go to write on the//brate// parameter .\\  
-Un indirizzo IP può essere espresso come TcpAddr3.TcpAddr2.TcpAddr1.TcpAddr0 (per esempio 192.168.0.1).+An IP address can be expressed as TcpAddr3.TcpAddr2.TcpAddr1.TcpAddr0 (for example 192.168.0.1).
   * **brate** = (TcpAddr3 * &H01000000) + (TcpAddr2 * &H00010000) + (TcpAddr1 * &H00000100) + TcpAddr0   * **brate** = (TcpAddr3 * &H01000000) + (TcpAddr2 * &H00010000) + (TcpAddr1 * &H00000100) + TcpAddr0
  
  
-=== - Variabili === +=== - Variables === 
-Nome   ^ D  ^ R  ^ A    ^ Condizioni  Descrizione                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^ + 
-| err    | B  | 0  | R    | -           | **Errors**\\ Indica se sono stati riscontrati errori nel protocollo.\\ In modalità master il parametro viene aggiornato in coincidenza dell’attivazione dello stato //st_sended//I valori da 49 sono quelli inviati dallo slave. I valori superiori a 50 sono generati internamente dal master. I primi valori sono normalizzati nel protocollo e sono:\\ **0** = comunicazione avvenuta senza errori,\\ **1** = ILLEGAL FUNCTION,\\ **2** = ILLEGAL DATA ADDRESS,\\ **3** = ILLEGAL DATA VALUE,\\ **4** = SLAVE DEVICE FAILURE,\\ **5** = ACKNOWLEDGE,\\ **6** = SLAVE DEVICE BUSY,\\ **7** = NEGATIVE ACKNOWLEDGE,\\ **8** = MEMORY PARITY ERROR,\\ **5**0 = UNKNOWN RECEIVED ERROR lo slave ha risposto con un codice superiore a 49,\\ **5**1 = TIMEOUT lo slave non ha risposto entro il tempo programmato nel parametro tout,\\ **52** = INVALID ANSWER,\\ **52** = INVALID FUNCTION ANSWER - Tipo funzione non supportata,\\ **53** = CHECKSUM ANSWER - Il checksum ricavato non corrisponde,\\ **54** = TRUNCATED ANSWER - Messaggio troppo corto,\\ **55** = INVALID ID ANSWER - Id slave non corrispondente,\\ **56** =  INVALID_MBAP_TRANSACTION_ID - modbus TCPIP, //transaction ID// non corretto,\\ **57** = INVALID_MBAP_PROTOCOL_ID - modbus TCPIP, //protocol ID// diverso da zero,\\ **70** = TIMEOUT SYNCHRONIZED lo slave QEM non hanno eseguito il comando RECEIVED entro il tempo programmato nel parametro toutsyc.\\ In modalità slave il parametro non viene mai aggiornato.  | +Name   ^ D  ^ R  ^ A    ^ Conditions  Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ^ 
-| serr   | B  | 0  | R/W  | -           | **Serial Errors**\\ Indica se sono stati riscontrati errori nella comunicazione serialeIl parametro viene aggiornato ad ogni errore rilevatoIl valore permane fino:\\ - ad un successivo errore;\\ - alla scrittura di uno dei seguenti parametri: mode, prot, wider, brate, stopb, par;\\ - ad una scrittura sullo stesso (qualsiasi valore lo azzera).\\ **0** = nessun errore,\\ **1** = parity error,\\ **2** = framing error,\\ **3** = overrun error.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | +| err    | B  | 0  | R    | -           | **Errors**\\ Indicates if errors occurred in the protocol.\\ In master mode the parameter is updated to coincide the activation of the //st_sended// stateThe values from to 49 are those sent by the slave. Values greater than 50 are generated internally by the master. The first velues are normalized in the protocol and are:\\ **0** = communications without errors,\\ **1** = ILLEGAL FUNCTION,\\ **2** = ILLEGAL DATA ADDRESS,\\ **3** = ILLEGAL DATA VALUE,\\ **4** = SLAVE DEVICE FAILURE,\\ **5** = ACKNOWLEDGE,\\ **6** = SLAVE DEVICE BUSY,\\ **7** = NEGATIVE ACKNOWLEDGE,\\ **8** = MEMORY PARITY ERROR,\\ **5**0 = UNKNOWN RECEIVED ERROR the slave answered with code greater than 49,\\ **5**1 = TIMEOUT the slave does not respond within the time scheduled in the tout parameter,\\ **52** = INVALID ANSWER,\\ **52** = INVALID FUNCTION ANSWER - Function type not supported,\\ **53** = CHECKSUM ANSWER - The checksum proceeds does not match,\\ **54** = TRUNCATED ANSWER - Message too short,\\ **55** = INVALID ID ANSWER - Slave ID mismatch,\\ **56** =  INVALID_MBAP_TRANSACTION_ID - modbus TCPIP, //transaction ID// incorrectly,\\ **57** = INVALID_MBAP_PROTOCOL_ID - modbus TCPIP, //protocol ID// different by zero,\\ **70** = TIMEOUT SYNCHRONIZED the slave QEM did not execute the RECEIVED command within the time scheduled in the toutsyc parameter.\\ In slave mode the parameter is never updated.  | 
-| stype  | W  | 0  | R    | -           | **Slave type**\\ Indica il tipo di slave connessoIl parametro viene aggiornato quando il parametro //st_sended// diventa e se era stato eseguito un comando READSTYPE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |+| serr   | B  | 0  | R/W  | -           | **Serial Errors**\\ Indicates if errors occurred in serial communicationThe parameter is updated for each error encounteredThe value persists until:\\ - under a subsequent error;\\ - the writing of one of the following parameters: mode, prot, wider, brate, stopb, par;\\ - writing about himself (any value will reset).\\ **0** = no errors,\\ **1** = parity error,\\ **2** = framing error,\\ **3** = overrun error.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 
 +| stype  | W  | 0  | R    | -           | **Slave type**\\ Indicates the type of slave connectedThe parameter is updated when the //st_sended// parameter becomes and if it had been execute a READSTYPE command                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 
 + 
 + 
 +=== - States ===
  
 +^Name^D^R^A^Conditions^Description^
 +|st_sended|F|0|R|-|**Sended**\\ State only been used in master mode. Activation indicates completion of the transmission of a message. The state is reset with the SEND or SENDSYC commands.|
 +|st_opencom|F|0|R|-|**Open communication port**\\ Activation indicates that the device is working the serial communications port. To set this state use the OPENCOM command, to reset CLOSECOM.|
 +|wdata|F|0|R|-|**Warning Data**\\ This bit indicates that an attempt was made to insert an invalid value in a parameter.|
 +|wcmd|F|0|R|-|**Warning Command**\\ This bit indicates that it did not execute a command because they missing the necessary conditions.|
  
-=== - Stati === +=== - Commands ===
-^Nome^D^R^A^Condizioni^Descrizione^ +
-|st_sended|F|0|R|-|**Sended**\\ Stato utilizzato solo in modalità master. L’attivazione indica il completamento della trasmissione di un messaggio. Lo stato viene resettato con i comandi SEND o SENDSYC.| +
-|st_opencom|F|0|R|-|**Open communication port**\\ L'attivazione indica che il device sta impegnando la porta di comunicazione seriale. Per settare questo stato usare il comando OPENCOM, per resettarlo CLOSECOM.| +
-|wdata|F|0|R|-|**Warning Data**\\ Questo bit segnala che è stato tentato un inserimento di un valore non valido in un parametro.| +
-|wcmd|F|0|R|-|**Warning Command**\\ Questo bit segnala che è non è stato eseguito un comando perché mancano le condizioni necessarie.|+
  
-=== - Comandi === +The available commands to manage the device are listed below in descending order of priority.\\ 
-I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente.\\ +The device executes all commands received within the same sampling time starting from the one with the highest priority.\\ 
-Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore.\\ +For example if the device receives the same sampling time CLOSECOM and OPENCOM commandsfirst run the OPENCOM command and then to CLOSECOM leaving therefore the communication port closed.
-Per esempio se il device riceve nello stesso tempo di campionamento i comandi CLOSECOM OPENCOM, per primo esegue il comando OPENCOM e poi quello di CLOSECOM lasciando perciò la porta di comunicazione chiusa.+
  
-^Nome^D^R^A^Condizioni^Descrizione+^Name^D^R^A^Conditions^Description
-|SEND|-|-|-|mode = 0\\ 0 < num <= 128\\ st_sended = 1\\ st_opencom = 1|**Sended**\\ Determina la trasmissione del messaggio verso lo slave selezionato.| +|SEND|-|-|-|mode = 0\\ 0 < num <= 128\\ st_sended = 1\\ st_opencom = 1|**Sended**\\ Determines the message transmission toward the slave select.| 
-|SENDSYC|-|-|-|mode = 0\\ 0 < num <= 128\\ st_sended = 1\\ st_opencom = 1|**Send synchronize**\\ Utilizzabile solo in modo master determina la trasmissione del messaggio verso uno slave QEM con la sincronizzazione.| +|SENDSYC|-|-|-|mode = 0\\ 0 < num <= 128\\ st_sended = 1\\ st_opencom = 1|**Send synchronize**\\ Usable only in master mode determines the message transmission towards a slave QEM with synchronisation.| 
-|READSTYPE|-|-|-|mode = 0\\ st_sended = 1\\ st_opencom = 1|**Read slave type**\\ Richiesta lettura informazione type sullo slave specificato in idcard. La risposta verrá segnalata sul parametro stype quando lo stato st_sended diventa 1.| +|READSTYPE|-|-|-|mode = 0\\ st_sended = 1\\ st_opencom = 1|**Read slave type**\\ Read information request type specified on the idcard slaveThe answer will be reported on the stype parameter when the st_sended state becomes 1.| 
-|CLRWDATA|-|-|-|-|**Clear Warning Data**\\ Azzera la segnalazione del parametro wdata.| +|CLRWDATA|-|-|-|-|**Clear Warning Data**\\ Reset the wdata parameter reporting.| 
-|CLRWCMD|-|-|-|-|**Clear Warning Command**\\ Azzera la segnalazione del parametro wcmd.| +|CLRWCMD|-|-|-|-|**Clear Warning Command**\\ Reset the wcmd parameter reporting.| 
-|OPENCOM|-|-|-|st_opencom = 0|**Open Serial communication**\ Apre la comunicazione seriale (il device quindi impegna la porta di comunicazione ). Lo stato st_opencom diventa 1.| +|OPENCOM|-|-|-|st_opencom = 0|**Open Serial communication**\ Open the serial communication (the device then committed the communications port ). The st_opencom status becomes 1.| 
-|CLOSECOM|-|-|-|-|**Close Serial communication**\\ Chiude la comunicazione seriale (il device quindi non impegna piú la porta di comunicazione ). Lo stato st_opencom diventa 0.|+|CLOSECOM|-|-|-|-|**Close Serial communication**\\ Close the serial communication (the device then does not committted the communications port ). The st_opencom status becomes 0.|
  
  
-===== - Descrizione funzionamento come slave ===== +===== - Slave operation description ===== 
-==== - Modo di funzionamento SLAVE ====+==== - Slave mode operation ====
  
-La modalità slave viene impostata con il parametro mode = 1 mode = 2. Bisogna introdurre nei parametri il codice dell’ID slave tramite il parametro idcard.+Slave mode is set with the mode = 1 or mode = 2 parameterYou must to introduce in the parameters the slave ID code through the idcard parameter.
  
-**Impostazioni modbus e apertura del canale di comunicazione di tipo seriale**+**Modbus settings and opening channel of serial communication**
 <code QCL> <code QCL>
 modbus.mode = 1                             ; modbus slave modbus.mode = 1                             ; modbus slave
Line 482: Line 440:
 ENDIF ENDIF
 </code> </code>
-**Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP**+**Modbus settings and open of the communication channel of TCPIP type**
 <code QCL> <code QCL>
 modbus.mode = 1                             ; modbus slave modbus.mode = 1                             ; modbus slave
Line 499: Line 457:
 </code> </code>
  
-Le operazioni che spettano all’applicativo QCL sono essenzialmente due+The operations that should execute the QCL are essentially two
-  * aggiornare i parametri tipo owordNN, olongNN (che verranno poi letti dal master) +  * update the parameters owordNN, olongNN type (which will then be read from the master) 
-  * processare i parametri tipo iwordNN, ilongNN (che sono stati scritti dal master) +  * process the parameters iwordNN, ilongNN type (which will then written by the master) 
-=== - Aggiornamento dei parametri tipo owordNN === +=== - Updating owordNN parameters type ===
-Per aggiornare i parametri tipo owordNN il QCL deve scrivere i valori nei parametri quindi inviare il comando VALIDATE. +
-L’utilizzo del comando si rende necessario per rendere disponibili alle letture del master i nuovi dati nello stesso istante, +
-evitando così che possano venire letti solamente parte dei parametri aggiornati. Quindi l’assegnazione di un valore ad un +
-parametro device NON SIGNIFICA che esso sia immediatamente disponibile per le letture del master. Sarà disponibile +
-solamente dopo il comando VALIDATE.+
  
-**Esempio**+To update the owordNN parameters type the QCL must write values in the parameters then send the VALIDATE command. The use of the command is necessary to make available on the readings of the master the new data at the same time, so that they can be read only part of updated parameters. So assigning a value to a device parameter DOES NOT MEAN that it is immediately available for the master readings. Will only be available after the VALIDATE command. 
 + 
 +**Example**
 <code QCL> <code QCL>
 modbus.olong1 = anpos.speed modbus.olong1 = anpos.speed
Line 519: Line 474:
 </code> </code>
  
-=== - Processo dei parametri tipo iwordNN === +=== - Process iwordNN parameters type ===
-Per processare i parametri tipo iwordNN, invece, il QCL deve attendere che lo stato st_msgrx venga attivato. Questo significa +
-che un messaggio di scrittura è stato inviato dal master. Per i messaggi di lettura nessun segnale viene riferito ai +
-parametri QCL. Il QCL poi deve prelevare i valori dall’area scambio dati e al termine deve inviare il comando RECEIVED, +
-solo allora lo stato st_msgrx viene disattivato.+
  
-**Esempio**+To process the iwordNN parameters type, instead,the QCL must wait for the st_msgrx state is activated. This means that a write message was sent by the master. For the read message no signal reportedly to QCL parameters. The QCL then must take the values from the data exchange and at the end needs to send the RECEIVED command, only then the st_msgrx state is disabled. 
 + 
 +**Example**
 <code QCL> <code QCL>
 WAIT modbus.st_msgrx WAIT modbus.st_msgrx
Line 533: Line 486:
 RECEIVED modbus RECEIVED modbus
 </code> </code>
-Naturalmente non esiste nessun controllo per evitare che durante la lettura dei parametri //iwordNN// il master erroneamente 
-esegua un’altra scrittura, prima che il codice del progetto presente nello slave finisca il processo.\\ 
-Inoltre il codice per la manipolazione del device modbus nell’applicativo è consigliato che sia raccolto in un unico task in 
-modo da non creare accessi contemporanei ai device che potrebbero generare delle condizioni non valide in ogni singolo 
-contesto. 
  
-Tutte le richieste di lettura che arrivano dal master MODBUS fanno riferimento ai dati di tipo //owordNN// accedendo quindi +There is no control to prevent when reading //iwordNN// parameters the master incorrectly execute another writing, before the project code present in the slave to finish the process.\\ 
-alla stessa area datiLo slave mette a disposizione i valori che il master leggerà nei parametri di tipo //owordNN//.\\ +Also the code for handling the modbus device in the application it is recommended that it is collected in a single task in order not to create simultaneous accesses to the device that could generate invalid conditions. 
-Tutte le richieste di scrittura che arrivano dal master MODBUS fanno riferimento ai dati di tipo //iwordNN// accedendo quindi + 
-alla stessa area datiLo slave mette a disposizione i parametri //iwordNN// dove il master potrà scrivere i dati+All read requests that arrive from the master MODBUS refer to the //owordNN// type data by accessing to the same data area. The slave provides the values that the master will read in the //owordNN// parameters type.\\ 
-==== - Schema a blocchi ====+All write requests arriving from the MODBUS master refer to the //iwordNN// type data aby accessing to the same data area. The slave provides the //iwordNN// parameters where the master will write data
 +==== - Block diagram ==== 
 {{:software:devices:modbus:modbus_02.png?nolink400|}} {{:software:devices:modbus:modbus_02.png?nolink400|}}
  
-==== - Comandi e parametri ====+==== - Commands and parameters ====
  
-=== - Simbologia adottata ===+=== - Used symbols ===
  
-Il nome del parametrostato o comando è riportato alla sinistra della tabella.+The parameter namecondition or command is shown at the left of the table.
  
 **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 accept to the power up of the card.\\ 
-R = Ritentivo\\ +R = Retentive\\ 
-0 = Al momento dell’inizializzazione del device il valore è forzato a zero.\\ +0 = Upon initialization of the device the value is forced to zero.\\ 
-1 = Al momento dell’inizializzazione del device il valore è forzato ad uno.\\ +1 = Upon initialization of the device the value is forced to one.\\ 
-- = Al momento dell’inizializzazione del device è 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