Text Dosyası içindeki verileri Wincc Scadaya Alma?

enderbaris

Üye
Katılım
4 Eki 2006
Mesajlar
6
Puanları
1
Yaş
39
Merhaba Arkadaşlar Pc mizde bulunan bir text dosyası içindeki verileri scadaya almak istiyorum. Yardımlarınızı bekliyorum....
 
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Çalışma alanına object paletten smart object > control öğesini ekle.Ardından çıkan pencereden "Microsoft Forms 2.0 TextBox" kontrolünü ekle.
Bunu ardından bir butonun Events kısmındaki left trigger bölümüne aşağıdaki kodu yapıştır.
Tabi belirtilen dizinde bir text dosyasıda mutlaka oluşturmalısın.Yoksa program hataya düşecektir.

İyi çalışmalar.

Dim metin
Set metin = ScreenItems("Control1") ' Control1 sende Control(x) de olabilir.Nesnenin özellikler kısmından bakabilirsin.

metin.MultiLine =True
metin.ScrollBars = 2

Dim fso, Path, MyZf, f

Path= "c:\asd.txt" 'buraya ilgili metin dosyasinin yolu girilecek


Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso_OpenTextFile(Path, 1, 0, -2)
Do While f.AtEndOfStream <> True

MyZf = f.ReadLine
metin.Text =metin.Text + MyZf & vbNewLine

Loop

f.Close
Set f = Nothing
Set fso = Nothing
 
tşk ederim
bir sorum daha olacak
bu txt dosyasının içindeki verileri bölge bölge taglara atamak istiyorum. yardımınızı bekliyorum
 
Bölge bölge kısmını biraz daha açar mısın?

Bölgeden kastın satır satır mı, kelime kelime mi yoksa özel bir işaret ile ayrılmış kısımlar mı?
 
ÖrneĞİn text dosyasinin İÇerİĞİ satir satir
basinÇ: 12.350
sicaklik: 15.560
akiŞ: 13.678
....

gİbİ verİlerden oluŞuyor.

ben bunlardan en Üsttekİ sayisal verİyİ tag1'e bİr alttakİnİ tag2'eye atmak İstİyorum .... bunu nasil yapabİlİrİm?
 
şu şekilde halledebilceğini düşünüyorum.zaman kısıtlı olduğu için deneme yapamadım.denedikten sonra bizi bilgilendiriseniz sevinirim.

Dikkat etmen gereken nokta metin dosyasindaki veriler şu şekilde olmaali.aksi halde hatalar alacaksın.

sicaklik:23
basinc:150
direnc:4700

bu notasyona mutlaka uymalısın.

düzeltme: Mid fonksiyonunu çıkartarak right fonksiyonunu koydum.bilgilerinize.

Dim metin
Dim tagler(5)
Set tagler(1) = HMIRuntime.Tags("tag1") ' tanimlanan taglerin isimleri
Set tagler(2) = HMIRuntime.Tags("tag2") 'tag1 yerine basinc tag2 yerine sicaklik vs..
Set tagler(3) = HMIRuntime.Tags("tag2")
Set tagler(4) = HMIRuntime.Tags("tag2")

Set metin = ScreenItems("Control3") ' Control1 sende Control(x) de olabilir.Nesnenin özellikler k?sm?ndan bakabilirsin.

metin.MultiLine =True
metin.ScrollBars = 2

Dim fso, Path, MyZf, f, aranan, uzunluk, veri, x2

Path= "c:\asd.txt" 'buraya ilgili metin dosyasinin yolu girilecek


Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso_OpenTextFile(Path, 1, 0, -2)

Do While f.AtEndOfStream <> True

MyZf = f.ReadLine
metin.Text =metin.Text + MyZf & vbNewLine
uzunluk=Len(MyZf)
aranan=InStr(1, MyZf , ":") 'satirin icindeki ":" isaretini buluyoruz
x2=uzunluk-aranan
veri=Right(MyZf,x2) ' ":" isaretinden sonraki degerleri buluyoruz
tagler(fso_OpenTextFile.Line)=veri 'hangi satir numarasindaysak o numarali tage degeri atiyoruz
tagler(fso_OpenTextFile.Line).write



