Step 7 DWORD to REAL

basstscho

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

ich bekomme die Drehzahl aus einem COUNT-Modul. Diese wird als DWORD in einen DB geschrieben. Nun möchte ich diesen Wert gerne mit einem REAL Multiplizieren umd somit dann anschließend eine Geschwindigkeit in REAL zu bekommen. Doch wie kann ich dieses DWORD in FUP zu einem REAL konvertieren?

An Umwandlungsfunktionen hat einzig die BCD zu DI funktioniert. Den DI habe ich dann zu REAL umgerechnet. Leider gibtes bei der Umrechnung von BDC zu DI ab und an nicht nachvollziehbare Wertsprünge (bei gleichem BCD-Wert am Eingang). Welche muss ich eigentlich nehmen? Bzw. wie kann ich am einfachsten meine Berechnung durchführen?

Im Netz finde ich immer nur die Umrechnung von REAL zu DWORD über ROUND

Danke für eure Hilfe,
Johannes
 
Hallo,

zuerst das DWORD per MOVE-Box in eine temporäre DINT-Variable kopieren, dann die Wandlung von der temporären DINT-Variable zu REAL per DI_R-Box.

Für mathematische Berechnungen ist FUP ziemlich schlecht geeignet. SCL wäre einfacher.

Harald
 
An Umwandlungsfunktionen hat einzig die BCD zu DI funktioniert. Den DI habe ich dann zu REAL umgerechnet. Leider gibtes bei der Umrechnung von BDC zu DI ab und an nicht nachvollziehbare Wertsprünge (bei gleichem BCD-Wert am Eingang). Welche muss ich eigentlich nehmen? Bzw. wie kann ich am einfachsten meine Berechnung durchführen?

Bei der Verwendung von BTD muss man etwas aufpassen. Diese Anweisung interpretiert das höchstwertigste Nibble als Vorzeichen, d.h. mit wenn man damit direkt BCD in ein Dint wandeln will, geht das nur mit 7 Stellen und nicht mit 8. Ansonsten muss man erst beide Wörter mit BTD separat in ein Dint wandeln, und dann das HiDint * 10000 + LoDint rechnen.

Hatte letztens einen Wärmemengenzähler der Zählwerte in Form von 8-Stellen BCD-codiert ausgab, und da hatte ich diesen Fehler mit BTD eingebaut...
 
An Umwandlungsfunktionen hat einzig die BCD zu DI funktioniert. Den DI habe ich dann zu REAL umgerechnet.
Meinst Du mit "hat funktioniert", daß schon beim Programmieren der FUP-Editor nur bei der BCD_DI-Box nichts mehr rot bemängelt hat?

Leider gibtes bei der Umrechnung von BDC zu DI ab und an nicht nachvollziehbare Wertsprünge (bei gleichem BCD-Wert am Eingang).
"Wertsprünge" am Ausgang des BCD_DI bei gleichem BCD-Wert am Eingang - das kann nicht sein. BCD_DI erzeugt bei gleichem Eingangswert immer den gleichen Ausgangswert.
Erkläre doch mal etwas ausführlicher was Du meinst. Und zeige uns Dein Umwandlungsprogramm. Wird die Ausgangsvariable vielleicht später im Programm nochmal überschrieben, vielleicht durch Überlappung mit einer anderen Variable?

"Komische Wertsprünge" bei der Wandlung BCD_DI kann es geben, wenn der Eingangswert gar nicht im BCD-Format ist - wovon ich ausgehe. Was ist das für ein "COUNT-Modul" aus dem Du die Drehzahl bekommst?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

grundsätzlich vorweg: Mit MOVE und der anschließenden Wandlung von DINT zu REAL klappt es nun super.

@PN/DP: Das Verhalten bei BCD_DI war wie folgt: Das DWORD (was ich ja als BCD an den Baustein verkauft habe), schwankte durch den Prozess zwischen 23000 und 26000 (also 23-26 U/min). Bei vielen Werten (geschätzt ca. 90%) hat dann der gewandelte DI-Wert auch mit dem BCD (=DWORD aus der DB) überein gestimmt. Bei einigen ging der DI dann aber kurz auf Werte um die 6000 zurück+ Antworten (obwohl der BCD konstant im o.g. Bereich lag. Eine Überlagerung des Adressbereiches gab es nicht. Auf der SPS gab es ausschließlich einen OB 1 (+1 FC zum Auslesen und Schreiben der PED/PAB) mit meiner Umrechnung. Das Modul ist ein ET200S 1COUNT 24V (die genaue Typenbezeichnung habe ich gerade nicht zur Hand). Die SPS war ne 319F.

Beste Grüße,
Johannes
 
Zurück
Oben