Script ile Tag değerlerini okuma ve yazma
Script içerisinde Tag değerlerini okumak ve yazmak için ilk önce Tag tanıtımı yapılmalıdır.
“Public Sub Load” ifadesinin üst satırında “Public Tag_1 As Uint16” şeklinde tanımı yapılır. Daha sonra script içerisinde Tag_1 = 5 şeklinde kullanabiliriz. Çok sayıda Tag olduğunda ve bazı özel durumlarda Tag tanımı yapılmadan’da Tag değerlerine erişebiliriz. Örneğin: Script içerisinde Timer yapıp çalıştırdığımızda Timer fonksiyonu içersinde Tag_1 = 5 ifadesi neticesinde yeni değer scada’ya iletilemez. Ancak şimdi anlatacağım yöntem ile yaptığımızda Tag değeri değiştirilebilir.
Tag tanım alanına aşağıdaki ifadeyi ekleyelim.
Public RWTagValue As Object
Her hangi bir Tag değerine erişmek istediğimizde aşağıdaki kodu kullanabiliriz.
RWTagValue.Value(“Tag_1”)
Tag_1 yerine diğer tagların isimlerini yazarak aynı script’te hepsine erişebiliriz. Okuma ve yazma yapabiliriz. Asenkron scriptler’de bu komutlar kullanılamaz.
Alternatif bir yolda Tag dizilerini kullanmak olabilir. Bu amaçla kullanılan iki dizin mevcuttur.
Public TagNameTable() As String
Public TagValueTable() As String
ilk dizi tüm tagların ismini, ikinci dizi tüm Tag’ların değerini gösterir. Bu dizilerden sadece okuma yapabilirsiniz. Yazma işlemi yapılmaz. Bu diziler ile bir tagın değerine ulaşmak için o tag’ın bulunduğu index tespit edilmelidir. IndexOf komutu ile index bulunabilir. Tag adı hatalı olduğunda index değeri -1 olacaktır. Aşağıdaki kod bu dizilerin kullanımı için yeterlidir.
dim i as integer = Array.IndexOf(TagNameTable,”Tag_1″)
if i > -1 Then
MsgBox(TagValueTable(i))
End If
Sonuç: Script ile bir Tag’ın değerine erişebilmek için 3 yöntem anlatıldı. 1. Tag ismi ile variable direkt olarak oluşturulur. 2. RWTagValue fonksiyonu kullanılabilir. 3. Tag dizileri kullanılabilir. Bu yöntemlerin avantaj ve dezavantajları vardır. 1. yöntem her zaman daha hızlı çalışır. Cpu kullanımıda düşük olur. 2. Yöntem script içerinde kullanıldığı halde her zaman okuma yazma yapılmayacağı durumlarda avantajlıdır. Diğer bir avantajı ise çok sayıda tag kullanılan scriptlerin yazım kolaylığıdır. Yazım kolay olsada çalışması 1. yönteme gere daha fazla cpu gerektirecektir. Asenkron scriptlerde kullanılmaması da diğer bir dezavantajdır. 3. yöntem her ikisinden biraz diyebiliriz. Fakat en önemli dezavantajı sadece okunur olmasıdır.
C# kullanıcıları bu yazıyı mutlaka okumalı: http://www.wintr.com.tr/2015/01/c-ile-nesne-erisimi/
Was this answer helpful?
LikeDislikeTag değerini mssql den alınan veri ile değiştirmek istiyorum.
Mssql e veri girildiği zaman, taga o değer atanmalı. Nasıl yapabiliriz.
Erp programından değer girilecek ve veritabanına kaydolacak. WinTr bu değeri görecek ve taga yazacak.
Was this answer helpful?
LikeDislikeSorunuz bu konu ile ilgili değil. Soru göndermeden önce forumda arama yapınız. Sql serverdan veri almak için bu adresi ziyaret ediniz. http://www.wintr.com.tr/2014/10/script-ile-databaseden-veri-alma/
Was this answer helpful?
LikeDislike