Scalieren von Analogwerten

A.Ott

Level-1
Beiträge
20
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

kann mir vieleicht irgend jemand helfen?
Ich habe einen Druckschalter mit Druck- und Unterdruckmodus.
Den Analogausgang dieses Schalter geht auf den Analog Eingang
an der SPS.
Am Druckschalter ist es so 1-5V entsprechen -101.3-101.3kPA.
Wie kann ich dies Scalieren das ich es mir richtig am Tp anzeigen
lassen kann?
Es ist eine S7 Cpu 315-2DP als Steuerung eingesetzt.

Gruß
 
Liefert der Druckschalter wirklich 1-5V (hab sowas noch nicht gesehen) oder liefert er 0-5V (glaub ich schon eher).
Jetzt kommt es darauf an was deine Analogeingangskarte her gibt. Lässt die sich auf 0-5V einstellen?
Bei einem 0-10V Spannungseingang würde ich es mit der FC105 so lösen:
Code:
      L     PEW  300                    //Analogeingang 0-10V / Sensor 0-5V /0 - 13824 
      L     2                              //Multiplikator
      *I                                   //zum Anpassen an die FC105    
      T     LW     0                    //Angepasster Wert 0 - 27648
      CALL  FC   105
       IN     :=LW0
       HI_LIM :=1.013000e+002           //Wert am Ausgang "OUT" bei 5V
       LO_LIM :=-1.013000e+002          //Wert am Ausgang "OUT" bei 0V
       BIPOLAR:=FALSE
       RET_VAL:=LW2
       OUT    :=MD200                   //skalierter Wert -101,3 kPA bis 101,3 kPA

Vielleicht hilft ja das auch noch weiter:
http://www.sps-forum.de/showthread.php?t=585
 
Zuletzt bearbeitet:
Hallo A.Ott,
nochmal zur Klarstellung, wie ich dein Problem verstehe:
1. Bei p=-101.3kPa liefert der Sensor +1V an die SPS
2. Bei p=+101,3kPa liefert der Sensor +5V an die SPS
3. Du verwendest eine Eingangskarte mit Messbereich +1 bis +5V.
Dann lautet deine exakte Berechnungsformel für p in hPa:
p=0,007327835*X-101,3.
Diese Formel ist sehr ungünstig, deshalb wird sie umgewandelt in:
p=(7,327835*X-101300)/1000
Hierfür das Programm:

