# SPS Beispielprogramm für PT100; Temperaturanzeige am TP



## MECHA07 (30 November 2009)

Hallo!
Ich bin Mechatroniker im 3. Ausbildungsjahr und soll herausfinden, wie ich ein PT100 so in die SPS programmieren kann, dass es die tatsächliche Temperatur am Touchpanel anzeigt. Hardware haben wir in der Ausbildung ne S7 314C-2DP, die ist auf nem Automation Board von Elabo Trainingssysteme montiert (falls euch der Hersteller was sagt) Touchpanel haben wir ein TP177 PN Color. 
Ich hab jetzt schon mal bei euch im Forum rumgeschaut und besonders diesen Beitrag durchgelesen:
http://www.sps-forum.de/showthread.php?t=19363&highlight=pt+100
und die anderen, die darin noch durch Links vorkommen.
Leider reichen meine Kentnisse nicht aus um das zu verstehen. Wir haben bis jetzt eigentlich nur mit Zeiten, Zählern usw. gearbeitet. Meistens programmieren wir Schrittketten. Deswegen überfordern mich die ganzen MW und MDs, da ich nicht weiß wie ich die parametriere bzw. welche Vorarbeit zu leisten ist um zu dem Punkt zu kommen, wie es in o.g. thread programmiert wird.

Es wäre nett, wenn sich jemand die Zeit nehmen könnte und mir erklären könnte wie ich den PT100 Schritt für Schritt einprogrammieren kann bzw. erstmal wie man generell analoge Eingänge in die SPS programmiert.

Bis jetzt haben wir weder Temperaturmessumwandler noch PT100 (ja, soweit bin ich gekommen, dass man einen Messumwandler braucht ), das wird aber besorgt sobald ich die Theorie habe.

Falls noch was unklar sein sollte, dann fragt einfach

Danke schon mal im Voraus!


----------



## rumpelix (30 November 2009)

hallo,
wenn du ein PT 100 verwendest brauchst du nicht zwingend einen messumformer, du kannst es direkt an die analoge eingangskarte klemmen
( vorrausgetzt die karte ist dazu in der lage, hab jetzt nicht genau im kopf welche es können ).


----------



## berni_rb (30 November 2009)

also bei deine 314 Kompaktsteuerung kannst du den PT100 direkt anschliessen!


----------



## foxy64 (30 November 2009)

Ein Beispiel zur Verwendung des integrierten Einganges findest du hier:
http://support.automation.siemens.com/WW/llisapi.dll?query=cpu314c-2dp&func=cslib.cssearch&content=adsearch%2Fadsearch.aspx〈=de&siteid=cseus&objaction=cssearch&searchinprim=0&nodeid0=4000024&x=0&y=0


----------



## uncle_tom (30 November 2009)

Hallo,

hast du von deinem Ausbilder keine Unterlagen erhalten ?

Von Siemens gibt´s diesbezgl. sehr gute Ausbildungsunterlagen. Die kann man sich auch hier herunterladen. Für deinen Fall würde sich dann das Modul B2 Analogwertverarbeitung anbieten.

Du brauchst nicht unbedingt einen Messwandler. Die 314C hat 5 Analoge Eingänge. Der 5te Analogeingang kann direkt PT100 Fühler verarbeiten (muss in der Hardwarekonfig als RTD definiert werden.)

Du bekommst dann von der Hardware direkt einen fertigen Temperaturwert, da brauchst du nichts mehr gross umrechnen oder skalieren.

Die Analogen Eingänge liegen standardmäßig ausserhalb des Prozessabbilds wobei hier jeder Analogeingang 2 Bytes bzw. 1 Wort belegt. Wenn du jetzt vom Programm aus auf einen Analogeingang zugreifen willst und diesen z.B. auf einem Merkerwort ablegen willst, dann kann man das so lösen.

L PEW760
T MW100

Die Adresse des Analogeingangs ergibt sich anhand der Hardwarekonfig (Bei der 314C liegt der 5. Analogeingang standardmäßig auf Adresse 760).

Steht jetzt z.B. der dezimale Wert 215 auf Merkerwort 100 dann entspricht das 21.5 °C.

