+ Antworten
Ergebnis 1 bis 6 von 6
  1. #1
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,128

    Standard Funktion zum (um)skalieren von Werten.

    Hallo alle zusammen.

    Mir fällt immer wieder auf das einige User Probleme mit dem (um)skalieren von Werten haben.
    Deswegen möchte ich hier nochmal eine Funktion veröffentlichen die genau das macht.
    Die Funktion ist sehr einfach und erfüllt einem alles was man braucht.
    Die Funktion rechnet linear, auch über die Eckpunkte hinaus. Also kein Begrenzen.
    Es können auch negative Steigungen angegeben werden. Die Mathematik wird’s schon richten.

    Das ist die Funktion:
    PHP-Code:
    function Scaling($In$InUG$InOG$OutUG$OutOG)
                {
                
    /*=============================================================
                Scaling - Martin Heinzel - 21.09.2011
                Version: 1.0

                Beschreibung:
                Diese Funktion scaliert einen Wert nach der Form:

                      ( ( In - In_Min )                            )
                Out = (------------------- x ( Out_Max - Out_Min ) ) + Out_Min
                      (( In_Max - In_Min )                         )
                ================================================================*/

                
    return ($In $InUG) / ($InOG $InUG) * ($OutOG $OutUG) + $OutUG;

                } 
    Anwendungsbeispiele:

    Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in 0.0 – 100.0%.
    Steigung -> positiv,positiv
    PHP-Code:
    $Out Scaling($Temperatur10.050.00.0100.0); 
    Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in 100.0 – 0.0%.
    Steigung -> positiv,negativ
    PHP-Code:
    $Out Scaling($Temperatur10.050.0100.00.0); 
    Es soll eine Temperatur in den Bereichen von 70.0 – 10.0°C um skaliert werden in 0.0 – 100.0%.
    Steigung -> negativ,positiv
    PHP-Code:
    $Out Scaling($Temperatur70.010.00.0100.0); 
    Es soll eine Temperatur in den Bereichen von 70.0 – 10.0°C um skaliert werden in 100.0 – 0.0%.
    Steigung -> negativ,negativ
    PHP-Code:
    $Out Scaling($Temperatur70.010.0100.00.0); 
    Ich hoffe das hilft für die Zukunft.
    Bis dann

    Martin

  2. #2
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,128

    Hallo alle zusammen.

    Funktioniert das Skript auch für negative Zahlen?
    Ja, natürlich! Die Mathematik bescheißt Dich nicht.

    Anwendungsbeispiele:

    Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in -100.0 – +100.0%.
    Steigung -> positiv,positiv
    PHP-Code:
    $Out Scaling($Temperatur10.050.0, -100.0100.0); 
    Es soll eine Temperatur in den Bereichen von 10.0 – 50.0°C um skaliert werden in +100.0 – -100.0%.
    Steigung -> positiv,negativ
    PHP-Code:
    $Out Scaling($Temperatur10.050.0100.0, -100.0); 
    Bis dann

    Martin

  3. #3
    Registriert seit
    Feb 2013
    Ort
    Oberösterreich
    Beiträge
    941

    Hallo,

    ich hätte eine Frage wie ich dein Script zur Umrechnung eines Drucksensors verwenden kann?
    Die Skalierung ist linear, heißt 0bar= 0 Volt, 6bar= 10 Volt.

    Den Wert des Sensors lese ich mit dem Fibaro RGWB Modul aus. Dieser zeigt mir den Wert in % an.
    Also 0% sind 0Volt sind 0Bar

    Danke!
    Liebe Grüße,
    Michl

    IPS Symbox

  4. #4
    Registriert seit
    Oct 2007
    Ort
    Villach,Kärnten,Österreich
    Beiträge
    2,977

    Hi michl

    Hab deine anderen Posts gesehen, du kämpfst ja ganz schön mit der Mathematik.
    Um das Problem zu lösen mußt du natürlich auch wissen bei welcher Spannung das Fibaro Dingens 100% ausgibt.

    Dann Skalierst du erstmal die 0-10V auf 0-100%. Vorausgesetzt der kann überhaupt 10V am Eingang, ich selbst kenn das Teil leider nicht.
    Aus diesen 0-100% machst dann 0-6Bar.

    bb

  5. #5
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,128

    Hallo michl,

    Option 1:
    PHP-Code:
    $Out Scaling($Input0.0100.00.06.0); 
    Option 2 (einfach):
    PHP-Code:
    $Out $Input 100.0 6.0
    Ich kann mir aber beim besten willen nicht vorstellen das du an Grundrechenarten scheiterst.
    Ich denke dein Rohwert in IPS entspricht nicht 100.0 für 10 V bzw. 6.0 bar.
    Bis dann

    Martin

  6. #6
    Registriert seit
    Feb 2013
    Ort
    Oberösterreich
    Beiträge
    941

    Zitat Zitat von Schablone Beitrag anzeigen
    Hallo michl,

    Option 1:
    PHP-Code:
    $Out Scaling($Input0.0100.00.06.0); 
    Option 2 (einfach):
    PHP-Code:
    $Out $Input 100.0 6.0
    Ich kann mir aber beim besten willen nicht vorstellen das du an Grundrechenarten scheiterst.
    Ich denke dein Rohwert in IPS entspricht nicht 100.0 für 10 V bzw. 6.0 bar.
    Morgen,
    der Rohwert Entspricht nicht 100 für 10 Volt?
    Ich bin der Meinung das, der Wert der in Prozent angezeigt wird in IPS die Eingehenden Volt sind?
    Zb.: 66 Prozent sind 6,6 Volt??

    Der Eingang des Fibaro erfasst 0-10 Volt.
    Liebe Grüße,
    Michl

    IPS Symbox

Ähnliche Themen

  1. Funktion zum Vor- und Zurückspringen innerhalb von MP3's
    Von squeeezer im Forum Skripte, PHP, SQL
    Antworten: 0
    Letzter Beitrag: 13.07.10, 13:17
  2. Funktion von AC_SetLoggingStatus
    Von atmel im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 17.02.10, 18:01
  3. Funktion MXC_RequestStatus
    Von Sven im Forum Eaton Xcomfort
    Antworten: 14
    Letzter Beitrag: 09.02.09, 17:18
  4. Reconnect Funktion
    Von guyabano im Forum Dashboard
    Antworten: 4
    Letzter Beitrag: 17.07.06, 16:09
  5. Globale Variable in einer Funktion
    Von helitron im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 03.06.05, 14:48