VB-WinCC/Citect SCADA

maviizi

Üye
Katılım
14 Nis 2007
Mesajlar
14
Puanları
1
Yaş
40
Merhaba,
Arkadaşlar mesela Visual Basic'te bir form dosyası/Project yaptım diyelim.Bunu Wincc ve/veya Vijeo Citect ile nasıl ilişkilendirebilirim.

Wincc ve Vijeo Citect'te VB kodlarını kullanmayı biliyorum ama anlatmak istediğim,VB'de oluşturduğumuz görsel öğeleri kapsayan projeyi nasıl scada programları ile ilişkilendirebileceğim.

SCADA Programlarının sunduğu Library ve Özelliklere bağımlı kalmamak ama sadece VB'e de bağımlı kalmamak ve VB'te oluşturduğum projeyi direkt olarak SCADA Programlarında kullanmak istiyorum yani.

Cevaplarınızı bekliyorum arkadaşlar.Teşekkürler şimdiden..
 
Merhabalar;
Visual basic konusunda proje yapabilecek yeterlilikte iseniz.Scada programları yerine OPC SERVER lar üzerinde araştırma yapın.
Visual basic ile proje oluşturamadığımdan hazır projelerle işlemler gerçekleştirdim.

KEPSERVER şeklinde aramalarınızı yoğunlaştırın.Visual basic bilginizde varsa işiniz çok kolay.

Saygılarımla
 
Visual basic ile wincc ilişkilendirilirse cok daha güzel olur
hem KEPSERVER için mpi usb haberleşmesi yok sanırım.
 
Merhaba,
Arkadaşlar mesela Visual Basic'te bir form dosyası/Project yaptım diyelim.Bunu Wincc ve/veya Vijeo Citect ile nasıl ilişkilendirebilirim.

Wincc ve Vijeo Citect'te VB kodlarını kullanmayı biliyorum ama anlatmak istediğim,VB'de oluşturduğumuz görsel öğeleri kapsayan projeyi nasıl scada programları ile ilişkilendirebileceğim.

SCADA Programlarının sunduğu Library ve Özelliklere bağımlı kalmamak ama sadece VB'e de bağımlı kalmamak ve VB'te oluşturduğum projeyi direkt olarak SCADA Programlarında kullanmak istiyorum yani.

Cevaplarınızı bekliyorum arkadaşlar.Teşekkürler şimdiden..

WinCC 6' da bu iş ActiveX' ler ile yapılıyordu. Ama şu an bildiğin gibi Microsoft ActiveX olayını bitirdi ve WinCC 7 küsür çıktı. WinCC 7' de olay nasıldır hiç bilmiyorum, açıkçası şu an merak da etmiyorum. Böyle bir şeye gerçekten ihtiyaç duyuyarsan VB6 kurman gerekecek. Burada bir ActiveX yazıp daha sonra WinCC' nin dökümanlarını karıştırman en iyisi. Yeryüzünde bu yola başvuran insan sayısının çok olduğunu sanmam. Citect için de aynı şeyler söylenebilir.
 
Merhabalar,

Visual Basic 6.0 ile yazdığınız projeleri ActiveX olarak hazırlarsanız bir çok SCADA programında, hatta Power Point ve Excel içerisinde bile kullanabiliyorsunuz.

Şu an yine WinCC üzerinde çalışacak bir ActiveX geliştiriyorum. Beklenmedik şeyler çıksa da bir şekilde problemler aşılabiliyor. WinCC nin PLC ler ile haberleşme yeteneği var ama VB script desteği çok kötü. ActiveX ile bu sorun daha kolay aşılıyor.

