LİBNODAVE SCADA EKRAN

you-peck

Üye
Katılım
20 Ağu 2009
Mesajlar
34
Puanları
1
Yaş
37
C# Libnodave ile geliştridğim scadada bir timer ile plc den değerleri okuyorum. 2. timer ile ekran durumunu belirleyerek simülasyonu çalıştırıyorum. Paralel çalışıp yavaşlama olmasın diye böyle birşey yaptım. yanlız gerçek ile ekran arasında 4-5 saniye farkla yavaşlama var. Bunun için bir çözüm öneriniz var mıdır?
 
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.
Tek bir timer içerisinde bildiğimiz tag mantığı ile tüm okuduğun değerleri birer değişkene al ve ve okuma bittiğinde bu bilgileri güncelle. Unutma kullanacağın her timer nesnesi işlemci kaynaklarına ayrı bir yük getirecektir.
 
Bir timer içersinde yapınca yapılan işlem uzunluğu artıyor. Bu sefer de şöyle bir problem çıkıyor. Buton ile sahaya gönderdiğimiz komutlar yaklaşık timer içerisnde çalışan fonksiyon kadar bir gecikme ile iletiliyor ki bu da güvenlik açısından çok tehlikeli olabilir.
 
Timer süresince okuma yaptığın veri uzunluglugu ve ya kaç adet değişkeni güncelliyorsun ve interval süren nekadardır ?
 
bir thread ile okuma yapıp array bir yapıya okunan değerleri sürekli olarak yazdır.ikinci bir thread ilede Scada ekranının durumlarını düzenle.böylelikle donma veya yavaşlama olmaz.istersen şöyle bir şeyde yapabilirsin.sadece bir thread yaz birde event ın olsun okuma sonuclanınca eventı tetikle eventtanda scada ekranını güncelle.
 
Thread ile okuma yapmayı denedim fakat PLC ye erişim yapmıyormuş gibi null değeri okuyor dedi. Size zahmet olmazsa küçük bir örnek verebilir misiniz?
 
Sadece ekran durumunu güncelleyen thread yazıyorum. ve bunu programın çalışması ile başlatıyorum. Sonra timer içerisinde plc den dataları okuyorum. Ama bir kaç saniye sonra plc bağlantısı kesiliyor ve korumalı datayı okumaya çalışıyor hatası veriyor. Aynı işlemi ikisi de tinmer içerisinde olunca sorun yok.Ne yapabilirim?
 
ana formun load event ına aşşağıdaki satırı yaz.
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
 
Thread kısmını çalıştırdım. Hatta ekran güncelleme kısmını 2-3 thread ile yapınca daha hızlı oluyor fakat progragram donuyor bir müddet sonra. Bir de şöyle bir sorum olacak. Bu şekilde yapınca da program çıkış tuşu ile çıkamıyorum kapanmıyor. Ne yapabilirim?
 
çıkmak istediğinde çalışan threadleri suspend edip çıkman lazım.
 

Forum istatistikleri

Konular
128,252
Mesajlar
916,208
Kullanıcılar
450,067
Son üye
ERENLER04

Yeni konular

Çevrimiçi üyeler

Geri
Üst