Temperaturmessung mit Siemens S7

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
nur mal eine Frage gibt es für diesen Typ Thermoelemnt keine Umformer z.B. 4-20ma ? Erspart Dir unter Umständen jede Menge Rechnerei. Oder geht kein anderer Thermofühler?

mfg

dietmar
 
Markus schrieb:
was ist ein polygonzug?
den baustein kann ich auch selber basteln, brauche nur etwas hilfe bei der formel, bzw. beim "polygonzug"...
Für etliche nichtlineare Zusammenhänge kann man aus der physikalischen Theorie analytische Funktionen ableiten, d.h. soetwas wie x*x+3*x+4 oder e hoch x oder sinus(x).
So eine Funktion gibt dir für jedes x einen Wert, wenn du es in die Formel einsetzt.

Für die nichtlineare Kennlinie von Thermoelementen existiert keine solche Formel oder sie ist nicht praktikabel.
Du erhälst die Kennlinie, indem du bei verschiedenen Temperaturen die Spannung mißt. Für jedes Wertepaar trägst du einen Punkt in ein Diagramm ein. Verbindest du nun die Punkte mit geraden Linienteilen, ist an jederm Punkt eine Ecke eines Vielecks "Polygons". Zum ganzen Vieleck fehlt aber noch eine Linie, die Anfang und Ende wieder verbinden würde, daher "Polygonzug" (teil des Umriß eines Polygons) und nicht "Polygon".

Je mehr Punkte von der Linie beannt sind, um so genauer gibt sie die wirkliche Kennlinie wieder.
In einer Tabelle (z.B. in einem Buch oder in einem DB) kannst du aber nicht beliebig viele Werte speichern.
Um eine Spannung x umzurechnen, die nicht in der Tabelle vorkommt, interpoliert man:
1. Nächstniedrigeren Wert X1 suchen, Temperatur T1 ablesen
2. Nächsthöheren Wert X2 suchen, Temperatur T2 ablesen
3. Tx= T1+ (x-X1)(T2-T1)/(X2-X1)
Tx ist eine gute Näherung für die gesuchte Temperatur.

Die Formel macht folgendes:
(T2-T1)/(X2-X1) ist die Steigung des Linienabschnitts zwischen den Punkten (X1,T1) und (X2,T2).

x-X1 ist der Abstand von X1 bis x.
Wenn man also auf dem Linienabschnitt um diese Entfernung weitergeht, nimmt die Temperatur um die Steigung zu.

Falsch an dieser Methode ist, daß die Steigung des Polygonzugs sich in jedem Punkt schlagartig ändert. Dafür gibt es keinen physikalischen Grund und es ist auchbei der realen Kennlinie nicht so. Es gibt mathematische Methoden, daß zu ändern und eine "glatte" Kurve durch eine gegebene Menge von Punkten zu legen, z.B. Spline-Interpolation. Das ist recht aufwendig und für deine Anwendung "mit Kanonen auf Spatzen schießen".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
lorenz2512 schrieb:
Hallo,
nur mal eine Frage gibt es für diesen Typ Thermoelemnt keine Umformer z.B. 4-20ma ? Erspart Dir unter Umständen jede Menge Rechnerei.
@lorenz2512
Die Rechnerei macht man ja nur einmal. Wenn man's öfter braucht, "rechnet" es sich schnell. Und auch ein Umsetzer muß gekauft, manchmal programiert werden. Dann braucht er Strom und Platz; schließlich ist er im Fall eines Versagens eine zusätzliche Fehlerquelle und man muß ihn als Ersatzteil vorhalten. Schließlich kann ich die 30 Zeilen AWL schneller schreiben, als ich so ein Gerät aus einem Katalog wähle, die Unterlagen zur Handhabung lese und es bestelle.
 
Es gibt noch eine schöne, auch relativ einfache Hilfe.

Trage deine Werte in eine Excel-Tabelle ein, erzeuge ein Diagramm.
Markiere die Diagrammlinie, dann rechte Maustaste und "Trendlinie hinzufügen". Jetzt kannst du anwählen welchen Typ etc. (beste Näherung ausprobieren). Außerdem unter dem Reiter Optionen "Gleichung im Diagramm darstellen" anwählen. Die Trendlinie sollte sich möglichst gut mit deiner Diagrammlinie decken. Mit Hilfe der eingeblendeten Formel kannst du in der SPS deine Linearisierung vornehmen (umstellen!). Je besser die Überdeckung, desto besser die Anpassung, desto umfangreicher aber auch die Formel.
 

Anhänge

  • db500_test.xls
    91 KB · Aufrufe: 101
Hallo,
@ Zottel: Gut für einen absolten Könner vieleicht kein Problem, aber bei mir würde so etwas zum Jahresprojekt werden ( :lol: mit ungewissem Ausgang). Wenn ich oben deine Beschreibung lese, nehme ich an das mindestens 50% der Forumsmitglieder sich an den Kopf fassen und sich fragen: was meint der?. Schau dir mal die letzten Beiträge zur Analogwertnomierung an, wenn da sich schon Verständniss verabschiedet, was soll das bei solchen Aufgaben erst werden?.

mfg

