-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem. Ich bekomme per Modbus ein WORD mit dem Wert 16#800A zurück. Das wäre also 2#1000 0000 0000 1010 (Bit 15 links, Bit 0 rechts). Bei Siemens ist das in INT -32758. Laut der TIA-Hilfe hat das Bit 0 den Wert 2^0, das Bit 1 den Wert 2^1 usw., bis Bit 14 (2^14). Das Bit 15 ist das Vorzeichenbit (0=positiv, 1=negativ).
So, wie ich das ganz klar verstehe, müsste die 8 vom 16#800A das Bit 15 sein, also das Vorzeichen "-", und das A ist das Bit 1 und 3, also 2+8 = 10. Insgesamt sollte das also den Wert -10 haben, das wäre auch der Wert, der korrekt ist. Aber warum interpretiert die SPS das 16#800A als -32758 ?
Ich bin schon kurz davor, die Berechnung erstmal selbst zu programmieren, wenn Siemens das nicht gebacken bekommt... Das hätte ich so gemacht, funktioniert auch so wie es eigentlich sollte:
Den Siemens-Hilfeartikel habe ich mal mit angehängt.
Frohe Ostern
Feiert heute schön
Ueribu
ich habe folgendes Problem. Ich bekomme per Modbus ein WORD mit dem Wert 16#800A zurück. Das wäre also 2#1000 0000 0000 1010 (Bit 15 links, Bit 0 rechts). Bei Siemens ist das in INT -32758. Laut der TIA-Hilfe hat das Bit 0 den Wert 2^0, das Bit 1 den Wert 2^1 usw., bis Bit 14 (2^14). Das Bit 15 ist das Vorzeichenbit (0=positiv, 1=negativ).
So, wie ich das ganz klar verstehe, müsste die 8 vom 16#800A das Bit 15 sein, also das Vorzeichen "-", und das A ist das Bit 1 und 3, also 2+8 = 10. Insgesamt sollte das also den Wert -10 haben, das wäre auch der Wert, der korrekt ist. Aber warum interpretiert die SPS das 16#800A als -32758 ?
Ich bin schon kurz davor, die Berechnung erstmal selbst zu programmieren, wenn Siemens das nicht gebacken bekommt... Das hätte ich so gemacht, funktioniert auch so wie es eigentlich sollte:
Code:
IF #iEmpfangswert < 0 THEN
#ikorrigierterWert := #iEmpfangswert* - 1; // wandle negative Zahl in positive Zahl um
#ikorrigierterWert.%X15 := TRUE; // Setze Vorzeichen Minus
ELSE
#ikorrigierterWert := #iEmpfangswert;
END_IF;
Den Siemens-Hilfeartikel habe ich mal mit angehängt.
Frohe Ostern
Feiert heute schön

Ueribu