1. sayfa (Toplam 1 sayfa)

DTC'deki Sıcaklık Değerini Float Olarak Yansıtmak

Gönderilme zamanı: 14 Eki 2025, 11:42
gönderen mahsumyasar
DTC1000 modülünden aldığım anlık sıcaklık değerini alıp toplama, çıkarma ve bölme gibi işlemler yapmak istiyorum. Küsurat değerlerinin kaybolmaması için floata çevirip diğer işlemleri yapmam gerektiğini düşündüm. Denemek amaçlı bu kodu background macroya yazdım. Numerical displayde format kısmında floatingi seçtim ancak sonucunda 0 çıkıyor. Signed decimal seçince değerin küsürat kısımı çıkmıyor. 20.6 iken 21 gösteriyor. Yuvarlama yapıyor. DTCden aldığım bu veriyi en rahat nasıl floata çevirebilirim?

$20 = {Link1}3@TEMP_CTRL-1000
$21 = TODWORD($20)
$22 = FMOV($21)
$23 = FDIV($22, 10) (Signed DW)

Re: DTC'deki Sıcaklık Değerini Float Olarak Yansıtmak

Gönderilme zamanı: 14 Eki 2025, 11:54
gönderen İslam
Merhaba,

Aşağıdaki macro satırlarına göre $0'dan gelen İnteger değer ilk olarak FCNV komutu ile Floating tabana çevirip $10 datasına taşındı, sonrasında FDIV komutu ile 10'a bölünüp sonucu $20 datasına atıldı.

$10 = FCNV($0) (Signed DW)
$20 = FDIV($10, 10) (Signed DW)
float.png

Re: DTC'deki Sıcaklık Değerini Float Olarak Yansıtmak

Gönderilme zamanı: 15 Eki 2025, 16:28
gönderen mahsumyasar
HMIda yazdığım makroda işaretlediğim satırda sadece sıcaklık set değerini floata çevirip okuyorum. Ancak $45 değeri sürekli değişiyor bazen 10 bazen -2 gösteriyor halbuki sürekli 10 göstermesi lazım. Bu sorunu nasıl çözebilirm. Çok fazla makro kullandığım için böyle bir hata veriyor olabilir mi?

Re: DTC'deki Sıcaklık Değerini Float Olarak Yansıtmak

Gönderilme zamanı: 15 Eki 2025, 17:05
gönderen İslam
Merhaba,

Floating tabanda işlem yaptıysanız artık kullandığınız datalar 32-Bit(DW)'dür. Sonrasında 16-bit tabanda taşıma yapmışsınız bununla alakalı bir durum olabilir. Taşıma işlemini DW olarak yapın.

$45 = $4 (DW)