Analogwert nicht-linear zuordnen

Nico99

Level-1
Beiträge
134
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich habe eine Anlage, die eine grosse Verschlussklappe hat. Diese Klappe wird verfahren, hoch oder runter. Dabei wird die Höhe von dem Boden bis OK Klappe gemessen. Bisher geschah es mechanisch, über Seil mit Gewicht. Dieser Gewicht lief über Skala, wo man selbst die Werte gamalt hat.
Die Höhe während der Fahrt ist nicht linear. Das kann man in beigefügter PDF unschwer erkennen.
Jetzt wird das ganze automatisiert, und die Klappe bekommt an dem Drehpunkt einen 4-20 mA-Poti.
Die Zuordnung der Stromwerte zu Höhe sind ebenfalls in PDF ersichtlich.
Jetzt kommt meine Frage: Wie kann ich möglichst genau (analog) den linearen Stromwert zu nicht linearer Skalierung zuordnen? Der Höhenwert soll später als Zahlenwert angezeigt werden.
Zur Zeit ist es so gelöst, dass man nach der Tabelle arbeitet, Analogwert gegen X vergleicht, und je nachdem wie hoch X ist einen passenden Wert lädt und transferiert.

Gibt es nicht solche Bausteine, wo mann diese Punkte aus PDF vorgeben könnte, und Baustein errechnet daraus die Linie und arbeitet dann damit?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke!

Das habe ich gesucht! Habe zwar kein PG zur Hand, aber es passt genau zu meiner Anlage.

Vielen Dank!

PS: "interpolieren"... Auf den Begriff hätte ich bei der Suche kommen müssen :D
 
Ich hab da mal eine Frage: Soll das ganze für eine präzise Regelung verwendet werden oder nur zur Anzeige?
Für die meisten Regelungen, Steuerfunktionen und einfache Anzeigen sollte doch eigentlich eine Näherungsgerade völlig ausreichen und davon geh ich aus wenn ihr euch vorher mit einem Gewicht und einer handgemalten Skala begnügt habt.

- Messe nur so genau wie nötig und so ungenau wie möglich -
(frei nach keine Ahnung, ist aber nicht von mir)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du ein Polynom für deine Kurve hast, hab ich dafür mal die passende Scalierung gebaut. Ich benutz die normalerweise für Temperaturfühler.


Code:
FUNCTION AI_scal: Void
(*Umwandlungsoperation*)
TITLE = 'REAL scalierung von Rohwert nach Out'
VERSION : '1.0'
KNOW_HOW_PROTECT
AUTHOR  : vor
NAME    : AI_scal
FAMILY  : data

{S7_tasklist:='false';
 S7_blockview:='small'}

VAR_INPUT
       a0: REAL; // Offset
       a1: REAL; // Gain
       a2: REAL; // x^2
       a3: REAL; // x^3
      Raw: REAL; //
 LIM_X_UG: REAL; // Unteres Limit des Ausgangswertes
 LIM_X_OG: REAL; // Oberes Limit des Ausgangswertes

END_VAR

VAR_TEMP
 Act: REAL;
 END_VAR


VAR_OUTPUT
 out: REAL;
END_VAR    
    
    
(*Eingang Raw umgerechnet*)
 BEGIN
Act:= a0 + (a1 * Raw) + (a2 * Raw ** 2) + (a3 * Raw ** 3);

(*Ausgang wird limitiert*)
out:=LIMIT(Mn:=LIM_X_UG, IN:=Act, Mx:=LIM_X_OG); 

END_FUNCTION
Vieleicht kanns einer brauchen
 
Ich habe es heute endlich umgesetzt. Das klappt mit der Exceltabelle und SCL-Code hervorragend! Vielen dank!

(Nebenbei habe ich gesehen, dass man bei Siemens einen Baustein dafür kaufen könnte. Der wird mit den Wertepaaren beschaltet, und erledigt den rest...)
 
Zurück
Oben