Azioni

Differenze tra le versioni di "Omron fins udp"

Da MontelLUG WIKI.

(Creata pagina con "== Protocollo FINS + Python3 == Gran parte dei plc prodotti da Omron supportano il protocollo FINS.<br>Ho visto in rete una [https://bitbucket.org/jryan/finsgit/downloads impl...")
 
 
Riga 14: Riga 14:
  
 
# example of monitor bits/words
 
# example of monitor bits/words
plc.monitor(1.0, 30, (fins_udp.D_WORD, 50, 2, fins_udp.INT),
+
plc.monitor(1.0, 30, (fins_udp.MEM_D_WORD, 50, 2, fins_udp.INT),
                     (fins_udp.D_WORD, 60, 3, fins_udp.DINT),
+
                     (fins_udp.MEM_D_WORD, 60, 3, fins_udp.DINT),
                     (fins_udp.D_WORD, 70, 3, fins_udp.FLOAT),
+
                     (fins_udp.MEM_D_WORD, 70, 3, fins_udp.FLOAT),
                     (fins_udp.H_BIT, 0, 0, 32),
+
                     (fins_udp.MEM_H_BIT, 0, 0, 32),
                     (fins_udp.W_BIT, 0, 0, 32)
+
                     (fins_udp.MEM_W_BIT, 0, 0, 32)
 
                     )
 
                     )
  
 
# example of read/write bits
 
# example of read/write bits
plc.write_bits(fins_udp.H_BIT, 0, 0, [0,0,1,1,0])
+
plc.write_bits(fins_udp.MEM_H_BIT, 0, 0, [0,0,1,1,0])
mem_area = plc.read_bits(fins_udp.H_BIT, 0, 0, 5)
+
mem_area = plc.read_bits(fins_udp.MEM_H_BIT, 0, 0, 5)
 
print(str(mem_area))
 
print(str(mem_area))
 
      
 
      
 
# example of read/write words
 
# example of read/write words
plc.write_words(fins_udp.D_WORD, 0, [1,15,-18,16,985236], fins_udp.DINT)
+
plc.write_words(fins_udp.MEM_D_WORD, 0, [1,15,-18,16,985236], fins_udp.DINT)
mem_area = plc.read_words(fins_udp.D_WORD, 0, 5, fins_udp.DINT)
+
mem_area = plc.read_words(fins_udp.MEM_D_WORD, 0, 5, fins_udp.DINT)
 
print(str(mem_area))
 
print(str(mem_area))
  

Versione attuale delle 12:22, 16 set 2015

Protocollo FINS + Python3

Gran parte dei plc prodotti da Omron supportano il protocollo FINS.
Ho visto in rete una implementazione in Python di Joseph Ryan ma l'utilizzo mi sembrava un pò ostico: da quei sorgenti ho sviluppato una nuova versione a mio giudizio molto più fruibile e intuitiva. La licenza, come il sorgente di Joseph Ryan, è la General Public License.

Installazione

Il file è disponibile all'indirizzo http://www.stefanofraccaro.org/python/omron/fins_udp.py
E' sufficiente copiare il file nella stessa cartella dei vostri script python.

Uso

import fins_udp

plc = fins_udp.FinsConnection()
plc.connect('192.168.250.1')

# example of monitor bits/words
plc.monitor(1.0, 30, (fins_udp.MEM_D_WORD, 50, 2, fins_udp.INT),
                    (fins_udp.MEM_D_WORD, 60, 3, fins_udp.DINT),
                    (fins_udp.MEM_D_WORD, 70, 3, fins_udp.FLOAT),
                    (fins_udp.MEM_H_BIT, 0, 0, 32),
                    (fins_udp.MEM_W_BIT, 0, 0, 32)
                    )

# example of read/write bits
plc.write_bits(fins_udp.MEM_H_BIT, 0, 0, [0,0,1,1,0])
mem_area = plc.read_bits(fins_udp.MEM_H_BIT, 0, 0, 5)
print(str(mem_area))
    
# example of read/write words
plc.write_words(fins_udp.MEM_D_WORD, 0, [1,15,-18,16,985236], fins_udp.DINT)
mem_area = plc.read_words(fins_udp.MEM_D_WORD, 0, 5, fins_udp.DINT)
print(str(mem_area))

plc.close()