DTR - Ganzzahl-Wandlung to real - AWL

schneijo

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

folgendes Problem:
Wir bekommen über DP-Bus Ganzzahlwerte in signed- und unsigned- Interpretation zur Verfügung gestellt.
Diese Werte möchten wir alle in Real-Werte umwandeln.


zwei Beispiele:


L PEW 1780 //(signed)
L 100
/I
ITD
DTR
T "R1Daten".r71AG001_KuehlWasTemp


L PED 1792 //(unsigned)
L 10
/I
DTR
T "R1Daten".r71AG001_Gassummenzaehler


eine der beiden Interpretationen kann nicht funktionieren.
Der Befehl DTR wandelt eine 32bit Ganzzahl in Real.
Unseres Wissens nach wird die Ganzzahl als unsigned interpretiert.

Wie kann man bei dem DTR Befehl zwischen unsigned und signed unterscheiden?

Vielen Dank

mfg Johannes
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die S7 hat keine Operatoren für Ganzzahlen ohne Vorzeichen.
Wenn du z.B. über den Bus Werte hineinbekommst die ohne Vorzeichen sind, musst du sicherstellen dass wenn du mit diesem Wert rechnen willst (oder eben DTR) diese nicht größer als 2^(n-1) -1 werden. Ansonsten erhältst du eine falsche, also negative Zahl (Zweierkomplement).

Bei deinem Beispielen würde ich die Division erst nach der konvertierung des PEW/PED in die Real-Zahl machen. Denn mit deiner Ganzzahldivision schneidest du mehr oder weniger eine bzw. beim zweiten Beispiel zwei Dezimalstellen ab.
 
Hallo,
ich würde erst in REAL wandeln und dann teilen - das macht das Ergebnis dann auch genauer ;).

Also so :
Code:
L PEW 1780 //(signed)
ITD 
DTR 
L 100.0
/R
T "R1Daten".r71AG001_KuehlWasTemp
bzw. :
Code:
L PED 1792 //(unsigned)
DTR 
L 10.0
/R
T "R1Daten".r71AG001_Gassummenzaehler
... der Rest sollte dann schon passen ...

Gruß
Larry
 
Vielen Dank für eure Anmerkungen.
Ja richtig die Literatur sagt auch keine Operationen auf unsigned Ganzzahlen.

Auch vielen Dank für die anderen Anmerkungen ...
Die Beispiele waren etwas schlampig ...
Eigentlich ging es mir um die unsigned Operationen ...

Tausend Dank und ein schönes Wochenende wünscht euch

schneijo
 
Zurück
Oben