Ein Bit im Doppelwort ändern (SCL)

M-Arens

Level-1
Beiträge
108
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe ein kleines Problem. Ich habe in einem Baustein einen eingangsparameter z.B. Var1 (DINT).
Nun möchte ich das, das erste Bit im Doppelwort geändert wird und in die Variable Var2 ausgegeben wird.
Also um es deutlich zu machen:

Eingang:
0000001111101000

Am Ausgang möchte ich dann gerne das haben:
1000001111101000

Wie kann ich das machen???
 
also Du willst das Linke Bit ändern also von 0->1 und 1->0 ?
Code:
Var2 := Var1 *-1;
;o)
 
Ich ziehe meine Aussage zurück und leg mich noch mal schlafen :oops:

UG hat recht ich hab Blödsinn geschrieben.
 
Code:
VAR
    Var1     :DINT;  
    Var1_    :DWORD;
    Var2     :DINT;
END_VAR

Var1_    := Var1;
Var2     := Var1_ XOR  2#1000_0000_0000_0000_0000_0000_0000_0000;
XOR geht nicht auf DINT deswegen musste ich eine Hilfsvariable benutzen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
VAR
    Var1     :DINT;  
    Var1_    :DWORD;
    Var2     :DINT;
END_VAR

Var1_    := Var1;
Var2     := Var1_ XOR  2#1000_0000_0000_0000_0000_0000_0000_0000;
XOR geht nicht auf DINT deswegen musste ich eine Hilfsvariable benutzen.

Das klappt leider nicht, ich bekomme bei dieser Anweisung
Var1_ := Var1;
immer die Fehlermeldung : Ungültiger Datentyp

Woran kann das liegen???
 
Das klappt leider nicht, ich bekomme bei dieser Anweisung
Var1_ := Var1;
immer die Fehlermeldung : Ungültiger Datentyp

Woran kann das liegen???

Ich habe es ja nicht mit Step7 getestet (da ich dafür keine Lizenz habe).
Aber da scheint Step7 wohl bei der Zuweisung von einem DINT auf ein DWORD schmerzen zu haben ;o(
Geht bei SCL vieleicht XOR auch auch auf DINT? Dann könnstest Du dir die Hilfsvariable sparen.
 
Code:
VAR
    Var1          :DINT;  
    Var1_dword    :DWORD;
    Var2          :DINT;
    Var2_dword    :DWORD;
END_VAR

Var1_dword := DINT_TO_DWORD(Var1);
Var2_dword := Var1_dword XOR  2#1000_0000_0000_0000_0000_0000_0000_0000;
Var2 := DWORD_TO_DINT(Var2_dword);
Jetzt aber!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
[FONT=Courier New]VAR    
   Var1                   :DINT;  
   Var1_Dword  at Var1    :DWORD;
   Var2                   :DINT;
   Var2_Dword at Var2     :DWORD;
 END_VAR  


 Var2_Dword := Var1_Dword XOR  2#1000_0000_0000_0000_0000_0000_0000_0000;[/FONT]
oder auch so.

Gruß
bs
 
Code:
[FONT=Courier New]VAR    
   Var1                   :DINT;  
   Var1_Dword  at Var1    :DWORD;
   Var2                   :DINT;
   Var2_Dword at Var2     :DWORD;
 END_VAR  


 Var2_Dword := Var1_Dword XOR  2#1000_0000_0000_0000_0000_0000_0000_0000;[/FONT]
oder auch so.

Gruß
bs

Das ging wiederum bei mir (CoDeSys) nicht ;o(
[Ich weis das es hier speziell um SCL ging und nicht um ST]

Die liebe IEC61131-3 und ihre Umsetzungen ;o)
 
Zurück
Oben