Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: fractal - 24 Şubat 2012, 10:26:09

Başlık: C# Scada Tasarımı
Gönderen: fractal - 24 Şubat 2012, 10:26:09
c# scada tasarım teknikleri nelerdir?seriport modbus ascii kullnıyorum plc ile haberleşmek için.datalar sürekli nasıl okunur.nasıl güncellenir.temel iskelet nasıl olmalıdır...

Başlık: Ynt: C# Scada Tasarımı
Gönderen: influx - 24 Şubat 2012, 10:48:43
Fultek in hazırladığı activex ler var onlardan satın alabilirsin, yada opc sever kullanabilirsin.

http://www.fultek.com.tr/Modbus.html
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 24 Şubat 2012, 11:04:53
ben hazır istemiyorum.örneğim plc den d100 d101 d102........d120 datalarını modbus ascii ile sürekli okumak istiyorum.aynı zamanda belli butonlarla m0,m1,m2.....................m20 gibi plc bitleri  set,reset,toggle,momentary gibi kontrol etmek istiyorum.belli data adreslerinede veri yazmak istiyorum...
kendi yaptığım programda bu okuma yazma yapısını tam oturtamadığım için sıkıntı yaşıyorum.ilk başta düzgün çalışıyor sonra haberleşme yavaşlıyor.bazen butonları kontrol edemiyorum gibi gibi...

okuyacağım yada yazacağım plc bölgelerin adreslerini bulup protokole göre hex kodlarını bulup seriporttan gönderiyorum

SerialPort1.WriteLine(":01031384000164" + (char)13 + (char)10); // d900 adresini okuma

timer ile tüm dataları güncellemek istedim olmadı.datareceive event kullanarak yapmayı deneyeceğim.
Başlık: Ynt: C# Scada Tasarımı
Gönderen: influx - 24 Şubat 2012, 16:38:32
ilk önce modbus yapısı güzelce araştır, daha sonra hangi plc de kullancaksan plc ye ait fonksiyonlarıda bilmen gerekli mesela siemens s7 1200 için comm_load ve master yada slave foksiyon bloklarını kullanarak yapabilirsin, bu plcden plcye değişir. kendini geliştirmek için yapacaksan araştırabilirsin fakat proje geliştiriyorsan bunlarla uğraşma hazırı kullan geç...
Başlık: Ynt: C# Scada Tasarımı
Gönderen: ogunduru - 24 Şubat 2012, 22:27:52
Fultek'in C# ile hazırlanmış activex yazılımını kullanmak her açıdan daha mantıklı bir çözüm. 100 usd civarında bir fiyat oldukça makul sayılır. Modbus protokolü etkin bir şekilde kullanmak için harcayacağınız zamanın maliyeti daha yüksek olmalı.
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 27 Şubat 2012, 09:39:10
kullandığım plc nin modbus protokülünü cözdüm onda bir sorun yok.data okuma yazma bit okuma yazma kodları hex adresleri hepsi ok.
Başlık: Ynt: C# Scada Tasarımı
Gönderen: transistor - 27 Şubat 2012, 10:01:36
hangi plc kullanıyorsunuz
Başlık: Ynt: C# Scada Tasarımı
Gönderen: Murat Mert - 27 Şubat 2012, 11:12:23
Alıntı yapılan: transistor - 27 Şubat 2012, 10:01:36
hangi plc kullanıyorsunuz

Yanlış değilsem delta kullanıyor Fractal hoca.
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 27 Şubat 2012, 11:58:10
evet.delta plc.:))..ben plc tarafında sorun yaşamıyorum.c# tarafında neler yapabilirim diye araştırıyorum.örneğin plc için wpl soft programında online oluduğunuzda tüm giriş çıkış data timer counter değerleri görülebiliyor ve maniple edebiliyorsunuz.ben c# ile böyle bir program yapmaya kalksam nasıl olur gibi.örneğin programımda kullanılan giriş çıkış timer counter değerleri aynı anda nasıl hem okuyacağım hem yazabileceğim hemde programın diğer fonsiyonlarını kullanabileceğim...
Başlık: Ynt: C# Scada Tasarımı
Gönderen: transistor - 27 Şubat 2012, 12:54:36
fikir vermesi açısından siemens s7-300 için yaptığım gui nin resmini veriyorum benim yaptığım seninkinden farklı olarak pc ile plc ler arasında iletişimi ayrı bir devre yapıyor tüm kodlar onun üzerinde pc ile olan irtibatı sağlıyor ayrıca iletişim tcp üzerinden ;
gui den plc leri 11 farklı şekilde kontrol edebiliyorsun
1. run a geçirme
2. stop a geçirme
3. istediğin blok ve adreslere yazma
4. hız testi yapma
5. istediğin blok ve adresleri okuma
6. istediğin blok ve adresleri silme
7. szl okuma
8. tüm szl bloklarını okuma
9. ram den roma kopyalama
10. blokları okuma
11. bit düzeyinde okuma

