3 svar
83 visningar
SidewayZ 2 – Fd. Medlem
Postad: 26 jan 2020 01:52

Interpolering eller ej?

Hej!

 

Jag håller på att leta upp en lösning på ett problem som jag stött på.

Problemet är en beräkning för att omvandla en mätenhet till ett digitalt värde.

Kan jag använda Interpolering är frågan eller finns ett bättre sätt?

Jag kan anta variabler för att beskriva

X = Mätenhet i Celsius, grader

Y = Digitalvärde

 

X1 = -50.00

X2 = 50.00

Y1 = 0

Y2 = 4000

X = mellan -50.00 och 50,00

Y = ?

Jag har labbat lite med värdena och det verkar fungera med interpolering.

Det som bekymrar mig är decimaler. Det har jag inga på den digitala sidan :)

Laguna 28468
Postad: 26 jan 2020 09:12

Är Y ganska linjär i hela området -50 till 50? I så fall kan man interpolera. Varför finns inga mätvärden mellan X1 och X2?

Ska resultatet vara heltal så får man avrunda.

Kan du ge mer bakgrund till frågan?

SidewayZ 2 – Fd. Medlem
Postad: 26 jan 2020 11:27
Laguna skrev:

Är Y ganska linjär i hela området -50 till 50? I så fall kan man interpolera. Varför finns inga mätvärden mellan X1 och X2?

Ska resultatet vara heltal så får man avrunda.

Kan du ge mer bakgrund till frågan?

Y är i detta fallet helt linjär mot X. Eller snarare så är det bara ett sätt att hitta Y om man justerar X.

Skulle man vända på steken däremot så är digitalvärdet kanske inte alla gånger linjärt emot mätenheten till exempel vid beräkning av volym i en tank som ligger. Men i det fallet är ju det digitala värdet linjärt med höjden så det går att interpolera digitalvärdet och få fram höjden. Sedan beräknar man genom volymberäkningar ut den aktuella volymen.

Bakgrunden är att jag håller på att gå lite djupare i PLC programmering. För att se vad som händer i PLCn när den jobbar så delar jag på funktionsblocken som konverterar mätvärden kan man säga och jag gör dom själv för att jag skall se hur dom jobbar :)

I detta fallet så är Y en utsignal och jag kan inte ge utgången en flytande variabel direkt det kommer den inte att förstå.

Därför måste jag hitta ett förhållande mellan ett användarvärde och digitalvärdet och sedan ge den ett digitalvärde där Y i detta fallet är ett råvärde för utsignal.

Har jag en utgång där jag skall styra till exempel en motors varvtal ganska exakt så kan jag beräkna det och skicka det som en utsignal till en drivenhet som sköter hastigheten på motorn. Skall beräkningen ovan vara en motor så ändrar jag X1 till 0,00 r/min som är motorns minsta asynkronavarvtal och X2 till 1475,00 r/min högsta asynkronavarvtal för en typisk asynkron 4-polig trefasmotor. Det maximala asynkrona varvtalet anges på motorns märklåt.

När jag sedan justerar X på skalan så justerar jag X mellan 0,00-1475,00 r/min för att kunna interpolera Y som kommer bli någonstans mellan 0-4000 är väl tanken då :)

Anledningen till variablerna ovan är för att se om beräkningen är rätt eller fel på ett enkelt sätt genom att kasta in negativa tal och sedan har jag en jämn fördelning från minsta värdet -50,00 och högsta 50,00. Så anger jag till exempel

X = -25,00 så borde Y = 1000

X = 0,00 så borde Y = 2000

X = 25,00 så borde Y = 3000

X = 50,00 så borde Y = 4000

Blir beräkningen ok så kan jag prova vidare med att stoppa in lite trixigare tal :)

Laguna 28468
Postad: 15 feb 2020 19:53

Kom du vidare med det här? 

Svara Avbryt
Close