software:devices:modbus

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
software:devices:modbus [2015/09/16 16:54] – [6. Parte 2 : Modbus Slave] qem207software:devices:modbus [2020/07/13 15:15] (versione attuale) qem103
Linea 1: Linea 1:
 ====== DEVICE MODBUS ====== ====== DEVICE MODBUS ======
-===== - Introduzione =====+====== - Introduzione ======
  
 Il protocollo MODBUS<sup>®</sup> rappresenta un sistema di comunicazione industriale distribuita sviluppata da Gould-Modicon per Il protocollo MODBUS<sup>®</sup> rappresenta un sistema di comunicazione industriale distribuita sviluppata da Gould-Modicon per
Linea 15: Linea 15:
  
 Il presente manuale si suddivide in due parti:\\ Il presente manuale si suddivide in due parti:\\
-Parte I - Modbus Master: utilizzo del device come master.\\ +Parte I - Descrizione funzionamento come master\\ 
-Parte II - Modbus Slave: utilizzo del device come slave.+Parte II - Descrizione funzionamento come slave.
  
  
Linea 277: Linea 277:
  
 tcpip_port= 502                             ; number of tcpip port (default 502) tcpip_port= 502                             ; number of tcpip port (default 502)
-modbus.stopb = tcpip_port &H00000100 +modbus.stopb = (tcpip_port ANDB &H0000FF00) / 256 
-modbus.par   = tcpip_port ANDB &H000000FF+modbus.par = tcpip_port ANDB &H000000FF
  
 modbus.OPENCOM modbus.OPENCOM
Linea 411: Linea 411:
 RW = Read / Write.\\ RW = Read / Write.\\
  
-=== - Parametri - Modbus Master === +=== - Parametri ===
-FIXME+
 ^ 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.                                                                                                               | | mode         | B  | R  | R/W  | -           | **Mode**\\ (0 ÷ 2)\\ Definisce se la scheda deve funzionare come master o come slave.\\ **0** = master.                                                                                                               |
Linea 434: Linea 433:
 | 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.
  
 Per configurare il numero della porta TCPIP è necessario andare a scrivere sui parametri //stopb// e //par//. Rispettivamente : Per configurare il numero della porta TCPIP è necessario andare a scrivere sui parametri //stopb// e //par//. Rispettivamente :
Linea 443: Linea 443:
  
  
-=== - Variabili - Modbus Master ===+=== - Variabili ===
 ^ 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,\\ **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.  | | 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.  |
Linea 450: Linea 450:
  
  
-=== - Stati - Modbus Master ===+=== - Stati ===
 ^Nome^D^R^A^Condizioni^Descrizione^ ^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_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.|
Linea 457: Linea 457:
 |wcmd|F|0|R|-|**Warning Command**\\ Questo bit segnala che è non è stato eseguito un comando perché mancano le condizioni necessarie.| |wcmd|F|0|R|-|**Warning Command**\\ Questo bit segnala che è non è stato eseguito un comando perché mancano le condizioni necessarie.|
  
-=== - Comandi - Modbus Master ===+=== - Comandi ===
 I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente.\\ I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente.\\
 Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore.\\ Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore.\\
Linea 499: Linea 499:
  
 tcpip_port= 502                             ; number of tcpip port (default 502) tcpip_port= 502                             ; number of tcpip port (default 502)
-; maste 
-modbus.stopb = tcpip_port / &H00000100 
-modbus.par   = tcpip_port ANDB &H000000FF 
-; slave 
 modbus.stopb = (tcpip_port ANDB &H0000FF00) / 256 modbus.stopb = (tcpip_port ANDB &H0000FF00) / 256
-modbus.par = tcpip_port ANDB &H00FF+modbus.par = tcpip_port ANDB &H000000FF
  
 modbus.OPENCOM modbus.OPENCOM
Linea 513: Linea 509:
 ENDIF ENDIF
 </code> </code>
-FIXME 
  
 Le operazioni che spettano all’applicativo QCL sono essenzialmente due: Le operazioni che spettano all’applicativo QCL sono essenzialmente due:
Linea 594: Linea 589:
 RW = Read / Write. RW = Read / Write.
  
-=== - Parametri - Modbus Slave ===+=== - Parametri ===
 ^ 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.\\ **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.  | | mode         | B  | R  | R/W  | -           | **Mode**\\ (0 ÷ 2)\\ Definisce se la scheda deve funzionare come master o come slave.\\ **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.  |
Linea 614: Linea 609:
  
  
-=== - Variabili - Modbus Slave ===+=== - Variabili ===
 ^Nome^D^R^A^Condizioni^ Descrizione^ ^Nome^D^R^A^Condizioni^ Descrizione^
 |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 o ad una scrittura sullo stesso con il QCL.\\ **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 o ad una scrittura sullo stesso con il QCL.\\ **0** = nessun errore,\\ **1** = parity error,\\ **2** = framing error,\\ **3** = overrun error.|
  
-=== - Stati - Modbus Slave ===+=== - Stati ===
 ^Nome^D^R^A^Condizioni^ Descrizione^ ^Nome^D^R^A^Condizioni^ Descrizione^
 |st_msgrx|F|0|R||-|**Message received**\\ Stato utilizzato solo in modalitá slave. Indica che un messagio del master ha eseguito una scrittura nell’area scambio dati QCL. Lo stato viene resettato con il comando RECEIVED.| |st_msgrx|F|0|R||-|**Message received**\\ Stato utilizzato solo in modalitá slave. Indica che un messagio del master ha eseguito una scrittura nell’area scambio dati QCL. Lo stato viene resettato con il comando RECEIVED.|
Linea 625: Linea 620:
 |wcmd|F|0|R|-|**Warning Command**\\ Questo bit segnala che è non è stato eseguito un comando perchè mancano le condizioni necessarie.| |wcmd|F|0|R|-|**Warning Command**\\ Questo bit segnala che è non è stato eseguito un comando perchè mancano le condizioni necessarie.|
  
-=== - Comandi - Modbus Slave ===+=== - Comandi ===
 I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente.\\ I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente.\\
 Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore.\\ Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore.\\
  • Ultima modifica: 2019/08/29 17:11