delphi real değişken

taxx

Üye
Katılım
23 Ara 2010
Mesajlar
23
Puanları
1
Yaş
49
delphi üzerinden real uzunlugunda bir değişkeni nasıl okuyabiliriz
dword okumada bir problem yok ama real de degerler tutmuyor
 
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.
konunuz ile alakalı değil ama delphi ile eksen kontrol programı gerekli bana bu konuda yardımcı olabilir misiniz?
 
Merhaba taxx

Real okumanın Mewtocoll protokolünde özel bir sorgu yapısı yoktur.

Okuyacağın 2 word lük alanı normal sorğu yaparak okumalı bu okuduğun 2 wordlük alanıda real sayıya çevirmelisin.

Low-High byte ve word işlemlerine dikkat etmelisin.

Real de değerler tutmuyor demişsin, tutmuyordan kastın son iki hanesi mi yoksa tamamı mı?
 
örn 1118 sayısı c000448b geliyor bir türlü bu sayıdan 1118 i elde edemedim
 
Merhaba taxx

1118 sayısı 1 wordlük bir alana sığar, real sayı değil anladığım kadarı ile

okunan değer tamami ile bana göre yanlış bu değer için böyle bir
cevabın gelmesi doğru değil.

Sorgu komutlarını kontrol etmeni tavsiye ederim.

Ben bizim plclerimize Hyper terminal üzerinden açık protokol ile yaptığım sorgu örneklerini formda yayınladım.

Örnekleri incele istersen.
 
1118 sadece bir örnek aslı 1118.0 ben enkoderden okudugum palsleri hatve değeriyle çarparak (buda virgüllü bir sayı ) gerçek mm degereini buluyorum . yine bir array dizininde delphiden gelen farklı degerlerle karşılaştırıp o degerlere motorun gidip işlem yapmasını istiyorum
şimdilik dint kullanarak ve virgüllü sayıların 10 katını baz alıp gönderim alımı dint, plc içierisinde dönüşüm yaparak bi şekilde sorunu çözdüm
ama 32 bitlik real bir sayının seri porttan delphi(veya herhangi bir program) uzerinden okunup yazılmasıyla ilgili bir düzen olması lazım mesela 31. bit + veya - oldugunu belirliyor ilk 24 bit noktadan sonraki degerler oldugunu anlatıyor sanıyorum sonraki bitlerde tam sayı kısmı (help te anlatılan bu başka açıklama yok)
sorun şu bunları nasıl bir işleme sokucaz ki plc deki real bir sayı(DDT12XXX) pc tarafında
düzgün okunsun veya tam tersi plc dogru okusun
 
konunuz ile alakalı değil ama delphi ile eksen kontrol programı gerekli bana bu konuda yardımcı olabilir misiniz?

mehmet arkadaşım bende panasonic plc yi 2 hafta kadar oldu kullanmaya başlayalı daha öncesinde servo kontrolü için siemens c240 serisi ile simotion scout kullanıyordum
ufak bir proje için daha ekonomik bir plc gerekti
st de yazılım yazılabildigi için panasonic plc yi tercih ettim
anlayacagın bende henüz çok yeniyim
 
Dr.Bob on Delphi Language Enhancements

kısmını okursanız delphi içerisindeki real48 type 6 byte'dan oluşuyor.
real ise 8 byte'dan oluşuyor.

1 Sizin aldığınız değerin protocol içerisindeki yeri doğru mu?
2 Kullandığınız ara değişkenlerin içeriği bu alandan taşma yapıyor mu?

örn:

var
x:real;
y:Real48;
begin
x:=1.1;
y:=x;
showmessage(FloatToStr(x)+' '+FloatToStr(y));
end;
x=1.1
y=1.10000000000036

oluşur.

Eğer memory dump ile delphi içerisinden bakarsan ;

y: $81 $CD $CC $CC $CC $0C
y: 1.1
x: $9A $99 $99 $99 $99 $99 $F1 $3F
x: 1.1

