PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 32Bit Datentyp auf 2x16Bit abbilden



Itus
22.08.2008, 14:34
Hallo Zusammen

Ich hab das folgendes Problem:
Mein Servoregler hat im Parameterkanal 4x16Bit zum Beschreiben.
Ich hab nun Variablen von 16Bit und auch von 32 Bit welche abgefüllt werden müssen.
16Bit auf 16Bit ist kein Problem.
Wie aber bilde ich einen 32Bit Wert auf 2 16Bit Register ab?

Danke für die Unterstützung
Itus

Cerberus
22.08.2008, 14:57
Mit welchem System arbeitest du??

Itus
22.08.2008, 15:10
Ich setzt einen CX1020 von Beckhoff ein.
Bus ist in diesem Fall - Profibus.

hugo
22.08.2008, 17:20
du hast verschiedene möglichkeiten:

1. wenn es sich um einen dint oder dword handelt
16bit_var1 := dword_to_word(32bit_var);
16bit_var2 := dword_to_word(shr(32bit_var,16));

2. bei real kannst du das nicht anwenden, dort musst du mit pointer
zugreifen, was auch bei allen anderen datentypen funktionieren würde
32bit_var_adr := adr(32bit_var); (* 32bit_var_adr ist vom typ dword *)
16bit_var1 := 32bit_var_adr^; (* liest dcie unteren 16 bit aus *)
32bit_var_adr := 32bit_var_adr + 2;
16bit_var2 := 32bit_var_adr^;

weitere beispiele findest du in der open source library uoscat.lib unter www.oscat.de

Itus
25.08.2008, 06:55
Danke hugo

werde dies so versuchen.

Gruss Itus