Dezimalzahlen addieren, subtrahieren, vergleichen

mredel

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

ich beschäftige mich gerade Arbeitsbedingt mit der PC WORX Familie, ich bekomme über eine Waage ein Gewicht rein, welchen schon umgerechnet wird.
Gerne möchte ich von diesem Gewicht ca. 400 - 500g abziehen, könnte Ihr mir vielleicht helfen und ein paar Tipps geben, wie man es in AWL bzw. KOP'
berechnen kann?!

VG
Michael
 
Mit "ca." lässt sich in AWL und KOP nicht wirklich gut rechnen. ;)
In welchem DatenTyp bekommst Du denn das Gewicht angeliefert? DINT, INT, REAL, … ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank erstmal für die schnelle Antwort.

das Gewicht wird als INT mit einem Faktor "vergrößert" und dann als REAL_TO_INT ausgegeben.

Ich bin dabei, die Arbeit des Kollegen gerade nachzuvollziehen und Bezüglich des Gewichts sowie einer Zeit abfrage was zu implementieren.
 
das Gewicht wird als INT mit einem Faktor "vergrößert" und dann als REAL_TO_INT ausgegeben.
Das klingt ziemlich verwirrend. "Kommt rein" als INT, wird mit einem Faktor (ebenfalls INT?) vergrössert und dann, obwohl es INT ist, dann noch von REAL in INT umgewandelt???
Da passt doch etwas nicht!
In welchem WerteBereich kann das Gewicht denn liegen? Und die Einheit in mg, g, kg, t, … ? Ich vermute mal g oder kg, wenn Du ca. 400 g subtrahieren willst.
Von Phoenix-AWL (kenne nur Siemens-AWL) bzw. -KOP habe ich Null Ahnung - ich hoffe, hier meldet sich mal jemand zu Wort, der sich damit auskennt. ;)

Gruss, Heinileini
 
Zuletzt bearbeitet:
In welchem WerteBereich kann das Gewicht denn liegen? Und die Einheit in mg, g, kg, t, … ? Ich vermute mal g oder kg, wenn Du ca. 400 g subtrahieren willst.

Es wird in Kg ausgegeben, ich habe früher auch mit Siemens durch meine Ausbildung gearbeitet und bin jetzt am arbeiten mit Phönix Contact.
Die Umstellung ist noch etwas schwierig für mich
 
if LEN(StrValue) > INT#0 then
GewichtswertDecimal := STRING_TO_REAL(StrValue);
GewichtswertDecimal := GewichtswertDecimal * ValueMultiplier;
Gewichtswert := REAL_TO_INT(GewichtswertDecimal);
end_if;
 
Moin mredel,


Zunächst einmal scheint der Gewichtswert als String vorzuliegen.

if LEN(StrValue) > INT#0 then

Also wenn der String eine Länge > 0 hat,

GewichtswertDecimal := STRING_TO_REAL(StrValue);

dann aus dem String ein REAL-Wert machen,

GewichtswertDecimal := GewichtswertDecimal * ValueMultiplier;

den REAL-Wert faktorisieren und

Gewichtswert := REAL_TO_INT(GewichtswertDecimal);
end_if;

als INT-Wert ausgeben (Wandlung von REAL nach INT mit entsprechender Rundung).

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

die Einheit von REAL und INT müsste gleich sein. Sollte die Einheit [kg] sein, wäre nur interessant, ob die 400g die Rundung beeinflussen (nächst höhere kg-Stelle).

Welche Einheit der Wert des INT hat ist nur dafür interessant, dass man weiß welchen REAL-Wert man hinzufügen muss:
400g = 0.4 (in [kg])
400g = 4.0 (in [1/10 kg])
400g = ...

die 400g (in entsprechender Auflösung) am besten auf den REAL-Wert draufrechnen.


VG

MFreiberger
 
Zuletzt bearbeitet:
Es wird in Kg ausgegeben, ich habe früher auch mit Siemens durch meine Ausbildung gearbeitet und bin jetzt am arbeiten mit Phönix Contact.
Ja, aber unser Problem ist doch nicht Hersteller-abhängig!? Jedenfalls nicht davon abhängig, ob Du in Siemens oder Phoenix rechnest. Sehr wohl aber anhängig vom Hersteller der Waage.
Du musst uns leider verraten, wie der ZahlenSalat, der von der Waage kommt, zu verstehen ist.
Und auch, ob Dein Ergebnis-INT tatsächlich die Einheit kg oder kg/10 oder kg/100 hat.
Auf jeden Fall sehe ich noch nicht, wozu irgendetwas in REAL gerechnet werden muss.
Wandle den String in DINT, multipliziere mit Deinem Faktor (=100?) in DINT, addiere Deine Tara in DINT (ob das nun 400 oder 40 oder 4 sind - das können wir mit Deinen Angaben nicht sagen).
Und, wenn das Ergebnis als INT darstellbar ist, dann kannst Du noch DINT in INT wandeln.
 
Vielen Dank für die ganzen Tipps und Hinweise, Empfehlungen.

Ich bin soweit durch und das Thema kann von meiner Seite aus geschlossen werden,
außer andere haben allgemein zu diesem Thema fragen, diese können dann gerne
hier weiter gestellt werden

Grüße
Michael
 
Zurück
Oben