olarak görürsün.

Bunları dikkate alıp çevrim işlerini yaparsan daha iyi bir sonuç alırsın


1118 sadece bir örnek aslı 1118.0 ben enkoderden okudugum palsleri hatve değeriyle çarparak (buda virgüllü bir sayı ) gerçek mm degereini buluyorum . yine bir array dizininde delphiden gelen farklı degerlerle karşılaştırıp o degerlere motorun gidip işlem yapmasını istiyorum
şimdilik dint kullanarak ve virgüllü sayıların 10 katını baz alıp gönderim alımı dint, plc içierisinde dönüşüm yaparak bi şekilde sorunu çözdüm
ama 32 bitlik real bir sayının seri porttan delphi(veya herhangi bir program) uzerinden okunup yazılmasıyla ilgili bir düzen olması lazım mesela 31. bit + veya - oldugunu belirliyor ilk 24 bit noktadan sonraki degerler oldugunu anlatıyor sanıyorum sonraki bitlerde tam sayı kısmı (help te anlatılan bu başka açıklama yok)
sorun şu bunları nasıl bir işleme sokucaz ki plc deki real bir sayı(DDT12XXX) pc tarafında
düzgün okunsun veya tam tersi plc dogru okusun
 
Merhaba taxx

1118 sadece bir örnek aslı 1118.0 ben enkoderden okudugum palsleri hatve değeriyle çarparak (buda virgüllü bir sayı ) gerçek mm degereini buluyorum . yine bir array dizininde delphiden gelen farklı degerlerle karşılaştırıp o degerlere motorun gidip işlem yapmasını istiyorum
şimdilik dint kullanarak ve virgüllü sayıların 10 katını baz alıp gönderim alımı dint, plc içierisinde dönüşüm yaparak bi şekilde sorunu çözdüm
ama 32 bitlik real bir sayının seri porttan delphi(veya herhangi bir program) uzerinden okunup yazılmasıyla ilgili bir düzen olması lazım mesela 31. bit + veya - oldugunu belirliyor ilk 24 bit noktadan sonraki degerler oldugunu anlatıyor sanıyorum sonraki bitlerde tam sayı kısmı (help te anlatılan bu başka açıklama yok)
sorun şu bunları nasıl bir işleme sokucaz ki plc deki real bir sayı(DDT12XXX) pc tarafında
düzgün okunsun veya tam tersi plc dogru okusun
otomasyon

Ben delphi yi bilmediğimden hyper terminal üzerinden aynı işlemi yaptım.Okunan değerleri bende yorumlayamadım.

Bu konu hakkında yurtdışından yardım istedim.

Cevap geldiğinde sizlerle paylaşacağım.
 
192e962.jpg


Panasonic'ten Mewtocol'da ondalıklı sayı kullanımı hakkında gelen cevap aşağıdaki gibidir :

"32-bit datayı RDD komutları ile okuyun daha sonra bunu floating point (IEEE754 'e uygun olarak ekteki resimdeki gibi ) görüntüleyin.

JPG dosyasının içeriğinin tercümesi de şu şekilde :

1. Floating point sabiti

Floating point sabiti, hassas floating point mantığı ile işlenmiş iki wordden oluşur. Yediye kadar etkili basamak vardır. Mantis 32-bit ve eksponent (üs) 8 bittir (IEEE754'e göre).

Floating point sabitini F'ten sonra değer yazarak ifade edin.

Kullanılabilen sayılar -/+ (1.175494 x 10^-38 'den 3.402828 x 10 ^ 38' e kadardır.)

Floatin gpoint sistem kullanımına izin veren komutlar :

F309....
F310....
F311....
F312....
F313....

Şeklindedir.


Umarım yardımcı olur
 

Forum istatistikleri

Konular
129,311
Mesajlar
925,191
Kullanıcılar
451,754
Son üye
vedatsever5454

Yeni konular

Geri
Üst