WinCC için ActiveX yazarken dikkat edilmesi gereken şeyler:
- Dokümanda belirtildiği gibi, ActiveX nesnesinin özelliklerine (property) VB Script üzerinden ulaşamıyorsunuz. Ulaşmaya çalıştığınızda WinCC hata verip kapanıyor. Bu problemi aşmak için, WinCC içerisinde internal Tag tanımlayıp, ActiveX in özellikleri ile eşleştirme yapmak gerekiyor.
- Yukarıdaki yöntemi uygulayınca bir problem daha çıkıyor. WinCC Tag leri ile ActiveX propety leri eşleştirildiğinde bu eşleştirme tek yönlü çalışıyor. Yani WinCC den ActiveX e bilgi gönderebiliyorsunuz, ama ActiveX ten WinCC ye bilgi göndermek mümkün olmuyor.
- İlla ki ActiveX den WinCC ye bir kod / sayı göndereceğim derseniz, event kullanmanız gerekiyor. Ama WinCC nin bu konuda bir yetersizliği daha var. Event içerisinde gönderdiğiniz parametreleri dikkate almıyor. Bu nedenle, yukarıda CeyhanII nin verdiği linkte anlattığım yöntemi kullanmak işe yarıyor. Sayıları bu şekilde winCC ye bildirmek mümkün. Eğer string ifade iletmem gerekseydi kesinlikle ActiveX ile bir text dosyaya yazar, winCC de script ile o dosyayı sürekli okurdum.
- WinCC de ActiveX property ile bir Tag ilişkilendirildiğinde, WinCC bu Tag değerini sürekli ActiveX e yazıyor. Eğer ActiveX i yazarken bir özelliğin 'Property Let' bölümüne kod yazarsanız bu kod sürekli tetikleniyor. Tetiklenmemesi için, yeni gelen property bilgisinde değişiklik varsa kodu tetikleyecek bir değişiklik yapmanız lazım.
- ActiveX i WinCC üzerinde bir ekrana koyduysanız (screen), ActiveX sadece ekran görüntülenmekteyken çalışıyor. Başka bir ekrana geçiş yaptığınızda sizin ActiveX ler hafızadan siliniyor, tamamen yok ediliyor. Aynı ekrana geri döndüğünüzde sıfırdan yeniden yaratılıyorlar. Bu nedenle, eğer arka planda sürekli çalışması gereken işlemleriniz varsa bu ActiveX leri (Hepsini) Template içerisine yerleştirin. Görünmesini istemediğinizde Visibility değerini false yapın.
- Son bir bilgi daha; eğer ActiveX içerisinde bir Method (fonksiyon yazarsanız) içerisine 'Optional' parametre koymayın. yoksa projeyi derleyemiyorsunuz. Bu dediğim, VB6.0 ile yazılan ActiveX leri .Net uygulamalarından çağırmak için de geçerli. Optional parametre kullanmayın.
- Bu gün başıma gelen ilginç bir problem: SAX Comm ActiveX kullanarak veri toplayan bir ActiveX yazdım. Sistemdeki Com port sayısı 16 nın üzerinde olduğu için MsComm kullanamıyorum. Crack çözüm var ama kabul edilmiyor. Neyse, SAX Comm, onun etrafında SAX Comm u kullanan bir ActiveX daha var. WinCC üzerine bir tane koyduk problemsiz çalıştı. Sonra bir tane daha koyduk, ilk başta problemsiz gibiydi ama sonra fark ettik ki, her iki nesnenin farklı Comm portlardan okuduğu bilgiler aynı. Önce com port sürücülerinden şüphelendik onda problem yok. Sonra VB üzerinde iki farklı EXE üzerinden çağırdık problem yok. Tam WinCC ye çamur atmak üzereydik ki, bir de yazdığımız ActiveX i aynı VB formu üzerinde birden fazla kopya ile çalıştırmayı deneyelim dedik. Farklı Com portlardan aynı verileri almaya başladı.
ActiveX i 'single threaded' de yapsam, 'Apartment Threaded' de yapsam sonuç değişmedi.
WinCC üzerinde aynı ActiveX den 4 tane kullanmam gerekiyordu. Çözüm olarak aynı ActiveX i 4 farklı isimle derledim, VB üzerinde çalıştı önümüzdeki hafta WinCC ile deneyeceğim.
Bu da aklınızda olsun, eğer ActiveX üzerinde com port dan bilgi okuycak nesneleriniz varsa ve birden fazla ActiveX kullanacaksanız, önce gelen verilerin doğru yerden geldiğine emin olun.

Başka bir problem de çıkmadı, ActiveX kullanmak VBScript kullanmaktan daha verimli. Örneğin, ActiveX ile bir veritabanı bağlantısını açıp sürekli aynı bağlantı üzerinden SQL cümlesi çalıştırmanız mümkün. Ama VBScript ile her seferinde aynı veritabanı bağlantısını yeniden açmanız gerekiyor. Bu da performans kaybına neden oluyor.

- Hah, bir problem daha, yazdığım ActiveX üzerinde MSChart kullanmayı denedim, ActiveX im apartment threaded olarak ayarlıydı. MSChart 'Ben multithread uygulamalarda çalışamam' deyip hata verdi. Ben de 'yürü' deyip kullanmaktan vazgeçtim, grafiği normal picture box üzerinde çizdirdim. WinCC ile ilgili bir hata değil ama MSChart ile grafik de göstereyim derseniz çok mümkün değil gibi görünüyor.
 

Forum istatistikleri

Konular
130,124
Mesajlar
933,344
Kullanıcılar
453,198
Son üye
Emre0686

Yeni konular

Geri
Üst