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 14:28] – [3.1.1. Esempio] documentazionesoftware:devices:modbus [2015/09/15 15:39] – [5.5. Esempi] qem207
Linea 58: Linea 58:
 <code QCL> <code QCL>
 INTDEVICE INTDEVICE
-modbus             MODBUS     0002    +modbus             MODBUS     0002    1
 </code> </code>
  
Linea 190: 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 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: ===
Linea 263: Linea 262:
 ==== - 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 +
-     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_port502                             ; 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 +
-     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|}}
  • Ultima modifica: 2020/07/13 15:15