S7 300 Timer, BI çıkışında okunan değer.

Katılım
6 Şub 2013
Mesajlar
12
Puanları
1
Arkadaşlar;
S7 300 zamanlayıcıların BI çıkış değeri nasıl görürüz?
Mesela TV değerimiz S5T#5S olsun BI çıkışı ilk alacağı değer nedir?
Aynı şekilde Tv değerimiz S5T#1M10S100MS olursa BI çıkışının alacağı ilk değer ne olur?
Teşekkürler.
 
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.
O değeri bir MW adresine atabilirsin. BI da gözüken kalan sürenin INT formatındaki halidir. Hexadecimal olarak gözükür. Burada
16#0... 10ms zaman tabanında
16#1... 100ms zaman tabanında
16#2... 1sn zaman tabanında
16#3... 10sn zaman tabanında olduğunu gösterir

Mesela S5T#1M10S100MS için BI'da 16#1701 görürsün başlangıçta. 701x100ms=70100ms = 70,1sn = 1dk10sn100ms.

Sen eğer buradaki değere göre bir işlem yapacaksan hex sayılarla uğraşmaktansa çıkıştaki değeri saniyeye çeviren bir program yapıp direkt onu kullanabilirsin bu mantığa göre...
 
A I 0.0
L W#16#2005(Yani S5T#5S tekabülü)
SS T1
A I0.1
R T1
L T1
T MW16(bu değer senin BI değerine yazdıgın değerdir)

ladderla falan yapamadığım için stl formatında T_ODTS timeri kullannıp yazmaya çalıştım...

L T1 : tam sayı değeri olarak AKU1'e yükler.yani 5 saniyeyse bunu sen nasıl izlersin? : "0000101"(ilk alacağı değer 1)
T MW16 : AKU1 içeriğinin MW16'ya yüklenmesi.yani bizim T1 tam sayı değerimizi MW16'ya kopyaladık

burda BI'ye yazacağınız değer L
BCD yazacagınız değer LC dir

Biz L kullandık."L" emrinde zaman değeri sağdan itibaren 10bitte binary formatta izleyebilrsin.ama zaman birimi yüklenmez.

S5T#1M10S100MS değeri için konuşursak ;
1M=60S
60S+10S=70S
YANİ 70S+100MS
bunları ya sn cinsinden yada ms cinsinden birleştirmen lazım.
sn cinsinden yaparsan 70s+0.1s olur bu da 70.1 sn...bu olmadı
ms cinsinden yaparsan 70000ms+100ms=70100ms oldu ama bunu 3 basamakla göstermemiz lazım.
o zaman 70100ms kaç yüzmilisaniyedir? 701 yüzmilisaniyedir
W#16#1701 yazdık.binler basamağındaki 1 sayısı 100ms ye tekabül eder.sanırım neden ms şeklinde yapamadıgımızı anlamış olduk
bu elde ettiğin sayıyı da binary sayı sistemine çevir.sağdaki ilk haneyi oku variable table.da(ama dediğim gibi en fazla 10 hane izleyebilrsin)
 
Cevaplarınız için teşekkürler. Aslında soruyu net soramamışım. Bir örnek ile anlamadığım kısmı göstereyim.
Bir motor 10 saniye çalışacak. Motorun hızı zamana bağlı olarak artacak. Yani yavaş yavaş hızlanıp zamanlayıcının sonunda maksimum hıza ulaşıp duracak. Bunun için FC106 Unscala fonksiyonu kullanılıyor. Zamanlıyıcını BI çıkışında alınan değer ile işlem yapıyor. Örnek aşağıdadır.
A M 40.2
L S5T#10S
SE T 2
L T 1
T MW 0

L 100
L MW 0
-I
T MW 2

L MW 2
ITD
T MD 4

L MD 4
DTR
T MD 8

CALL "UNSCALE"
IN :=MD8
HI_LIM :=1.000000e+002
LO_LIM :=0.000000e+000
BIPOLAR:=M60.0
RET_VAL:=MW50
OUT :=PQW256

L MW 2
L 100
>=I
S Q 0.0

Sorun şu; zamanlayıcıya S5T#10S değeri verilmiş. İkinci satırda BI değeri 100 den çıkartılıp çıkan sonuç FC106 IN olarak kullanılmış. Burada MW0 değerinin (10 saniye) yani SUB_I işleminde kullanılan BI'nin sayısının değeri kaçtır? (Eğer 10 ise SUN-I işleminde 100-10, 100-9, 100-8....100-0)(100 ise 100-100, 100-90......, 100-0)
İkinci soru eğer zamanlayıcı değeri 3sn 500ms olsaydı yani S5T#3S500MS olusaydı zamanlayıcının BI Çıkış değeri kaç olurdu?
 
bir variable table açıp MW2 (MW2 çünkü senin unscale komutunda MW0 değil MW2 kullanılmış) yaz.bunun type kısmına "bin" yazıp online monitoring/modify yaparsan canlı canlı görebilrsin.....ama anlamadığım burda M40.2 geldiği zaman senin timer'ın çalışmaya başlayacak.yani tam olarak BI değerini ne zaman görmek istiyorsun :) saymaya başladıktan sonra iş işten geçecek
100-10 ,100-9 , 100-8...diye saymaya başlayacak
100-MW0 =MW2


A M 40.2
L W#16#2010
SE T 2
L T 1
T MW 0

L 100
L MW 0
-I
T MW 2

L MW 2
ITD
T MD 4

L MD 4
DTR
T MD 8

CALL "UNSCALE"
IN :=MD8
HI_LIM :=1.000000e+002
LO_LIM :=0.000000e+000
BIPOLAR:=M60.0
RET_VAL:=MW50
OUT :=PQW256

L MW 2
L 100
>=I
S Q 0.0

Bir de bu şekilde dene...
ama variable table'da dediğim gibi yaparsan göreceksindir...

 
Son düzenleme:
Tamamdır. Simulatorde gözlemleyince anlayabildim. Teşekkürler.
 
peki neden böyle birşeye ihtiyaç duydun?anlatırmısın?
 
Plc programlama öğremeye başlayalı 4 ay oldu. Örnek programları incelerken karşıma çıktı. Netten ve daha önce indirdiğim dosyalardan bir cevap bulamadığım için burada sordum. Zaten böyle şeylere çok takıldığım için çok yavaş ilerleyebiliyorum.
 
sahalarda çalışmaya bak.daha çabuk öğrenirsin
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,879
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst