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 14:39] – [3.1.1. Esempio] documentazione | software:devices:modbus [2015/09/16 09:12] – [6.1. Modo di funzionamento SLAVE] qem207 |
---|
INTDEVICE | INTDEVICE |
modbus MODBUS 0002 1 | modbus MODBUS 0002 1 |
... | |
</code> | </code> |
| |
**type** = tipo di richiesta che si vuole processare (lettura o scrittura di word o di bit).\\ | **type** = tipo di richiesta che si vuole processare (lettura o scrittura di word o di bit).\\ |
**idcard** = indirizzo dell’unità slave verso cui si vuole inviare la richiesta.\\ | **idcard** = indirizzo dell’unità slave verso cui si vuole inviare la richiesta.\\ |
**addr** = indice da cui iniziare a leggere o da cui iniziare a scrivere nello slave in questione. 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.\\ | **addr** = indice da cui iniziare a 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 = 5, 6, 15, 16), questo parametro indica da posizione nella “tabella dei dati da scrivere” dove si trova il dato da scrivere sullo slave. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ | **tabreg** = per le operazioni di lettura (type = 1, 2, 3, 4), questo parametro indica la posizione nella “tabella dei dati letti” dove verrà memorizzato il dato letto sullo slave. Per le operazioni di scrittura (type = 5, 6, 15, 16), questo parametro indica da posizione nella “tabella dei dati da scrivere” dove si trova il dato da scrivere sullo slave. Sono previsti valori tra 1 e 512 per valori del parametro type = 1, 2, 5, 15 (scrittura e lettura di bit), mentre per valori type = 3, 4, 6, 16 (scrittura e lettura di word) i valori previsti sono tra 1 e 32.\\ |
**num** = numero di valori che si intendono leggere o scrivere (se il tipo richiesta type lo prevede). Sono previsti valori tra 1 e 512 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. | **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: === | === - Comandi per inviare il messaggio: === |
==== - Esempi ==== | ==== - Esempi ==== |
| |
1) Lettura del registro input nr.7 dello slave id 67 | 1) Impostazioni modbus e apertura del canale di comunicazione di tipo seriale |
<code QCL> | <code QCL> |
MAIN: | modbus.mode = 0 ; modbus master |
modbus:idcard = 67 | modbus.prot = 1 ; RTU |
modbus:addr = 7 | modbus.brate = 57600 ; baudrate |
modbus:tabreg = 7 | modbus.stopb = 1 ; stop bits |
modbus:num = 1 | modbus.par = 0 ; parity |
modbus:type = 4 | modbus.tout = 100 ; timeout |
SEND modbus | tm_opencom = 2000 ; timeout for OPENCOM command |
WAIT modbus:st_sended | modbus.OPENCOM |
IF (modbus:err) | WAIT modbus.st_opencom OR tm_opencom |
CALL ErroreModbus | IF NOT modbus.st_opencom |
| OpenComError = 1 ; com not opened |
ENDIF | ENDIF |
slVelocita = modbus:iword7 | |
| |
WAIT 1 | |
JUMP MAIN | |
</code> | </code> |
| |
2) Lettura dei holding register dal nr.600 al nr.606 dello slave id 8\\ | 2) Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP |
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 | |
<code QCL> | <code QCL> |
MAIN: | modbus.mode = 0 ; modbus master |
modbus:idcard = 8 | modbus.prot = 2 ; TCPIP |
modbus:addr = 600 | |
modbus:num = 6 | tcpip_port= 502 ; number of tcpip port (default 502) |
modbus:tabreg = 10 | modbus.brate = &HFFFFFFFF |
modbus:type = 3 | modbus.stopb = tcpip_port / &H00000100 |
SEND modbus | modbus.par = tcpip_port ANDB &H000000FF |
WAIT modbus:st_sended | |
IF (modbus:err) | modbus.tout = 100 ; timeout |
CALL ErroreModbus | tm_opencom = 500 ; waiting time to have a correct response |
ENDIF | modbus.OPENCOM |
| WAIT tm_opencom |
swTemp1 = modbus:iword10 | IF NOT modbus.st_opencom |
slVelocita = modbus:ilong6 | OpenComError = 1 ; com not opened |
slPosiz = modbus:ilong7 | ENDIF |
swTemp1 = modbus:iword15 | |
| |
WAIT 1 | |
JUMP MAIN | |
</code> | </code> |
| |
| 3) Lettura del registro input nr.7 dello slave id 67 |
| <code QCL> |
| modbus.idcard = 67 |
| modbus.addr = 7 |
| modbus.tabreg = 7 |
| modbus.num = 1 |
| modbus.type = 4 |
| modbus.SEND |
| WAIT modbus.st_sended |
| IF (modbus.err) |
| CALL ErroreModbus |
| ENDIF |
| slVelocita = modbus.iword7 |
| </code> |
| |
| 4) Lettura dei holding register dal nr.600 al nr.606 dello 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 |
| <code QCL> |
| modbus.idcard = 8 |
| modbus.addr = 600 |
| modbus.num = 6 |
| modbus.tabreg = 10 |
| modbus.type = 3 |
| modbus.SEND |
| WAIT modbus.st_sended |
| IF (modbus.err) |
| CALL ErroreModbus |
| ENDIF |
| |
| swTemp1 = modbus.iword10 |
| slVelocita = modbus.ilong6 |
| slPosiz = modbus.ilong7 |
| swTemp1 = modbus.iword15 |
| </code> |
=== - Schema a blocchi === | === - Schema a blocchi === |
{{:software:devices:modbus:modbus_01.png?nolink400|}} | {{:software:devices:modbus:modbus_01.png?nolink400|}} |
Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcard) invia allo | Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcard) invia allo |
slave una richiesta modbus nr.17 per il riconoscimento. Lo slave risponderà con un suo valore predefinito e potrà essere | slave una richiesta modbus nr.17 per il riconoscimento. Lo slave risponderà con un suo valore predefinito e potrà essere |
letto nel parametro stype. Nel caso lo slave non sia prodotto da QEM srl, il parametro avrà valore –1 ad indicare che lo | letto nel parametro stype del master. Nel caso lo slave non sia prodotto da QEM srl, il parametro avrà valore –1 ad indicare che lo |
slave è connesso ma non è possibile identificarlo.\\ | slave è connesso ma non è possibile identificarlo.\\ |
Per il device MODBUS lo slave ID è diverso a seconda dello slave QEM utilizzato. Per una codifica degli slave in questo | Per il device MODBUS lo slave ID è diverso a seconda dello slave QEM utilizzato. Per una codifica degli slave in questo |
Esempio d'identificazione dello slave nr.12: | Esempio d'identificazione dello slave nr.12: |
<code QCL> | <code QCL> |
CONFIG: | modbus:idcard = 12 |
modbus:idcard = 12 | modbus.READSTYPE |
READSTYPE modbus | WAIT modbus.st_sended |
WAIT modbus:st_sended | IF (modbus.err) |
IF (modbus:err) | sbConfig = 3 ; error: slave 12 not connected |
sbConfig = 3 ; errore slave 12 non connesso | ELSE |
ELSE | IF (modbus.stype EQ 1) ; Board CAM-AG-98 |
IF (modbus:stype EQ 1) ;Scheda CAM-AG-98 | sbConfig = 1 ; configuration OK |
sbConfig = 1 ; configurazione OK | ELSE |
ELSE | sbConfig = 2 ; error in network configuration |
sbConfig = 2 ; errore nella configurazione rete | ENDIF |
ENDIF | |
ENDIF | ENDIF |
</code> | </code> |
| |
==== - Estensione del protocollo ==== | ==== - Estensione del protocollo ==== |
| |
| |
=== - Parametri - Modbus Master === | === - Parametri - Modbus Master === |
^Nome^D^R^A^Condizioni^Descrizione^ | ^ 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;\\ **1** = slave con area di scambio dati fissa;\\ **2** = slave senza area di scambio dati fissa: ad ogni scrittura o lettura eseguita dal master viene messi a 1 il flag st_msgrx.\\ Contemporaneamente i parametri //type//, //addr// e //num// indicano le caratteristiche del messaggio ricevuto.\\ - **Type** indica il tipo di funzione che vuole fare ill master (lettura o scrittura),\\ - **addr** indica l'indirizzo dell'inizio del blocco di dati scritti o letti,\\ - **num*** indica il numero di dati letti o scritti (a bit o a byte a seconda del valore di type).\\ Il device controllerà, in ricezione, solamente num (size di messaggio) che non sia superiore a 32word ma non più l'indirizzo che può essere ora qualsiasi.\\ Se è una scrittura (lo si capisce dal valore di type se è 5,6,15,16) vengono riportati i dati nelle variabili di scambio input (sempre a partire dalla prima word) ed il device attende il comando RECEIVED.\\ Se è una lettura il device attende che il QLC depositi i dati nelle word variabili di scambio output ed attende il comando VALIDATE.| | | mode | B | R | R/W | - | **Mode**\\ (0 ÷ 2)\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master;\\ **1** = slave con area di scambio dati fissa;\\ **2** = slave senza area di scambio dati fissa: ad ogni scrittura o lettura eseguita dal master viene messi a 1 il flag st_msgrx.\\ Contemporaneamente i parametri //type//, //addr// e //num// indicano le caratteristiche del messaggio ricevuto.\\ - **Type** indica il tipo di funzione che vuole fare ill master (lettura o scrittura),\\ - **addr** indica l'indirizzo dell'inizio del blocco di dati scritti o letti,\\ - **num** indica il numero di dati letti o scritti (a bit o a byte a seconda del valore di type).\\ Il device controllerà, in ricezione, solamente num (size di messaggio) che non sia superiore a 32word ma non più l'indirizzo che può essere ora qualsiasi.\\ Se è una scrittura (lo si capisce dal valore di type se è 5,6,15,16) vengono riportati i dati nelle variabili di scambio input (sempre a partire dalla prima word) ed il device attende il comando RECEIVED.\\ Se è una lettura il device attende che il QCL depositi i dati nelle word variabili di scambio output ed attende il comando VALIDATE. | |
|prot|B|R|R/W|-|**Protocol**\\ (0 ÷ 1)\\ Definisce il tipo di protocollo Modbus da utilizzare.\\ **0** = ASCII,\\ **1** = RTU| | | prot | B | R | R/W | - | **Protocol**\\ (0 ÷ 1)\\ Definisce il tipo di protocollo Modbus da utilizzare.\\ **0** = ASCII,\\ **1** = RTU,\\ **2** = TCPIP | |
|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.| | | 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. | |
|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.| | | 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. | |
|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| | | 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 | |
|addr|L|1|R/W|-|**Address**\\ (1 ÷ 65535)\\ Definisce l’indirizzo utilizzato dal master per definire quale sia il dato da leggere o scrivere.| | | addr | L | 1 | R/W | - | **Address**\\ (1 ÷ 65535)\\ Definisce l’indirizzo utilizzato dal master per definire quale sia il dato da leggere o scrivere. | |
|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.| | | 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. | |
|num|W|1|R/W|-|**Number**\\ (1 ÷ 512)\\ È il numero d'elementi da scrivere o leggere nella richiesta che compone il master.| | | num | W | 1 | R/W | - | **Number**\\ (1 ÷ 512)\\ È il numero d'elementi da scrivere o leggere nella richiesta che compone il master. | |
|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 (nessuna),\\ **1** = odd (dispari),\\ **2** = even (pari).| | | par | B | R | R/W | - | **Parity**\\ (0 ÷ 2)\\ **0** = none (nessuna),\\ **1** = odd (dispari),\\ **2** = even (pari). | |
|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.| | | 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. | |
|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.| | | 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. | |
|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) | |
| |
| 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 |
| |
=== - Variabili - Modbus Master === | === - Variabili - Modbus Master === |
^Nome^D^R^A^Condizioni^Descrizione^ | ^ 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.| | | 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.| | | 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| | | 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) |
| |
=== - 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 === |