Onkel Dagobert
Level-3
- Beiträge
- 5.816
- Reaktionspunkte
- 1.444
-> Hier kostenlos registrieren
Hallo Leute,
ich bekomme von einem DP-Teilnehmer einen codierten Wert zurück.
Die Bits haben folgende Bedeutung:
Bit 0 == 2^-5 == 0,03125
Bit 1 == 2^-4 == 0,06250
Bit 2 == 2^-3 == 0,12500
Bit 3 == 2^-2 == 0,25000
Bit 4 == 2^-1 == 0,50000
Bit 5 == 2^-0 == 1,00000
Die Summe der Werte entspricht einem Prozentwert von 0 bis ca. 197 den ich verarbeiten muss.
Gelöst habe ich es erst einmal wie folgt:
Es muss doch aber auch etwas eleganter gehen. Hat jemand eine Idee?
Gruß, Onkel
ich bekomme von einem DP-Teilnehmer einen codierten Wert zurück.
Die Bits haben folgende Bedeutung:
Bit 0 == 2^-5 == 0,03125
Bit 1 == 2^-4 == 0,06250
Bit 2 == 2^-3 == 0,12500
Bit 3 == 2^-2 == 0,25000
Bit 4 == 2^-1 == 0,50000
Bit 5 == 2^-0 == 1,00000
Die Summe der Werte entspricht einem Prozentwert von 0 bis ca. 197 den ich verarbeiten muss.
Gelöst habe ich es erst einmal wie folgt:
Code:
//*** Motorstrom berechnen
L 2#0
//+++ Bit 0 == 2^-5
U #SF.IN.MOTORSTROM_BIT_0
SPBN M0
L 3125 // 0,03125
+D
//+++ Bit 1 == 2^-4
M0: U #SF.IN.MOTORSTROM_BIT_1
SPBN M1
L 6250 // 0,06250
+D
//+++ Bit 2 == 2^-3
M1: U #SF.IN.MOTORSTROM_BIT_2
SPBN M2
L 12500 // 0,12500
+D
//+++ Bit 3 == 2^-2
M2: U #SF.IN.MOTORSTROM_BIT_3
SPBN M3
L 25000 // 0,25000
+D
//+++ Bit 4 == 2^-1
M3: U #SF.IN.MOTORSTROM_BIT_4
SPBN M4
L L#50000 // 0,50000
+D
//+++ Bit 5 == 2^0
M4: U #SF.IN.MOTORSTROM_BIT_5
SPBN M5
L L#100000 // 1,00000
+D
M5: T #TEMP_DINT
Es muss doch aber auch etwas eleganter gehen. Hat jemand eine Idee?
Gruß, Onkel