PLC - DSP Haberleşmesi

osmancns

Üye
Katılım
11 Ara 2012
Mesajlar
35
Puanları
1
Yaş
32
Arkadaşlar DSP ile okuduğum bir değeri PLC' ye göndermem gerekiyor.Bunun için modbus haberleşmesi haricinde ne tür bir haberleşme yöntemi kullanabilirim.?
 
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Hangi DSP' yi kullanıyorsunuz ve tam olarak hangi PLC model ve markası ile haberleşmeyi planlıyorsunuz. Ayrıca neden Modbus olmaz? Tüm bunları göz önüne almalısınız.
 
TMS320 serisi ve DELTA PLC kullanıyorum modbus'ı iyi biliyorum ancak DSP kısmında iyi değilim o yüzden zaman kazanmak için başka bir yol var mı diye düşünmüştüm ?
 
Delta ile haberleşecekseniz en mantıklı yol yine Modbus ile haberleşmek. Başka bir protokol için modül satın almanız gerekecektir. Amerikayı da tekrar keşfetmenize gerek yok. Kullanmakta olduğunuz DSP ve haberleşmek istediğiniz protokol için (Modbus gibi) ücretsiz veya ücretli bir kütüphane bulmayı denediniz mi acaba? Bulamazsanız bulabildiğiniz bir işlemciye geçmek de zaman açısından faydalı olur.
 
TMS320 serisi ve DELTA PLC kullanıyorum modbus'ı iyi biliyorum ancak DSP kısmında iyi değilim o yüzden zaman kazanmak için başka bir yol var mı diye düşünmüştüm ?
Neden modbus değil ? Geçenlerde de uğraşmıştınız baya çıkmadımı bir sonuç?

Normalde kod paylaşımı yapmam ama hala onunla uğraştığını görünce KAEL için yazmaya başladığım APP kodları(Tamamlanmamış bazı noktalarda hata verebilir(Örnek threading))
PHP:
# -*- coding: cp1254 -*-
from Tkinter import *
import threading  
import time
import serial
import socket


                
            

