Bir çok otomasyon projesinde S7 Plc ile haberleşme gereksinimi ortaya çıkar. S7 Ppi Haberleşme interface’i olarak kullanabileceğiniz. S7 Ppi ActiveX esnek yapısı ile projelerinizde kullanabilirsiniz. Lisans sahipleri bu activeX'i her hangi bir sınır olmaksızın kullanabilirler. Lisans alıcaklar için ücretli veya ücretsiz activeX kodunda değişiklik yapılabilir. S7 Ppi ActiveX .Net frame work 3.5 kullanılmıştır.
ActiveX kullanıcılarının programlarına kolaylıkla ekleyebilmeleri ve programın muhtemel diğer ihtiyaçlarının kolaylıkla karşılanabilmesi düşünülerek hazırlanmıştır. Bu amaçla sıradan ActiveX'lerde olmayan proje kayıt,kayıt getirme fonksiyonları dahi ActiveX'e eklenmiştir. Böylece projenizin Ppi haberleşme ile alakalı tüm işlemlerini bir kaç dakikada bitirebilirsiniz.









FULTEK MODBUS RTU SERVER

shape
S7 Ppi Vb 2005-2008 Example Project.
Lisans Fiyatı: 100 Usd.
M x.x - Mb x - Mw x - Md x / I x.x - Ib x - Iw x - Id x / Q x.x - Qb x - Qw x - Qd x / V x.x - Vb x -
Vw x - Vd x / S x.x - Sb x - Sw x - Sd x / Sm x.x - Smb x - Smw x - Smd x / AQw x / AIw x / T / C
Boolean,Usigned int8,Signed int8,Usigned int16,Signed int16,Usigned int32,Signed int32
Floatpoint, Bcd.
Genel Açıklama: S7 Ppi ActiveX uygulamalarınıza kolaylıkla adapte edilebilir. Program kullanıcılarının S7 Ppi haberleşme ile alakalı ihtiyaç duyabilecekleri tüm ayarlar activex üzerinden yapılabilir. Bu ayarlar tercihinize göre sizin programınızdan da yapabilirsiniz. Activex ayarlarından bu fonksiyonları devre dışı bırakabilirsiniz. Daha fazla bilgi edinmek için Vb2005 ve Vb 2008 için hazırladığımız örneği inceleyiniz.
ActiveX .net framework 3.5 kullanılarak hazırlanmıştır. Program demosu 10 dakika çalışacak şekilde yapılmıştır.
ActiveX Tag sayısı ile ilgili bir kısıtlama yoktur. Fakat ppi seri haberleşme olduğundan çok fazla data transferi uzun sürecektir.
Testlerimizde 1 sn'ye içerisinde seri adapter ile 352 byte uzunluğunda data okunmuştur. S7 Adapter olarak standart Rs485 konvertör kullanabilirsiniz.
S7 Adapter olarak Seri port bazlı Usb adapterler kullanabilirsiniz. Bu tür adapterler için kullanılan PLC Vcom yazılımı minimum ver.2.68 olmalıdır. Siemens seri adapter free protokol seçilmelidir.

Activex'i 4 ana grupdan oluşur.
ToolStrip: File menü butonları ve connect,disconnect butonlarının bulunduğu bu buton grubu tercihiniz doğrultusunda görünür veya gizli olabilir. Butonların fonksiyonlarını uygulamanız içerisinde activex property'lerini kullanarak da yapabilirsiniz.
File Menu: Activex üzerindeki tüm bilgileri silmeye,yüklemeye ve kaydetmeyi sağlayan butonların bulunduğu menü'dür.
New(Yeni),Open(Aç),Save(Kaydet),SaveAs(Farklı kaydet) butonları bulunur.
Connect Menu: Connect ve Disconnect butonlarının bulunduğu menüdür.

