allgem. C Script Frage mit "define" deklarierten Variablen

Beiträge
36
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte ein C Scipt welches ich bei vielen maschinen brauche so universell wie möglich machen.
Dafür möchte ich die Variablen über "#define" definieren, damit ich bei den anderen Maschinen nur den obigen Teil Define-Abschitt anpassen muss.

Hier mal ein Beispiel meines Vorhabens:

Code:
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
#define stoerung_1 "Maschine_1_stoerung_1";
#define stoerung_2 "Maschine_1_stoerung_2";
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
 
//Typendefinition
short int  wert_kurze_dose;
short int  wert_hauptantrieb;
unsigned int satzanwahl;

// Zuweisung
wert_kurze_dose=GetTagWord("stoerung_1");   //hier soll der Wert aus der obig definierten Variablen gelesen werden  
wert_hauptantrieb=GetTagWord("stoerung_2");   //hier soll der Wert aus der obig definierten Variablen gelesen werden  

if (satzanwahl==12)
{
wert_kurze_dose++;
SetTagWord("stoerung_1",wert_kurze_dose); //hier soll der Wert in die obig definierten Variablen geschrieben werden  
}
if (satzanwahl==14)
{
wert_hauptantrieb++;
SetTagWord("stoerung_2",wert_hauptantrieb); //hier soll der Wert in die obig definierten Variablen geschrieben werden  
}
 
return 0; 
}

Leider funktioniert das so nicht.
Vielleicht kann mir jemand den Fehler zeigen!

Merci!
 
Hallo,

hab zur Zeit kein WinCC auf dem Rechner. Aber du musst in der TAG-Section die Namen deklarieren und die Variablen zuordnen. Dasnn arbeitest du nur noch mit den Namen.

Erstelle einfach mal etwas mit dem Dynamikdialog und öffne es dann als C-Aktion. Dann siehste was ich gemeint hab.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke,

muss ich dann die oben deklarierte Variable auch in "" schreiben
also so:


#define stoerung_1 "Maschine_1_stoerung_1";
.
.
.
wert_kurze_dose=GetTagWord("stoerung_1"); //?????????????
.
.
.
 
Nein, das scheint auch der Fehler zu sein. Das #define arbeitet wie ein Makro. Die Hochkommas sollte meines Erachtens wegbleiben, z.B.:
Code:
wert_hauptantrieb=GetTagWord(stoerung_2);
sonst wird stoerung_2 als Variable gedeutet und das ist sie ja nicht.

Der Compiler macht darus:

Code:
wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2");
 
Durch Die Smiles etwas schwer zu lesen, Zottel meint:

Code:
wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2[B]";[/B]);
uppss.... gar nicht gesehen. Da hast Du 100% Recht ! Das gehört da auch nicht hin!
 
Zuletzt bearbeitet:
Er macht daraus:
Code:
wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2" ; ) ;
Am Ende der #define-Zeile sollte kein Semikolon stehen :D
Sorry fürs doppelt posten, aber irgendwie kann ich meinen Beitrag nicht korrigieren...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dellamorte-dellamore schrieb:
Ich möchte ein C Scipt welches ich bei vielen maschinen brauche so universell wie möglich machen.
Dafür möchte ich die Variablen über "#define" definieren, damit ich bei den anderen Maschinen nur den obigen Teil Define-Abschitt anpassen muss.

Hier mal ein Beispiel meines Vorhabens:

Code:
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
#define stoerung_1 "Maschine_1_stoerung_1";
#define stoerung_2 "Maschine_1_stoerung_2";
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
 
//Typendefinition
short int  wert_kurze_dose;
short int  wert_hauptantrieb;
unsigned int satzanwahl;

// Zuweisung
wert_kurze_dose=GetTagWord("stoerung_1");   //hier soll der Wert aus der obig definierten Variablen gelesen werden  
wert_hauptantrieb=GetTagWord("stoerung_2");   //hier soll der Wert aus der obig definierten Variablen gelesen werden  

if (satzanwahl==12)
{
wert_kurze_dose++;
SetTagWord("stoerung_1",wert_kurze_dose); //hier soll der Wert in die obig definierten Variablen geschrieben werden  
}
if (satzanwahl==14)
{
wert_hauptantrieb++;
SetTagWord("stoerung_2",wert_hauptantrieb); //hier soll der Wert in die obig definierten Variablen geschrieben werden  
}
 
return 0; 
}

Leider funktioniert das so nicht.
Vielleicht kann mir jemand den Fehler zeigen!

Merci!



Ich würde es mal so probieren:

#define stoerung_1 "Maschine_1_stoerung_1"
wert_kurze_dose=GetTagWord(stoerung_1); //hier soll der Wert aus der obig definierten Variablen gelesen werden
 
Zurück
Oben