Achtung: bei Analogwerten muss man das Rechtsschieben (meistens) unter Beachtung des Vorzeichens machen. Deshalb besser mit Ganzzahl-Division machen oder darauf achten, dass vorzeichenrichtiges Schieben verwendet wird. Nach IEC 1131-3 gibt es allerdings kein vorzeichenrichtiges Rechtsschieben (SHR) - es werden immer Nullen eingeschoben.
Ich komme nochmal auf dein Tipp zurück. Es stimmt, es gibt kein "vorzeichenrichtiges Rechtsschieben". Deshalb habe ich nach dem Schieben
#tRawWord := SHR(IN := #In, N := 3)
die drei neuen linken Bits mit dem original-Bit #In.%X15 definiert.
#tRawWord.%X15 := #tRawWord.%X14 := #tRawWord.%X13 := #In.%X15;
Dein Vorschlag mit der Ganzzahl-Division fand ich daher ganz sympathisch, um mir den händischen Vorzeichen-Manipulationsschritt zu sparen. Nun konnte ich das endlich mal testen und vergleichen.
Die Division anstatt Schieben hat aber auch ein NACHTEIL. Sie macht einen kleinen Fehler, wenn eine negative Zahl eins der Bits gesetzt hat, die rausgeschoben werden sollen. Denn dieses Bit bleibt "hängen" und fliegt nicht raus und verfälscht das Ergebnis um 1. In meinem Beispiel, bei einer negativen anstehen Zahl, ist das Statusbit #In.%X1 = FALSE und das Statusbit #In.%X0 gleichzeitig TRUE. Schiebe ich nach rechts um eins, fliegt das TRUE raus, so soll es auch sein. Dividiere ich allerdings durch 2, schiebt zwar fast alles nach rechts, aber das #In.%X0 bleibt auf TRUE!!! Das Ergebnis ist also um den Wert dieses Bits, also um 1, falsch.
Ist klar was ich meine? Wer es nicht glaubt, kann es auch mit dem Windows-Rechner in Programmieransicht, und dort im Bitmodus, überprüfen. Der hat nämlich das gleiche Verhalten, sowohl beim Schieben ( >>, 1, = klicken um eins nach rechts zu schieben) als auch beim Dividieren (im Bitmodus mit Numpad bedienbar).
Resume: Ich bleibe lieber beim Schieben und manueller Vorzeichen-Korrektur.