C-Aktion in WinCC

netx1

Level-1
Beiträge
91
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Mit WinCC habe ich noch nicht viel zu tun gehabt, und ich habe folgendes Problem.

Mit einem Button in WinCC soll ein Bild gewechselt werden und mehrere Bits gesetzt und resetet werden.

Den Bildwechsel habe ich nun schon mit dem Dynamic-Wizard erstellen können. Der C-Code dazu sieht so aus:

Code:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
 // WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
#define PIC_0 "Start"
#define PIC_1 "@normalbetrieb.Pdl"
// WINCC:PICNAME_SECTION_END

SetPictureName(PIC_0,"Bildfenster4",PIC_1);

}
Wie muss ich diesen Code nun editieren um z.B. die Variable "normalbetrieb" zu setzen und die Variable "tippbetrieb" zu reseten?

Danke für eure Hilfe.

PS: Bevor ichs vergesse, ich verwende WinCC 6
 
Zuletzt bearbeitet:
Kleiner Tip:
Es gibt auch einen Wizard für Bit setzen und rücksetzen.
Einfach mal ausführen und den Code mit dem Code für den Bildwechsel in ein Script schreiben
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das habe ich auch schon versucht. Aber der erzeugte Code fürs setzen der Variable "normalbetrieb" sieht so aus.

Code:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
 // WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
#define TAG_0 "normalbetrieb"
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END


}
Hier wird zwar "normalbetrieb" als TAG_0 definiert, aber es wird nichts mit dieser Variable getan.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
SO sieht bei mir (V6.2) Bit setzen aus:

Code:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
 // WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
#define TAG_0 "Taste_1-16_S1"
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

DWORD dwHelp1,dwHelp2;

dwHelp1=GetTagDWordWait(TAG_0);
dwHelp2=dwHelp1|134217728;
SetTagDWordWait(TAG_0,dwHelp2);

}
 
@netx1
So wie bei Ralle sieht es aus, wenn der Wizard richtig durchlaufen worden ist:rolleyes:
Dann setzt man ein oder mehrere Bits in einem Word
 
Ist mir auch aufgefallen, dass da ein Bit eines Words gesetzt wird. THX

PS: Warum wird das eigentlich so umständlich gemacht?
Toll wär wenn man einfach "Variable=1;" schreiben könnte (wie im richtigen C).
 
Zurück
Oben