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
Prossima revisioneEntrambe le parti successive la revisione
software:devices:modbus [2015/09/15 17:05] – [5.7.2. Parametri - Modbus Master] qem207software:devices:modbus [2015/09/16 11:10] – [6.1.2. Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP] qem207
Linea 270: Linea 270:
 modbus.par = 0                              ; parity modbus.par = 0                              ; parity
 modbus.tout = 100                           ; timeout modbus.tout = 100                           ; timeout
-tm_opencom = 2000                           ; timeout for OPENCOM command+
 modbus.OPENCOM modbus.OPENCOM
 +tm_opencom = 200                            ; timeout for OPENCOM command
 WAIT modbus.st_opencom OR tm_opencom WAIT modbus.st_opencom OR tm_opencom
 IF NOT modbus.st_opencom IF NOT modbus.st_opencom
Linea 282: Linea 283:
 modbus.mode = 0                             ; modbus master modbus.mode = 0                             ; modbus master
 modbus.prot = 2                             ; TCPIP modbus.prot = 2                             ; TCPIP
 +modbus.tout = 100                           ; timeout
  
 tcpip_port= 502                             ; number of tcpip port (default 502) tcpip_port= 502                             ; number of tcpip port (default 502)
-modbus.brate = &HFFFFFFFF 
 modbus.stopb = tcpip_port / &H00000100 modbus.stopb = tcpip_port / &H00000100
 modbus.par   = tcpip_port ANDB &H000000FF modbus.par   = tcpip_port ANDB &H000000FF
  
-modbus.tout = 100                           ; timeout 
-tm_opencom = 500                            ; waiting time to have a correct response 
 modbus.OPENCOM modbus.OPENCOM
 +tm_opencom = 500                            ; waiting time to have a correct response
 WAIT tm_opencom WAIT tm_opencom
 IF NOT modbus.st_opencom IF NOT modbus.st_opencom
Linea 451: Linea 451:
  
 === - 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 ===
Linea 482: Linea 483:
 ==== - 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)
  
 +=== - Impostazioni modbus e apertura del canale di comunicazione di tipo seriale ===
 +<code QCL>
 +modbus.mode = 1                             ; modbus slave
 +modbus.prot = 1                             ; RTU
 +modbus.brate = 57600                        ; baudrate
 +modbus.stopb = 1                            ; stop bits
 +modbus.par = 0                              ; parity
 +modbus.idcard = 1                           ; slave id
 +
 +modbus.OPENCOM
 +tm_opencom = 100                            ; timeout for OPENCOM command
 +WAIT modbus.st_opencom OR tm_opencom
 +IF NOT modbus.st_opencom
 +    OpenComError = 1                        ; com not opened
 +ENDIF
 +</code>
 +=== - Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP ===
 +<code QCL>
 +modbus.mode = 1                             ; modbus slave
 +modbus.prot = 2                             ; TCPIP
 +
 +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.par = tcpip_port ANDB &H00FF
 +
 +modbus.OPENCOM
 +tm_opencom = 100                            ; waiting time to have a correct response
 +WAIT (modbus.st_opencom OR timerOpencom)
 +IF NOT modbus.st_opencom
 +    OpenComError = 1                        ; com not opened
 +ENDIF
 +</code>
 +FIXME
 === - Aggiornamento dei parametri tipo owordNN === === - Aggiornamento dei parametri tipo owordNN ===
 Per aggiornare i parametri tipo owordNN il QCL deve scrivere i valori nei parametri quindi inviare il comando VALIDATE. Per aggiornare i parametri tipo owordNN il QCL deve scrivere i valori nei parametri quindi inviare il comando VALIDATE.
Linea 495: Linea 533:
 == 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>
  
Linea 514: Linea 549:
 Esempio: Esempio:
 <code QCL> <code QCL>
-MAIN: +WAIT modbus.st_msgrx 
-     WAIT modbus:st_msgrx +anpos.speed = modbus.ilong1 
-     anpos:speed = modbus:ilong1 +anpos:posit = modbus.ilong2 
-     anpos:posit = modbus:ilong2 +npezzi = modbus.iword1 
-     switch = modbus:iword1 +RECEIVED modbus
-     RECEIVED modbus +
-     WAIT 1 +
-     JUMP MAIN+
 </code> </code>
 Naturalmente non esiste nessun controllo per evitare che durante la lettura dei parametri //iwordNN// il master erroneamente Naturalmente non esiste nessun controllo per evitare che durante la lettura dei parametri //iwordNN// il master erroneamente
Linea 569: Linea 601:
  
 === - 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,3840057600.| +| brate        | L  | R  | R/W  | -           | **Baud rate**\\ Baud rate della seriale.\\ Valori validi: 4800, 9600, 19200, 3840057600, 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 ===
  • Ultima modifica: 2020/07/13 15:15