Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente Prossima revisioneEntrambe le parti successive la revisione |
software:devices:modbus [2015/09/15 16:54] – [Table] qem207 | software:devices:modbus [2015/09/16 09:24] – [Esempio:] qem207 |
---|
| olong1÷16 | L | 0 | R/W | - | **Output Long nr.** (1÷16) | | | olong1÷16 | L | 0 | R/W | - | **Output Long nr.** (1÷16) | |
| |
| Per configurare il numero della porta TCPIP è necessario andare a scrivere sui parametri //stopb// e //par//. Rispettivamente : |
| * **stopb** = tcpip_port / &H00000100 |
| * **par** = tcpip_port ANDB &H000000FF |
| Per impostare lo slave TCPIP a cui si vuole eseguire la richiesta è necessario andare a scrivere sul parametro //brate//.\\ |
| Un indirizzo IP può essere espresso come TcpAddr3.TcpAddr2.TcpAddr1.TcpAddr0 (per esempio 192.168.0.1). |
| * **brate** = (TcpAddr3 * &H01000000) + (TcpAddr2 * &H00010000) + (TcpAddr1 * &H00000100) + TcpAddr0 |
| |
Per configurare il numero della porta TCPIP è necessario andare a scrivere sui parametri brate, stopb e par. Rispettivamente :\\ | |
brate = &HFFFFFFFF\\ | |
stopb = tcpip_port / &H00000100\\ | |
par = tcpip_port ANDB &H000000FF | |
| |
| === - Variabili - Modbus Master === |
| ^ 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. | |
| | 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. | |
| | 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 | |
| |
| |
| |
| |
=== - Variabili - Modbus Master === | |
^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,\\ **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.| | |
|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.| | |
|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| | |
| |
=== - Stati - Modbus Master === | === - Stati - Modbus Master === |
==== - Modo di funzionamento SLAVE ==== | ==== - Modo di funzionamento SLAVE ==== |
| |
La modalità slave viene impostata con il parametro mode = 1. Bisogna introdurre nei parametri il codice dell’ID slave tramite il parametro idcard. Le operazioni che spettano all’applicativo QCL sono essenzialmente due: | La modalità slave viene impostata con il parametro mode = 1 o mode = 2. Bisogna introdurre nei parametri il codice dell’ID slave tramite il parametro idcard. Le operazioni che spettano all’applicativo QCL sono essenzialmente due: |
* aggiornare i parametri tipo owordNN, olongNN (che verranno poi letti dal master) | * aggiornare i parametri tipo owordNN, olongNN (che verranno poi letti dal master) |
* processare i parametri tipo iwordNN, ilongNN (che sono stati scritti dal master) | * processare i parametri tipo iwordNN, ilongNN (che sono stati scritti dal master) |
== Esempio: == | == Esempio: == |
<code QCL> | <code QCL> |
MAIN: | modbus.olong1 = anpos.speed |
modbus:olong1 = anpos:speed | modbus.oword1 = npezzi |
modbus:oword1 = npezzi | modbus.oword2 = npezzitot |
modbus:oword2 = switch | modbus.oword3 = anpos.dir |
modbus:oword3 = anpos:dir | modbus.olong2 = anpos.posit |
modbus:olong2 = anpos:posit | modbus.VALIDATE |
VALIDATE modbus | |
WAIT 1 | |
JUMP MAIN | |
</code> | </code> |
| |
| |
=== - Parametri - Modbus Slave === | === - Parametri - Modbus Slave === |
^Nome^D^R^A^Condizioni^ Descrizione^ | ^ Nome ^ D ^ R ^ A ^ Condizioni ^ Descrizione ^ |
|mode|B|R|R/W|-|**Mode**\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master,\\ **1** = slave.| | | mode | B | R | R/W | - | **Mode**\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master,\\ **1** = slave. | |
|prot|B|R|R/W|-|**Protocol**\\ Definisce il tipo di protocollo Modbus da utilizzare.\\ **0** = ASCII,\\ **1** = RTU.| | | prot | B | R | R/W | - | **Protocol**\\ Definisce il tipo di protocollo Modbus da utilizzare.\\ **0** = ASCII,\\ **1** = RTU. | |
|wider|B|R|R/W|-|**Wide Registers**\\ Indica se utilizzare l’estensione del protocollo per i registri a 32bit. Vedere capitolo “Estensione del protocollo”.\\ **0** = normale,\\ **1** = protocollo esteso.| | | wider | B | R | R/W | - | **Wide Registers**\\ Indica se utilizzare l’estensione del protocollo per i registri a 32bit. Vedere capitolo “Estensione del protocollo”.\\ **0** = normale,\\ **1** = protocollo esteso. | |
|idcard|W|R|R/W|-|**Identification Card**\\ ( 1 ÷ 255 per slave)\\ Nel funzionamento come slave è il numero che identifica l’apparecchio nella rete.| | | idcard | W | R | R/W | - | **Identification Card**\\ ( 1 ÷ 255 per slave)\\ Nel funzionamento come slave è il numero che identifica l’apparecchio nella rete. | |
|brate|L|R|R/W|-|**Baud rate**\\ Baud rate della seriale.\\ Valori validi: 4800,9600,19200,38400. 57600.| | | brate | L | R | R/W | - | **Baud rate**\\ Baud rate della seriale.\\ Valori validi: 4800, 9600, 19200, 38400, 57600, 115200. | |
|stopb|B|R|R/W|-|**Stop bit**\\ Valori validi: 1, 2.| | | stopb | B | R | R/W | - | **Stop bit**\\ Valori validi: 1, 2. | |
|par|B|R|R/W|-|**Parity**\\ (0 ÷ 2)\\ **0** = none,\\ **1** = even,\\ **2** = odd.| | | par | B | R | R/W | - | **Parity**\\ (0 ÷ 2)\\ **0** = none,\\ **1** = even,\\ **2** = odd. | |
|rdelay|W|R|R/W|-|**Reply delay**\\ (0 ÷ 9999 msec)\\ E' il tempo di attesa prima di trasmettere la risposta.| | | rdelay | W | R | R/W | - | **Reply delay**\\ (0 ÷ 9999 msec)\\ E' il tempo di attesa prima di trasmettere la risposta. | |
|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 nel parametro iword1** | |
|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 nel parametro oword1** | |
|olong1÷16|L|0|R/W|-|**Output Long nr.** (1÷16)| | | olong1÷16 | L | 0 | R/W | - | **Output Long nr.** (1÷16) | |
| |
=== - Variabili - Modbus Slave === | === - Variabili - Modbus Slave === |