StatusStrip: ActiveX alt bölümünde yer alan bilgi grubudur. Bu grup içerisindeki ilk bilgi Tag sayısıdır. Daha sonra "Good" hatasız olarak yapılan haberleşme sayısıdır. "Bad" başarısız olan haberleşme sayısıdır.
Query Byte Count: Bu bölümdeki en önemli bilgidir. Girilen değişken adres bilgilerine göre activex otomatik olarak ppi sorgusunu hesaplar ve plc'ye gönderir. Hesaplanan sorgu neticesinde plc'nin göndermesi gereken byte sayısını burada görebilirsiniz. Bu sayı ne kadar büyük olursa paket sayısıda o kadar az olacaktır. ppi protokolünde paket büyüklüğünden ziyade paket sayısı daha önemlidir. Performansı artırmak için paket sayısını düşük tutmak gereklidir.

Ppi Network Menu: Ağaç görüntüsündeki bu menünün ilk öğesi Ppi Network öğesidir. Ağaç görüntüsünde ikinci öğe istasyon son öğe ise grup'dur. Her öğe seçildiğinde sağ taraftaki tag listesi o ögenin tagları ile doldurulur.
Ppi Network: Pc port ayarları ve Ppi net. ayarlarını bu alanda görebilirsiniz. Bu alanda sağ click yaptığınızda işlem menüsü açılır. Ppi network ayarlarında en önemli parametre pool.interval parametresidir. Bu parametre ile plc'ye gönderilen sorguların periyotunu ayarlayabilirsiniz. Plc'ye bilgi yazılacağı zaman bu verinin bir önemi yoktur. Yazma komutu alındığında bekleme yapılmaksızın plc'ye bu bilgi transfer edilir.
Station: Bu alanda istasyon (Plc Ppi) adresi girilmelidir.
Group: ActiveX'in en önemli olaylarındandır. Tüm seri haberleşme yöntemleri sınırlı kapasiteye sahiptir. Bu kapasiteyi en iyi şekilde kullanmak için farklı gruplar oluşturulabilir. Grubun "cycle" paremetresi ile bazı grupları her saykılda bazı grupları ise daha seyrek olarak okuyabilirsiniz. Böylece plc değerlerinin bir kısmını hızlı bir kısmını daha yavaş okuyabilirsiniz. Uygulanabilir grup sayısı 128 tanedir. Grupların bir diğer faydasıda daha sonraki bölümde geniş olarak anlatılacak olan sorgu byte sayısını ayarlamaya yardımcı olmasıdır. Ayrıca çok fazla veri iletişimi olduğunda verilerin izlenmesinde kolaylık sağlar.

Tag List: Tagların oluşturulduğu,değerlerinin izlendiği ve yeni değerlerin yazıldığı tablodur. Bu tablo üzerinde işlem yapılabilmesi için sol tarafta grup seçili olmak zorundadır. Grup seçili değil ise yapılabilecek tek işlem set değeri yazmaktır. Grup seçildiğinde bu listede sadece bu grupta bulunan taglar gözükür. istasyon veya network seçildiğinde ise seçili öğeye ilişkin tüm taglar listelenir.
Adress: Tag'ın plc içerisindeki adresini bu sütuna yazmalısınız. Activex ile I, Q, M, V, S, SM, T, C, AI, AQ değişkenlerini okuyup yazabilirsiniz. Adres bilgisi ayrıca data boyunuda belirler. Örneğin M 0.0 bir bit uzunluğunda bir datadır. Md 8 ise 4 byte uzunluğunda bir datadır. Bu alanda yazdığınız adrese göre uygulanabilir value tipleri belirlenir.
Tag Name: Her yeni tag eklendiğinde sistem otomatik olarak tag listesinde bulunmayan yeni bir isim verir daha sonra bu ismi siz belirleyebilirsiniz. Tüm Tag isimleri bir birinden farklı olmak zorundadır.
Value Type: Siemens S7 Plc'lerin data tipleri bu sütunda seçilir. Buradaki tüm seçenekler S7 formatında plc'ye aktarılır ve plc'den okunur. Gösterim ise Windows standartında yapılır. Gösterilen sayı tipleri :Boolean, Usigned int8, Signed int8, Usigned int16, Signed int16, Usigned int32, Signed int32, Floatpoint, Bcd.
Read Value: Plc'den okunan değerler bu sütunda gösterilir.
Write Value: Bu sütuna yazdığınız değer ilk olarak hatalı olmadığı test edilir ve hatalı değil ise plc'ye gönderilir. Plc'ye bilgi giriş işlemleri önceliklidir. Diğer işlemlerin sırası beklenmeden aktif sorgu biter bitmez yazma işlemi aktif edilir.

