Umgang mit Analogwerten

mikkey

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich bin neu hier und und im SPS, deshalb habe ich zwei (vermutlich dumme) Fragen.

Aktuell bin ich dabei einen Prüfstand zu konzipieren. Dabei sollen regelmäßig Messwerte in einer Richtung und Messkonfiguration in der anderen Richtung mit einem Windows-Netzwerk ausgetauscht werden.

Nun laufen ja Messwerte als Integer auf (0..32767). Diese Werte stellen aber reale Messgrößen dar, die zur Überwachung mit vorgegebenen Grenzen verglichen werden müssen.

Wenn ich jetzt bei einer PT100-Messgröße mit z.B. 30°C vergleichen will, wie handhabt Ihr so etwas. Rechnet Ihr die 30°C in den entsprechenden Integer-Wert um oder gibt es dafür eine Automatik? Werden gar die Messgrößen in Reals umgewandelt?

Außerdem habe ich noch eine verwandte Frage: Wenn ich halbwegs zuverlässige Messungen haben will, muss ich das System kalibrieren. Wo werden die Korrekturwerte für die einzelnen Analogeingänge üblicherweise hinterlegt und wie angewendet?

Vielen Dank für nicht genervte Antworten.
 
Also ich schreibe mir die Anwendungen idr selber. Es gibt natürlich für viele Anwendungen etwas fertiges. Aber wie du deinen Wert nun skalierst ist ja ersten dir überlassen (Rundung etc) und zum zweiten vom Messbereich abhängig. Und je genauer du die Messung haben möchtest desto mehr Zeit solltest du in Abgleich/Kalibrierung investieren. Je nach Spanne sogar mit verscheiden Korrekturfaktoren. Und da bietet sich in meinen Augen am besten eine Visu an. Diese dann aber nicht von jedem zu verändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich schreibe mir die Anwendungen idr selber

Das hatte ich auch vor, aber konkret mit dem Beispiel würde mir ein -200-850°C PT100 bei 30°C den Wert -18412 geben. Es kann doch nicht sein, dass ich dann diverse Integer-Konstanten definiere um Bereichsprüfungen durchzuführen oder macht man das, weil dann die Verarbeitung entsprechend schnell ist?.

Visu?
 
Ich verstehe dich gerade nicht ganz. Wenn du das skalierst legst du deinen min und deinen max fest und ggf denn Korrekturfaktor den Rest macht dein program.
 
ääh

Um damit wieder auf die Ausgangsfrage zurückzukommen:

Rechnet Ihr die 30°C in den entsprechenden Integer-Wert um oder gibt es dafür eine Automatik? Werden gar die Messgrößen in Reals umgewandelt?

Mit welchen werten gehst Du Um? Bzw. was verstehst Du in diesem Zusammenhang unter skalieren?

Beispiel Messwert kommt als -25432, vergleichen will ich mit 30°C - was tue ich?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mikky,

Was für eine SPS hast du ?.
Wenn Siemens, 4-20mA Signalen die lassen sich einfach skalieren mit der Standard FC 105 Scale.
Wenn Siemens brauchst du für PT100 eine RTD eingangskarte. da kommen abhängig von der gewählte PT100 die INT Werte schon ziemlich sauber raus. z.b.
INT 100 = 10.0 °C oder INT1000 = 10°C

So dann wird es vergleichen einfach z.b. Wert INT < 30°C wird INT < 300

Bram
 