dietmar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na ja, ich hätte auch nur den Rechenweg angeben können. Die Einleitung sollte nur erklären, was der Begriff Polygonzug hier soll, wo er herkommt und warum es nicht einfach "eine Formel" gibt.
Der Hinweis auf die weiteren mathematischen Methoden paßt auch gut ins Bild, da aus Ralles Beitrag hervorgeht, daß auch Excel sowas kann. Wußte ich noch nicht und probiere ich heute noch aus.
Methode und Rechenweg zur Interpolation waren bei uns Stoff der 9.? oder 10.? Klasse, im Zusammenhang mit Logarithmentafeln.
 
Ist schon gut so Zottel, jeder kann sich das entnehmen, was er braucht und umsetzen kann. Deine Beschreibung war jedenfalls ausreichend und verständlich.
 
@zottel
irgendwas hat mir bereits beim schreiben des wortes "polygonzug" gesagt das du mir das schon sehr bald erklären wirst... danke!


@lorenz
ich will nicht angeben hier, aber ich habe verstanden was er gemeint hat.
das verfahren leuchtet mir ein, aber ich dachte es gitbt ne einfachere lösung, bzw. ich wusste nicht das man dazu polygonzug sagt.

und nein ich habe auch nicht studiert (wenn ich vor solchen problemen stehe bereuhe ich es manchmal)

das mit den 30 zeilen awl kauf ich ihm zwar auch nicht ab, aber besonders aufwendig ist es auch nicht...


@ralle
diese lösung hört sich auch super an, schau ich mir gleich man an!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Ralle: Super, das kann nun fast jeder verstehen, aber die Idee ist nicht von Dir :wink: das würde ich wohl schon mehr dem bitchchecker zutrauen.
@ Markus und Zottel: Mein Interesse an Zottel's Beitrag hat schlagartig nachgelassen wie der Satz kam:"Für die nichtlineare Kennlinie von Thermoelementen existiert keine solche Formel oder sie ist nicht praktikabel." Ich habe den höchsten Respekt vor Zottel, und das was er hier für das Forum leistet ist super, bloß es kommen nicht alle mit (ich habe mir die Libnodave Geschichte angesehen, und das ist zu hoch für mich), Ralle denkt da praktischer, aber gut das 2 solche guten Leute hier im Forum vertreten sind.

mfg

dietmar
 
das mit den 30 zeilen awl kauf ich ihm zwar auch nicht ab, aber besonders aufwendig ist es auch nicht...
Code:
L -32 
T index // damit geht's in Wirklichkeit bei 0 los
AUF SpannungsDB  // enthält Spannungswerte in aufsteigender Reihenfolge
M1: L index
T indexalt
L 32
+I
T index
L x  //Spannung
L DBD[index] //lädt den nächsten Spannungswert
<R  // ist der immer noch kleiner als x?
SPB M1  // dann nächster index
//
// Am Ende der Schleife ist der Eintrag zum ersten mal größer.
// Das bedeutet, der Vorgänger ist auch der nächstkleinere
//
L DBD[indexalt]
T X1
-R
T DeltaX
AUF TemperaturDB  // enthält Temperaturwerte in aufsteigender Reihenfolge
L DBD[index]  
L DBD[indexalt]
T T1
-R
T DeltaT 
L Deltax
/R
T Steigung
L x
L X1
-R
L Steigung
* R
L T1
+R
Weil Freitag ist, auch noch die 32 Zeilen Code
Nicht getest, aber sollte prinzipiell gehen.
Nicht zur Anwendung empfohlern, da das Durchsuchen einer Tabelle hier maximal so viel Schleifendurchläufe braucht, wie die Tabelle Elemente hat.
Ein "ordentliches" Verfahren ist "binäres suchen".
 
warum 32byte breite?

was ist "binäres suchen"?

danke für den code, aber das kriege ich hoffentlich auch noch selber hin...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Markus schrieb:
warum 32byte breite?
Weil REALs so breit sind. Und REALs kann man teilen, ohne sich um Genauigkeitsverlust kümmern zu müssen.
was ist "binäres suchen"?
In einer Tabelle mit geordneten Wert schaut man auf den mittleren. Ist er größer als der gesuchte, liegt der gesuchte Wert in der ersten Hälfte, sonst in der zweiten. Mit der richtigen Hälfte macht man dann wieder dasselbe, solange bis nur ein Wert übrigbleibt.

danke für den code, aber das kriege ich hoffentlich auch noch selber hin...
Kein Zweifel. Wollte nur sehen, ob ich mit den 30 Zeilen das Maul viel zu voll genommen hatte
 
Zottel schrieb:
Weil REALs so breit sind. Und REALs kann man teilen, ohne sich um Genauigkeitsverlust kümmern zu müssen.

ähh, im simatic manager sind die 4byte lang
aber ich habe verstanden du adressierst ja die bitadresse, dann passt das wieder mit 32...


In einer Tabelle mit geordneten Wert schaut man auf den mittleren. Ist er größer als der gesuchte, liegt der gesuchte Wert in der ersten Hälfte, sonst in der zweiten. Mit der richtigen Hälfte macht man dann wieder dasselbe, solange bis nur ein Wert übrigbleibt.

das ist cool...
 
Zurück
Oben