Pompa Otomasyonu

Pompa & Massflowmeter otomasyon sistemi:
Bir çok üretim tesisinde pompa’lar ve flow metre’ler çeşitli üretim proseslerinin yerine getirilmesinde kullanılır. Bu makalemizde pompa otomasyon sistemini bir çok yönüyle anlatmaya çalışacağız. Anlattıklarımızı Shell derince tesisi için üretilmiş pompa otomasyon sistemi örneği üzerinden gerçekleştireceğiz.
Pompa otomasyon sistemleri üretim tesislerine göre farklılık gösterebilir. Bir çok fonksiyon benzer olmasına rağmen prosesin gereği olarak farklılıkların olması gayet doğaldır. Makalemizde anlatılan sistemi biraz değiştirip ihtiyacınız uygun hale getirmeniz gayet kolay olacaktır. Ayrıca bu makalede bir çok otomasyon sistem gereksinimleri de pompa otomasyonundan bağımsız olarak anlatılacaktır.
Bu otomasyon sisteminde WinTr Scada programı kullanılmıştır. WinTr’nin kullanılması tercih’den çok zorunluluktu. Zira ihtiyaçların karşılanma son derece güç işlemler ile mümkün olacaktı. Bu zor işlemler WinTr Visual basic scriptleri ile son derece kolay bir şekilde gerçekleştirilmiştir. Anlatımlarımız içersinde script kullanımları hakkında bir çok detaylı bilgiler bulabilirsiniz.
Örnek tesisimizde 36 adet pompa ile 24 adet massflowmetre üzerinden 57 adet tank’a mal aktarılmaktadır. Flow metre çıkışlarında ve tank girişlerin pnomatik kontrollü vanalar bulunmaktadır. Bu vanaların haricinde gerekli yönlendirmelerin yapılabilmesi için manuel kontrollü vanaların bulunduğu kolektörler vardır.
Genel Çalışma Prensibi:
Her dolum operasyonu batch olarak adlandırılır. Operatör batch başlangıcında pompa,flow metre ve tank seçimlerini yapıp batch’i başlatır. Batch malın alınması veya operatörün işlemi sonlandırması ile biter. Bazen batch sonlandırılmadan işlemin kısa süreliğine beklemeye alınması da gerekir. Tesiste sarı, kırmızı ve yeşil olmak üzere üç ana boru hattı vardır. Bunun haricinde bir çok da özel devre vardır. Dolum hatlarının kullanımı bazı parametrelere bağlıdır. Sistem de manuel vanalar bulunmasına rağmen otomasyon sistemi operatör’ün yapabileceği hataların önüne geçmek için batch işleminin başlangıcında kontroller yapar ve operatörü ikaz eder. Bu kontroller neticesinde bazı durumlarda operatör’e devam etme imkanı sunar bazı durumlarda ise kesinlikle devam edilmesine izin vermez.
Scada Sayfalarının Tanıtımı:
Ana Sayfa:
Aktif batch’ler bu sayfada görüntülenir. Aktif batch yok iken sayfa tamamen boştur. Operatörün batch’i başlatması ile batch bilgileri bu sayfada kullanılan dolum hattına göre ayrı ayrı gösterilir. Her batch için Set değeri, Aktüel değer, Debi ve proses bilgileri ayrı ayrı gösterilir.
Set değeri: Batch başlangıcında operatörün talep ettiği dolum miktarı.
Aktüel değer: Dolum esnasında alınan mal miktarı.
Debi: Pompa debisi.
Proses bilgileri: Dolumda kullanılan pompa, Flow meter ve tank isimleridir.
       Plc programında bu değerler her pompa için ayrı ayrı takip edilmektedir. Ancak bu sayfada screen refresh ile çalışan Anasayfa_Refresh script’i ile işlenir ve sadece aktif pompalardan dolum hatlarına göre süzülerek bu sayfada gösterimi sağlanır. Screen refresh fonksiyonu Ana sayfa özelliklerinden 1000 mili saniye olarak ayarlanmıştır. WinTr scada programında her sayfanın refresh süresini farklı ayarlayabilirsiniz.