class file_set(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.filename= "kompanzasyon.conf"
        self.conf=list
        self.deger=list
        self.wrn=""
    def load(self):
        try:
            df=open("kompanzasyon.conf","r")
            gf=df.readlines()
            gf= [i.rstrip() for i in gf ]
            gf.pop(0)
            self.conf=gf
            self.deger = [i.split(':')[1] for i in self.conf ]
            self.anahtar=[(i.split(':')[0]+':') for i in self.conf ]
            df.close()
            
        except:
            self.wrn=u"Konfigürasyon dosyanız bulunamadı veya  okunamadı !"
    def write(self):
        values = self.conf
       
        files="""//Begin configuration file//"""
        for i in self.anahtar:
            files += ("\n"+i+self.deger[self.anahtar.index(i)])
        try :
            reg=open("kompanzasyon.conf","w")
            reg.write(files)
            reg.close()
            self.wrn=u"Konfigürasyon dosyanız başarılı bir şekilde kaydedilmiştir !"
            self.load()
        except:
            self.wrn=u"Konfigürasyon dosyanız bulunamadı veya  yazarken bir hata oluştu !"
            
    

        
tmp=file_set()
tmp.load()

class co_rtu(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.ser=serial.Serial()
        self.setting=[]#port,hız,timeout,gecikme
        self.messages=""
        self.status="OFF"
        self.wrn=""
        self.kapasiteler=list()
        self.kapasiteler=["0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0",\
                          "0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"]
        
    def connect(self,where,message):
        if not self.ser.isOpen():
            if where == "kael":
                self.setting=("Com"+tmp.deger[8]),115200,int(tmp.deger[10]),int(tmp.deger[9])
                self.ser.port,self.ser.baudrate,self.ser.timeout = self.setting[:-1]
                if "\x01\x03\x10\x00\x00" in message:
                    
                    self.ser.open()
                    self.ser.write(message)
                    time.sleep(0.1)
                    if "\x01\x03\x10\x00\x00\x5A" in message:
                        a=str(self.ser.read(self.ser.inWaiting()).encode("hex"))
                        self.ser.close()
                        time.sleep(0.1)
                        v1=str(int(a[14:18],16)/10.0)+" V"
                        v2=str(int(a[18:22],16)/10.0)+" V"
                        v3=str(int(a[22:26],16)/10.0)+" V"
                        i1=str((int(a[26:30],16)*0.32))+" A"
                        i2=str((int(a[30:34],16)*0.32))+" A"
                        i3=str((int(a[34:38],16)*0.32))+" A"
                        p1=str(((int(a[38:42],16)*320))/1000.0)+" Kw"
                        p2=str(((int(a[42:46],16)*320))/1000.0)+" Kw"
                        p3=str(((int(a[46:50],16)*320))/1000.0)+" Kw"
                        fi=int(a[78:82],16),int(a[86:90],16),int(a[94:98],16)
                        Fr=fi[0]
                        Fs=fi[1]
                        Ft=fi[2]
                        #print Fs
                        
                        for i in fi:
                            yer= fi.index(i)
                            try:                                
                                if yer == 0:
                                    if i < 255:
                                        Fr="-1.%03d"%i
                                    elif i > 999:
                                        Fr="-1."+"%03d"%(65535-i)
                                    else:
                                        Fr="0.%03d"%i
                                elif yer == 1:
                                    if i < 255:
                                        Fs="-1.%03d"%i
                                    elif i > 999:
                                        Fs="-1."+"%03d"%(65535-i)
                                    else:
                                        Fs="0.%03d"%i
                                elif yer == 2:
                                    if i < 255:
                                        Ft="-1.%03d"%i
                                    elif i > 999:
                                        Ft="-1."+"%03d"%i(65535-i)
                                    else:
                                        Ft="0.%03d"%i
                            except Exception,e: print str(e)
                            #print Fs,Fr,Ft
                            
                            
                        return v1,v2,v3,i1,i2,i3,p1,p2,p3,Fr,Fs,Ft
                        
                        self.ser.close()
                elif '\x01\x03\x10\x2C\x00\x02' in message:
                    time.sleep(0.1)
                    self.ser.open()
                    self.ser.write(message)
                    time.sleep(0.1)
                    a=str(self.ser.read(self.ser.inWaiting()).encode("hex"))
                    self.ser.close()
                    
                    #fake="010304000000267be9"
                    return (((18-(len(bin(int(a[8:14]))[2:])))*"0")+str(bin(int(a[8:14]))[2:]))[::-1]
                elif ('\x01\x03\x31\x08\x00' in message) and (self.kapasiteler == ["0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0",\
                                  "0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"]):
                    time.sleep(0.1)
                    self.ser.open()
                    self.ser.write(message)
                    time.sleep(0.1)
                    c=str(self.ser.read(self.ser.inWaiting()).encode("hex"))
                    self.ser.close()
                                                    
                    C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11=C12=C13=C14=C15=C16=C17=C18=0
                    caps=c[6:-4]
                    boyu,kesme = len(caps), len(caps)/8
                    liste = []
                    try:
                        liste = [ caps[i:i+kesme] for i in range(0, boyu, kesme) ]
                    except: pass
                    
                    try:
                        for i in liste:
                            kel = i[4:]
                            toplam=0
                            for e in kel[:4],kel[4:8],kel[8:]:
                                if (int(e,16) > int("8000",16))and (int(e,16) > 0):
                                    toplam +=((((int("FFFF",16)-int(e,16))+1)*(1600/5))*0.1)
                                    self.kapasiteler
[liste.index(i)]= (str(toplam/1000))
                    except Exception,e: print str(e)
                
                                           
                        
                            
                
                    
rtu=co_rtu()

class ValidatingEntry(Entry):
    # base class for validating entry widgets

    def __init__(self, master, value="", **kw):
        apply(Entry.__init__, (self, master), kw)
        self.__value = value
        self.__variable = StringVar()
        self.__variable.set(value)
        self.__variable.trace("w", self.__callback)
        self.config(textvariable=self.__variable)

    def __callback(self, *dummy):
        value = self.__variable.get()
        newvalue = self.validate(value)
        if newvalue is None:
            self.__variable.set(self.__value)
        elif newvalue != value:
            self.__value = newvalue
            self.__variable.set(self.newvalue)
        else:
            self.__value = value

    def validate(self, value):
        # override: return value, new value, or None if invalid
        return value



class MaxLengthEntry(ValidatingEntry):

    def __init__(self, master, value="", maxlength=None, **kw):
        self.maxlength = maxlength
        apply(ValidatingEntry.__init__, (self, master), kw)

    def validate(self, value):
        if self.maxlength is None or len(value) <= self.maxlength:
            
            try:
                if value:
                    v = int(value)
                    return value
                return value
            except ValueError:
                return None


class gui(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.ana=Tk()
        self.title_words=U"OTOMATİK KOMPANZASYON -  %s      // Sabri Dilmaç // SADO CYBERNETIC //"
        self.ana.title(self.title_words % "")
        self.bg="#006699"
        self.menu_id=None
        self.menu_name=""
        self.saat=Label(self.ana,text=time.strftime("%H:%M:%S"),bg="lightgreen",relief=GROOVE)
        self.saat.place(x=5,y=5)
        self.warn_bar=Label(self.ana,bg="black",fg="white",text="denemeRRTTTFFF")
        self.warn_bar.place(x=0,y=280,width=800,height=20)
        self.t1=""
        self.connection_method_kael=None
        self.connection_method_makel=None


        # BUTONLAR
        b1_genel=Button(self.ana,text="Genel",bg="#CCCCCC",overrelief='solid',command=self.do_genel)
        b1_genel.place(x=98,y=5,width=80)
        b2_ayar=Button(self.ana,text="Ayarlar",bg="#CCCCCC",overrelief='solid',command=self.do_ayar)
        b2_ayar.place(x=181,y=5,width=80)
        b3_haber=Button(self.ana,text=u"Haberleşme",bg="#CCCCCC",overrelief='solid',command=self.do_haber)
        b3_haber.place(x=264,y=5,width=80)
        b4_rapor=Button(self.ana,text=u"Raporlama",bg="#CCCCCC",overrelief='solid',command=self.do_rapor)
        b4_rapor.place(x=347,y=5,width=80)
        b5_hakki=Button(self.ana,text=u"Hakkında",bg="#CCCCCC",overrelief='solid',command=self.do_about)
        b5_hakki.place(x=430,y=5,width=80)
        b6_lisans=Button(self.ana,text=u"Lisans",bg="#CCCCCC",overrelief='solid',command=self.do_lisans)
        b6_lisans.place(x=513,y=5,width=80)
        b6_lisans=Button(self.ana,text=u"Program Ayarları",bg="#CCCCCC",overrelief='solid',command=self.do_prg_conf)
        b6_lisans.place(x=596,y=5,width=120)
        self.do_haber()
        self.clock()
        self.ana.resizable(0,0)
        #self.ana.overrideredirect(1)
        self.ana.config(bg="#006699",width=800,height=300)
        self.ana.mainloop()
        
    def do_destroy(self):
        if self.menu_id == None :pass
        elif self.menu_id == 0:
            self.genel.destroy()
        elif self.menu_id == 1:
            self.ayarlar.destroy()
        elif self.menu_id == 2:
            self.haberlesme.destroy()
        elif self.menu_id == 3:
            self.raporlar.destroy()
        elif self.menu_id == 4:
            self.hakkinda.destroy()
        elif self.menu_id == 5:
            self.lisans.destroy()
        elif self.menu_id == 6:
            self.prg_conf.destroy()
        

    def do_genel(self):
        if self.menu_id == 0 :pass
        else:
            self.do_destroy()
            self.ana.title( self.title_words % "GENEL")
            
            self.genel=LabelFrame(self.ana,bg=self.bg,text=" GENEL : ",fg="white")
            self.genel.place(x=5,y=35,width=790,height=235)
            
            lab_say=LabelFrame(self.genel, text="Sayaç Durumu :",bg=self.bg,fg="white")
            lab_say.place(x=20,y=0,width=200,height=200)
            r_phase_l=Label(lab_say,text="R FAZI      :",bg=self.bg,fg="white")
            r_phase_l.place(x=5,y=25)
            self.r_phase_ev=Label(lab_say,text="380 V",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r_phase_ev.place(x=70,y=25,width=50)
            self.r_phase_ea=Label(lab_say,text="30 A",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r_phase_ea.place(x=140,y=25,width=50)
            s_phase_l=Label(lab_say,text="S FAZI      :",bg=self.bg,fg="white")
            s_phase_l.place(x=5,y=45)
            self.s_phase_ev=Label(lab_say,text="380 V",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s_phase_ev.place(x=70,y=45,width=50)
            self.s_phase_ea=Label(lab_say,text="40 A",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s_phase_ea.place(x=140,y=45,width=50)
            t_phase_l=Label(lab_say,text="T FAZI      :",bg=self.bg,fg="white")
            t_phase_l.place(x=5,y=65)
            self.t_phase_ev=Label(lab_say,text="380 V",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t_phase_ev.place(x=70,y=65,width=50)
            self.t_phase_ea=Label(lab_say,text="50 A",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t_phase_ea.place(x=140,y=65,width=50)
            aktif_l=Label(lab_say,text=u"AKTİF       :",bg=self.bg,fg="white")
            aktif_l.place(x=5,y=105)
            self.aktif_e=Label(lab_say,text=u"AKTİF       :",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.aktif_e.place(x=75,y=105,width=110)        
            reaktif_l=Label(lab_say,text=u"REAKTİF   :",bg=self.bg,fg="white")
            reaktif_l.place(x=5,y=125)
            self.reaktif_e=Label(lab_say,text=u"REAKTİF   :",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.reaktif_e.place(x=75,y=125,width=110)
            kapasitif_l=Label(lab_say,text=u"KAPASİTİF:",bg=self.bg,fg="white")
            kapasitif_l.place(x=5,y=145)
            self.kapasitif_e=Label(lab_say,text=u"KAPASİTİF :",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.kapasitif_e.place(x=75,y=145,width=110)
            
            lab_rgk=LabelFrame(self.genel, text="Kompanzasyon Rölesi Durumu :",bg=self.bg,fg="white")
            lab_rgk.place(x=240,y=0,width=520,height=200)
            r1_phase_l=Label(lab_rgk,text=u"R FAZI :",bg=self.bg,fg="white")# Cos\u03C6
            r1_phase_l.place(x=10,y=10)
            self.r1_phase_l = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r1_phase_l.place(x=60,y=10,width=50)
            s1_phase_l=Label(lab_rgk,text=u"S FAZI :",bg=self.bg,fg="white")
            s1_phase_l.place(x=10,y=30)
            self.s1_phase_l = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s1_phase_l.place(x=60,y=30,width=50)
            t1_phase_l=Label(lab_rgk,text=u"T FAZI :",bg=self.bg,fg="white")
            t1_phase_l.place(x=10,y=50)
            self.t1_phase_l = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t1_phase_l.place(x=60,y=50,width=50)
            self.r_phase_volt = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r_phase_volt.place(x=120,y=10,width=100)
            self.s_phase_volt = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s_phase_volt.place(x=120,y=30,width=100)
            self.t_phase_volt = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t_phase_volt.place(x=120,y=50,width=100)
            self.r_phase_amper = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r_phase_amper.place(x=230,y=10,width=100)
            self.s_phase_amper = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s_phase_amper.place(x=230,y=30,width=100)
            self.t_phase_amper = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t_phase_amper.place(x=230,y=50,width=100)
            self.r_phase_wat = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.r_phase_wat.place(x=340,y=10,width=100)
            self.s_phase_wat = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.s_phase_wat.place(x=340,y=30,width=100)
            self.t_phase_wat = Label(lab_rgk,text=u"EEEEE",bg="#151515",fg="lightgreen",relief=GROOVE)
            self.t_phase_wat.place(x=340,y=50,width=100)
            self.kademe_sayi = Label(lab_rgk,text="Kademe: 0",bg="#006699",fg="white",relief=GROOVE)
            self.kademe_sayi.place(x=445,y=40)
            self.e1_kapasite= Label(lab_rgk,text="C-1",bg="#006699",relief=GROOVE)
            self.e1_kapasite.place(x=5,y=77,width=50)
            self.e2_kapasite= Label(lab_rgk,text="C-2",bg="#006699",relief=GROOVE)
            self.e2_kapasite.place(x=61,y=77,width=50)
            self.e3_kapasite= Label(lab_rgk,text="C-3",bg="#006699",relief=GROOVE)
            self.e3_kapasite.place(x=117,y=77,width=50)
            self.e4_kapasite= Label(lab_rgk,text="C-4",bg="#006699",relief=GROOVE)
            self.e4_kapasite.place(x=173,y=77,width=50)
            self.e5_kapasite= Label(lab_rgk,text="C-5",bg="#006699",relief=GROOVE)
            self.e5_kapasite.place(x=229,y=77,width=50)
            self.e6_kapasite= Label(lab_rgk,text="C-6",bg="#006699",relief=GROOVE)
            self.e6_kapasite.place(x=286,y=77,width=50)
            self.e7_kapasite= Label(lab_rgk,text="C-7",bg="#006699",relief=GROOVE)
            self.e7_kapasite.place(x=342,y=77,width=50)
            self.e8_kapasite= Label(lab_rgk,text="C-8",bg="#006699",relief=GROOVE)
            self.e8_kapasite.place(x=398,y=77,width=50)
            self.e9_kapasite= Label(lab_rgk,text="C-9",bg="#006699",relief=GROOVE)
            self.e9_kapasite.place(x=454,y=77,width=50)
            self.e10_kapasite= Label(lab_rgk,text="C-10",bg="#006699",relief=GROOVE)
            self.e10_kapasite.place(x=5,y=137,width=50)
            self.e11_kapasite= Label(lab_rgk,text="C-11",bg="#006699",relief=GROOVE)
            self.e11_kapasite.place(x=61,y=137,width=50)
            self.e12_kapasite= Label(lab_rgk,text="C-12",bg="#006699",relief=GROOVE)
            self.e12_kapasite.place(x=117,y=137,width=50)
            self.e13_kapasite= Label(lab_rgk,text="C-13",bg="#006699",relief=GROOVE)
            self.e13_kapasite.place(x=173,y=137,width=50)
            self.e14_kapasite= Label(lab_rgk,text="C-14",bg="#006699",relief=GROOVE)
            self.e14_kapasite.place(x=229,y=137,width=50)
            self.e15_kapasite= Label(lab_rgk,text="C-15",bg="#006699",relief=GROOVE)
            self.e15_kapasite.place(x=286,y=137,width=50)
            self.e16_kapasite= Label(lab_rgk,text="C-16",bg="#006699",relief=GROOVE)
            self.e16_kapasite.place(x=342,y=137,width=50)
            self.e17_kapasite= Label(lab_rgk,text="C-17",bg="#006699",relief=GROOVE)
            self.e17_kapasite.place(x=398,y=137,width=50)
            self.e18_kapasite= Label(lab_rgk,text="C-18",bg="#006699",relief=GROOVE)
            self.e18_kapasite.place(x=454,y=137,width=50)
            self.c1_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c1_kapasite.place(x=5,y=100,width=50)
            self.c2_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c2_kapasite.place(x=61,y=100,width=50)
            self.c3_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c3_kapasite.place(x=117,y=100,width=50)
            self.c4_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c4_kapasite.place(x=173,y=100,width=50)
            self.c5_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c5_kapasite.place(x=229,y=100,width=50)
            self.c6_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c6_kapasite.place(x=286,y=100,width=50)
            self.c7_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c7_kapasite.place(x=342,y=100,width=50)
            self.c8_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c8_kapasite.place(x=398,y=100,width=50)
            self.c9_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c9_kapasite.place(x=454,y=100,width=50)
            self.c10_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c10_kapasite.place(x=5,y=160,width=50)
            self.c11_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c11_kapasite.place(x=61,y=160,width=50)
            self.c12_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c12_kapasite.place(x=117,y=160,width=50)
            self.c13_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c13_kapasite.place(x=173,y=160,width=50)
            self.c14_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c14_kapasite.place(x=229,y=160,width=50)
            self.c15_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c15_kapasite.place(x=286,y=160,width=50)
            self.c16_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c16_kapasite.place(x=342,y=160,width=50)
            self.c17_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c17_kapasite.place(x=398,y=160,width=50)
            self.c18_kapasite= Label(lab_rgk,text="15 Kvar",bg="#FF5E5E")
            self.c18_kapasite.place(x=454,y=160,width=50)
            
            #self.yesterday_RL= Label(self.genel,text="Önceki gün reaktif:",bg="#006699",fg="white",relief=GROOVE)
            #self.yesterday_RL.place(x=240,y=175,width=170)
            #self.yesterday_RC= Label(self.genel,text="Önceki gün kapasitif:",bg="#006699",fg="white",relief=GROOVE)
            #self.yesterday_RC.place(x=240,y=195,width=170)
            #self.today_RL= Label(self.genel,text="Bugün reaktif:",bg="#006699",fg="white",relief=GROOVE)
            #self.today_RL.place(x=415,y=175,width=170)
            #self.today_RC= Label(self.genel,text="Bugün kapasitif:",bg="#006699",fg="white",relief=GROOVE)
            #self.today_RC.place(x=415,y=195,width=170)
            #self.month_RL= Label(self.genel,text=u"Aylık reaktif:",bg="#006699",fg="white",relief=GROOVE)
            #self.month_RL.place(x=590,y=175,width=170)
            #self.month_RC= Label(self.genel,text=u"Aylık kapasitif:",bg="#006699",fg="white",relief=GROOVE)
            #self.month_RC.place(x=590,y=195,width=170)
            
            self.menu_id = 0 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
            self.do_warn(u"Sayaç:Tüketilen güçler,Akımlar,Gerilimler Kompanzasyon:Cos\u03C6 değerleri,Aktif kademeler,Kapasiteler")
    def do_ayar(self):
        if self.menu_id == 1 :pass
        else:
            def save_conf():
                new_values = self.fi_reaktif_e.get(), self.fi_kapasitif_e.get(),\
                             self.fi_period_e.get(), str(self.secenek.index(self.opti.get())),\
                             self.static_cap1_e.get(),self.static_cap2_e.get(),\
                             self.static_cap3_e.get(),self.static_cap4_e.get()
                if (20<int(new_values[0])) or (5>int(new_values[0])) :
                    self.do_warn(u"Reaktif yüzdelik limit değeri 5-15 arasında olabilir.")
                elif (int(new_values[1])>10)  :
                    self.do_warn(u"Kapasitif yüzdelik limit değeri 0-10 arasında olabilir.")
                elif (int(new_values[2])>6) or (int(new_values[2])<1)  :
                    self.do_warn(u"Saatlik tarama periyodu ençok 6, en az 1 kez arasında olabilir.")
                elif (int(new_values[7])+int(new_values[6])+int(new_values[5])+int(new_values[4])) < 50:
                    self.do_warn(u"Sabit kapasitörlerin toplamı 50kVAR dan küçük olamaz. Örnek:5,10,15,20 kVAR şeklinde...")
                else:
                    for i in range(len(tmp.deger)):
                        if i < 8:
                            tmp.deger[i]= new_values[i]
                    self.do_warn(tmp.wrn)
                    tmp.write()
                                      
                
            def del_entry():
                self.fi_reaktif_e.delete(0,END)
                self.fi_kapasitif_e.delete(0,END)
                self.fi_period_e.delete(0,END)
                self.static_cap1_e.delete(0,END)
                self.static_cap2_e.delete(0,END)
                self.static_cap3_e.delete(0,END)
                self.static_cap4_e.delete(0,END)
            def load_ayar():
                del_entry()
                self.fi_reaktif_e.insert(0,tmp.deger[0])
                self.fi_kapasitif_e.insert(0,tmp.deger[1])
                self.fi_period_e.insert(0,tmp.deger[2])
                self.opti.set(self.secenek[int(tmp.deger[3])])
                self.static_cap1_e.insert(0,tmp.deger[4])
                self.static_cap2_e.insert(0,tmp.deger[5])
                self.static_cap3_e.insert(0,tmp.deger[6])
                self.static_cap4_e.insert(0,tmp.deger[7])
            def default_ayar():
                del_entry()
                self.fi_reaktif_e.insert(0,"15")
                self.fi_kapasitif_e.insert(0,"10")
                self.fi_period_e.insert(0,"5")
                self.opti.set(self.secenek[0])
                self.static_cap1_e.insert(0,"5")
                self.static_cap2_e.insert(0,"10")
                self.static_cap3_e.insert(0,"15")
                self.static_cap4_e.insert(0,"20")
                
            self.do_destroy()
            self.ana.title(self.title_words % "AYARLAR")
            self.ayarlar=LabelFrame(self.ana,bg=self.bg,text=" AYARLAR : ",fg="white")
            self.ayarlar.place(x=5,y=35,width=790,height=235)
            frm825=Label(self.ayarlar,bg=self.bg,fg="white",relief=GROOVE)
            frm825.place(x=220,y=20,width=243,height=100)
            self.comment825=Label(self.ayarlar,text=u"Ayarlama metodu \n Seçilen güç tipi kapasitesi önce kullanılır.",bg="#006699",fg="white")
            self.comment825.place(x=240,y=30, width=200)
            self.secenek=u"        Reaktif  limiti kullan        ",u"        Kapasitif limiti kullan        ",\
                          u"        Her ikisinide kullan"
            self.opti=StringVar(self.ana)
            self.opti.set(self.secenek[0])
            self.spew1 = apply(OptionMenu, (self.ayarlar, self.opti) + tuple(self.secenek))
            self.spew1.config(bg="#006699",fg="white")
            self.spew1.place(height=22, x=250, y=80,width=183)
            
            self.fi_reaktif=Label(self.ayarlar,text="Max Reaktif(%)",bg="#006699",fg="white",relief=GROOVE)
            self.fi_reaktif.place(x=20,y=20, width=100)
            self.fi_reaktif_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.fi_reaktif_e.place(x=130,y=20, width=30)
            self.fi_kapasitif=Label(self.ayarlar,text="Max Kapasitif(%)",bg="#006699",fg="white",relief=GROOVE)
            self.fi_kapasitif.place(x=20,y=45, width=100)
            self.fi_kapasitif_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.fi_kapasitif_e.place(x=130,y=45, width=30)
            self.fi_period=Label(self.ayarlar,text="Tarama adedi(Saat)",bg="#006699",fg="white",relief=GROOVE)
            self.fi_period.place(x=20,y=70, width=100)
            self.fi_period_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.fi_period_e.place(x=130,y=70, width=30)
            self.static_cap1=Label(self.ayarlar,text=u"Sabit Kapasitör-1 Değeri(kVAR):",bg="#006699",fg="white",relief=GROOVE)
            self.static_cap1.place(x=500,y=20,width=200)
            self.static_cap1_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.static_cap1_e.place(x=710,y=20, width=30)
            self.static_cap2=Label(self.ayarlar,text=u"Sabit Kapasitör-2 Değeri(kVAR):",bg="#006699",fg="white",relief=GROOVE)
            self.static_cap2.place(x=500,y=45,width=200)
            self.static_cap2_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.static_cap2_e.place(x=710,y=45, width=30)
            self.static_cap3=Label(self.ayarlar,text=u"Sabit Kapasitör-3 Değeri(kVAR):",bg="#006699",fg="white",relief=GROOVE)
            self.static_cap3.place(x=500,y=70,width=200)
            self.static_cap3_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.static_cap3_e.place(x=710,y=70, width=30)
            self.static_cap4=Label(self.ayarlar,text=u"Sabit Kapasitör-4 Değeri(kVAR):",bg="#006699",fg="white",relief=GROOVE)
            self.static_cap4.place(x=500,y=95,width=200)
            self.static_cap4_e=MaxLengthEntry(self.ayarlar,maxlength=2,bg="white",relief=GROOVE)
            self.static_cap4_e.place(x=710,y=95, width=30)
            self.ayar_default_kaydet=Button(self.ayarlar,text=u"Varsayılanları Yükle",bg="#CCCCCC",overrelief='solid',command=default_ayar)
            self.ayar_default_kaydet.place(x=490,y=195,width=140)
            self.ayar_kaydet=Button(self.ayarlar,text="    Kaydet   ",bg="#CCCCCC",overrelief='solid',command=save_conf)
            self.ayar_kaydet.place(x=640,y=195,width=140)
            load_ayar()
            self.do_warn(u"Yüzdelik Sınırlamalar,Kontrol biçimi,Sabit kademeler")
            self.menu_id = 1 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
            
            
    def do_haber(self):
        if self.menu_id == 2 :pass
        else:
            def save_conf():
                new_values = self.rtu_com_e.get(), self.rtu_delay_e.get(),\
                             self.rtu_timeout_e.get(), (self.rtu_ip_e_1.get()+ "."+self.rtu_ip_e_2.get()+\
                             "."+self.rtu_ip_e_3.get()+"."+self.rtu_ip_e_4.get()),\
                             self.rtu_ip_port_e.get(),\
                             self.rtu_makel_com_e.get(), self.rtu_makel_delay_e.get(),\
                             self.rtu_makel_timeout_e.get(), (self.rtu_makel_ip_e_1.get()+"."+\
                             self.rtu_makel_ip_e_2.get()+"."+self.rtu_makel_ip_e_3.get()+"."+\
                             self.rtu_makel_ip_e_4.get()),self.rtu_makel_ip_port_e.get()
                try:
                    if (int(self.rtu_ip_e_1.get())>255 ) or (int(self.rtu_ip_e_2.get())>255 )or\
                       (int(self.rtu_ip_e_3.get())>255 ) or (int(self.rtu_ip_e_4.get())>255 )or\
                       (int(self.rtu_makel_ip_e_1.get())>255 ) or (int(self.rtu_makel_ip_e_2.get())>255 )or\
                       (int(self.rtu_makel_ip_e_3.get())>255 ) or (int(self.rtu_makel_ip_e_4.get())>255 )or\
                       (((int(self.rtu_delay_e.get()) + int(self.rtu_makel_delay_e.get()))+\
                        int(self.rtu_ip_port_e.get())+int(self.rtu_makel_ip_port_e.get())+\
                        int(self.rtu_timeout_e.get())+int(self.rtu_makel_timeout_e.get()))<-1)or\
                        ((int(self.rtu_com_e.get())+int(self.rtu_makel_com_e.get()))<-1):
                        pass
                    
                except:
                    self.do_warn(u"Boşluk sayı değildir ! Giriş bölümlerine sadece sayı girebilirsiniz(0-9)")
                    return                                       
                
                if (int(self.rtu_delay_e.get()) and int(self.rtu_makel_delay_e.get())) < 1:
                    self.do_warn(u"Gecikme süresi en çok 10, en az 1 saniye olabilir")
                elif ((int(self.rtu_ip_port_e.get())< 10000) or ( int(self.rtu_makel_ip_port_e.get())) < 10000) :
                    self.do_warn(u"IP port numaraları 10000-65500 arasında olabilir.")
                elif (int(self.rtu_ip_port_e.get())> 65000 )or (int(self.rtu_makel_ip_port_e.get()) > 65552):
                    self.do_warn(u"IP port numaraları 10000-65500 arasında olabilir.")
                elif (int(self.rtu_ip_e_1.get())>255 ) or (int(self.rtu_ip_e_2.get())>255 )or\
                     (int(self.rtu_ip_e_3.get())>255 ) or (int(self.rtu_ip_e_4.get())>255 )or\
                     (int(self.rtu_makel_ip_e_1.get())>255 ) or (int(self.rtu_makel_ip_e_2.get())>255 )or\
                     (int(self.rtu_makel_ip_e_3.get())>255 ) or (int(self.rtu_makel_ip_e_4.get())>255 ):
                    self.do_warn(u"IP  numaraları  0-255 arasında olabilir.")
                else:
                    for i in range(len(tmp.deger)):
                        if i > 7:
                            tmp.deger[8+(i-8)]= new_values[i-8]
                    self.do_warn(tmp.wrn)
                    tmp.write()
                    load_ayar()
                    
                    
            def del_entry():
                self.rtu_com_e.delete(0,END)
                self.rtu_delay_e.delete(0,END)
                self.rtu_timeout_e.delete(0,END)
                self.rtu_ip_e_1.delete(0,END)
                self.rtu_ip_e_2.delete(0,END)
                self.rtu_ip_e_3.delete(0,END)
                self.rtu_ip_e_4.delete(0,END)
                self.rtu_ip_port_e.delete(0,END)
                self.rtu_makel_com_e.delete(0,END)
                self.rtu_makel_delay_e.delete(0,END)
                self.rtu_makel_timeout_e.delete(0,END)
                self.rtu_makel_ip_e_1.delete(0,END)
                self.rtu_makel_ip_e_2.delete(0,END)
                self.rtu_makel_ip_e_3.delete(0,END)
                self.rtu_makel_ip_e_4.delete(0,END)
                self.rtu_makel_ip_port_e.delete(0,END)
                
                
                
            def load_ayar():
                del_entry()
                self.rtu_com_e.insert(0,tmp.deger[8])
                self.rtu_delay_e.insert(0,tmp.deger[9])
                self.rtu_timeout_e.insert(0,tmp.deger[10])
                self.rtu_ip_e_1.insert(0,tmp.deger[11].split(".")[0])
                self.rtu_ip_e_2.insert(0,tmp.deger[11].split(".")[1])
                self.rtu_ip_e_3.insert(0,tmp.deger[11].split(".")[2])
                self.rtu_ip_e_4.insert(0,tmp.deger[11].split(".")[3])
                self.rtu_ip_port_e.insert(0,tmp.deger[12])
                self.rtu_makel_com_e.insert(0,tmp.deger[13])
                self.rtu_makel_delay_e.insert(0,tmp.deger[14])
                self.rtu_makel_timeout_e.insert(0,tmp.deger[15])
                self.rtu_makel_ip_e_1.insert(0,tmp.deger[16].split(".")[0])
                self.rtu_makel_ip_e_2.insert(0,tmp.deger[16].split(".")[1])
                self.rtu_makel_ip_e_3.insert(0,tmp.deger[16].split(".")[2])
                self.rtu_makel_ip_e_4.insert(0,tmp.deger[16].split(".")[3])
                self.rtu_makel_ip_port_e.insert(0,tmp.deger[17])
                try:
                    try:
                        if tmp.deger[11] == "0.0.0.0":
                            self.connection_method_kael="RTU"
                            self.rtu_ip_e_1.config(bg="gray")
                            self.rtu_ip_e_2.config(bg="gray")
                            self.rtu_ip_e_3.config(bg="gray")
                            self.rtu_ip_e_4.config(bg="gray")
                            self.rtu_ip_port_e.config(bg="gray")
                            self.rtu_com_e.config(bg="white")
                            self.rtu_delay_e.config(bg="white")
                            self.rtu_timeout_e.config(bg="white")
                        else:
                            self.connection_method_kael="TCP"
                            self.rtu_ip_e_1.config(bg="white")
                            self.rtu_ip_e_2.config(bg="white")
                            self.rtu_ip_e_3.config(bg="white")
                            self.rtu_ip_e_4.config(bg="white")
                            self.rtu_ip_port_e.config(bg="white")
                            self.rtu_com_e.config(bg="gray")
                            self.rtu_delay_e.config(bg="gray")
                            self.rtu_timeout_e.config(bg="gray")
                    except:pass
                    if tmp.deger[16] == "0.0.0.0":
                        self.connection_method_makel="RTU"
                        self.rtu_makel_ip_e_1.config(bg="gray")
                        self.rtu_makel_ip_e_2.config(bg="gray")
                        self.rtu_makel_ip_e_3.config(bg="gray")
                        self.rtu_makel_ip_e_4.config(bg="gray")
                        self.rtu_makel_ip_port_e.config(bg="gray")
                        self.rtu_makel_com_e.config(bg="white")
                        self.rtu_makel_delay_e.config(bg="white")
                        self.rtu_makel_timeout_e.config(bg="white")
                    else:
                        self.connection_method_makel="TCP"
                        self.rtu_makel_ip_e_1.config(bg="white")
                        self.rtu_makel_ip_e_2.config(bg="white")
                        self.rtu_makel_ip_e_3.config(bg="white")
                        self.rtu_makel_ip_e_4.config(bg="white")
                        self.rtu_makel_ip_port_e.config(bg="white")
                        self.rtu_makel_com_e.config(bg="gray")
                        self.rtu_makel_delay_e.config(bg="gray")
                        self.rtu_makel_timeout_e.config(bg="gray")
                        
                except:pass
                print self.connection_method_kael
            def default_ayar():
                del_entry()
                self.rtu_com_e.insert(0,"7")
                self.rtu_delay_e.insert(0,"1")
                self.rtu_timeout_e.insert(0,"5")
                self.rtu_ip_e_1.insert(0,"192")
                self.rtu_ip_e_2.insert(0,"168")
                self.rtu_ip_e_3.insert(0,"1")
                self.rtu_ip_e_4.insert(0,"254")
                self.rtu_ip_port_e.insert(0,"45500")
                self.rtu_makel_com_e.insert(0,"7")
                self.rtu_makel_delay_e.insert(0,"2")
                self.rtu_makel_timeout_e.insert(0,"3")
                self.rtu_makel_ip_e_1.insert(0,"192")
                self.rtu_makel_ip_e_2.insert(0,"168")
                self.rtu_makel_ip_e_3.insert(0,"1")
                self.rtu_makel_ip_e_4.insert(0,"222")
                self.rtu_makel_ip_port_e.insert(0,"16400")
            
                
            self.do_destroy()
            self.ana.title(self.title_words % u"HABERLEŞME")
            self.haberlesme=LabelFrame(self.ana,bg=self.bg,text=u" HABERLEŞME : ",fg="white")
            self.haberlesme.place(x=5,y=35,width=790,height=235)
            lab_ip_uyari=Label(self.haberlesme,text=u"Şayet ip değeri 0.0.0.0 ise seri haberleşme aktiftir.",bg="#006699",fg="white",relief=GROOVE)
            lab_ip_uyari.place(x=10,y=195,width=300)
            # KAEL BÖLÜMÜ HABERLEŞME
            frm_kael=LabelFrame(self.haberlesme,bg=self.bg,text=u" KAEL HABERLEŞME AYARLARI (RGKR): ",fg="white")
            frm_kael.place(x=10,y=10,width=300,height=180)
            rtu_lab=Label(self.haberlesme,text=u"Modbus RTU Comport NO:",bg="#006699",fg="white",relief=GROOVE)
            rtu_lab.place(x=20,y=40,width=150)
            self.rtu_com_e=MaxLengthEntry(self.haberlesme,maxlength=2,relief=GROOVE)
            self.rtu_com_e.place(x=180,y=40,width=30)
            rtu_delay=Label(self.haberlesme,text=u"Modbus RTU Gecikme(sn):",bg="#006699",fg="white",relief=GROOVE)
            rtu_delay.place(x=20,y=65,width=150)
            self.rtu_delay_e=MaxLengthEntry(self.haberlesme,maxlength=1,relief=GROOVE)
            self.rtu_delay_e.place(x=180,y=65,width=30)
            rtu_timeout=Label(self.haberlesme,text=u"Modbus RTU Zaman Aşımı(sn):",bg="#006699",fg="white",relief=GROOVE)
            rtu_timeout.place(x=20,y=90,width=150)
            self.rtu_timeout_e=MaxLengthEntry(self.haberlesme,maxlength=1,relief=GROOVE)
            self.rtu_timeout_e.place(x=180,y=90,width=30)
            rtu_lab_ip=Label(self.haberlesme,text=u"Modbus RTU IP(ip):",bg="#006699",fg="white",relief=GROOVE)
            rtu_lab_ip.place(x=20,y=115,width=150)
            self.rtu_ip_e_1= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_ip_e_1.place(x=180,y=115,width=20)
            self.rtu_ip_e_2= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_ip_e_2.place(x=210,y=115,width=20)
            self.rtu_ip_e_3= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_ip_e_3.place(x=240,y=115,width=20)
            self.rtu_ip_e_4= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_ip_e_4.place(x=270,y=115,width=20)
            e_dot_=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_.place(x=205,y=115,width=2)
            e_dot_1=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_1.place(x=235,y=115,width=2)
            e_dot_2=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_2.place(x=265,y=115,width=2)
            rtu_lab_ip_port=Label(self.haberlesme,text=u"Modbus RTU IP(port):",bg="#006699",fg="white",relief=GROOVE)
            rtu_lab_ip_port.place(x=20,y=140,width=150)
            self.rtu_ip_port_e=MaxLengthEntry(self.haberlesme,maxlength=5,relief=GROOVE)
            self.rtu_ip_port_e.place(x=180,y=140,width=40)
            self.test_kael=Button(self.haberlesme,text="TEST KAEL",bg="#CCCCCC",overrelief='solid',command=self.kontrol_kael)
            self.test_kael.place(x=20,y=165,width=150,height=18)
            # MAKEL BÖLÜMÜ HABERLEŞME
            frm_makel=LabelFrame(self.haberlesme,bg=self.bg,text=u" MAKEL HABERLEŞME AYARLARI (SAYAÇ): ",fg="white")
            frm_makel.place(x=320,y=10,width=300,height=180)
            rtu_makel_lab=Label(self.haberlesme,text=u"Modbus RTU Comport NO:",bg="#006699",fg="white",relief=GROOVE)
            rtu_makel_lab.place(x=335,y=40,width=150)
            self.rtu_makel_com_e=MaxLengthEntry(self.haberlesme,maxlength=2,relief=GROOVE)
            self.rtu_makel_com_e.place(x=495,y=40,width=30)
            rtu_makel_delay=Label(self.haberlesme,text=u"Modbus RTU Gecikme(sn):",bg="#006699",fg="white",relief=GROOVE)
            rtu_makel_delay.place(x=335,y=65,width=150)
            self.rtu_makel_delay_e=MaxLengthEntry(self.haberlesme,maxlength=1,relief=GROOVE)
            self.rtu_makel_delay_e.place(x=495,y=65,width=30)
            rtu_makel_timeout=Label(self.haberlesme,text=u"Modbus RTU Zaman Aşımı(sn):",bg="#006699",fg="white",relief=GROOVE)
            rtu_makel_timeout.place(x=335,y=90,width=150)
            self.rtu_makel_timeout_e=MaxLengthEntry(self.haberlesme,maxlength=2,relief=GROOVE)
            self.rtu_makel_timeout_e.place(x=495,y=90,width=30)
            rtu_makel_lab_ip=Label(self.haberlesme,text=u"Modbus RTU IP(ip):",bg="#006699",fg="white",relief=GROOVE)
            rtu_makel_lab_ip.place(x=335,y=115,width=150)
            self.rtu_makel_ip_e_1= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_makel_ip_e_1.place(x=495,y=115,width=20)
            self.rtu_makel_ip_e_2= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_makel_ip_e_2.place(x=525,y=115,width=20)
            self.rtu_makel_ip_e_3= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_makel_ip_e_3.place(x=555,y=115,width=20)
            self.rtu_makel_ip_e_4= MaxLengthEntry(self.haberlesme,maxlength=3,relief=GROOVE)
            self.rtu_makel_ip_e_4.place(x=585,y=115,width=20)
            e_dot_makel_=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_makel_.place(x=520,y=115,width=2)
            e_dot_makel_1=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_makel_1.place(x=550,y=115,width=2)
            e_dot_makel_2=Label(self.haberlesme,text=".",bg="#006699",fg="white")
            e_dot_makel_2.place(x=580,y=115,width=2)
            rtu_makel_lab_ip_port=Label(self.haberlesme,text=u"Modbus RTU IP(port):",bg="#006699",fg="white",relief=GROOVE)
            rtu_makel_lab_ip_port.place(x=335,y=140,width=150)
            self.rtu_makel_ip_port_e=MaxLengthEntry(self.haberlesme,maxlength=5,relief=GROOVE)
            self.rtu_makel_ip_port_e.place(x=495,y=140,width=40)
            self.test_makel=Button(self.haberlesme,text="TEST MAKEL",bg="#CCCCCC",overrelief='solid',command=self.kontrol_makel)
            self.test_makel.place(x=335,y=165,width=150,height=18)
            self.ayar_default_kaydet=Button(self.haberlesme,text=u"Varsayılanları Yükle",bg="#CCCCCC",overrelief='solid',command=default_ayar)
            self.ayar_default_kaydet.place(x=490,y=195,width=140)
            self.ayar_kaydet=Button(self.haberlesme,text="    Kaydet   ",bg="#CCCCCC",overrelief='solid',command=save_conf)
            self.ayar_kaydet.place(x=640,y=195,width=140)
            load_ayar()
            self.do_warn(u"Sayaç ve kompanzasyon rölesi haberleşme ayarları..")
            self.menu_id = 2 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
    def do_rapor(self):
        if self.menu_id == 3 :pass
        else:
            self.do_destroy()
            self.ana.title(self.title_words % u"RAPORLAMA")
            self.raporlar=LabelFrame(self.ana,bg=self.bg,text=u" RAPORLAMA : ",fg="white")
            self.raporlar.place(x=5,y=35,width=790,height=235)
            self.menu_id = 3 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
    def do_about(self):
        if self.menu_id == 4 :pass
        else:
            self.do_destroy()
            self.ana.title(self.title_words % u"HAKKINDA")
            self.hakkinda=LabelFrame(self.ana,bg=self.bg,text=u" HAKKINDA : ",fg="white")
            self.hakkinda.place(x=5,y=35,width=790,height=235)
            self.menu_id = 4 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
    def do_lisans(self):
        if self.menu_id == 5 :pass
        else:
            self.do_destroy()
            self.ana.title(self.title_words % u"LİSANS")
            self.lisans=LabelFrame(self.ana,bg=self.bg,text=u" LİSANS : ",fg="white")
            self.lisans.place(x=5,y=35,width=790,height=235)
            self.menu_id = 5 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.

    def do_prg_conf(self):
        if self.menu_id == 6 :pass
        else:
            self.do_destroy()
            self.ana.title(self.title_words % u"PROGRAM AYARLARI")
            self.prg_conf=LabelFrame(self.ana,bg=self.bg,text=u" PROGRAM AYARLARI : ",fg="white")
            self.prg_conf.place(x=5,y=35,width=790,height=235)
            self.do_warn(u"Program Ayarları,Konfigürasyon,Parametreler")
            self.menu_id = 6 #sadece aktif elemanlara (Menu bileşenlerine) yazılabilir.
    def do_warn(self,word):
        self.warn_bar.config(text=word+" "+time.strftime("(%H:%M:%S)"))
    def clock(self):
        
        t2= time.strftime('%H:%M:%S')
        self.ana.update()
        if self.t1 != t2:
            self.t1=t2
            self.saat.config(text=time.strftime('%H:%M:%S'))
            self.load_to_gui()
            
            

            #get_state()
        
        self.saat.after(10, self.clock)

    def kontrol_kael(self):
        print u"Kael kontrol bölümü"
        pass
    def kontrol_makel(self):
        print u"Makel kontrol bölümü"
        pass
    def load_to_gui(self):
        if self.menu_id == 0:
            answer= rtu.connect("kael",'\x01\x03\x10\x00\x00\x5A\xC1\x31')
            self.r_phase_volt.config(text=answer[0])
            self.s_phase_volt.config(text=answer[1])
            self.t_phase_volt.config(text=answer[2])
            self.r_phase_amper.config(text=answer[3])
            self.s_phase_amper.config(text=answer[4])
            self.t_phase_amper.config(text=answer[5])
            self.r_phase_wat.config(text=answer[6])
            self.s_phase_wat.config(text=answer[7])
            self.t_phase_wat.config(text=answer[8])
            self.r1_phase_l.config(text=answer[9])
            self.s1_phase_l.config(text=answer[10])
            self.t1_phase_l.config(text=answer[11])
            time.sleep(0.1)
            
            coil =rtu.connect("kael",'\x01\x03\x10,\x00\x02\x01\x02')
            
            for i in range(18):
                time.sleep(0.01)
                if i == 0:
                    if  coil[i]=="0":self.e1_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e1_kapasite.config(bg="lightgreen")
                elif i == 1:
                    if  coil[i]=="0":self.e2_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e2_kapasite.config(bg="lightgreen")
                elif i == 2:
                    if  coil[i]=="0":self.e3_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e3_kapasite.config(bg="lightgreen")
                elif i == 3:
                    if  coil[i]=="0":self.e4_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e4_kapasite.config(bg="lightgreen")
                elif i == 4:
                    if  coil[i]=="0":self.e5_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e5_kapasite.config(bg="lightgreen")
                elif i == 5:
                    if  coil[i]=="0":self.e6_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e6_kapasite.config(bg="lightgreen")
                elif i == 6:
                    if  coil[i]=="0":self.e7_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e7_kapasite.config(bg="lightgreen")
                elif i == 7:
                    if  coil[i]=="0":self.e8_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e8_kapasite.config(bg="lightgreen")
                elif i == 8:
                    if  coil[i]=="0":self.e9_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e9_kapasite.config(bg="lightgreen")
                elif i == 9:
                    if  coil[i]=="0":self.e10_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e10_kapasite.config(bg="lightgreen")
                elif i == 10:
                    if  coil[i]=="0":self.e11_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e11_kapasite.config(bg="lightgreen")
                elif i == 11:
                    if  coil[i]=="0":self.e12_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e12_kapasite.config(bg="lightgreen")
                elif i == 12:
                    if  coil[i]=="0":self.e13_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e13_kapasite.config(bg="lightgreen")
                elif i == 13:
                    if  coil[i]=="0":self.e14_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e14_kapasite.config(bg="lightgreen")
                elif i == 14:
                    if  coil[i]=="0":self.e15_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e15_kapasite.config(bg="lightgreen")
                elif i == 15:
                    if  coil[i]=="0":self.e16_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e16_kapasite.config(bg="lightgreen")
                elif i == 16:
                    if  coil[i]=="0":self.e17_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e17_kapasite.config(bg="lightgreen")
                elif i == 17:
                    if  coil[i]=="0":self.e18_kapasite.config(bg="#006699")
                    elif coil[i]=="1":self.e18_kapasite.config(bg="lightgreen")
                    
            Cap =rtu.connect("kael",'\x01\x03\x31\x08\x00\x20\xCB\x2C')
            all_caps = rtu.kapasiteler
            self.c1_kapasite.config(text=(all_caps[0]))
            self.c2_kapasite.config(text=(all_caps[1]))
            self.c3_kapasite.config(text=(all_caps[2]))
            self.c4_kapasite.config(text=(all_caps[3]))
            self.c5_kapasite.config(text=(all_caps[4]))
            self.c6_kapasite.config(text=(all_caps[5]))
            self.c7_kapasite.config(text=(all_caps[6]))
            self.c8_kapasite.config(text=(all_caps[7]))
            self.c9_kapasite.config(text=(all_caps[8]))
            self.c10_kapasite.config(text=(all_caps[9]))
            self.c11_kapasite.config(text=(all_caps[10]))
            self.c12_kapasite.config(text=(all_caps[11]))
            self.c13_kapasite.config(text=(all_caps[12]))
            self.c14_kapasite.config(text=(all_caps[13]))
            self.c15_kapasite.config(text=(all_caps[14]))
            self.c16_kapasite.config(text=(all_caps[15]))
            self.c17_kapasite.config(text=(all_caps[16]))
            self.c18_kapasite.config(text=(all_caps[17]))
            

                    
   
    
        
default_conf_file="""//Begin configuration file//
01_Setting_max_XL:20
02_Setting_max_XC:10
03_Setting_period:5
04_Setting_method:1
05_Setting_cap_1:5
06_Setting_cap_2:10
07_Setting_cap_3:15
08_Setting_cap_4:20
09_Comm_set_kael_RTU_serport:7
10_Comm_set_kael_RTU_delay:1
11_Comm_set_kael_RTU_timeout:5
12_Comm_set_kael_RTU_IP:192.168.1.254
13_Comm_set_kael_RTU_IP_port:45500
14_Comm_set_makel_RTU_serport:7
15_Comm_set_makel_RTU_delay:2
16_Comm_set_makel_RTU_timeout:3
17_Comm_set_makel_RTU_IP:192.168.1.222
18_Comm_set_makel_RTU_IP_port:16400"""

if __name__ == "__main__":
    
    ui=gui()

En azından seri portdan nasıl yapıldığını görürsün(RS485 ile aynıdır.)
 
Çok teşekkür ederim hocam Modbus 'da herhangi bir sıkıntı yok onu hallettim ancak DSP ile ilgili pek bilgim yok o yüzden hızlı bir çözüm üretebilirmiyim diye düşündüm.Ancak DSP yi de matlab ile programlıyorum bu konuda kütüphanesi yok . Ancak bir şekilde çözmek lazım o yüzden PLC nin bit çıkışları ile paralel haberleşmeyi gerçekleştirmeyi düşünüyorum en kolay olarak.
 

Forum istatistikleri

Konular
128,237
Mesajlar
916,080
Kullanıcılar
450,046
Son üye
premier92

Yeni konular

Geri
Üst