Loop

f.Close
Set f = Nothing
Set fso = Nothing
 
Yardimlariniz tŞk ederİm denedİm ama taglara deĞerler gelmedİ. vermİŞ olduĞunuz formata uygun txt dosyasida var ama taglara verİler gelmedİ.
 
yarın uygun oldugum zamanda tekrar ilgilenecegim.
 
biraz daha uğraştım ve şu an program tam da istediğin gibi çalışıyor.
bir not düşeyim taglerini 32 bit signed olarak tanımlaman yararına olacak.tabi değişkenlerinin değeri 16 biti geçmiyorsa 16 bit olarak da tanımlayabilirsin.

4 I/O field koydum ve denememi yaptım sorunsuz çalıştı.tag sayın arttıkça programdaki dim tagler(5) satırındaki 5 değerini arttırmayı unutma.her tagini da hmi screen object olarak da belirtmelisin.
sorunların olursa tekrar yazabilirsin.

tekrardan programın önemli noktalarına bakarsak;

1. dim tagler(5) > tag sayısına bağlı olarak değiştirilecek

2.her bir tag Set tagler(1) = HMIRuntime.Tags("tag1") şeklinde tanımlanacak

3.Control nesnesinin ismine dikkat edilecek. "Control1" gibi > Set metin = ScreenItems("Control1")

4.Metin dosyasının dizini doğru bir şekilde girilecek. > Path= "c:\asd.txt"

5.Metin dosyasın içindeki değerler mutlaka deger:123 formatında girilecek.

Bu şartları sağlarsan program çok güzel çalışıyor :)



Düzeltme: Şu an farkettim ki virgüllü sayılarda sorun var, virgülden sonraki değeri 0 olarak görüyor.Uygun zamanda ilgileneceğim.Hayırlı çalışmalar.


Dim metin
Dim tagler(5)
Set tagler(1) = HMIRuntime.Tags("tag1") ' tanimlanan taglerin isimleri
Set tagler(2) = HMIRuntime.Tags("tag2") 'tag1 yerine basinc tag2 yerine sicaklik vs..
Set tagler(3) = HMIRuntime.Tags("tag3")
Set tagler(4) = HMIRuntime.Tags("tag4")

Set metin = ScreenItems("Control1") ' Control1 sende Control(x) de olabilir.Nesnenin özellikler k?sm?ndan bakabilirsin.

metin.MultiLine =True
metin.ScrollBars = 2

Dim fso, Path, MyZf, f, aranan, uzunluk, veri, x2, satir

Path= "c:\asd.txt" 'buraya ilgili metin dosyasinin yolu girilecek


Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso_OpenTextFile(Path, 1, 0, -2)
satir = 0

Do While f.AtEndOfStream <> True
satir=satir +1
MyZf = f.ReadLine
metin.Text =metin.Text + MyZf & vbNewLine
uzunluk=Len(MyZf)
aranan=InStr(1, MyZf , ":") 'satirin icindeki ":" isaretini buluyoruz
x2=uzunluk-aranan

veri=Right(MyZf,x2) ' ":" isaretinden sonraki degerleri buluyoruz
tagler(satir).value=veri 'hangi satir numarasindaysak o numarali tage degeri atiyoruz
tagler(satir).write


Loop

f.Close
Set f = Nothing
Set fso = Nothing
 
Merhaba Göndermiş olduğunuz scripti denedim çalışıyor ama benim şimdi 3 adet değişken alabilmem gerekiyor

real,word,string

birde real sayılarda sizin dediğiniz . nokta yerine sıfır atıyor onuda çözebilirsek iyi olur.

yardımlarınız teşekkür ederim..
 

Yeni mesajlar

Forum istatistikleri

Konular
128,179
Mesajlar
915,668
Kullanıcılar
449,944
Son üye
önder sem

Yeni konular

Geri
Üst