Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
en:software:devices:modbus [2016/12/22 16:28] – [5.9. Estensione del protocollo] qem103 | en:software:devices:modbus [2016/12/23 16:25] – [5.10.3. Variabili] qem103 |
---|
To allow support for datatypes larger than 16 bit, has been designed an extension to the protocol to treat long 32 bit dimension values. Implementing this feature preserves the formatting of the message standard modbus it uses the contents of two consecutive addresses to represent a 32 bit value. When 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 request. If the address is greater than 5000 will be returned a 32-bit value, if under the Protocol remains unchanged with response to 16 bits. | To allow support for datatypes larger than 16 bit, has been designed an extension to the protocol to treat long 32 bit dimension values. Implementing this feature preserves the formatting of the message standard modbus it uses the contents of two consecutive addresses to represent a 32 bit value. When 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 request. If the address is greater than 5000 will be returned a 32-bit value, if under the Protocol remains unchanged with response to 16 bits. |
| |
==== - Comandi e parametri ==== | ==== - Commands and parameters ==== |
| |
=== - Simbologia adottata === | === - Used symbols === |
Il nome del parametro, stato o comando viene riportato alla sinistra della tabella. | |
| The parameter name, condition 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\\ |
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 parametro: se 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 impostati, il dato viene comunque accettato; pertanto devono essere previsti opportuni controlli dell’applicativo tali | In some cases, limit values are specified for the acceptance of the parameter: if any values outside the limits set are introduced, the data is however accepted; therefore appropriate controls of the application must be provided to ensure the proper functioning.\\ |
da garantire il corretto funzionamento.\\ | To execute a command, all conditions must be met; otherwise the command does not execute. |
Per l’esecuzione di un comando, tutte le relative condizioni devono necessariamente essere soddisfatte; in 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 32bit. Vedere 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 trasmettere. Nel 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 extension. See 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 transmit. In 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 device. For 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// e //par//. Rispettivamente : | To configure the TCPIP port number You must go and write about the //stopb// and //par// parameters. Respectively : |
* **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 1 a 49 sono quelli inviati dallo slave. I valori superiori a 50 sono generati internamente dal master. I primi 8 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 seriale. Il parametro viene aggiornato ad ogni errore rilevato. Il 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// state. The values from 1 to 49 are those sent by the slave. Values greater than 50 are generated internally by the master. The first 8 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 a 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 connesso. Il parametro viene aggiornato quando il parametro //st_sended// diventa 1 e se era stato eseguito un comando READSTYPE | | | serr | B | 0 | R/W | - | **Serial Errors**\\ Indicates if errors occurred in serial communication. The parameter is updated for each error encountered. The 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 connected. The parameter is updated when the //st_sended// parameter becomes 1 and if it had been execute a READSTYPE command | |
| |
| |