In WinCC Bit in Var auswerten

Move

Level-2
Beiträge
510
Reaktionspunkte
58
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich möchte in WinCC per C-Script mehrere 32-Bit Variablen auswerten, ob hier das Bit 0 = 1 ist, also eine oder Verknüpfung von DWord Variablen.
Ist min. ein Bit0 =1 soll eine binäre Variable = 1 sein.
Bei mir funzt es nur teilweise, ich denke im Script fehlt noch das entscheidene:confused::
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
#define TAG_1 "MAK3_B_BAUF" //32Bit
#define TAG_2 "MAK4_B_BAUF" //32Bit
#define TAG_3 "MAK4_B_AUTO" //binär
// WINCC:pICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:pICNAME_SECTION_END

if ((GetTagDWord (TAG_1)) & 0x1)
SetTagBit(TAG_3,1);
else
SetTagBit(TAG_3,0);
if ((GetTagDWord (TAG_2)) & 0x1)
SetTagBit(TAG_3,1);
else
SetTagBit(TAG_3,0);
return 0;
}
 
Bei deinem Code wird immer nur das Bit in TAG_2 ausgewertet.
Wenn ich das richtig verstanden habe meinst du es so:
Code:
if (((GetTagDWord (TAG_1)) & 0x1) || ((GetTagDWord (TAG_2)) & 0x1))
  SetTagBit(TAG_3,1);    
else
  SetTagBit(TAG_3,0);    

return 0;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

jep das funktioniert.
Nur was mache ich wenn ich z.B. 50Var auswerten will, das wird ja ein riesen Rattenschwanz, wie weit kann man das treiben oder geht das noch eleganter?

Gruß
Move
 
Zurück
Oben