Code:
[SIZE=1]L PEW 20 [/SIZE][SIZE=1][COLOR=#008000]// Analogwert einlesen[/COLOR][/SIZE]
[SIZE=1]ITD [/SIZE][SIZE=1][COLOR=#008000]// wandeln in Realformat[/COLOR][/SIZE]
[SIZE=1]DTR[/SIZE]
[SIZE=1]L 7.327835e+00 [/SIZE][SIZE=1][COLOR=#008000]// multiplizieren mit Faktor[/COLOR][/SIZE]
[SIZE=1]*R[/SIZE]
[SIZE=1]L 1.013000e+05 [/SIZE][SIZE=1][COLOR=#008000]// subtrahieren Konstante[/COLOR][/SIZE]
[SIZE=1]-R[/SIZE]
[SIZE=1]L 1.000000e+03 // dividieren durch 1000[/SIZE]
[SIZE=1]/R[/SIZE]
[SIZE=1]RND [/SIZE][SIZE=1][COLOR=#008000]// wandeln in DINT-Format[/COLOR][/SIZE]
[SIZE=1]T MW 20 // Ergebnis im DINT-Format[/SIZE]
Unter Nutzung des Übersteuerungsbereiches kannst du damit Druck erfassen von -137hPa bis +137hPa. Für diesen Zahlenbereich reicht damit ein Wort (MW20) für die Ausgabe völlig aus.
Gruß eNDe
 
Dann lautet deine exakte Berechnungsformel für p in hPa:
p=0,007327835*X-101,3.
Diese Formel ist sehr ungünstig, deshalb wird sie umgewandelt in:
p=(7,327835*X-101300)/1000

Wieso soll die erste Formel so ungünstig sein, dass sie umgewandelt werden muss? Es kommt bei beiden Formeln praktisch dasselbe heraus. Unterschiede gibt es beim Ergebnis im REAL-Format erst in der vierten Nachkommastelle. Es ist also egal, mit welcher Formel man rechnet.

Code:
p=0,007327835*X-101,3
 
L     PEW  752                    // Analogwert einlesen
ITD                               // wandeln in REAL-Format
DTR   
L     7.327835e-003               // multiplizieren mit Faktor
*R    
L     1.013000e+002               // subtrahieren Konstante
-R    
T     MD    34                    // Ergebnis im REAL-Format
RND                               // wandeln in DINT-Format
T     MW    22                    // Ergebnis im DINT-Format

Code:
p=(7,327835*X-101300)/1000
 
L     PEW  752                    // Analogwert einlesen
ITD                               // wandeln in REAL-Format
DTR   
L     7.327835e+000               // multiplizieren mit Faktor
*R    
L     1.013000e+005               // subtrahieren Konstante
-R    
L     1.000000e+003               // dividieren durch 1000
/R    
T     MD    30                    // Ergebnis in REAL-Format
RND                               // wandeln in DINT-Format
T     MW    20                    // Ergebnis im DINT-Format

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieso soll die erste Formel so ungünstig sein, dass sie umgewandelt werden muss? Es kommt bei beiden Formeln praktisch dasselbe heraus. Unterschiede gibt es beim Ergebnis im REAL-Format erst in der vierten Nachkommastelle. Es ist also egal, mit welcher Formel man rechnet.

Code:
p=0,007327835*X-101,3
 
L     PEW  752                    // Analogwert einlesen
ITD                               // wandeln in REAL-Format
DTR   
L     7.327835e-003               // multiplizieren mit Faktor
*R    
L     1.013000e+002               // subtrahieren Konstante
-R    
T     MD    34                    // Ergebnis im REAL-Format
RND                               // wandeln in DINT-Format
T     MW    22                    // Ergebnis im DINT-Format

Code:
p=(7,327835*X-101300)/1000
 
L     PEW  752                    // Analogwert einlesen
ITD                               // wandeln in REAL-Format
DTR   
L     7.327835e+000               // multiplizieren mit Faktor
*R    
L     1.013000e+005               // subtrahieren Konstante
-R    
L     1.000000e+003               // dividieren durch 1000
/R    
T     MD    30                    // Ergebnis in REAL-Format
RND                               // wandeln in DINT-Format
T     MW    20                    // Ergebnis im DINT-Format

Gruß Kai

Hallo,
die Analogkarte ist 0-10V. Woher ergibt sich der Faktor 0,007327835
Gruß
 
Hallo A.Ott,
ich will dir gerne helfen, aber du musst mitmachen.
Gib doch mal verbindlich an, welchen theoretischen Messbereich deine Analogkarte hat und welche praktischen Ergebnisse du mit deiner Anlage bekommst.
Beispiel:
Karte 0 bis 10V
Bei p=-101,3hPa liefert der Sensor +1V bzw. Hex xxxx am PEW 752
Bei p=+101,3hPa liefert der Sensor +5V bzw. Hex yyyy am PEW 752.
Mit der Hex-Angabe ließe sich mit Sicherheit eine genauere Umwandlung erreichen.
Gruß eNDe
 
Zitat:
Zitat von Oberchefe
Noch nie Keyence Sensoren benützt?

Das ist ein Keyence Sensor!!!
Damit war wohl eher ich gemeint.

Die Aufgabe lässt sich recht einfach mit der FC105 aus der Siemensbibliothek lösen.
Code:
 CALL  FC   105
 IN     :=PEW300
 HI_LIM :=3.545500e+002
 LO_LIM :=-1.519500e+002
 BIPOLAR:=FALSE
 RET_VAL:=LW0
 OUT    :=MD210

Dein Sensor arbeitet mit 1-5V, das heißt du hast einen Bereich von 4 Volt den Du auswerten mußt.
Bei einem Meßbereich des Sensors von -101,3 bis +101,3 ergibt sich also ein Wert von 50,65 kPA je Volt.
Daraus ergibt sich ein theoretischer Mindestwert von -151,95 (wenn Dein Sensor bei 0V liegen würde) und ein theoretischer Maximalwert von 354,55(wenn Dein Sensor bei 10V liegen würde).
Im obigen Beispiel ist die FC105 entsprechend scaliert und liefert für den Bereich von 1-5V am Ausgang "OUT" die entsprechenden Druckwerte im REAL- Format.
 
Zuletzt bearbeitet:
Ich habe mal was für den Azubi geschrieben, hier mit den vorliegenden Werte angepaßt:

Vorgehen:

1. Liste machen
Wert AE-Baugr. Wert[V] Wert[mbar]
0.....................0.............<min
2765................1.............-101,3
13824..............5.............+101,3
27648..............10............>max

2. Skalierungsparameter finden
Die Formel für lineare Skalierung lautet:
y = ax + b
y: skalierter Wert
x: Rohwert der AE-Baugruppe
a: Anstieg
b: Offset

3. Parameter ermitteln:
a = delta y / delta x = (y_max - y_min) / (x_max - x_min)
= (101,3 - (-101,3)) / (13824 - 2765) ~ 0,01832

Zum ermitteln des Offsets Meßwert für untere Grenze einsetzen:
y = a*x + b= 0,01832 * 2765 + b = 50,65 + b

y ist bekannt -> soll ja -101,3 mbar sein bei 1V Eingang, also nach b umstellen:
b = -50,65 + y = -50,65 + (-101,3) = -151,95

4. Ergebnis testen
y = 0,01832 * x - 151,95
X = 2765 -> y = -101,2952
x = 13824 -> y = 101,30568

Wenn das genau genug ist -> fertig, ansonsten mit mehr Nachkommastellen
rechnen.

Eine Umstellung des Meßbereiches der AE-Karte von 0..10V auf 0..5V würde die Genauigkeit glatt verdoppeln, dann müssen a und b aber mit den entsprechenden Parametern neu ermittelt werden!
Die Verwendung selber ist dann einfach (am besten in einen FC gießen):

Code:
L  PEW....     //Rohwert
ITD              //nach Double
DTR             //nach Real
L  a             //  
*R               // a*x 
L  b
+R              //+b
T result        //skal.Wert als Real
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo PeterEF,
habe (auf etwas anderem Weg) exakt die gleichen Ergebnisse für a und b. Die anfangs gestellte Problematik war aber nicht so klar (Messbereich der Karte?)
Gruß eNDe
 
Ich

liebe die süßen Würfelchen von Keyence. Damit wird dann auch klar, warum 'Druckschalter' doch nicht soo falsch ist, sonst wäre es ja ein Analog Sensor...

Link:
http://www.keyence.de/products/sensors/pressure/pressure.php

Danke, jetzt habe ich das mit dem FC 105 gut verstanden und komme jetzt auch mit anderen Skalierungen klar...

*Geiles Forum !!!*

Greetz

@eNDe:
Magst Du bitte uns Deinen Weg mal zeigen?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@eNDe
ja... am besten gleich im binärformat - mensch deine art und weise einfache dinge die du nicht begriffen hast hier unnötig kompliziert zu machen geht mir auf die eier...


@armin
also entweder mit dem fc oder eben doch zu fuß wie peter so schön beschrieben hat, aber vergiss das was der kasper da mit den hex zahlen geplappert hat...
ich selber verwende den fc105 nie und mache es immer zu fuß, ist schneller und kleiner (der fc105 rechnet intern nur unnötig rum bis er die selben faktoren hat wie du dir selber errechnet hast). und leute die fc105 nicht kennen - also zb ich :rolleyes: - wissen auch gleich um was es hier geht...

böse zungen sagen ja das f** und k** programmierer gerne mit dem fc arbeiten... :ROFLMAO:

aja und wenn dus garnicht hinbekommst, dann haste ja meine nummer und kannst jemanden anrufen der sich mit sowas auskennt... :sc3:
 
Hallo,
1. Marcus, wieso meldest du dich eigentlich erst jetzt zu Wort? Bei deinem hohen Wissensstand hättest du dem Fragesteller doch gleich helfen können.
2. In der Anfrage war nicht klar, um welchen Messbereich der Karte es sich handelte. (Marcus wusste das natürlich schon, oder?). Mit dem einzigen Befehl L PEW xxx kann man sich im Status Baustein dann im Hex-Format die Werte bei p-max und p-min ansehen. In diesem Falle spielt dann das Wissen um den Messbereich der Karte keine Rolle mehr. Deshalb ist auch die Tabelle von PeterEF zu 100% aussagefähig!
3. Genau diese Tabelle (ohne Berechnungsformel) habe ich als Klarstellung von A.Ott erbeten.
4. Marcus ich fordere dich hiermit in aller Form auf, deine Aussagen, was mich betrifft, an dieser Stelle im Forum für alle öffentlich zu begründen. Besonderen Wert lege ich auf die Klarstellung solcher Aussagen wie:
deine art und weise einfache dinge die du nicht begriffen hast hier unnötig kompliziert zu machen geht mir auf die eier...
und
vergiss das was der kasper da mit den hex zahlen geplappert hat...
Bin auf die hoffentlich niveauvollere Antwort gespannt.
Gruß eNDe
 
Ich glaube, hier ist erstmal Beruhigung angesagt.

Die Kollegen stoßen sich glaub ich daran:
Hallo,
Mit dem einzigen Befehl L PEW xxx kann man sich im Status Baustein dann im Hex-Format die Werte bei p-max und p-min ansehen.

In der Tat - was soll hier der unnötige Verweis auf das HEX-Format? Früher konnte jeder gute Programmierer in HEX wie in DEZ rechnen (;) ), die Zeiten sind vorbei. Darum sollte man doch gleich die Dezimaldarstellung wählen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In der Tat - was soll hier der unnötige Verweis auf das HEX-Format? Früher konnte jeder gute Programmierer in HEX wie in DEZ rechnen (;) ), die Zeiten sind vorbei. Darum sollte man doch gleich die Dezimaldarstellung wählen?

Du hast es richtig erkannt.

Das Problem mit diesem eNDe ist, dass er kontinuierlich Halbwissen in seine Ausführungen einstreut. (z.B. behauptet er, S5er CPU hätten nur 2 Akkus und
INT - Vorzeichen sind ihm auch fremd)

Entweder macht er das vesehentlich, oder er versucht, die Fragensteller in diesem Forum zu verwirren (Troll).

Ich hatte schonmal die Sperrung beantragt, allerdings ohne Erfolg.
 
Danke für die vielen Antworten.
Die Lösung zu Fuß ist echt super.
Aber leider war kein Scalieren möglich, da der
doofe Keyence Druckschalter alles, aber nicht
die Werte laut Bedienungsanleitung ausgibt.
Er gibt aus was er grad will.
Werd ihn nun Austauschen gegen nen IFM Drucksensor
und dann nach der zu Fuß Methode scalieren.

Gruß Armin
 
Zurück
Oben