Çoklu kontrol işlemleri
Bazı otomasyon projelerinde benzer işlemlerin bir çok defa yapılması gerekebilir. Bu yazımızda bu tür işlemlerin nasıl yapılacağını anlatmaya çalışacağız. Örneğimizde 3 adet pompamız olsun. Her pompa için Oto-Manuel, Start, Stop butonları oluşturmak istemiyoruz. Tek Oto-Manuel, Start ve stop butonu ile tüm pompaları kontrol etmek istiyoruz. Ayrıca pompa detay bilgileri ekranda fazla yer tuttuğu için her pompa için bu detayları göstermek istemiyoruz. Yalnız seçtiğimiz pompanın detayını görmek istiyoruz.
Tüm yöntemlerde her pompa için Oto-Manuel,Start,Stop,Running ve Fault Tagleri oluşturmalıyız. Bu taglar münferit olabilir veya BitInTag fonksiyonu ile münferit bir Tag’ın bitleri olabilir. Örneğimizde tüm Tag’lar boolean(bit) ölçüsünde olması yeterlidir. Biz her sinyal için bir tag oluşturabiliriz. Veya 16bit’lik bir tag oluşturup BitInTag fonksiyonu ile bu tag’ın bitlerinden internal Taglar oluşturabiliriz. Internal taglar ücretsiz ve limitsizdir.
Yukarıdaki resimde oluşturduğumuz tag tablosunu görebilirsiniz. Kırmızı bölge münferit tag’dan Bit in tag ile elde ettiğimiz internal taglardır. Mavi bölge pompa seçimine bağlı olarak sinyallerin izleneceği ve kontrol edileceği yardımcı taglerdir. Yeşil bölge ise plc ile haberleşecek olan ve her biri bir pompanın tüm sinyallerini barındıran asıl taglarımızdır. Scada sayfasında sinyallerin görsel takibi ve kontrolleri Mavi bölgedeki Taglar ile yapılacaktır. Yukarıda anlatıldığı gibi pompa seçimine bağlı olarak bu (Mavi) Taglar pompanın durum bilgilerini bize gösterecektir. Yapmak istediğimiz scada sayfası aşağıdadır.
Resimde görüldüğü gibi pompa seçimine bağlı olarak detaylar yeşil alanda gösterilecek ve kontrol edilecektir. Bu alandaki nesneleri ayrı bir sayfa içerisine kopyalayıp popup screen olarak da kullanabilirsiniz.
ilk önce Pump_Name tagı’ına seçili olan pompayı yazmak olmalıdır. Bu işlem örneğimizde pompa sembolüne tıklanarak yapılır. Scada sayfasındaki pompa sembolüne tıklayıp, Mouse down fonksiyonunu açınız ve Cons. to tag bölümünden Pump_Name isimli Tag’a “P1” değerini atayın. Aynı işlemi diğer pompalarda P2 ve P3 şeklinde yapınız. Scada sistemi seçili pompanın hangisi olduğunu bilmektedir.
Pompa seçiminden sonra aşağıdaki script ile pompa sinyallerini yeşil alanda gösterebiliriz.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public Auto,Start,Stop_,Running,Fault As Boolean
Public Pump_Name As String
Public RWTagValue As Object
Public Sub Load
Auto = RWTagValue.Value(“Auto_” & Pump_Name)
Start = RWTagValue.Value(“Start_” & Pump_Name)
Stop_ = RWTagValue.Value(“Stop_” & Pump_Name)
Running = RWTagValue.Value(“Running_” & Pump_Name)
Fault = RWTagValue.Value(“Fault_” & Pump_Name)
End Sub
End Class
End Namespace
Bu script’i sayfanın refresh özelliğinde çalıştırabiliriz. Set değerlerinin yazımı için ise aşağıdaki script kullanılabilir.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public Start As Boolean
Public Pump_Name As String
Public RWTagValue As Object
Public Sub Load
RWTagValue.Value(“Start_” & Pump_Name)= Start
RWTagValue.Value(“Running_” & Pump_Name)= Start
End Sub
End Class
End Namespace
Start sinyalinin pompaya iletilmesi için yukarıdaki script’i hazırladık. Bu script’in can alıcı noktası aşağıdaki satırdır.
RWTagValue.Value(“Start_” & Pump_Name)= Start
Bu satırda RWTagValue.Value fonksiyonu ile seçime bağlı pompaya start sinyali gönderilir. Value parantezi içerisine tag’ın adı yazılmalıdır. Biz “Start_” string’inin sabit olarak kullandık. Pump_Name Tag’ı içersinde ise “P1” şeklinde pompa ismi yazılıdır. Bu ikisini birleştirdiğimizde Start_ + P1 = Start_P1 şeklinde seçili pompanın start tag’ının ismini buluruz. Bu tag’a da start değerini göndeririz.
Bu işlem size karışık geldi ise aşağıdaki script’i’de kullanabilirsiniz.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public Start_P1 As Boolean
Public Start_P2 As Boolean
Public Start_P3 As Boolean
Public Pump_Name As String
Public Start As Boolean
Public Sub Load
Select Case Pump_Name
Case “P1”
Start_P1 = Start
Case “P2”
Start_P2 = Start
Case “P3”
Start_P3 = Start
End Select
End Sub
End Class
End Namespace
Her iki script arasında önemli bir fark vardır. İlk script’de her pompa için yapılması gereken bir işlem yoktur. İkincisinde ise her pompa için Tagler ve bazı kodlar eklenmelidir. Dolayısıyla ilk script’i anlamaya çalışmak daha doğru olacaktır.
Örnek projemizde kalıbı oluşturduktan sonra her pompa için yapılması gereken işlemler şunlardır.
1. Plc’den pompa için 16 bitlik Tag’ın oluşturulması.
2. Bu 16 bitlik tag’ın bitlerinden sinyalleri oluşturmak.
3. Scada sayfasına pompa sembolünü eklemek ve sembole tıklandığında pompa ismini Pump_Name Tag’ına aktarmak.
Sonuç:
Buradaki yapıyı anlayıp kendi çözümünüzü üretmelisiniz. Örneğin daha hızlı işlem yapmak için bit in tag’lar kullanılmayabilir. Daha doğrusu kullanılır da farklı bir noktada kullanılır. Bu şekilde çok daha hızlı işlem yapabilirsiniz. Bunu da farklı bir proje olarak aşağıdan indirebilirsiniz. İkinci projede yazılan kod azaltılmıştır fakat anlamanız biraz daha güç olabilir. Anladıktan sonra ne kadar basit olduğunu göreceksiniz. Running ve Fault sinyalleri plc’den gelemesi gerekirken biz ilk projede simüle ettik. İkinci projede ise running devre dışı bırakılmıştır.
Son Yorumlar