Bir çok otomasyon projesinde S7 Plc ile haberleşme gereksinimi ortaya çıkar. S7 Mpi Haberleşme interface’i olarak kullanabileceğiniz. S7 Mpi 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 Mpi 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 Mpi haberleşme ile alakalı tüm işlemlerini bir kaç dakikada bitirebilirsiniz.










shape
S7 Mpi 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 / Data Block value
Boolean,Usigned int8,Signed int8,Usigned int16,Signed int16,Usigned int32,Signed int32
Floatpoint,Counter,Simatic Time,Time,Time Of Day,Date
Genel Açıklama: S7 Mpi ActiveX uygulamalarınıza kolaylıkla adapte edilebilir. Program kullanıcılarının S7 Mpi 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 mpi seri haberleşme olduğundan çok fazla data transferi uzun sürecektir.
Testlerimizde 1 sn'ye içerisinde seri adapter ile 1750 byte, Usb adapter ile 1350 byte uzunluğunda data okunmuştur.
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.

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 mpi 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. Mpi 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.

Mpi Network Menu: Ağaç görüntüsündeki bu menünün ilk öğesi Mpi 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.
Mpi Network: Pc port ayarları ve Mpi net. ayarlarını bu alanda görebilirsiniz. Bu alanda sağ click yaptığınızda işlem menüsü açılır. Mpi 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 mpi) 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 Input, Output, Marker ve Datablok 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, Counter, Simatic Time, Time, Time Of Day, Date. Bazı sayı tipleri için extra açıklama yapılmasına gerek duyuyoruz. Floatpoint(Siemens ismi Real) bu sayı tipi single olarakta isimlendirilir. Simatic Time(S5 Time) Bu zaman sayısı word boyutundadır. Ve tüm zamanlar ifade edilemez. Bu format içerisinde çarpan baz sayısı bulunur baz 0 = 10 ms, baz 1 = 100 ms, baz 2 = 1 sn, baz 3 = 10 sn, girilen zaman için mümkün en küçük baz değeri seçilir. Örneğin "0:1:41.5" olarak girdiğiniz zaman değeri activex tarafından otomatik olarak "0:1:42.0" olarak değiştirilir. Çünkü bu sayının ifadesinde baz 1 sn. olarak belirlenmiştir.Time değeri ise aslında toplam mili saniye değeridir. Bu sayıda sınır Dword olarak ifade edilebilen mili saniye değeridir. "0:0:0:0.0" ifadesinde ilk ifade edilen değer gün değeridir. Time of Day ise günün saati'dir. Bu tip de gün ifadesi kullanılamaz. Date tipi word olarak ifade edilen gün sayısıdır. Tarihin başlangıç değeri "1.1.1990" dır.
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ı 222 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 Mpi 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 Mpi 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 PcMpiAdress_() As UInt16 Pc Mpi Network adresini sorgulayıp değiştirebilirsiniz.
Property PcBaudrate_() As UInt32 Pc Baudrate değerini sorgulayıp değiştirebilirsiniz. Bu değer Mpi baudrate değerinden tamamen bağımsızdır. Bazı Adapterler yüksek hızlı bağlantıyı destekliyor.
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 PlcBaudrate_() As UInt32 Mpi Baudrate değerini sorgulayıp değiştirebilirsiniz.(19200 veya 187500 olabilir.)
Property StationAdress_() As UInt16 Plc Mpi 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 Mpi 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) 
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.
Mpi 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 Mpi ActiveX
English
Scada Software Data Logger Endüstriyel Otomasyon