PLC içerisinde sayının Tam ve Ondalık kısmı ayırma

DeisS

Üye
Katılım
21 Ara 2012
Mesajlar
14
Puanları
1
Merhabalar.
PLC içerisinde bir real bir sayının tam ve ondalık kısmını nasıl ayırabilirim?
Ladder yazım dilini kullanmak zorundayım.
Teşekkürler.
 
Moderatör tarafında düzenlendi:
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.
Belki string işlemleri işlemcinizde fazla komut harcayabilir. Şu şekilde de yapabilirsiniz.

Kod:
tam_kisim := REAL_TO_DINT(real_sayi);
ondalik_kisim := REAL_TO_DINT(real_sayi * 1000.0) MOD 1000;

(Burada virgülden sonraki 3 digiti alır. Size örneğin 4 lazımsa * 10000.0 ve mod 10000 yaparak digiti ayarlayabilirsiniz.)

 
Bendeki Simulasyon "tam_kisim" DWORD veya DINT tipini yukarıya yuvarlıyor

 
Sanırım sizde en yakın sayıya yuvarlanıyor. Eğer en yakın sayıya yuvarlanıyorsa sayıdan 0.5 çıkararak bu problemi çözebilirsiniz.
Kod:
tam_kisim := REAL_TO_DINT(real_sayi - 0.5);
ondalik_kisim := REAL_TO_DINT(real_sayi * 1000.0) MOD 1000;

Eğer virgüllü sayıları hep yukarı yuvarlıyorsa da sayıdan 1.0 çıkararak bu problemi çözebilirsiniz.
Kod:
tam_kisim := REAL_TO_DINT(real_sayi - 1.0);
ondalik_kisim := REAL_TO_DINT(real_sayi * 1000.0) MOD 1000;
 
Yuvarlama mantığı aşağıdaki şekilde. Sonuç olarak String yöntemi veya aşağıdaki yönteme göre yapılabilir.
String yönteminde basamak(digit) ayarına gerek yoktur.
 
Son düzenleme:
Merhaba.
GMT forumda şöyle birşey buldum şuanda işimi görecek gibi duruyor.
ST diline biraz uzağım o nedenle ladder şimdilik daha anlaşılır duruyor bana.
@elektronikmuh @fatal1693 Yardımınız için teşekkür ederim.
 

Ekli dosyalar

  • Screenshot_1.jpg
    68.3 KB · Görüntüleme: 12
oprA= 11.51 girilince sonucint = 12 hatalı çıkabilir denemeniz gerekiyor.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…