B&R Datentypkonvertierung

gaiskasimir

Level-1
Beiträge
113
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde!

Über PV_xgetadr habe ich die Adresse einer Variablen ermittelt. Der Datentyp der Variablen kann unterschiedlich sein.

Den Wert möchte ich auf eine andere Variable vom Typ DINT (fest) kopieren.

Ein memcpy funktioniert bei positiven Werten.

Bei neg. Werten nicht - aus einer -1 (SINT) wird in der DINT eine 255. Warum verstehe ich - die Bedeutung der Bit's in einer Var sind mir
nicht fremd. Mit "access" komme ich auch nicht weiter.

Wie komme ich da einfach ohne tausend IF's 'raus?

Danke für einen Tip

Gaiskasimir
 
B&R kenne ich nicht, doch das Problem ist universell:
Du darfst nicht einfach eine Variable, welche weniger Platz belegt in eine Variable mit größerem Platzbedarf kopieren, sondern mußt den kleinen Datentyp vorher vorzeichenrichtig in den großen Datentyp konvertieren. (gibt es SINT_TO_DINT ?, bei Siemens-AWL wäre das z.B. die Anweisung ITD)
Alternativ lade den SINT in das höchste Byte des DINT und schiebe um 24 Bit "vorzeichenrichtig" nach rechts durch Hineinschieben des höchsten Bits in die 24 dazukommenden Bits. (bei Siemens-AWL wäre das die Anweisung SSD)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo PN/DP

Jein

Ja: das Problem ist universell.
Nein: wenn ich weiß welches Byte ich wohin kopiere, kann ich sehr wohl eine "kleinere" auf eine "größere" Variable kopieren.

Natürlich gibt es auch bei B&R umfangreiche Formatfunktionen.
Denen übergebe ich Values aber keine Adressen.
Und das ist mein Problem : der Eingangsdatentyp ist bei mir wie gesagt variabel
Mit mehreren If's bekomme das Problem gelöst. Vielleicht gibt es doch eine cleverere Lösung:wink:


Gruß

Gaiskasimir
 
Zurück
Oben