tüm bunları online olarak okumak istiyorsan timer veya başka bir şekilde okumakta senin elinde

(http://s12.postimg.cc/whkupr7jx/Ekran_Al_nt_s.jpg)
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 15 Mart 2012, 21:57:15
C# ile Indusoft Web Studio tarzı birşey yapılabilirmi?Indusoft Web Studio opc server kullanılıyor sanırım.tam olarak opc server nedir?
Başlık: Ynt: C# Scada Tasarımı
Gönderen: ogunduru - 15 Mart 2012, 22:03:04
OPC server için özet olarak, PLC'lerin üzerinde barındırdıkları verileri biriktirebilecekleri (server'a bilgi aktarmak gibi), networke bağlanarak veri paylaşım kabiliyetini arttırabilecekleri bir uygulamadır. Fabrikalarda daha çok verinin toplanması için kullanılıyor.

C# resmini verdiğin türde bir uygulamayı elbette profesyonelce yapabileceğin araçlara sahip. Muhtemelen ihtiyacının fazlası...
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 30 Mart 2012, 09:52:27
indusoft scada programını inceledim.bu programda tag lar oluşturuluyor.örneğin plc den okuma yazma yapılacak tüm giriş ,çıkış,timer,counter,data adresleri tek tek giriliyor.okuma ,yazma, okuma-yazma yapıp yapmayacağı belirleniyor.şimdi c#ile tasarım yaparken bu iş nasıl olucak.bir alt program sürekli bizim oluşturduğumuz bu adreslerimi okuyup yzacak.yoksa hangi sayfada ise osayfadaki adreslermi kullanılacak.birde sadece okuma ve sadece yazma yapılırkenki durum ile okuma yazma yapmaarasındaki fark nedir.zaten hatakontrolü olamayackmı?
x0,,,,,,,,x50 kadar okuma yapacaksam teker teker okuma yerine tek seferde okuma yapmak arasında bir fark varmıdır?
indosoft tag sınırlaması vardı.bunun nedeni tam olarak sınırlı zamanda sınırlı giriş çıkış data okumaklamı alakalıdır?
Başlık: Ynt: C# Scada Tasarımı
Gönderen: ogunduru - 30 Mart 2012, 12:07:55
PLC'lerin hepsinde kullanılan standart bazı protokoller var. Bunlardan en popüler olanı Modbus. RS485 gibi bir seri iletişim kullanacaksan Modbus/RTU veya Modbus/Text  protokolü ile bilgiyi bilgisayara aktarmak mümkün. Modbus protokolünde PLC üzerinde hazır olan verinin adreslerini belirterek okuma yapılıyor. Bunu yapabilmek için PLC yazılımının da bilgiyi aynı protokole göre iletmesi için ayarlanması gerekli. Ethernet haberleşmesi yapılacaksa yine Modbus protolünün TCP versiyonu var. Benzer yaklaşımla bu kullanılabilir. Modbus protokolü ile haberleşen kodşarı yazmak çok ciddi bir iş. Bunu yapmak yerine 100 USD verip C#'da yazılımış hazır bir modülü almak bence en iyisi. (www.fultek.com.tr (http://www.fultek.com.tr))

OPC server seçeneğinde ise durum tamamen farklı. PLC veriyi OPC server üzerindeki veritabanına yazıyor. C# veya başka dille yazılmış bir programa sadece verşitabanından bilgiyi okumak kalıyor.

Başka seçeneklerde var. Örneğin Siemens PLC'leri için PC'ye takılan PCI kartlar var. Başka markalarda da vardır belki ama ben kullanmadım. Bu PCI kartlar ile gelen yazılım bilgisayara kurulunca, PLC üzerindeki veri adreslerini girerek veriye ulaşmak son derece kolay. Bu kartları kullanalı 5 sene olduğu için ismini şu an hatırlamıyorum, ama siemens web sitesinden bulunabilir.

Kolay gelsin
Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 30 Mart 2012, 14:47:19
SerialPort1.WriteLine(":010505000000F5" + (char)13 + (char)10);

gibi komutlar kullanarak delta plc ile denemeler yaptım.şimdi indusofta tag lar oluşturulurken hex adreslerin başına sayılar geliyor.0x:1055 gibi
burda 0x:,1x,2x,4x oluyor.bu kodlar okumamı yazmamı bobin okumamı onu kodluyor.yukrda benim yazdığım kodda öyle zaten.şidmi bu yapıyı biliyorum.opc ile plc okuma daha sonra yazacağım  programla da opc den okumak ile---opc kullanmadan yukardaki yolla plc den okumak arasındaki fark nedir?bu opc nin yapısı nasıldır?ben de okuma yaparken hata kontrolü yapğıyorum...
Başlık: Ynt: C# Scada Tasarımı
Gönderen: ogunduru - 30 Mart 2012, 16:53:43
Önceki mesajımda önerdiğim üç seçenek vardı.

1) Modbus seçeneği
   a) tcp/ip veya ethernet haberleşmesi  (modbus/tcp): PLC üzerinde ethernet haberleşmesi yapmak için RJ45 soketi olan modül gerekli.
   b) Seri heberleşme (RS/485): Bu seçekte pc ile hat arasına rs232-rs485 converter takmak ve tüm plc'lere ayrı adresler vermek gerekli.

