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.
String Yöntemiyle;
1611826697679.png


LEN(); FIND();LEFT(); RIGHT(); fonksiyonlarını kullandım
 

Ekli dosyalar

  • 1611826743717.png
    1611826743717.png
    6.3 KB · Görüntüleme: 40
Son düzenleme:
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.)

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

1612012053899.png
 
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.
1612029684437.png
 
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
    Screenshot_1.jpg
    68.3 KB · Görüntüleme: 11
oprA= 11.51 girilince sonucint = 12 hatalı çıkabilir denemeniz gerekiyor.
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,847
Kullanıcılar
449,596
Son üye
anilhikmet

Yeni konular

Geri
Üst