Zur Anzeige des Werts am Panel empfiehlt es sich den Wert in eine Gleitpunktzahl (REAL) umzurechnen.

z.B.
L PEW760
ITD
DTR
L 10.0
/R
T MD100

Wenn du dir jetzt das Merkerdoppelwort in einer Variablentabelle anschaust, und dabei den Datentyp auf Gleitpunkt stellst, dann siehst du direkt den Temperaturwert mit 1er Kommastelle. Das MD100 kannst du dann auch im Panel anzeigen lassen.

Normal würde man die Analogwerte in Datenbausteinen ablegen, und dann diese zur Visualisierung am Panel verwenden. Da hab ich jetzt aber mal der Einfachheit halber drauf verzichtet.

Wenn du den PT100 Fühler über einen Messwandler auf einen 0 - 10 Volt Eingang legst, dann wirds ein bissel komplizierter. Dann steht auf dem PEW nicht mehr der Temperaturwert sondern ein Rohwert, der Werte von 0 - 27648 annehmen kann. Jetzt musst du wissen welchem Temperaturwert dieser Rohwert bzw. den 0 .. 10 Volt entspricht, das hängt vom Messwandler ab z.B. 0..50°C --> 0..10 Volt --> 0 .. 27648 Rohwert.
Damit du jetzt diesen Wert einskalieren kannst, gibt´s von Siemens fertige Bausteine z.B. FC105 Scale


----------



## MECHA07 (30 November 2009)

Danke schon mal für die Antworten

Wir haben Unterlagen von Elabo, damit konnte ich aber leider nix anfangen und deswegen hab ich bisschen gegoogled und bin auf dieses Forum gestoßen.

Mein Ausbilder hat gemeint ich soll mal schauen, weil der PT100 nicht die "Normsignale" ausgeben würde bräuchte man so en Umwandler, aber wenns so geht umso besser^^

@ uncle_tom: Danke für den Link. Aber ich versteh ab "L PEW760" nichts mehr... soweit bin ich dann noch nicht in die SPS- Technik vorgedrungen... sry.
1. ich weiß, dass L für Lesen bzw. Laden steht und T für Schreiben, aber was hat das PEW auszusagen und wie funktioniert das mit den Merkerworten, was wird da belegt bzw. geschrieben? M100.0-M100.7??

2. Wie is das mit nem Merkerdoppelwort??? M100.0-M101.7???

3. L PEW760
ITD
DTR
L 10.0
/R
T MD100

Wie nennt sich denn der Baustein?

4. Wie rechne ich die Werte in Gleitpunktzahl um?

5... usw.

Du merkst ich kapiers nicht... tut mir leid...

Könnte es mir jemand von vorne bis hinten erklären???

Wär super!!
Danke!


----------



## vierlagig (30 November 2009)

versteh ich nicht ... also der sebastian hat es doch auch verstanden


----------



## MECHA07 (1 Dezember 2009)

Ja, Sebastian hats verstanden, aber ich leider nicht 

Ich hatte so das Gefühl, dass ihr so ziemlich in der Mitte anfangt bzw. weiß ich überhaupt nicht wo ich die Bausteine im Programm herbekomme.

Außerdem reichen meine Kenntnisse nicht aus um herauszufinden, welche Funktion ein MW oder ein MD hat. 

Tut mir leid, bin halt en totaler Anfänger


----------



## MSB (1 Dezember 2009)

Sorry, aber entweder hat dein Ausbilder dir bisher diesbezüglich überhaupt nicht beigebracht,
oder du hast nicht zugehört.

Wenn du noch nicht mal weißt was ein PEW, MW, MD (PeripherieEingangsWort, MerkerWort, MerkerDoppelwort) ist,
dann solltest du dir erst mal diesbezüglich Kenntnisse aneignen bzw. erklären lassen.
Und wenn du mit diesen ganz grundsätzlichen Sachen bescheid weißt, dann mach dir über den PT100 noch mal Gedanken.

Das sollte dir dabei helfen:
http://www.automation.siemens.com/fea/html_00/down_module.htm

Mfg
Manuel


----------



