C# Ve PLC Veri Yazdırma Hakkında
-
Arkadaşlar merhaba
Üretim hattında 54 tane PLC cihazı var. Bu cihazlardan sürekli veri akışı gelmekte ve bu verileri C# aracılığıyla SQL'e, ayrı tablolara yazdırmaktayım. PLC cihazlarından SQL'e yazdırma şartları ürün geçmesi ve mod değişikliği(mod değişikliği = operatörün makinayı durdurması, manuele alması vb.). PLC sayısı fazla olduğu için C#'ta threading yapısı kullandım. Ama tam emin değilim doğru yaptığımdan. Bazen SQL'i incelediğimde yazması gereken verileri yazmadığını görüyorum. Tam olarak yapıyı nasıl kurmalıyım?Projeyi incelemek isteyene gönderebilirim.
-
Hocam, biraz alakasız olacak firma ne üstüne çalışıyor ve kaç yıldır oradasın?
Ekleme : sql tarafında ne gibi bir eksik veriden söz ediyoruz? biraz daha açar mısın? yani atıyorum 1.plc verileri gönderiyor, sonra 2.plc verileri yazdırmıyor 3. makineye mi geçiyor nasıl oluyor yani?
Roark tarafından 05/Haz/20 23:40 tarihinde düzenlenmiştir -
paylastigin sekilde pek bir cözüm bulunabilecegini sanmiyorum.. incelemek lazim, "bazi verileri yazmama" olayini görebiliyor muyuz? yani o olay oluyorsa bulunabilir ama ayda yilda bir oluyorsa baska bir sey..
yazdigin kodu pek begenmedim ayrica :) cok tekrar varmis gibi geliyor, sinirsiz döngü koymussun, thread.sleep kullanmissin, bir sürü islem yapan kisim icin tek bir try-catch kullanmassin (hata oldugu durumlarda hata olan kismi tekrar deneyebilirdi mesela) gibi gibi.. Ayrica tek thread olusturmussun main thread harici, bu tablodaki sira numaralari önemssize kaynak israfi yapmissin yani birden fazla thread ile calisabilirsin..
-
x unbalanced bunu yazdı
paylastigin sekilde pek bir cözüm bulunabilecegini sanmiyorum.. incelemek lazim, "bazi verileri yazmama" olayini görebiliyor muyuz? yani o olay oluyorsa bulunabilir ama ayda yilda bir oluyorsa baska bir sey..
yazdigin kodu pek begenmedim ayrica :) cok tekrar varmis gibi geliyor, sinirsiz döngü koymussun, thread.sleep kullanmissin, bir sürü islem yapan kisim icin tek bir try-catch kullanmassin (hata oldugu durumlarda hata olan kismi tekrar deneyebilirdi mesela) gibi gibi.. Ayrica tek thread olusturmussun main thread harici, bu tablodaki sira numaralari önemssize kaynak israfi yapmissin yani birden fazla thread ile calisabilirsin..
Sınırsız döngüyü plc'yi sürekli taramak için kullandım. Yani sürekli kontrol etsin veri varsa Sql yazdırsın.
-
x alkolikkarga bunu yazdıx unbalanced bunu yazdı
paylastigin sekilde pek bir cözüm bulunabilecegini sanmiyorum.. incelemek lazim, "bazi verileri yazmama" olayini görebiliyor muyuz? yani o olay oluyorsa bulunabilir ama ayda yilda bir oluyorsa baska bir sey..
yazdigin kodu pek begenmedim ayrica :) cok tekrar varmis gibi geliyor, sinirsiz döngü koymussun, thread.sleep kullanmissin, bir sürü islem yapan kisim icin tek bir try-catch kullanmassin (hata oldugu durumlarda hata olan kismi tekrar deneyebilirdi mesela) gibi gibi.. Ayrica tek thread olusturmussun main thread harici, bu tablodaki sira numaralari önemssize kaynak israfi yapmissin yani birden fazla thread ile calisabilirsin..
Sınırsız döngüyü plc'yi sürekli taramak için kullandım. Yani sürekli kontrol etsin veri varsa Sql yazdırsın.
daha modern yöntemler var hocam.. Yarin uygun bir zaman pc'ne baglanip bakalim
-
PLC' mi c#'a bağlanıyor, C# mi PLC'ye.
1 tane sonsuz döngü yerine her PLC için ayrı bir thread yapılabilir. bu sayede sallıyorum 3. plc'de ki bir anlık bağlantı hatası için sonra ki bütün PLC'lere bağlanmıyor.
-
x rakkoc bunu yazdı
PLC' mi c#'a bağlanıyor, C# mi PLC'ye.
1 tane sonsuz döngü yerine her PLC için ayrı bir thread yapılabilir. bu sayede sallıyorum 3. plc'de ki bir anlık bağlantı hatası için sonra ki bütün PLC'lere bağlanmıyor.
c# plcye bağlanıyor.
Bu arada @unbalanced çok yardımcı oldu. Sıfırdan kodu yazdı. Daha stabil hale getirdi. Programı inceleyip sorularım olabilir @unbalanced hocam :D