Her iki modbus seçeneği için de, PLC'i yazılımında modbus protoklüne uygun veri iletmesi için yazılım üzerinden konfigüre edilmesi gerekli. PLC yazılımı kodları yoksa veya ayarlama şansı yoksa bu seçenek işe yaramaz. Protokol hakkında bilgi: (http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf (http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf))

2) PCI kart kullanarak PC ile PLC'yi direkt bağlamak. Bu seçenek PLC markasına göre değişir. PCI karta özel olan yazılım PC'ye kurulur ve okunmak istenen PLC adreslerinden veri alınır. Bu seçenekte kartla beraber gelen dökümanı okumak gerekli.

3) OPC server seçeneğinde, bir server kurulur ve üzerine PLC markasının desteklediği bir OPC server kurulur. OPC server ile PLC'ler tercihe bağlı olarak seri (RS/485 veya ethernet) ile bağlanır. OPC server konfigürasyon seçenekleri ile, PLC'lerden okunan datalar excel tablosu veya veritabanı üzerinde toplanır. Veri toplandıktan sonra, kullanılan yazılım dili ne ise veri kaynağına bağlanarak okumak zor değil.

Başlık: Ynt: C# Scada Tasarımı
Gönderen: fractal - 30 Mart 2012, 21:08:38
tekrar soruyorum bu opc nin yapısı nasıldır nasıl olabilir?c# yazmak istesem nasıl bir yapı oluşturmam gerekiyor.piyasa bir çok delphi,vb,c#ile scada yapan var.bu yapı nasıl kuruluyor...
Başlık: Ynt: C# Scada Tasarımı
Gönderen: transistor - 31 Mart 2012, 18:00:37
merhabalar,

opc server'a niçin bu kadar takıldınız anlamadım. opc server gözünüzde büyütülecek bişey değil tek yaptığı plc lere göre haberleşme protokollerini barındırıyor olması.

amacınız scada tarzı bişey yapmaksa kendi yazılımınızı kendiniiz yapıcaksınız tabi kullanacağınız plc marka ve modeline göre yine haberleşme protokolünü gözönüne alarak

opc server la yapıcam diyorsanız o zaman opc server harici basit bir arayüz yazıcaksınız yapmayı düşündüğünüz işe göre

benim fikrimi sorarsanız bırakın opc server ı tabi kullanacağınız plc tek bir markanın olacaksa oturun kendiniz yazın gui yi