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:04] – [5.2.1. Parametri per formattare il messaggio:] qem207software:devices:modbus [2015/09/15 16:05] – [5.5.3. Identificazione degli Slave] 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 262: 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|}}
Linea 323: Linea 348:
 Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcard) invia allo Il comando READSTYPE eseguito dopo aver opportunamente selezionato lo slave (tramite parametro idcard) invia allo
 slave una richiesta modbus nr.17 per il riconoscimento. Lo slave risponderà con un suo valore predefinito e potrà essere slave una richiesta modbus nr.17 per il riconoscimento. Lo slave risponderà con un suo valore predefinito e potrà essere
-letto nel parametro stype. Nel caso lo slave non sia prodotto da QEM srl, il parametro avrà valore –1 ad indicare che lo+letto nel parametro stype del master. Nel caso lo slave non sia prodotto da QEM srl, il parametro avrà valore –1 ad indicare che lo
 slave è connesso ma non è possibile identificarlo.\\ slave è connesso ma non è possibile identificarlo.\\
 Per il device MODBUS lo slave ID è diverso a seconda dello slave QEM utilizzato. Per una codifica degli slave in questo Per il device MODBUS lo slave ID è diverso a seconda dello slave QEM utilizzato. Per una codifica degli slave in questo
-senso vedere il manuale Firmware dello slave utilizzato.+senso vedere il manuale Firmware dello slave utilizzato.\\ Se lo slave è implementato con un device MODBUS allora lo stype è impostato tramite il parametro omonimo.
  
 Esempio d'identificazione dello slave nr.12: Esempio d'identificazione dello slave nr.12:
 <code QCL> <code QCL>
-CONFIG: +modbus:idcard = 12 
-     modbus:idcard = 12 +modbus.READSTYPE 
-     READSTYPE modbus +WAIT modbus.st_sended 
-     WAIT modbus:st_sended +IF (modbus.err) 
-     IF (modbus:err) +    sbConfig = 3             ; error: slave 12 not connected 
-           sbConfig = 3             ; errore slave 12 non connesso +ELSE 
-     ELSE +    IF (modbus.stype EQ 1)   ; Board CAM-AG-98 
-           IF (modbus:stype EQ 1)   ;Scheda CAM-AG-98 +        sbConfig = 1         configuration OK 
-                 sbConfig = 1       configurazione OK +    ELSE 
-           ELSE +        sbConfig = 2         error in network configuration 
-                 sbConfig = 2       errore nella configurazione rete +    ENDIF
-           ENDIF+
 ENDIF ENDIF
 </code> </code>
- 
 ==== - Estensione del protocollo ==== ==== - Estensione del protocollo ====
  
  • Ultima modifica: 2020/07/13 15:15