Also ich verstehe unter Skalieren das anpassen des AI Wertes in einen für mich brauchbaren wert. Zunächst eine kurze frage, warum du deinem Wert immer ein "-" voranstellst ?
Nun zu deiner Frage. Du hast einen PT100 der deiner SPS einen Wert von 0...32767 liefert, Richtig (Oder die Eingangskarte wandelt dir diesen Wert entsprechent ? Aber du willst ja den Wert in °C haben, auch richtig ?
Du hast einen Messwert von -200°C bis 850°C, heisst ein Spanne von 1050K. Das heisst für mich, wenn ich nun die 32767 mit den 1050K in ein Verhältniss setzte bekomme ich ca pro °K eine änderung am AI um 31,21. Nun kann ich hiermit wundbar meinen Wert errechnen den du haben möchtest. Soll heissen wenn du die Nullpunktverschiebung (wegen minus 200°C) berücksichtigst würde deine Visu 614.87°C Anzeigen (Bzw dein Programm) Also würde dein Vergleicher sagen du hast einen Delta von 584.87K zur Soll Temperatur. Das ist doch das wo du hin möchtest oder ?
 
@hollander
Noch gar keine (Konzeptphase), es wird eine von Phoenix Contact werden.

@Dr.MirakulixX
Minuszeichen - die RTD-Klemme ist als 15Bit plus Vorzeichen angegeben, deshalb gehe ich davon aus, dass der Bereich von -32768 bis +32767 geht - +30°C ergäben dann den genannten Wert -18412.

@beide
Ich glaube, jetzt habe ich's geschnallt. Der Eingang wird also per lineare Funktion auf eine passende Skala hingebogen, so dass ich Werte von 0-100 für Prozente habe (oder 0-1000) wenn ich's genauer brauche. Bei Druck würd ich aus dem Bereich von 0-5 Bar Integer von 0 bis 5000 machen. So richtig?

Spräche denn etwas dagegen, die Eingänge so zu belassen, wie sie kommen (abgesehen von Korrekturwerten) und die Vergleichskonstanten in diese Skala umzurechnen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spräche denn etwas dagegen, die Eingänge so zu belassen, wie sie kommen (abgesehen von Korrekturwerten) und die Vergleichskonstanten in diese Skala umzurechnen?
Ja unbedingt!
Du solltest das SPS-Programm von der verwendeten Hardware entkoppeln, indem Du im Programm nicht den Rohwert benutzt, der vom Analogeingang kommt, sondern diesen Wert in eine Maßeinheit umrechnest (bar, %, l/min, ...). Dann kannst Du später auch mal den Sensor austauschen und mußt nur die eine Skalierungsstelle anpassen. Im übrigen solltest Du immer in REAL umrechnen, dann hast Du keine Probleme, wenn Du die Werte irgendwo anzeigen willst. Solche "Sparvarianten" wie INT mit virtuellem Dezimalkomma macht/braucht man heute nicht mehr.

Harald
 
INT mit virtuellem Dezimalkomma

hat mir eben auch nicht so gut gefallen, deshalb der Ansatz, mit den Rohdaten zu arbeiten. Würde ich die Vergleichwerte in der Initialisierungsphase von Real auf die Rohdaten zurückrechnen, hätte ich auch keine größere Bindung an die Hardware - ich müsste auch nur die Skalierung anpassen (allerdings würde irgendwo trotzdem nochmal eine Umrechnung vor der Messwertaufzeichnung passieren).

Das Handling mit Umsetzen in Real und Real-Vergleiche wirken sich bei der Geschwindigkeit nicht negativ aus?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich jetzt bei einer PT100-Messgröße mit z.B. 30°C vergleichen will, wie handhabt Ihr so etwas. Rechnet Ihr die 30°C in den entsprechenden Integer-Wert um oder gibt es dafür eine Automatik? Werden gar die Messgrößen in Reals umgewandelt?
In der Regel will man ja nicht nur messen, sondern auch wissen (also anzeigen), was man gemessen hat.
Nun können im Normallfall die meisten Bediener einer Anlage nichts mit dem Integerwert der Analogkarte anfangen.
Das macht es also erforderlich, den vom Analogeingang ermittelten Integerwert in die real gemessene Größe umzuwandeln - also das Skalieren, von dem alle meine Vorredner sprachen.

Die gemessene Größe möchtest Du gern mit irgendwelchen Werten (meist auch nicht nur ein Wert) vergleichen, die in der Regel auch als reale Größen vorliegen, weil sie z.B. so in der Visualisierung eingegeben werden.
Was erscheint Dir jetzt logischer/einfacher?
1. Den für die Anzeige bereits in eine reale Größe umgewandelten Wert mit den ebenfalls als reale Größen vorliegenden Vergleichswerten zu vergleichen?
oder
2. Alle Vergleichswerte noch zusätzlich in passende Integerwerte zu reskalieren, um sie dann mit dem ausgegebenen Integerwert der Analogkarte zu vergleichen?
 
@hucki
Wenn man sich klar macht, dass auch der Real nur eine Repräsentation des gemessenen Werts ist, ist keins von beiden "logisch".

Im ersten Fall ist der (um Größenordnungen) häufiger durchgeführte Vergleich wesentlich aufwendiger, weil jeder angefallene Messwert in den Real umgewandelt werden muss.
Im zweiten Fall muss die Umwandlung an zwei Stellen durchgeführt werden, nämlich beim Skalieren der Vergleichswerte und vor der Visualisierung.

Wenn ich
- sicher wäre, dass das Umwandeln in Reals mich soviel Rechnerzeit kostet, dass das Konzept nicht so, wie gedacht, funktioniert oder
- sicher wäre, dass in der Steuerung soviel Power steckt, dass das kein Problem darstellt,
würde ich solche Fragen nicht stellen.

Es handelt sich um knapp 20 analoge Eingänge, die zehnmal pro Sekunde überprüft werden sollen. Nicht alle davon erfordern eine solche Frequenz, ich möchte aber ungern den Sicherheits-Task aufsplitten.
 
Zurück
Oben