s7300 rpm

warlikeas

Üye
Katılım
24 Tem 2007
Mesajlar
16
Puanları
1
Yaş
39
selam arkadaslar, s7300 de dijital girişten aldığım pals yardımıyla devir okuyabilirmiyim.. diyelimki bi turda 10 pals saydı ve ekrana 1 rpm yazması lazım
 
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.
Örneğin 1 dakikalık interval kullan.Bu süre içerisinde 1 kere pulse geliyorsa bunu scalanda alt değer olarak tanımla.500 ms de 1 pulsin geldiğini düşünürsek.1 dakika içinde 120 defa pulse geliyor demektir.Bu da senin üst scalan olsun.Buna göre programını yap.Yaptığın programı OB30-38 bloklarında çağırki değişken scan cycle time dan etkilenmesin.

Ya da kullanacağın pulse i direk PLC ye girme.Herhangibir frekans konvertörünü (IFM, pepperl-fuchs gibi..) kullanarak 4-20 ma dönüştürdükten sonra plc ye girerek scalandırabilirsin.
 
OB30-38 kesme OB lerinde programı yaparsanız bu OB ler ayarlanan zamanda OB1 e kesme atacak ve 1 periyot çalışacak. Eğer pals bu kesme den sonra geldiği anda ve daha frekansı daha fazla ise pulsu kaçırabilir. S7-300 lerin hızlı sayıcı modülleri mevcuttur. Pahalı bir çözüm olmasına rağmen çok hassas ise kulanılabilir.
Sayılası istenen Pulsun frekansını tespit etmek gerekir. Eğer frekans çok düşük ise normal input olarak ölçülebilir. Zaten CPU nun OB1 cycle çok yükseğe çıktığı takdirde CPU stop a gider. Eğer sırf bu sayıcı için PLC düşünüyorsanız S7-200 daha mantıklı kendi üzerindeki inputları hızlı sayıcı için kulanılabilir. Ben boru etkalınlığı ölçümü için dakikada 27000 pulse ölçüm almıştım.
 
OB30-38 in OB1 e attığı kesme konusunda biraz bilgi verebilir misiniz.
 
OB30-OB38 arası olan bloklar Cyclic Interrupt bloklardır. Bu bloklar hardware CPU özelliklerinden ayarlanan zaman periyotlarında ve verilen öncelik sırasına göre OB1 e kesme atarak kendi içinde yazılan kodları çalıştırarak çıkış verirler. Çalışma sonucunda OB1 e nerede kesme attıysa bu zaman kesmeli blogun bitiminde OB1 kaldığı yerden devam eder. Cpu çeşidine göre bu blokların sayısı değişebilir. 1ms ile 60000ms arası periyotlarla kesme atmak üzere ayarlanabilir. Bu süre küçük olursa OB1 i çok sık kesecek ve OB1 in çalışma süresini uzatacaktır. Priority yani öncelik sırası ise OB nin çalışma önceliğini verir. Örnek olarak verirsek trafikteki geçiş üstünlüğü gibi öncelik sırası en yüksek olan en öncelikli blokdur. OB1 in öncelik sırası 1 dir. Diğer bütün OB ler bu bloğu kesme atarak çalışmasını durdurabilir. Offset değeri se bu bloğun zamanı geldiğinde o blokdan öncelikli bir blok çalışıyorsa bu bloğu bitmesini beleme zamanı olarak açıklanabilir. Bu bloklar benim gördüğüm kadarıyla analog değer hesaplamalarında,geri besleme kontrol işareti üretme işlemlerinde ve PID kontrol gibi işlemlerde kullanılır.
 

Ekli dosyalar

  • Cyclic Interrupt.JPG
    Cyclic Interrupt.JPG
    39 KB · Görüntüleme: 69
Moderatör tarafında düzenlendi:
Sayın Erolgke

Cylic program şu anlama gelir.CPU daki işletim sistemi ana program içerisindeki her loop ta OB1 i bir kez çalıştırır.Yani cyle time ı belirleyen OB1 değildir.Bunu belirleyen sizin kullanıcı programınızdır.


OB30-38 in OB1 e kesme atma diye bir olayı yoktur.Kullanıcı programınızda kesmeler kullandıysanız bunlar OB1 inizi keser. OB30-38 blokları şayet bu şekilde kesme atarak çalışıyorlar ise OB1 den bağımsız çalışamazlar anlamına gelir ki, böyle birşey yoktur.Bunu OB1 siz bir projeyi (örneğin OB35 ile yaptığınız) bir PLC ye yükleyerek deneyebilirsiniz.Göreceksiniz ki projeniz çalışacaktır.

Priority class ında anlamı şudur.Örneğin OB1 in 1, OB 35 in 12 dir.Bu demek oluyor ki; OB1 den OB35 i çağırabilirken,OB35 ten OB1 i çağıramazsınız.
 
rpm= revolution per minute ==> Dakikadaki devir sayısı

Aşağıdaki kodta I0.0 pulse olmak üzere MW40 integer değeri rpm değeridir.Konuya ilk gönderdiğim mesajdaki metod ile yapılmıştır.Kodu Cycle time nız 100ms tan küçük ise OB1 içinde, değil ise OB1 olmadan da olabilir OB35 içerisinde kullanabilirsiniz.

Kod:
   AN  M   0.0
   L  S5T#1M
   SD  T   0
   LC  T   0
   T  MW  10
   L  MW  10
   BTI 
   T  MW  20
   A  T   0
   =  M   0.0
   A  I   0.0
   CU  C   0
   A  M   0.1
   R  C   0
   LC  C   0
   T  MW  30
   A  M   0.0
   JNB _001
   L  MW  30
   BTI 
   T  MW  40
_001: A  BR
   =  M   0.1
 
Merhaba,

Polemik çıkarmak istemiyorum. Herkesin bir konuya bakışı ve yorumu farklıdır. Ben bildiklerimi bu şekilde yorumuyorum. Ekte bu konuyla ilgili Siemens in hazırladığı pdf den alıntılar veriyorum. Üzerinde farklı yorumlar getirdiğimiz terimlerin açık tanımları yazmaktadır. Herkes kendi yorumunu yapabilir.
İstenildiği takdirde dökümanıda paylaşabilirim.
 

Ekli dosyalar

  • Interrupt.JPG
    Interrupt.JPG
    44 KB · Görüntüleme: 62
  • Priority ve Cyclic.jpg
    Priority ve Cyclic.jpg
    46.9 KB · Görüntüleme: 47
Moderatör tarafında düzenlendi:
Kafanız karışmasın.Yukarıda verdiğim kod 1 dakikalık bir süre içindir.Dolayısıyla devirde bir değişme olursa bunu içinde bulunduğunuz peryotda elde edebilirsiniz.Ha bunu 1 dakikalık süre zarfında değilde 1 snlik interval içerisinde okuyum derseniz bunun da çözümü var.

Arkadaşlar ayrıca FM350-2 den başka şansı var.Bunlardan birisi 2000 Hz e kadar çalışan speed controller kullanmak.Bu FM350-2 kullanmaktan hem ucuzdur, hem de daha güvenilirdir.Tavsiye ederim.
 
arkadaşlar ilginiz için inanın çok teşekkür ederim... ben verdiğiniz bilgilere göre denemeler yapıyorum.. bi şey elde ettiğim an burada sizlerlede paylaşacağım...
 

Forum istatistikleri

Konular
128,160
Mesajlar
915,563
Kullanıcılar
449,919
Son üye
Serdar.59

Yeni konular

Geri
Üst