Gelen 4-20Ma fonk.Hk.

Baran6421

Üye
Katılım
24 Nis 2015
Mesajlar
3
Puanları
1
Yaş
31
Elimde 4.20 Ma çıkış veren bir ölçüm sensörü var.Sorun şu sensörün boyu değişiklik göstere bilir.Benim yapmak istediğim 4Ma de 0 değerini göstercek 20Ma de ise maximum sensör değerini verecek bir fonksiyona ihtiyacım var.Ama fonksiyon hesaplamam nasıl olacak neye göre hesaplayacağım nasıl bir yol izlemem gerekiyor o kısmı bilmiyorum.Fonksiyonu c++ da yazıcam.Yardımcı olabilecek arkadaşlar var mı bu konu da.
 
Bu arada fonksiyon 4 ile 20 Ma arasındaki değerleri de alıp seviye olarak hesaplaması gerekiyor yani sadece minimum ve max seviyeyi hesaplamayacak..
 
Basit bir algoritma, oran orantı
kodun testini fazla yapmadım. Anladığım kadarı ile;

#include <iostream>


using namespace std;


#define MIN_VAL 4.0
#define MAX_VAL 20.0

#define SENSOR_MIN_VAL 0.0
#define SENSOR_MAX_VAL 80.0

double g_range = MAX_VAL - MIN_VAL;
double g_sensor_range = SENSOR_MAX_VAL - SENSOR_MIN_VAL;

double Translate(double val)
{
if (val < MIN_VAL || val > MAX_VAL) {
cout << "hatali giris" << endl;
return -1;
}

double rate = (g_range) / (val - MIN_VAL);
double temp = (g_sensor_range) / rate;
return temp + SENSOR_MIN_VAL;
}


int main ()
{
if (g_range == 0 || g_sensor_range == 0) {
cout << "gecersiz degerler" << endl;
return 1;
}


cout << 4 << " -----> " << Translate(4) << endl; //0
cout << 20 << " -----> " << Translate(20) << endl; //80
cout << 12 << " -----> " << Translate(12) << endl; //40
cout << 5 << " -----> " << Translate(5) << endl; //5
cout << 18 << " -----> " << Translate(18) << endl; //70
cout << 9 << " -----> " << Translate(9) << endl; //25
cout << 50 << " -----> " << Translate(50) << endl; //hatali giris



return 0;
}
 

Forum istatistikleri

Konular
128,377
Mesajlar
917,107
Kullanıcılar
450,252
Son üye
Ogiloji

Yeni konular

Geri
Üst