## MECHA07 (1 Dezember 2009)

Ok, hab mich jetz bisschen durch die Unterlagen gearbeitet und habs jetzt mehr oder weniger verstanden.

Wenn ichs richtig sehe, dann wird im MD100 die fertige Temperatur gespeichert oder, d.h. zb 21,5°C?

Muss die Hardware noch irgendwie anders konfiguriert werden als in den Werkseinstellungen bzw. wie definiere ich den AI5 als RTD?


----------



## pylades (1 Dezember 2009)

Moin,



> Muss die Hardware noch irgendwie anders konfiguriert werden als in den Werkseinstellungen bzw. wie definiere ich den AI5 als RTD?


Siehe Anhang

Pylades


----------



## MECHA07 (1 Dezember 2009)

Schon mal danke für eure Antworten.

Wir können es noch nicht testen, weil bei den Automation Boards die wir haben die analogen Eingänge nicht angeschlosen sind *ROFL*

Jetzt mal schauen wies weitergeht ;-)


----------



## extruder_luder (4 Dezember 2009)

Hallo,

eine komplette Beschreibung was zu tun ist, kann ich nicht geben, dauert zu lange . Aber einem Einsteiger sollte geholfen werden, deshalb ein paar Tipps und Anregungen.
Als erstes musst Du mal lernen was ein Bit, Byte, Word und ein Doppelword / Real ist. Sonst geht gar nichts.

Nun zu Deinem Problem. Zum Einlesen eines RTD’s / PT 100 brauchst Du entweder einen Umsetzer oder einen analogen Eingang der einen Umsetzer integriert hat. Eine PT100 Temperaturmessung ist letztenendes  eine Widerstandsmessung. Deshalb wird der PT100 mit einem Konstantstrom (übl. 1 mA) beaufschlagt und dann die Spannung am PT100 gemessen die dabei an ihm abfällt. Das macht der Umsetzer und wandelt den Messwert in eine analoge Spannung (z.B. 0—10V) oder einen Strom (z.B. 4—20mA). Des weiteren korrigiert er die Nichtlinearität des PT 100 mit einer quadratischen Kurve. Das können auch dafür ausgelegte analoge Eingänge. Zu beachten ist dabei die Anschlussart. Bei einer Zweileitermessung muss der Offset (ergibt sich durch die Leitungslänge) entweder im Programm oder am Umformer korrigiert werden. Die Umsetzer haben dafür ein Poti. Entweder man benutzt einen bekannten Widerstand, schätzt die Temperatur oder nimmt einen RTD Kalibrator.

Ob die CPU oder analoge Engangskarte einen entsprechend konfigurierbaren Eingang hat, entnimmst Du der Siemens Literatur „CPU / Baugruppendaten“. Die Enstellungen dafür werden in der Hardwarekonfiguration vorgenommen.

Nun zum Programm. Hast Du einen entsprechenden Eingang ist es einfach. Du liest das Peripherieword des analogen Eingangs und schon hast Du die aktuelle Temperatur geladen.

L PEW xxxx    

Es ist keine Normierung mehr nötig

Dann transferierst Du den Wert in eine Variable

T MW10

Dieses Word in Real umzuwandeln bringt gar nichts. Im OP kann man einstellen, mit wie viel dezimalen die Variable dargestellt werden soll. 
Eine Umwandlung in Real kostet Zeit, braucht mehr Platz (Real = 4 Bytes) und erhöht nicht die Genauigkeit, ist also Blödsinn.

Liest Du allerdings einen Wert von einem Umsetzer ein, so muss dieser normiert werden.
Angenommen der Umsetzer macht aus 400 Grad Celsius 10 V, dann sieht das Programm so aus.

L PEW xxxx
L 4000              // Max des Messwertes
*D                    // multipliziere Doppelword
L 27648             // bei S7 immer das Maximum eines analogen Einganges unabhängig der Auflösung und //ohne Übersteuerung
 / D                  // dividiere Doppelword
T MW 10

