Azioni

Omron fins udp

Da MontelLUG WIKI.

Versione del 16 set 2015 alle 12:22 di Stefano.fraccaro (discussione | contributi) (→‎Uso)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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()