En iyi performans'ı elde etmek için dikkat edilmesi gereken hususlar: ActiveX aynı grup içerisindeki tüm tagları tek seferde
okumaya çalışır. Tag listesine girdiğiniz adres bilgisine göre gönderilecek sorguyu hesaplar. Eğer girilen adresler birbirlerini takip eden adresler ise tüm listeyi tek seferde okumayı gerçekleştirir. Tek seferde okunacak byte sayısı 32 ile sınırlıdır. ActiveX hesapladığı sorgu boyunu Statusstrip'de bulunan "Query byte count" ile bildirir. Hesapladığınız sorgu boyundan farklı bir sayı görüyorsanız, muhtemelen bir hata yaptınız demektir.
Konuyu bir kaç örnekle açıklayalım. Aşağıda bazı sorgu örnekleri ve toplam byte uzunlukları verilmiştir.


FULTEK MODBUS RTU SERVER

shape
S7 Ppi ActiveX kullanım kılavuzu
Mb 0
Mw 0
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Qw 10

Query byte count:
1.sorgu: 1 byte
2.sorgu: 4 byte
3.sorgu: 6 byte
4.sorgu: 2 byte
Mb 0
Mw 1
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.sorgu: 13 byte
Mb 0
Mw 0
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.sorgu: 1 byte
2.sorgu: 12 byte
Mb 0
Mw 0
Mw 3
Md 6
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.sorgu: 1 byte
2.sorgu: 4 byte
3.sorgu: 4 byte
4.sorgu: 4 byte
S7 Ppi ActiveX Propert:
Public AutoStart_ As Boolean False kapalı True açık demektir. Plc'nin kapalı olduğunda veya başka sebeplerden dolayı plc bağlantısı sağlanamadığında haberleşme başlatılamayacaktır. Bu seçenek True olarak seçildiğinde activex sürekli bağlanmayı deneyecektir. Böylece plc hazır olduğunda haberleşme başlayacaktır.
Property Value_(ByVal TagId As UInt32) As String Set değeri yazmak veya aktuel değeri okumak için kullanabilirsiniz. TagId Tag listesindeki satır numarasıdır.
Public FileName_ As String Aktif olan dosya adını bu variable'dan okuyabilirsiniz.
Property LoadSettings_() As String Dosya yolunu bu propertye verdiğinizde otomatik olarak dosyayı açar. Bu property'nin dönen değeri dosya yoludur.
Public Sub SaveSettings_(ByVal value As String) Mevcut bilgileri vereceğiniz dosya adıyla kaydeder. Dosya adı dosya yolunuda içermelidir.
Property Connect_() As Boolean Bu property'i True yaptığınızda plc'ye bağlanır False yaptığınızda bağlantıyı keser. Bağlantı durumunuda bu property'den sorgulayabilirsiniz. Plc'ye bağlanmayı denediği durumlarda da True olarak sonuç bildirecektir. Gerçek durum aşağıdaki variable'dan alabilirsiniz.
Public Connection_ As Boolean Bağlantı durumunu bu variable'dan okuyabilirsiniz. Bağlantı sağlandıktan sonra True olacaktır.
Property PcPpiAdress_() As UInt16 Pc Ppi Network adresini sorgulayıp değiştirebilirsiniz.
Property PcBaudrate_() As UInt32 Pc Baudrate değerini sorgulayıp değiştirebilirsiniz.
Property ComPort_() As String Pc Seri port adını sorgulayıp değiştirebilirsiniz.
Property PollInterval_() As UInt16 Poll.Interval değerini sorgulayıp değiştirebilirsiniz.
Property StationAdress_(ByVal StationName As String) As UInt16 Plc Ppi adresini sorgulayıp değiştirebilirsiniz.
Function TagList_() Bu fonksiyon çalıştırıldığında tag listesinin tamamını Array olarak döndürür.
Function TagListErr_() Bu fonksiyon tag listesinde hatalı değer varsa False yoksa True sonucunu döndürür.
Public Sub NotAvailableTagName(ByVal TagName As Array) Projenizde birden çok Ppi ActiveX kullandığınızda veya bu activeX haricinde taglarınız bulunduğunda mevcut tag listesini bu fonksiyon ile activex'e yazabilirsiniz. Böylece activex içerisindeki tag'ların adını kontrol ederken bu listeyi de kontrol eder. Böylece tag adının benzersiz olması hem bu listede hemde diğer taglarınızda kontrol edilmiş olur.
Property GroupCycle_(ByVal GroupName As String) As UInt16 Adı girilen grubun saykıl değerini döndürür veya değiştirir.
Property FileMenu_() As Boolean File menü butonlarının görünür görünmez durumları ayarlanır veya öğrenilir.
Property ConnectButton_() As Boolean Connect ve Disconnect butonlarının görünür görünmez durumları ayarlanır veya öğrenilir.
Property ToolStrip_() As Boolean ToolStrip görünür görünmez durumları ayarlanır veya öğrenilir.
Property StatusStrip_() As Boolean StatusStrip görünür görünmez durumları ayarlanır veya öğrenilir.
Property TreeviewMenu_() As Boolean Mpi Network ağaç görüntüsünde mouse sağ click ile açılan menüleri yasaklar veya izin verir.
Property DataGridMenu_() As Boolean Tag listesinde mouse sağ click ile açılan menüleri yasaklar veya izin verir.

