-> Hier kostenlos registrieren
Hallo,
als "C Luser" brauche ich euch mal! Wie toggle ich ne' Bit in einem Byte unter WinCC 7.0?
als "C Luser" brauche ich euch mal! Wie toggle ich ne' Bit in einem Byte unter WinCC 7.0?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Hallo,
als "C Luser" brauche ich euch mal! Wie toggle ich ne' Bit in einem Byte unter WinCC 7.0?
if x then
x=false
else
x=true
end if
if Gettag("x") then
Settag("x",0)
else
Settag("x",1)
end if
Hi,
ich darf aber nur ein Bit des Bytes ändern. Der Rest muss unverändert bleiben!
Das soll mit der Maskierung von 2 Bytes gehen
(ich habe leider die WinCC Bibliothek nicht dabei)
x=dein Byte, nach dem Maskieren in der SPS
y=originales Byte vor dem Maskieren in der SPS
if (Gettag("x")==1) then //Abrage ob Bit0=1
Settag("y", Gettag("y")-1)
else
Settag("y", Gettag("y")+1)
end if
if (Gettag("x")==2) then //Abrage ob Bit1=1
Settag("y", Gettag("y")-2)
else
Settag("y", Gettag("y")+2)
end if
if (Gettag("x")==4) then //Abrage ob Bit2=1
Settag("y", Gettag("y")-4)
else
Settag("y", Gettag("y")+4)
end if
.
.
.
if (Gettag("x")==-128) then //Abrage ob Bit7=1
Settag("y", Gettag("y")+128)
else
Settag("y", Gettag("y")-128)
end if
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
'Bit 0 toggeln
Dim Variable
Set Variable = HMIRuntime.Tags("Variable_Byte")
If Variable.Read And 2^0 Then
Variable.Write(Variable.Read And (Not 2^0))
Else
Variable.Write(Variable.Read Or 2^0)
End If
End Sub
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
'Bit 1 toggeln
Dim Variable
Set Variable = HMIRuntime.Tags("Variable_Byte")
If Variable.Read And 2^1 Then
Variable.Write(Variable.Read And (Not 2^1))
Else
Variable.Write(Variable.Read Or 2^1)
End If
End Sub
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
'Bit 2 toggeln
Dim Variable
Set Variable = HMIRuntime.Tags("Variable_Byte")
If Variable.Read And 2^2 Then
Variable.Write(Variable.Read And (Not 2^2))
Else
Variable.Write(Variable.Read Or 2^2)
End If
End Sub
Hallo Kollege,
das geht mittels exclusive und bzw. oder, z.B.
--------------------------------------------------------
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// variablen deklaration
unsigned setzen = 0x00000001;
unsigned ruecksetzen = 0x00000000;
unsigned var1;
unsigned var1;
//Rückgabe-Typ :BYTE
var1=GetTagByte("Variable_BYTExx"); // Variablenwert holen..
var2 = var1; // Wert intern speichern
// schauen, was macht das Bit gerade..
var1 = var1 & 0x01; // passendes Bit ausmaskieren, z.B. hier Bit 0..
if (var1 == 1)
var1= var2 & ruecksetzen; // Bit reset
else var1= var2 | setzen; // Bit setzen
// Variable zurückschreiben:
SetTagByte("Variable_BYTExx",var1); //Rückgabe-Typ :BOOL
return 0;
-----------------------------------------
Gruss: V.
variablen deklaration
unsigned setzen = [COLOR=red]0x11111111;
[/COLOR]unsigned ruecksetzen = [COLOR=red]0x11111110;
[/COLOR]unsigned var1;
unsigned var2;
//Rückgabe-Typ :BYTE
var1=GetTagByte("Variable_BYTExx"); // Variablenwert holen..
var2 = var1; // Wert zwischenspeichern
// schauen, was macht das Bit gerade..
var1 = var1 & 0x01; // passendes Bit ausmaskieren, z.B. hier Bit 0..
if (var1 == 1)
var1= var2 & ruecksetzen; // Bit reset
else var1= [COLOR=red]var2 & setzen;[/COLOR] // Bit setzen
// Variable zurückschreiben:
SetTagByte("Variable_BYTExx",var1); //Rückgabe-Typ :BOOL
Ist 2^0 vergleichbar mit der S7-Anweisung 2#1?
Hi,
@Farinin: ja, du hast Recht, war zu müde gestern..
V.
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen