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:
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: 41
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: 13
oprA= 11.51 girilince sonucint = 12 hatalı çıkabilir denemeniz gerekiyor.
 

Forum istatistikleri

Konular
129,903
Mesajlar
931,168
Kullanıcılar
452,787
Son üye
Azemm333
Geri
Üst