Event:
Event MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Event Connected_(ByVal sender As Object, ByVal Status As Boolean) Bağlantı sağlandığında ve bağlantı kesildiğinde interrupt olarak ana programa durum bilgisi iletir.
Event ReadValue_(ByVal sender As Object, ByVal TagId As UInt32, ByVal Value As String) 
Plc'den okuma gerçekleştiğinde okunan değer önceki değerden farklı ise bu interrupt ana programa Tag listesindeki sıra numarası ile birlikte Tag değerini gönderir. Haberleşme ilk başlatıldığında tüm tag değerleri bir kez gönderilir.
Event ReadErr_(ByVal sender As Object, ByVal TagId As UInt32) 
Plc'den yapılan okuma işlemlerinde oluşan hatalar tag listesindeki satır numarası ile ana programa bildirilir.
Event SetErr_(ByVal sender As Object, ByVal TagId As UInt32) 
Set değerleri uygun olmadığı veya plc'ye yazılamadığı durumlarda hata tag listesindeki satır numarası ile ana programa bildirilir.
Event TimeOut_(ByVal sender As Object, ByVal StationName As String)
Plc ile bağlantı sağlanamadığı durumda timeout olan activex durumu ana programa bildirir.
Event GenericErr_(ByVal sender As Object, ByVal Message As String) 
Bir çok hata durumu bu interrupt ile ana programa bildirilir. Bu interrup hata mesajınıda içerir.
Ppi Library
S7 Activex
Siemens ActiveX
Plc ActiveX
S7 Mpi ActiveX
S7Mpi Activex
Mpi ActiveX
S7 Ppi ActiveX
S7Ppi ActiveX
Ppi ActiveX
Plc .Net
Plc Vb.
Plc VisualBasic
Plc Visual Basic
S7 .net
S7 Vb.
S7 Visualbasic
S7 Visual Basic
Sps Activex
S7 Ppi ActiveX
English