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 15:08] – [5.5. Esempi] qem207software:devices:modbus [2015/09/15 15:39] – [5.5. Esempi] qem207
Linea 189: Linea 189:
 **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 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. **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.
Linea 261: Linea 261:
  
 ==== - Esempi ==== ==== - Esempi ====
 +
 +1) Impostazioni modbus e apertura del canale di comunicazione di tipo seriale
 +<code QCL>
 +modbus.mode = 0                             ; modbus master
 +modbus.prot = 1                             ; RTU
 +modbus.brate = 57600                        ; baudrate
 +modbus.stopb = 1                            ; stop bits
 +modbus.par = 0                              ; parity
 +modbus.tout = 100                           ; timeout
 +tm_opencom = 2000                           ; timeout for OPENCOM command
 +modbus.OPENCOM
 +WAIT modbus.st_opencom OR tm_opencom
 +IF NOT modbus.st_opencom
 +    OpenComError = 1                        ; com not opened
 +ENDIF
 +</code>
 +
 +2) Impostazioni modbus e apertura del canale di comunicazione di tipo TCPIP
 +<code QCL>
 +modbus.mode = 0                             ; modbus master
 +modbus.prot = 2                             ; TCPIP
 +
 +tcpip_port= 502                             ; number of tcpip port (default 502)
 +modbus.brate = &HFFFFFFFF
 +modbus.stopb = tcpip_port / &H00000100
 +modbus.par   = tcpip_port ANDB &H000000FF
 +
 +modbus.tout = 100                           ; timeout
 +tm_opencom = 500                            ; waiting time to have a correct response
 +modbus.OPENCOM
 +WAIT tm_opencom
 +IF NOT modbus.st_opencom
 +    OpenComError = 1                        ; com not opened
 +ENDIF
 +</code>
  
 3) Lettura del registro input nr.7 dello slave id 67 3) Lettura del registro input nr.7 dello slave id 67
 <code QCL> <code QCL>
-     modbus.idcard = 67 +modbus.idcard = 67 
-     modbus.addr = 7 +modbus.addr = 7 
-     modbus.tabreg = 7 +modbus.tabreg = 7 
-     modbus.num = 1 +modbus.num = 1 
-     modbus.type = 4 +modbus.type = 4 
-     modbus.SEND +modbus.SEND 
-     WAIT modbus.st_sended +WAIT modbus.st_sended 
-     IF (modbus.err) +IF (modbus.err) 
-         CALL ErroreModbus +    CALL ErroreModbus 
-     ENDIF +ENDIF 
-     slVelocita = modbus.iword7+slVelocita = modbus.iword7
 </code> </code>
  
Linea 280: Linea 315:
 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 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>
-     modbus.idcard = 8 +modbus.idcard = 8 
-     modbus.addr = 600 +modbus.addr = 600 
-     modbus.num = 6 +modbus.num = 6 
-     modbus.tabreg = 10 +modbus.tabreg = 10 
-     modbus.type = 3 +modbus.type = 3 
-     modbus.SEND +modbus.SEND 
-     WAIT modbus.st_sended +WAIT modbus.st_sended 
-     IF (modbus.err) +IF (modbus.err) 
-         CALL ErroreModbus +    CALL ErroreModbus 
-     ENDIF +ENDIF 
-      +     
-     swTemp1 = modbus.iword10 +swTemp1 = modbus.iword10 
-     slVelocita = modbus.ilong6 +slVelocita = modbus.ilong6 
-     slPosiz = modbus.ilong7 +slPosiz = modbus.ilong7 
-     swTemp1 = modbus.iword15+swTemp1 = modbus.iword15
 </code> </code>
- 
 === - Schema a blocchi === === - Schema a blocchi ===
 {{:software:devices:modbus:modbus_01.png?nolink400|}} {{:software:devices:modbus:modbus_01.png?nolink400|}}
  • Ultima modifica: 2020/07/13 15:15