Pompa izleme sayfaları:
Scada programında 36 pompa için iki ayrı sayfa hazırlanmıştır. Birinci gurup 1’den  18’e kadar olan pompalar, İkinci grup 19’dan 36’ya kadar olan pomplar içindir. Ana sayfada gösterilen bilgiler bu sayfada script kullanılmadan direkt olarak plc değerleri gösterilmiştir. Bu sayfada ek olarak kontrol butonları, massflowmetre vanaları ve tank giriş vanaları vardır.
Mass flow meter vanaları: Batch başlangıcında operatör pompa seçiminin ardından massflowmetre seçmiştir. Bu seçime bağlı olarak plc programında bu vana konumu tespit edilip scada ekranında durumu gösterilmiştir.
Tank giriş vanaları: Batch başlangıcında operatör pompa seçiminin ardından tank’ı da seçmiştir. Bu seçime bağlı olarak plc programında tank giriş vana konumu tespit edilip scada ekranında durumu gösterilmiştir.
Start Butonu: Batch başlatmak için kullanılan bu buton batch’in başlatılması ile enable fonksiyonunda bulunan Tag bağlantısı sayesinde tekrar basılması engellenmiştir. Batch’in bitirilmesi ile tekrar kullanılabilir hale gelecektir.
Reset Butonu: Her hangi bir arıza sebebi ile plc batch’i durdurabilir. Bu tür arızalar oluştuğunda kullanılabilir duruma gelen bu buton ile arıza silinir ve batch tekrar start alır.
Durdur Butonu: Batch çalıştırıldığında aktif olan bu buton ile operatör batch’i bir süreliğine durdura bilir. Durdurma işleminin ardından bu buton yerine Devam butonu görünür olacaktır. Devam butonuna basması ile proses tekrar kaldığı yerden çalışmaya devam edecektir.
Stop Butonu: Batch’in başlatılması ile aktif hale gelen bu buton batc’i sonlandırmak içindir. Bu butona basılması ile batch bitirilmiş olacak ve tekrar devam edilmesi ancak yeni bir batch girişi ile mümkün olacaktır.
Kontrol sistem algoritması:
Bu sayafada operatörün batch’i başlatmasının ardından öncelikle vanalar açılır ve açık sinyallerinin algılanması ile pompa start’alır. Pompa çalışıyor bilgisi plc tarafından ilk 5 saniye içersinde alınmalıdır. Alınmadığı taktirde pompa arıza sinyali üretilir ve batch durdurulur. Pompa’nın ve tekrar çalıştırılması için reset işlemi gereklidir. Pompa ve vana çalışıyor bilgileri ulaşsa dahi flow metre’den debi bilgisi 5 saniye içersinde okunamaz ise bu sefer akış yok sinyali üretilir ve pompa tekrar durdurulur. Batch startı ile birlikte olan bir diğer işlemde batch başlangıç bilgilerinin SQL Server’a kaydıdır. Start işlemi ile SQL Server’a yeni bir satır eklenir Bu satır henüz bitiş işlemleri yapılmamış açık bir satırdır. Stop işlemi ile bitiş işlemleri yapılıp satır kapatılır. Bu işlem Dolum başlatma sayfasında ayrıca anlatılacaktır.
Operatör Durdur butonu ile pompayı durdurup Devam butonu ile tekrar çalıştırabilir. Bu işlemler esnasında vana’lar açık olarak bekleyecektir. Zira flow metre vanaları açılır ve kapanırken titreşim’den dolayı flow metre’ler hatalı sayma işlemi yapacaklardır.
Batch’in bitirilmesi iki şekilde olabilir. Operatörün stop butonuna basması ve plc tarafından talep edilen değerin  alınması ile batch bitirilir. Her iki durumda da ilk önce pompa durdurulur 5 saniye sonra vanalar kapatılır. Vana’ların pompa ile birlikte kapanması durumunda pompalar kısa süreliğine koç darbesi olarak ifade edilen aşırı bacınca maruz kalacaktır. Bazı pompalar bu durumda boru hatlarını bile patlatabilir. Pompanın kapatılması ile tamamen durana kadar geçen süre içersinde mal akışı devam edecektir. Eğer batch tamamlandığında pompayı kapatırsak akışın devam etmesi ile fazla mal almış olacağız. Bu sorun pompa erken kapatma zamanı ile çözülmüştür. 36 pompanın her biri farklı özellikde’dir. Erken kapatma zamanı her pompa için ayrı ayrı girilebilmektedir. Pompa çalışırken hesaplanan debi ve erken kapatma zamanı çarpılarak ne kadar eksik mal alınması gerektiği plc tarafından hesaplanmakta ve hedef miktar hesaplanmaktadır. Hedef miktara ulaşılınca pompa kapatılmakta ve akışın devam etmesi ile istenilen miktar tamamlanmaktadır. Batch bitiş’i ile batch start’da açık bırakılmış SQL Server kaydı tamamlanarak kapatılmaktadır. Bu işlem için Alarm fonksiyonlarında çalışan P1_Batch_Son script’i kullanılmaktadır.
Dolum Başlatma Sayfası:
       Pompa kontrol sayfasında pompa start butonuna basılması ile açılan bu sayfada operatör gerekli seçimleri ve set değerlerini kontrol butonuna basmalı ve muhtemel hata’ları görmelidir. Bu hataların bir kısmında start işlemine devam etme izni verilirken bazılarında devam kesinlikle engellenir.
       Start butonuna bastığı pompa adı sayfanın başında operatöre’e gösterilmektedir. Sıradaki işlem massflowmeter seçimidir. Çalışmakta olan massflowmetre’ler pasif yapılmış ve kullanımı engellenmiştir. Operatör boştaki flowmetreler’den birini seçmelidir. Talep ettiği miktarı ve harman numarasının ardından malın alınacağı tank seçerek seçimi tamamlar. Tank isimleri farklı renkler kullanılarak gruplara ayrılmıştır. Renk kodları sayfanın alt bölümünde operatöre bildirir.
       Seçimlerin yapılmasının ardından kontrol butonuna basarak seçim’lerini test eder. Kontrol işlemi Batch_Kontrol script’i ile yapılır. Yapılan ilk kontrol Pompa ismi ile massflowmetre isminin karşılaştırılmasıdır. Tesiste pompa ve massflowmetre arasında manuel kontrollü vanaların bulunduğu kolektör mevcuttur. Bu kolektör ile pompalar farklı flowmetre’lere mal basabilmektedir. Ancak genelde her pompa aynı isimli flowmetre’ye bağlıdır. İsimlerin uyuşmadığında operatör ikaz edilir fakat devam etmesi engellenmez.
       Harman numarası ve talep miktarının girilmemiş olması ise ikaz edilir ve devam edilmesi engellenir.
Bu safhaların ardından mal alınacak tank seçimi ile ilgili kontroller başlar. Aynı tank’a aynı anda farklı pompalar ile mal alınabilir. Ancak seçime bağlı olarak operatör’e bu tank’a başka bir pompanın’da mal bastığı bildirilir ve devam etmesine izin verilir. Tank’lar la ilgili devam etme izni verilmeyen durum ise aynı dolum hattından sadece bir tank’a mal alınabilmesidir. Örneğin: Sarı devreden bir tank’a mal alınırken aynı devreden başka bir tank’a mal alınamaz. Böyle bir seçim yapmış operatör uyarılır ve devam etmesi engellenir.
       Tüm kontroller yapılıp ikazlar operatöre bildirildikten sonra devam etmesine engel bir durum yok ise start butonu aktif hale getirilir. Start butonuna basılması ile Batch_Start Script’i çalıştırılır. Bu script ile plc Batch_Start Tag’ı aktif edilirken batch başlangıç bilgileri’de SQL Server’a kaydedilir.
Pompa Çalışma Süreleri:
       Otomasyon sistemi pompaların çalışma süreleri ve toplam basılan mal miktarlarını sürekli toplamaktadır. Böylece pompaların periyodik bakımları arıza oluşmadan yapılabilmektedir. Bakım yapılan pompa sıfırlama butonu ile sıfırlanmaktadır. Sıfırlama butonu ancak yönetici şifresinin girilmesi ile aktif olacaktır.
Günlük İmalat Raporları:
       Operatör aynı anda bir çok farklı batch başlatır sistem otomatik olarak tüm batch’leri takip eder ve operatörü bilgilendirir. Operatör için en önemli sayfalardan bir bu sayfadır. Bu sayfada devam eden batch’leri ve tamamlanmış batch’leri ve hataları görüntüleyebilir. Görüntüleme işlemini tüm harman numaraları veya belli bir harman için yapabilir. Örneğin: 401 nolu tank’da yapacağı üretimde 7 çeşit katık alacağını varsayalım. Bu sayfada tamamını alıp almadığını, unuttuğu bir katık bulunup bulunmadığını kontrol edebilir. Katıkların doğru miktarda alınıp alınmadığını da kontrol edebilir.
       Bu rapor sayfasının daha gelişmiş hali hazırlanan web sayfaları ile izlenebilmektedir. Tesis yöneticileri ve diğer departmanlar Interrnet Explorer programları aracığı bu bilgilere ulaşabilmektedir. Böylece üretim planlaması çok daha hızlı yapılabilmektedir.
Batch Stop Script’i:
       Scada projesinde kullanılan tüm scriptleri paylaşmak scritplerin büyüklüğünden dolayı maalesef mümkün olmadı. Hiç değilse bir tanesini paylaşmak için P1_Batch_Stop script’ini seçtik. Zira bu script bir çok fonksiyonu barındırdığı gibi en küçük boyutta olanıdır.
‘Import komutları ile scriptlerde kullanılan komutların referansları aktif edilir.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Namespace WinTr        ‘Namespace WinTr scada’nı eriştiği program alanıdır.
Public Class MainClass
‘Tag connection manager bölümünde oluşturulan Tag’lar script içersinde kullanılabilmesi için Public olarak tanıtılır. Bu alanda bulunan tüm Public tag’lar mutlaka scada Tag’ları olmak zorundadır. Eğer scada Tag’ı olmayan Tag’lar kullanmak isterseniz Dim olarak tanımlamalısınız. Public Tag’ların tip’leri mutlaka Connection manager’daki tag tipleri ile aynı olmalıdır.
Public START_P1 as Boolean
Public ENABLE_P1 as Boolean
Public MFM_NO_P1 as Uint16
Public TANK_NO_P1 as Uint16
Public GECEN_MIK_P1 as Uint16
Public SET_P1 as Uint16
Public YRD_1 as string
Public YRD_19 as string
Public SAYFA_NO as Uint16
‘Load program parçacı script’in scada tarafından çağrılan program bölümüdür. Aynı script içersinde bir çok program bölümü oluşturabilirsiniz. Ancak load mutlaka bulunmalı ve diğer bölümleri buradan çağırmalısınız.
Public Sub Load
If START_P1 = True Then Exit Sub
‘Try komutu deneme operasyonudur. Try komutunun altındaki satırları dener ve hata’ya rastlar ise Catch ex As Exception bölümüne programı atlatır. Bu bölümde hata mesajı ve detayındaki bilgiler mesaj kutusu ile bildirilir. Hata olmadığı taktirde bu kısım çalıştırılmadan geçilir.
Try
       ‘Batch sonunun SQL Server’a kaydı için Database bağlantısı oluşturulur.
Dim SQL_cn As New SqlConnection()
SQL_cn.ConnectionString = _ “Server=(local)\WinTr;uid=sa;pwd=12341234;database=Sayac_Database”
               SQL_cn.Open()        ‘Oluşturulan başlantı aktif edilir.
       Dim SQL_Ins As String
       ‘Eğer SQL Server kurulumu bilgisayarınızın bölgesel ayarlarındaki tarih formatından farklı ise aşağıdaki üç satır aktif edilerek(üst virgül işareti kaldırılarak) bağlantının tarih formatı ayarlanır. Dmy parametresi Gün,Ay,Yıl demektir.
       ‘SQL_Ins = “SET DATEFORMAT dmy”
       ‘Dim SQL_DateTime As SqlCommand = New SqlCommand(SQL_Ins, SQL_cn)
       ‘SQL_DateTime.ExecuteNonQuery()
       ‘Aşağıdaki satırda bu pompaya ait henüz kapanışı yapılmamış son database kaydı’nın satır numarasını getirecek sorgu yazılmıştır. Bu sorgunun SQL Server’a gönderilmensin ardından kapanış işleminin yapılacağı satır numarası SQL Server tarafından Last_Value değişkenine yazılır. Açık satır bulunmaması durumundaprogram  hata bölgesine girecek ve batch bitiş kaydı yapılmayacaktır.
       SQL_Ins = “SELECT  max(LastValue) FROM Table1 WHERE [DateTime_Son] is Null and _ [Pompa_No] = ‘P113′”
       Dim Last_Value As String
               Dim SQL_cmdnon As SqlCommand = New SqlCommand(SQL_Ins, SQL_cn)
       Try
                       Last_Value = SQL_cmdnon.ExecuteScalar
       Catch ex As Exception
               Goto Son
       End Try
‘Satır numarası öğrenildikten sonra Update komutu ile batch başlangıcında boş bırakılan alınan miktar ve transfer bitiş zamanı SQL Server’a kaydedilir.
               SQL_Ins = “UPDATE Table1 SET [Transfer_Kg] = ‘” & GECEN_MIK_P1
               SQL_Ins &= “‘,[DateTime_Son] = ‘” & now
               SQL_Ins &= “‘  WHERE [Lastvalue] = ‘” & Last_Value & “‘”
               Dim SQL_cmdnon2 As SqlCommand = New SqlCommand(SQL_Ins, SQL_cn)
               SQL_cmdnon2.ExecuteNonQuery()
               SQL_cn.Close()
       Catch ex As Exception
               MessageBox.Show(Ex.ToString,Ex.Message)
       End Try
‘SQL Server’a kayıt yapılsada yapılmasada batch sonlandırılmalıdır. Aşağıdaki satırlarda Plc’de bulunan pompa değerleri sıfırlanır.
Son:        MFM_NO_P1 = 0
       TANK_NO_P1 = 0
       SET_P1 = 0
       ENABLE_P1 = True
       If SAYFA_NO = 1 Then
               YRD_1 = “YOK”
               YRD_19 = “YOK”
       End If
End Sub
End Class
End Namespace
Sonuç:
       Plc programları ve Scada programları High level program olarak adlandırılır. High Level ilk algılamada olduğu gibi ileri seviye programcılık demek değildir. Türkçeye çevirirken üst, yüksek yerine yüzeysel kelimesini kullanırsak daha doğru bir çeviri yapmış oluruz. En alt seviye programcılık Assembly’dır. C++,Vb gibi diller daha yukarıda, Scada ve plc programları ise daha da yukarıdadır.
       Scada programları ve plc programları her ne kadar çok gelişmiş olsa da, her zaman yeterli gelmeyecek ve programcıların daha alt seviye programlar bilme gereksinimini ortadan kaldırmayacaklardır. Örnek projemizde gördüğünüz gibi bir çok işlem V.B. script ile gerçekleştirilmiştir. Yanı sıra SQL Server sorguları kullanılmıştır. WinTr scada programı V.B. ve C# scriptleri olabildiğince açık olarak kullanımınıza sunmaktadır.
Günümüzde tüm otomasyon işleri olabildiğince üstün özelliklerde talep edilmektedir. Biz plc programcılarının işi her geçen gün zorlaşmaktadır. Yanı sıra gelir’ler de aynı oranda azalmaktadır. Böylesine zor bir sektörde çalıştığımız için yanlış meslek seçtiğimizi düşünebiliriz. Ancak düzgün çalışan bir sistemin kurucusu olmanın gururu tüm zorlukların üstesinden gelmeye yetecektir.
       Gelişmiş ülkelerde tüm plc programcıların bu scriptleri belli ölçüde yazabilecek düzeyde olmaları istenir. Bize düşen hiç vakit kaybetmeden Visual basic veya C Sharp öğrenmek olacaktır.
Scada ve S7-300 projesini indirmek için buraya tıklayınız.

Leave a Reply