Script Fonksiyon Çalıştırma
Script içerisinde alt fonksiyonların kullanımı:
Fonksiyonlar tag değerlerine bağlı olarak belli zamanlarda devreye sokulup belli zamanlarda devreden çıkartılabilir. Bazı fonksiyonlar değer döndürür bazıları ise çalışmadan önce bazı değerler alır. Tüm bu işlemleri açıklayacağımız örnek kodumuz aşağıdadır.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public Tag_1 AsUInt16
Public Tag_2 AsUInt16
Public Tag_3 AsUInt16
Public Tag_4 AsUInt16
Public Tag_5 AsUInt16
Public Sub Load
if Tag_1 = 1 Then Sub_1
if Tag_2 = 1 Then Sub_2
if Tag_3 = 1 Then Sub_3(Tag_3)
if Tag_4 = 1 Then Tag_5 = Fonksiyon_1(Tag_4)
End Sub
Sub Sub_1
Tag_1 = 0
End Sub
Sub Sub_2
Tag_2 = 0
End Sub
Sub Sub_3(Byval Value asUint16)
Tag_3 = Value + 1
End Sub
Function Fonksiyon_1(Byval Value asUint16)
Return Value + 1
End Function
End Class
End Namespace
Yukarıda kod’da “Public Sub Load” program bölümü içersinde alt programlar çağrılır. Tag_1 değişkenini 1 olduğunda Sub_1 alt programı çalıştırılır. Örneğin animasyon işleminde Tag_1 motor çalıştı sinyali olsun. Motor çalıştı sinyali geldiğinde animasyon için çalıştıracağımız alt program Sub_1 içersinde çalışacaktır. Motor durduğunda ise bu alt program çalışmayacaktır.
Sub_3 ise çalışmaya başlamadan önce değer yüklenmesi gereken bir alt programdır. Sub_3 oluşturulurken parantez içerisine “Byval Value as Uint16” ifadesi ile değer gerektirdiği belirtilmiştir. Parentez içersinde virgül ile ayırarak bir çok değer gereksinimi oluşturulabilir.
Fonksiyon_1 ise değer gereksiniminin yanı sıra fonksiyonun çağrıldığı yere değer döndürür. Return parametresi ile fonksiyon içersinde bulunan değer bu fonksiyonu çağıran Tag_5’e aktarılır. Fonksiyonlar script kodunuzu küçültmek ve tekrarlanan işlemleri daha hızlı yapmak için çok kullanışlı araçlardır. İç içe bir çok fonksiyon çağrılabilir.
Fonksiyon içersinden fonksiyon çağırma:
Function Fonksiyon_1(Byval Value as Uint16)
Return Value + 1
End Function
Yukarıdaki fonksiyonumuz kendisine bildirilen Value değişkenini bir artırır ve sonuç olarak döndürür. Bu fonksiyonu aşağıdaki gibi kullanırsak iki artırır.
Tag_5 = Fonksiyon_1(Fonksiyon_1(Tag_5))
Benzer şekilde bir çok fonksiyon iç içe çalıştırılabilir.
Boolean tipi bir tag’ın değerine bağlı olarak sayfa 2 yi açmak ve kapatmak istiyorum. Aşağıdaki kodları yazdım ama çalıştıramadım. Yardım rica ediyorum.
sayfa 2 sadece animasyon için çalıştırılıyor yani her tazelendiğinde bir tagın değeri değiştiriliyor.
yazdığım kod:
Public ScreenName As String
Public Bant_on_off As Boolean
Public Sub Load
if Bant_on_off = 1 then sub_1
if Bant_on_off = 0 then sub_2
End Sub
sub sub_1
ScreenName = “Screen_2”
end sub
sub sub_2
ScreenName = “Exit Screen”
end sub
Was this answer helpful?
LikeDislikeAcaba PLC den gelen bir tagın aldığı değere bağlı olarak bir script fonksiyonu çalıştırıp, iptal etme işlemini nasıl yapabilirim.
Script ile sayfa açma konusu farklı bir başlık altında anlatılmıştır. http://www.wintrscada.com/2013/03/script-ile-sayfa-acma/
Sizin yazdığınız koddaki yanlışlık boolean tipindeki tagların karşılaştırmasında 1 sayısal değerini kullanmanızdır. Oysa False veya True kullanmanız gerekirdi.
if Bant_on_off = True then sub_1
Ayrıca sub_1’i çağırıp işlemi orada yaptırmak yerine Load sub’ının içersinde direkt olarak’da yazabilirdiniz. İllede bir fonksiyon oluşturmanız gerekli değil.
Plc’den gelen değere göre çalışan fonksiyon ise iki şekilde yapılabilir. İlk olarak bu sayfada anlatıldığı gibi sürekli çalışan bir script yapıp bu script içerisinde tag’ın değerine bağlı olarak çalışacak alt program bölümleri(sublar) oluşturabiliriz.
Diğer bir method ise Alarm fonksiyonlarını kullanarak olabilir. Örneğin Tag_1 değeri 1 olduğunda ve 2 olduğunda iki ayrı alarm oluşturup. Bu alarmların geldiğinde ve gittiğinde çalışacak scriptler tanımlayabiliriz. Bu yöntemi kullanacaksak script içerisinde tag’ın durumunu karşılaştırmamıza gerek yok. Zira tag’ın değeri 1 olmadığında bu script zaten çalışmaz. alarmlarda tanımlı fonksiyonlar sadece bir defa çalışır. Tekrar çalışması için alarmın gitmesi veya gelmesi gerekir.
Was this answer helpful?
LikeDislike