Berechnung und Übertragung der Analogwerte eines Frequenzumformers

Martin2XK

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

ich arbeite mit dem TIA Portal V17, einer S7-1500 CPU und als Visu WinCC von Siemens. Mein Programm steuert eine kleine Verpackungsanlage für Süßigkeiten ...
Was mich interessiert, ... ist eher allgemein zu sehen. Das Programm läuft problemlos und es wurde vor einigen Jahren erstellt und nur geringfügig geändert. Analogwerte, die bspw von einem Frequenzumformer kommen, werden umgewandelt und mittels mathematischen Formeln an bestimmte Situationen angepasst. Der Wert der vom Umformer kommt hat (so mein Verständnis) ein einfaches Bitmuster, welches als Word oder als Int interpretiert werden kann. Wäre es falsch, wenn ich für die weitere Berechnung eine Konvertierung von Int zu Real mache? Ich möchte bestimmte Werte aufs Komma genau berechnen. Bei uns im Programm wird nur Int verwendet, eine genaue Berechnung ist aber trotzdem möglich ... wie das genau gemacht wird hab ich noch nicht zu 100% durchschaut. Wenn ich aber die Berechnung neu machen würde, dann würde ich INT zu REAL konvertieren .. Wäre das falsch? Wenn ja warum?
 
Moin Martin2XK,

was heißt "aufs Komma genau"? Wofür benötigst Du Nachkommastellen?
Grundsätzlich ist die Konvertierung nicht falsch.
Man muss ein paar Dinge bedenken:
- je nach Steuerung/Rechner/Programmiersprache hat ein INT 16 Bit und ein REAL 32 Bit. Du brauchst also mehr Speicher.
- REAL-Werte sind nicht genau. Das ist ein Trugschluss. Manche ganzzahligen Werte können nicht dargestellt werden. Da gibt es immer eine Abweichung; also nicht auf Gleich (=) vergleichen!
- Wie groß sind die Werte? Vielleicht einen INT nicht als -32648 - +32647, sondern als -3264.8 - +3264.7 interpretieren?

Gib mal ein paar mehr Infos dazu, was für Werte Du gerne in was für einem Format (Anzahl Nachkommastellen) darstellen möchtest und wie groß so ein Wert werden kann.

VG
MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es geht z B um die Berechnung des Mittelwertes an Schokotäfelchen pro Stunde. Wieviele pro Stunde durchschnittlich verpackt werden in Bezug zur Anlagenleistung. Das ist nicht genau 2000, sondern vielleicht 2000,5. In den ersten 2 Stunden werden 4001 Tafeln verpackt, pro Stunde dann 2000,5 (so zeigt es das WinCC auch an)
 
Moin Martin2XK,

also eine Nachkommastelle. Wenn es nicht mehr als 3200 Schokotäfelchen werden können würde ein INT ausreichen.

Aber mal ehrlich: 2000 oder 2000,5... Wen interessiert das? Die Absolute Anzahl und der Ausschuss sind sicherlich interessant. Aber der Durchschnitt bis auf die erste Nachkommastelle?

Der Lehrer bei uns in der Technikerschule hat immer gesagt: "auf drei tragende Stellen runden. Alles was "genauer" ist, sind Meßfehler."

VG
MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Obs genau ist oder nicht weiss ich natürlich nicht. Ich meine die Zahl die bei uns am Touch Bildschirm steht. Die 0,5 würde man vielleicht bei 1000 Stunden merken, wenn man sie unterschlägt. Es ist schon ewig bei uns im S7 Programm drin, da änder ich nix mehr. Aber danke für die Antworten. Real ist also nicht unbedingt genau, besser man arbeitet mit Int und wandelt vielleicht irgendwie übers WinCC den Wert in Real um. Z B im TIA mit cm rechnen und aufm HMI als m anzeigen (cm ist ein Bestandteil einer Formel). 2000 cm = 20.0 m (Umrechungsfaktor 100 für cm in m)

Ein zweites Beispiel sind die Abmessungen der Tafeln: als Int 123 als Real 12.3 cm
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei INT muss man vorher überlegen, ob der Rechenweg im möglichen Eingangsdaten-Wertebereich immer ohne Über-/Unterläufe funktioniert. Bei REAL braucht man nicht vorher nachdenken - das wird in der Regel immer ausreichen (allerdings ungenauer) .... Es sei denn, man will z.B. Werte kumulieren (z.B. Verbrauchszähler), da muss man halt wissen, dass man zu 1234567.0 nicht 0.01 dazuaddieren kann, da ist der Rechenweg über DINT genauer bzw. funktioniert nur der.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
INT sind Ganzzahlen. Die heißen auch "Festkommazahlen", weil man sich da an einer festen Position ein Komma denken und vereinbaren kann. Das wird aber zum Speicherplatz sparen zwischendurch nicht mit abgespeichert. Nur der Empfänger des Wertes muss durch Vereinbarung wissen, an welcher Stelle das Komma sitzen muss.
REAL-Zahlen sind "Gleitkommazahlen", weil da das Komma an (fast) beliebiger Position sein kann und die Position des Komma (Exponent) wird automatisch "gleitend" mit abgespeichert. Dadurch gehen aber Bits vom Speicherplatz verloren, die nicht mehr für die Auflösung/Genauigkeit des Zahlenwertes (Mantisse) zur Verfügung stehen. So hat ein REAL nur eine typische Auflöung von ca 7 Stellen. Ein DINT hat 9 (und eine "halbe") Stellen Auflösung.
 
Zuletzt bearbeitet:
Zurück
Oben