Ters yönde Scale işlemi

Overshot

Üye
Katılım
22 Şub 2007
Mesajlar
118
Puanları
1
Yaş
39
Merhaba;

Mekanik bir kolum var kol yukarı kalktığında Analog pozisyon değerim(2Numara) küçülüyor, aşağı indiğinde artıyor. Postansiyometre çıkışı sadece 0-10Volt ve mekanik olarak yönünü değiştiremiyorum.
Aşağıdaki gibi skale işleminde 1 numaralı yer 27648, 3 numara 0 a setlediğimde Out doğru çalışmıyor. Scale işlemini ters çalıştırmam gerek bunun için iki yönlü çalışan hazır bir blok var mı?

27648.0 ---> 0 derece
0 ---> 90 derece şeklinde bir skale işlemi yapmam gerek.


1722410691975.png
 
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.
Scale_X'te minimum değeri -90 makasimum değeri 0 girip çıkan sonucunda mutlak değerini almayı dener misiniz?
Ya da doğrudan scala_x çıkışını (90-çıkış değeri) yapabilirsiniz.
 
O şekilde olmuyor. ScaleX in value giriş değeri 0-1 arasında olmalı diyor help.
Ters Çıkış = (27648 - KanalOkunandeger) şeklinde NORMX in value sine gönderdim, çalıştı ama içime sinmedi. Programdaki simetri bozuldu yoksa bu şekilde çözdüm.
 
Moderatör tarafında düzenlendi:
O şekilde olmuyor. ScaleX in value giriş değeri 0-1 arasında olmalı diyor help.
(27648 - KanalOkunandeger) = Ters Çıkış şeklinde NORMX in value sine gönderdim, çalıştı ama içime sinmedi. Programdaki simetri bozuldu yoksa bu şekilde çözdüm.
Value değerini değiştirmeyeceksiniz benim dediğimde, orası yine 0-1 aralığı olcak norm_x'ten gelen. Blok girişndeki max ve min değerlerini değiştireceksiniz.

0 olduğunda minmumu değer olan -90'ı verecek çıkış olarak
1 olduğunda maksimum değer olan 0'ı verecek.Verilen çıkış değerinin de mutlak değeri alınır.

Yaptığınız çözümün de içinize sinmeyecek bir yanı yok bence. Parametrelerden biri illa ters olacak. Benim önerdiğim ikinci çözümde çıkan sonucu (90-x) şeklinde göstermek. Yani proses verilerine ellemeden son noktada dönüşümü yapmak. Belki bu daha çok içinize sinebilir bilmiyorum. Yaptığınızla aynı kapıya çıkıyor aslında.
 
Merhaba;
Görünen o ki söylediğiniz şekilde de oluyor, çıkışın ABS değerini almadım ama oluyor görünüyor. Giriş değeri arttıkça absolute açı değeri azalıyor. Teşekkürler.
1722415804702.png
 
analog sinyali nasil gonderiyorsun ? modbus comm kullaniyorsan 27648 yerine 13684 kullanmalisin
 
Olayı yanlış anlamadıysam şoyle ayapabilirsiniz.
X : INT; //Şeklinde tanımlayın

X := 27648.0 - DB10.DB88;

Norm_X Value kısmına DB10.DB88 Yerine X kullanın.
 
1723100471196.png
1723100513780.png

Kod:
FUNCTION_BLOCK ScaleXY
VAR_INPUT
    X, X1,Y1,X2,Y2 :REAL;   // X Girilen değer (X1,Y1) (X2,Y2) bilinen noktalara göre Scale edilir
END_VAR
VAR_OUTPUT
    Y:REAL;  // Çıkış
END_VAR
VAR
    k,d:REAL; // Ara hesaplama değerleri
END_VAR

Kod:
IF X1 = X2 THEN
    Y:= 0;   // X1 = X2  ise eşitse sıfıra bölme olmasın diye çıkış 0
ELSE
    k: = (Y2-Y1) / (X2-X1);  // fonk.nun eğimi(tanjantı) hesaplaması
    d: = Y1 - (k * X1);      // fonksiyon sabiti d, 1 noktaya göre hesaplanır
    Y: = k * x + d;          // Eğimi ve 1 noktası belli fonksiyon denklemi çıkışı
END_IF

X1 Y1 = ( 27648 , 0 )
X2 Y2 = ( 0 , 90 ) olacak şekilde veriler girilir. X Real Analog giriş olacak.
 
Son düzenleme:

Yeni mesajlar

Forum istatistikleri

Konular
129,027
Mesajlar
922,646
Kullanıcılar
451,285
Son üye
aslanlion

Yeni konular

Geri
Üst