Die Rechnungen müssen dabei DW sein, da sonst ein Zahlenüberlauf entsteht und alles mögliche, aber nicht das richtige rauskommt. Lernst Du wenn Du Schritt 1 befolgt hast. Der Wert hat eine Dezimale. Lässt sich auch in FUP/KOP programmieren, sieht aber nicht so schön aus. MW 10 zeigst Du dann in einem OP an, fertig.

Wie gesagt nur ein Überblick, keine fertige Lösung. Learning by doing.

Gruss


----------



## uncle_tom (4 Dezember 2009)

extruder_luder schrieb:


> Dieses Word in Real umzuwandeln bringt gar nichts. Im OP kann man einstellen, mit wie viel dezimalen die Variable dargestellt werden soll.
> Eine Umwandlung in Real kostet Zeit, braucht mehr Platz (Real = 4 Bytes) und erhöht nicht die Genauigkeit, ist also Blödsinn.



Wenn du nur mal schnell 1 Messwert hast - mag das ja stimmen. Wenn du allerdings vernünftig mit Analogwerten arbeiten willst, dann bringt das Gleitpunktformat schon ein paar Vorteile.

Nicht umsonst hat der Skalierbaustein von Siemens (FC105 Scale) ja auch als Ausgangsdatentyp REAL.




extruder_luder schrieb:


> L PEW xxxx
> L 4000              // Max des Messwertes
> *D                    // multipliziere Doppelword
> L 27648             // bei S7 immer das Maximum eines analogen Einganges unabhängig der Auflösung und //ohne Übersteuerung
> ...



Das funktioniert aber nur wenn der Min des Messwertes 0 ist, das ist aber nicht immer der Fall.

Es kann sogar sein, dass der Min des Messwertes negativ ist (z.B. Aussentemperaturmessung -50°C - +50°C --> 0 .. 10 Volt).

In so einem Fall kommste mit dem einfachen Dreisatz nicht weit.

Womit wir dann wieder bei REAL und FC105 Scale währen.


----------



## extruder_luder (4 Dezember 2009)

Hallo Uncle Tom,
nenn mir doch mal bitte einen Vorteil beim rechnen mit real, ausser das man keine Funktionen wie Absolutwertbildung oder ähnliches zur Verfügung hat. Man muss halt vieles dann zu Fuss machen, ist aber 500 mal schneller. Die Genauigkeit beim Rechnen mit Real nimmt auch nicht zu, da S7 300 ab der sechsten Stelle eh abschneidet.

Zum Normieren:
Ich habe ja auch kein vollständiges Beispiel gebracht, etwas soll unser Anfänger ja auch noch ausknobeln. Z.B einen Offset vom Messwert abziehen.
Das ganze klappt auch mit negativen Messwerten. In Deinem Beispiel: 100 Grad is der volle Hub der Messung, also Du ziehst am Ende einfach 50 Grad Celsius wieder ab.

Man kann zwar die von Siemens zur Verfügung stehenden Bibliotheken nutzen, hat aber immer wieder Einschränkungen, die Aufgabenstellung ist etwas anders oder so. Deshalb schreib ich meine Routinen selber, dann weiss ich auch was zu tun ist, wenn es mal Schwierigkeiten gibt.

Gruss


----------



## steinche (5 Dezember 2009)

Hallo zusammen,

Zum Thema wandeln in REAL oder nicht ,öchte ich auch meinen Senft dazu geben. Ich persönlich habe viel mit Druck und Temperaturmessungen zu tun. Wenn eine 315er ca. 60 analoge Werte als INT bekommt und dazu noch passende von der Analogbaugruppe skalliert (215 als 21,5°C) finde ich es auch persönlich schon Overkill alles in REAL zu wandeln, dann mit REAL Zahlen zu vergleichen und daraus ein BOOL für Temp High oder Temp Low zu bilden. Ich bleibe, wo es geht, bei INT oder DINT. Nachdem ich unserer einen CPU REAL ausgetrieben hatte ging die Zykluszeit von ca. 95ms auf ca. 22ms zurück. Ich will nicht wissen, wie es ausgesehen hätte wenn ich, ohne darauf zu achten, die nächsten 20 Analogwerte auf die alte Art und Weise eingebunden hätte!

Viele Grüße
steinche


----------

