software:devices:modbus

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
Prossima revisioneEntrambe le parti successive la revisione
software:devices:modbus [2014/10/23 15:12] – modifica esterna 127.0.0.1software:devices:modbus [2015/09/15 15:39] – [5.5. Esempi] qem207
Linea 6: Linea 6:
 Il protocollo MODBUS<sup>®</sup> rappresenta un sistema di comunicazione industriale distribuita sviluppata da Gould-Modicon per Il protocollo MODBUS<sup>®</sup> rappresenta un sistema di comunicazione industriale distribuita sviluppata da Gould-Modicon per
 integrare PLC’s, computers, terminals, inverter e altre apparecchiature. MODBUS è un protocollo di comunicazione integrare PLC’s, computers, terminals, inverter e altre apparecchiature. MODBUS è un protocollo di comunicazione
-Master/Slave in cui solo un dispositivo può essere Master e controlla tutte le attività della linea seriale. Possono essere +Master/Slave in cui solo un dispositivo può essere Master e controlla tutte le attività della linea seriale o TCPIPPer quanto riguarda la linea seriale possono essere collegati fino ad un massimo 247 slave sulla stessa linea. Ad ogni dispositivo è assegnato un indirizzo che distingue esso
-collegati fino ad un massimo 247 slave sulla stessa linea. Ad ogni dispositivo è assegnato un indirizzo che distingue esso+
 da tutti gli altri dispositivi connessi.\\ da tutti gli altri dispositivi connessi.\\
 Il device MODBUS permette di scegliere quale porta seriale, presente sullo strumento, usare per il collegamento. Il device MODBUS permette di scegliere quale porta seriale, presente sullo strumento, usare per il collegamento.
 Le caratteristiche della trasmissione dati (nr. dispositivo fisico, baud rate, parità, stop bits) e del modo di trasmissione devono Le caratteristiche della trasmissione dati (nr. dispositivo fisico, baud rate, parità, stop bits) e del modo di trasmissione devono
 essere selezionate su ogni stazione e non possono essere modificate durante il funzionamento.\\ essere selezionate su ogni stazione e non possono essere modificate durante il funzionamento.\\
-Ci sono due modi di trasmissione utilizzabili nel protocollo Modbus. Ambedue i modi permettono le stesse capacità di+Con l'utilizzo di una linea seriale, ci sono due modi di trasmissione utilizzabili nel protocollo Modbus. Ambedue i modi permettono le stesse capacità di
 comunicazione. Il modo è selezionato dal master e deve essere unico per tutti i dispositivi connessi alla rete. I modi sono: comunicazione. Il modo è selezionato dal master e deve essere unico per tutti i dispositivi connessi alla rete. I modi sono:
   * ASCII (American Standard Code for Information Interchange)   * ASCII (American Standard Code for Information Interchange)
Linea 39: Linea 38:
 del device. del device.
 <code QCL> <code QCL>
-;------------------------------- 
-;Dichiarazione device interni 
-;------------------------------- 
 INTDEVICE INTDEVICE
 ... ...
-<nome_device>            MODBUS  TCamp serial_port+<nome_device>      MODBUS    TCamp    channel
 ... ...
 </code> </code>
Linea 53: Linea 49:
 |MODBUS|è la parola chiave che identifica il device descritto in questo documento,| |MODBUS|è la parola chiave che identifica il device descritto in questo documento,|
 |TCamp|è tempo di campionamento del device,| |TCamp|è tempo di campionamento del device,|
-|serial_port|è la definizione del tipo di porta seriale collegata (0 = Prog, 1 = User, per le altre porte il numero identificativo dipende dal tipo hardware e firmware dello strumento utilizzato).|+|channel|è la definizione del tipo di canale di comunicazione collegato (0 = Prog, 1 = User, per le altre porte il numero identificativo dipende dal tipo hardware e firmware dello strumento utilizzato, 43 = Ethernet port per un modbus TCPIP).|
  
 Per quanto riguarda la dichiarazione dell’hardware utilizzato nella sezione “BUS” dell’unità di configurazione si dovrà fare Per quanto riguarda la dichiarazione dell’hardware utilizzato nella sezione “BUS” dell’unità di configurazione si dovrà fare
Linea 61: Linea 57:
  
 <code QCL> <code QCL>
-;------------------------------- 
-;Dichiarazione device interni 
-;------------------------------- 
 INTDEVICE INTDEVICE
-modbus                  MODBUS  0002           0+modbus             MODBUS     0002    1
 </code> </code>
  
Linea 160: Linea 153:
 ===== - Parte 1 : Modbus Master ===== ===== - Parte 1 : Modbus Master =====
  
-Il device MODBUS può utilizzare una porta seriale per comunicare in modalità master (parametro //mode// = 0). Esso da la+Il device MODBUS può utilizzare una porta seriale o TCPIP per comunicare in modalità master (parametro //mode// = 0). Esso da la
 possibilità (tramite parametri, stati e comandi) a tutti gli strumenti di poter colloquiare con qualsiasi apparecchiatura utilizzante possibilità (tramite parametri, stati e comandi) a tutti gli strumenti di poter colloquiare con qualsiasi apparecchiatura utilizzante
 protocollo Modbus.\\ protocollo Modbus.\\
Linea 196: 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 269: 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