Python snap7 nedir? Python snap7 ile Siemens PLC bağlantısı nasıl yapılır?

30 Ocak 2023 404 Okuma süresi: 3 dakika

Python-snap7, Siemens S7 PLC'ler (Programlanabilir Mantık Denetleyicileri) ile arayüz oluşturmak için bir iletişim kitaplığı olan snap7 kitaplığı için bir Python paketleyicisidir. Siemens S7 iletişim protokolünü kullanarak bir ağ üzerinden PLC ile veri okumanıza/PLC'den veri yazmanıza ve onunla iletişim kurmanıza olanak tanır. Kütüphane, bir Python uygulaması ile PLC arasında veri alışverişi için işlevler sağlayarak PLC'yi otomasyon sistemlerine entegre etmeyi mümkün kılar.
Python-snap7 kütüphanesi hakkında ve bağlantı kurma kodu hakkında bir örnek sunuyorum:
 


import snap7

plc = snap7.client.Client()
plc.connect('192.168.1.1', 0, 1)

if plc.get_connected():
    print("PLC'ye başarıyla bağlandı.")
else:
    print("PLC'ye bağlantı başarısız.")

plc.disconnect()

Bu örnekte, snap7 kütüphanesinin Client nesnesi oluşturulur ve connect yöntemi ile IP adresi 192.168.1.1, rack 0 ve slot 1 olan PLC'ye bağlantı kurulur. Bağlantı durumunu kontrol etmek için get_connected yöntemi kullanılır ve bağlantı başarılıysa, PLC'ye başarıyla bağlandı mesajı yazdırılır. Son olarak, disconnect yöntemi ile bağlantı kapatılır. Bu sadece temel bir örnektir ve PLC'nin belirli bilgilerine (örneğin IP adresi, rack ve slot) sahip olmanız ve veri okuma / yazma işlemleri için ek kod gerekir. Python-snap7 kütüphanesi farklı veri türlerine (örneğin bit, byte, word, integer, float, vb.) ve farklı veri yapılarına (örneğin DB, input, output) erişmek için birçok fonksiyon sunar.

Python-snap7 ile veri okuma ve yazma işlemi


import snap7

plc = snap7.client.Client()
plc.connect('192.168.1.1', 0, 1)

if plc.get_connected():
    # Read a Boolean value from the PLC's input area
    input_byte = plc.read_area(snap7.types.areas.MK, 0, 0, 1)
    input_bool = snap7.util.get_bool(input_byte, 0, 0)
    print("Read input value:", input_bool)

    # Write a Boolean value to the PLC's output area
    output_byte = snap7.util.build_byte(output_bool, 0)
    plc.write_area(snap7.types.areas.PK, 0, 0, output_byte)
    print("Wrote output value:", output_bool)

else:
    print("Connection to PLC failed.")

plc.disconnect()

Bu örnekte, read_area yöntemi ile PLC'nin girdi bölgesinden bir Boolean değeri okunur ve get_bool fonksiyonu ile değerin doğru şekilde okunup okunmadığı kontrol edilir. Daha sonra, write_area yöntemi ile PLC'nin çıkış bölgesine bir Boolean değeri yazılır. Not: MK ve PK değerleri örnek olarak verilmiştir ve bu değerlerin PLC'ninizdeki adreslere uygun olması gerekir. Aynı şekilde, 0, 0, ve 1 değerleri de örnek verilmiştir ve bu değerlerin PLC'ninizdeki verilere uygun olması gerekir.

Benzer makaleler