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:06] – [Table] qem207software:devices:modbus [2015/09/16 11:12] – [Table] 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 571: Linea 603:
 ^ 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,\\ **2** = TCPIP                                                                      |
 | 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.                                                          |
Linea 584: Linea 616:
 | 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)                                                                                                                                                                  |
 +
  
  
  • Ultima modifica: 2020/07/13 15:15