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 12:17] – [1. Introduzione] qem207software:devices:modbus [2015/09/15 15:16] – [5.5. Esempi] qem207
Linea 38: 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 52: 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 60: Linea 57:
  
 <code QCL> <code QCL>
-;------------------------------- 
-;Dichiarazione device interni 
-;------------------------------- 
 INTDEVICE INTDEVICE
-modbus                  MODBUS  0002           0+modbus             MODBUS     0002    1
 </code> </code>
  
Linea 159: 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 197: Linea 191:
 **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. 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.\\ **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 268: 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 
 +modbus.mode = 0 
 +modbus.prot = 1 
 +modbus.brate = 57600 
 +modbus.stopb = 1 
 +modbus.par = 0 
 +modbus.tout = 100 
 +modbus.OPENCOM 
 + 
 +3) Lettura del registro input nr.7 dello slave id 67
 <code QCL> <code QCL>
-MAIN: +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 
-     SEND modbus +WAIT modbus.st_sended 
-     WAIT modbus:st_sended +IF (modbus.err) 
-     IF (modbus:err) +    CALL ErroreModbus 
-         CALL ErroreModbus +ENDIF 
-          +slVelocita = modbus.iword7
-     ENDIF +
-     slVelocita = modbus:iword7 +
-      +
-     WAIT 1 +
-     JUMP MAIN+
 </code> </code>
  
-2) Lettura dei holding register dal nr.600 al nr.606 dello slave id 8\\+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 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.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 
-     SEND modbus +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 +
-      +
-     WAIT 1 +
-     JUMP MAIN+
 </code> </code>
  
  • Ultima modifica: 2020/07/13 15:15