Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: allgem. C Script Frage mit "define" deklarierten Variablen

  1. #1
    Registriert seit
    07.06.2005
    Beiträge
    36
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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!
    Zitieren Zitieren allgem. C Script Frage mit "define" deklarierten Variablen  

  2. #2
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    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

  3. #3
    Unregistriert Gast

    Standard

    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"); //?????????????
    .
    .
    .

  4. #4
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard

    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");

  5. #5
    Registriert seit
    07.06.2005
    Beiträge
    36
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das probiere ich morgen mal aus!

    Danke!


    ... noch einen schönen Sonntag

  6. #6
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von HeizDuese

    Der Compiler macht darus:

    Code:
    wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2");
    Er macht daraus:
    [code]wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2";[/code
    Am Ende der #define-Zeile sollte kein Semikolon stehen

  7. #7
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Durch Die Smiles etwas schwer zu lesen, Zottel meint:

    Code:
    wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2";);
    uppss.... gar nicht gesehen. Da hast Du 100% Recht ! Das gehört da auch nicht hin!
    Geändert von HeizDuese (12.02.2006 um 20:52 Uhr)

  8. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Er macht daraus:
    Code:
    wert_hauptantrieb=GetTagWord("Maschine_1_stoerung_2" ; ) ;
    Am Ende der #define-Zeile sollte kein Semikolon stehen
    Sorry fürs doppelt posten, aber irgendwie kann ich meinen Beitrag nicht korrigieren...

  9. #9
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von dellamorte-dellamore
    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

  10. #10
    Unregistriert Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ihr habt mein Problem gelöst!

    Danke!

Ähnliche Themen

  1. Was versteht man unter einer "statischen Variablen"?
    Von unbekanntster im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 26.04.2016, 22:26
  2. Variablen eines Datenblocks mit Merkern "verknüpfen"?
    Von FrankTheTank im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.10.2011, 15:45
  3. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  4. Bool-Variablen "Sx.x" aus S7-200 auf MP277 darstellen
    Von ChristianVogel im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 28.11.2010, 18:08
  5. S5: FB mehrfach verwenden; "lokale Variablen"
    Von burner im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 15.01.2006, 19:38

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •