Selam, Unified HMI tasarımlarında işimize yarayacak temel yapılar hakkında bilgilendirme yazılarıma bir tane daha ekliyorum. Her HMI uygulamasında kullanıcıyı bilgilendirmek gerektiği yerler olur. Örneğin operatör bir hatta üretimi başlatmak ister, ancak hat üretime başlamak için uygun değildir. Bu durumda PLC programının operatöre neden başlayamayacağını belirtir bir mesaj göndermesi gerekir. Bu amaçla ben PLC içinde hat programlarında mesaj numarası belirten değişkenlere değerler veririm. Bu değişkenlerin isimleri mesela L1_OP_MSG_NR veya L2_OP_MSG_NR gibi isimlerdir.
Daha sonra HMI programında bu değişkenlerin değerlerini takip eder, değişim olunca bu yeni değer sıfırdan farklıysa bir mesaj olduğuna hükmeder ve bir popup mesaj açarak operatöre o değere karşı gelen mesajı gösteririm. Önceki TP panellerde değişken değerleri Tag özelliklerindeki Events sekmesinde Value Change olayına bağladığım scriptler ile mesaj popup açılmasını sağlardım.
Ancak Unified panel yazılımında böyle bir olay tanımı yok.
Peki nasıl Tag değer değişimini algılayacağız? Mentorları bile öyle yaparsın , böyle yaparsın değişik yöntemler önermiş, tag değerinden alarm oluştur vs gibi. Ben burada kendi kullandığım tekniği anlatayım.
Dinamik Özellik Kullanarak Unified Panelde Tag Değişimini Yakalamak
Unified panelde herhangi bir nesnenin herhangi bir özelliğini dinamik olarak değiştirebiliyoruz. Bu dinamik özelliği bir script'e bağlayabiliriz. İşte o zaman HMI Tag değerlerinin değişimini bu script ile takip edebiliriz.
Örneğin açık olan sayfanın arkaplan rengini dinamik bir script yapalım. Ama hiç bir şey değiştirmeyen bir script.
Bu script ile operatöre mesaj gönderen tag'lerimizi takip edip , popup pencereyi otomatik açacağız. Ama önce deneme yapmak için biraz hazırlık yapalım. Öncelikle denem yapmak için 3 adet HMI Tag'i ekleyelim.
Aslında L1_OP_MSG_NR ve L2_OP_MSG_NR değişkenleri PLC Tag'i olacak. Ama deneme yapmak için onları da internal tag olarak tanımlayacağız ve ekrandan değerlerini kendimiz girip çalışmayı test edeceğiz. OP_MSG_NR ise açacağımız popup ekranda mesajları göstermek için kullanacağımız HMI Tag'i. PLC'den okuduğumuz mesaj numaralarından herhangi biri sıfırdan başka değer alırsa onun değerini bu tag'e aktarıp popup pencereyi açacağız. Bu 3 tag değerini göstermek veya değiştirmek amaçlı sayfamıza 3 adet IOField elemanı ve bilgi yazıları ekleyelim.
Popup açtığımızda pencerede OP_MSG_NR tag değerine göre değişen bir mesaj yazacak. Bunu bir Text list yardımıyla yapacağız. Proje ağacında HMI programının Text and graphic lists penceresini açalım ve yeni oluşturacağımız bir listede denemek için bazı mesajlar ekleyelim.
Sırada ayrı bir başlıkta incelemek gereken bir hazırlık var.
Unified Panelde Popup Açmak veya Kapatmak
Unified panellerde popup pencereler ayrı yöntemle tasarlanmaz, normal pencere olarak tasarlanır (screen), açılırken popup olarak açılır. Popup'larımızı ayrı bölümde saklamak için POPUPS adında yeni bir bölüm açıp onun altına eklesek daha düzenli olur.
Penceremizin boyutu 150x300 piksel gibi. Arkaplan rengi kırmızı olursa popup açılınca mesajlarımız daha dikkat çekici görünür. Popup ekrana mesajımızı göstermek için bir Text elemanı ekleyelim ve özelliklerini listemizden mesaj çekecek şekilde ayarlayalım.
Popup denemek için sayfamıza bir buton ekleyelim ve tıklanma olayında OpenScreenInPopup fonksiyonu ile popup penceresi olarak bir screen elemanı gösterebiliriz.
MSG_POPUP ismini biz kendimiz popup pencereyi açarken ona isim olarak verdik. Aynı ismi bu popup pencereyi kapatırken de kullanacağız unutmayın.
Şimdi amacımız bu pencereyi butonla değil ama tag değerlerini takip eden script içinden açacağız. Neden oraya buton koyup bu işlemi atadığımı birazdan anlatacağım. Önce pencereyi nasıl kapatacağımıza bakalım. Penceremiz açıldığında operatöre bir mesaj var demektir operatör bu mesajı görünce bir butona bassın (Tamam butonu) hem mesaj tag değerleri sıfırlansın hem de popup kapatılsın.
ClosePopup fonksiyonunu kullanırken popup adını niye başına bölü işareti ekleyerek yazıyoruz anlamadım ama öyle yazmak gerekiyor. Bildiğiniz gibi bu ismi biz popup pencereyi açarken vermiştik.
Dinamik Özellik Script'inde Tag Değişimi Takibi
Script'imize geri dönelim, dinamik özellik script'lerinde trigger özelliği ile o script'in ne zaman çalışacağını belirleriz.
Burada açılan seçeneklerden bir çoğu periyodik olarak script çalıştırmak için zaman değerleri.Ama biz Tags seçeneğini seçeceğiz. Bu seçenek ile listeye girdiğimiz tag değerleri takibe alınır ve birinin değerinde değişiklik olursa script çalıştırılır. Bu listede PLC'den okuduğumuz mesaj numaraları olan L1_OP_MSG_NR ve L2_OP_MSG_NR tag'lerini seçeriz.
Takip ettiğimiz tag'lerden hangisinde sıfırdan büyük bir değer varsa onun değerini OP_MSG_NR yerel tag'ine atıyoruz. Şimdi popup script içinde nasıl açılır? sorusuna gelelim.
Hatırlarsanız sayfaya bir buton koyup, tıklanmasında popup açma fonksiyonu kullanmıştık. O buton tıklama olayından faydalanacağız.
İşaretli buton ile tıklama olayının tamamını script'e dönüştürebilirsiniz. Bunu acaba bu işi scriptle nasıl yaparım diye merak ettiğiniz her yerde bir yardımcı gibi kullanabilirsiniz. Butona basalım.
Şimdi bu otomatik oluşturulan kodu kendi değer takip scriptimize ekleyerek mesaj numaralarından biri değişince ekranda otomatik olarak bir popup mesajı açabiliriz.
Artık deneyebiliriz, yukarıda Start simulation butonuna tıklayıp deneyelim.
Evet artık tag değer değişimlerini algılamanın bir yolunu bulduk. Ama bir sıkıntı var.
Ya HMI Uygulamamızda 50 Sayfa Varsa?
Başka bir sayfa gösterilirken aynı tagleri takip etmek için bu script'i o sayfaya da kopyalamak gerekecek. Kaç sayfa varsa o kadar kopya. İşin gıcık tarafı PLC programı ilerledikçe daha başka takip etmemiz gereken tagler de olacaktır. Her ilave edilen tag için scriptleri kopyalayıp durduğumuz sayfalar tek tek gidip onlardaki script'leri de düzenlemek gerekecek.
En azından script bir yerde olsa ve onu değiştirince tüm sayfalarda değişse iyi olur. Bu amaçla faceplate kullanmaya kalksak , faceplate içinden uygulama taglarini takipetmek ve popup açtırmak oldukça zor belki mümkün değil. Biz yine bir sayfa kullanalım ama bu sefer küçük bir sayfa olsun ve onu içine eklediğimiz her sayfa otomatik olarak tag takibine başlayacaktır. Hem sadece küçük sayfamızdaki kodu değiştirince değişiklik tüm sayfalarda çalışır.
Her ne kadar bir popup olmasa da POPUPS başlığı altına yeni bir minik sayfa ekleyelim.
30x100 boyutunda minik bir sayfacık. Bunu esas sayfalarımıza eklemek için ScreenWindow elemanı kullanacağız. Sayfamıza bir tane ekleyelim ve özelliklerinde Window settings özelliğinde tüm seçenekleri kapatarak sadece minik sayfamızın görünmesini sağlarız.
Şimdi çalıştırıp denersek, sağlıklı çalışmaya devam edecek , ama küçük elemanımız orada duruyor. Bunu da ScreenWindow elemanının visiblity özelliği ile görünmez yapabiliriz.
2. bir sayfa daha ekleyip aynı elemanı oraya da koyarsak tag takibi o sayfada da çalışır.
Tabi ki küçük sayfamızı bu yeni sayfaya da eklemezsek çalışmaz. Diyelim takip edilecek bir tane daha tag ekledik. Sadece küçük sayfamızdaki script'i değiştiririz ve onun konduğu her sayfada çalışır.
Umarım script'in aşağılarındaki else if bloğunu da kendiniz eklersiniz. Bir de popup Tamam butonu kodunda yeni eklenen tag sıfırlanmasını unutmayalım lütfen.
Bu kadar. Unified panellerde temel kurulması gereken yapılardan birini ben böyle kurdum. Umarım size de biraz yol gösterebilmişimdir. Sonraki yazılarda buluşmak ümidiyle , kalın sağlıcakla..






















Hiç yorum yok:
Yorum Gönder