TIA Pepperl + Fuchs WCS3B-LS610 auslesen

Zuviel Werbung?
-> Hier kostenlos registrieren
Warum hat das Byte 127 mögliche Werte, wenn ein Byte eigentlich 256 mögliche Zustände hat?
Was, wenn man positive und negative Geschwindigkeit (Drehrichtung) anzeigen will?


Warum USINT 0..125? Der Wertebereich müsste doch größer sein oder ?
Ein Int ist ja auch viel größer (irgendwas mit 32.000)
Ein Int hat einen Wertebereich von -32.768 - +32.767.
Ein SInt hat einen Wertebereich von -127 - +128.

Sint => short Integer
USint => unsigned short integer (ohne Vorzeichen => 0 - 255)
 
@PN/DP Also ich habe es jetzt fertig aber war leider falsch :LOL:

Meine Lösung:
Code:
#"rGeschwindigkeit_m/s" := USINT_TO_REAL("PosReader".Geschwindigkeit) * 4.7;

Richtig wäre:
Code:
#"rGeschwindigkeit_m/s" := USINT_TO_REAL("PosReader".Geschwindigkeit) * 0.1; // * 0.1 m/s

Jedoch!
Code:
#"Geschwindigkeit_m/s" = 0.2m/s
Das erscheint mir sehr wenig, zumal ich hier Maschinen habe, die 12m/s machen. Daher habe ich das ganze so gemacht:
Code:
#"rGeschwindigkeit_m/s" := USINT_TO_REAL("PosReader".Geschwindigkeit) * 1;

Code:
#"Geschwindigkeit_m/s" = 2m/s

Liege ich damit falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum hat das Byte 127 mögliche Werte, wenn ein Byte eigentlich 256 mögliche Zustände hat?
(...)
Warum USINT 0..125? Der Wertebereich müsste doch größer sein oder ?
Das liegt nicht an der SPS, sondern Pepperl+Fuchs nutzt nur die Werte 0..125, 126 und 127

Achso, also ist ein USINT eben einfach ein Byte groß?
ja
Das ist ein Byte mit möglichen Werten 0..127 = nur positive Werte --> USINT (unsigned short Int, 1 Byte)
und
siehe TIA Hilfe "Übersicht über die gültigen Datentypen"


@CallHeTempi
Das liegt am Vorzeichen. Das MSB (MostSignificantBit, Höchstwertiges Bit, das Ding ganz links) zeigt mit 0 oder 1 an, ob ein positives oder negatives Vorzeichen existiert.
Bei USINT zeigt kein Bit ein Vorzeichen an. Das höchstwertige Bit ganz links hat die Wertigkeit 128
 
Zurück
Oben