# Dword zu Byte, oder ähnlich....



## Anonymous (10 November 2005)

Hallo zusammen,

ich bin gerade beim Programmieren mit Xsoft (Codesys) auf nen ganz grosses Problem für mich gestossen. Aber ich hoffe mir kann da jemand helfen.
Ich möchte mit nem Touch Panel Werte (Zeiten im Milisekunden Bereich bis zu 10000ms sprich 10s) an die Steuerung und von dort aus über Can Open an das Endgerät. Der Baustein der dies erledigen soll hat aber nur vier Eingänge (jeweils 1Byte).
Jetzt wäre meine Frage, wie kann ich UINT, oder auch Word, oder etwas ähnliches in kleine Happen aufsplitten oder sogar direkt umwandeln um diese auf den Baustein zu legen.

Ich hoffe mir kann da jemand möglichst noch heute nen Tipp geben. Würde da nämlich gerne morgen früh direkt weiterkommen

Schöne Grüsse,
Ralph!


----------



## Oberchefe (10 November 2005)

Ich hoffe das funktíoniert auch in Deiner Codesysvariante:


```
VAR_INPUT
	Val: DWORD; (* Wert *)
	Pos: BYTE;	(* Stelle (1-4) in Val: 16#44332211 *)
END_VAR
VAR
END_VAR

CASE POS OF
1..4:
	SPLIT_DWORD_TO_BYTE:=DWORD_TO_BYTE(SHR(Val,POS*8-8) AND 16#ff);
ELSE
	SPLIT_DWORD_TO_BYTE:=0;
END_CASE
```


----------



## Werner29 (11 November 2005)

folgendes lässt sich in CoDeSys auch machen.


```
VAR
      dw_to_split: DWORD;
      pdw : POINTER TO DWORD;
      pbyt : POINTER TO ARRAY [0..3] OF BYTE;
END_VAR

pdw := ADR(dw_to_split);
pbyt := pdw;
```
 
über den byte-pointer lassen sich jetzt die bytes direkt im DWORD manipulieren, oder rauskopieren oder wie auch immer.

Bernhard


----------

