Ters yönde Scale işlemi

Overshot

Üye
Katılım
22 Şub 2007
Mesajlar
122
Puanları
1
Yaş
40
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
 
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
 
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

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(X1,Y1) hesaplanır
    Y: = k * x + d;          // Eğimi ve 1 noktası belli lineer 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:

Forum istatistikleri

Konular
130,116
Mesajlar
933,272
Kullanıcılar
453,179
Son üye
canerakdeniiz

Yeni konular

Çevrimiçi üyeler

Geri
Üst