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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Wincc Bit Togeln

  1. #1
    Registriert seit
    29.06.2015
    Beiträge
    30
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Ich möchte in WinCC 7.3 mit einem Button ein Bit wechseln.

    Leider komme ich damit überhaupt nicht klar.

    Kann mir hier jemand helfen?

    Habe hier schon mal einen Beitrag gefunden, aber der hilft bei mir nicht.


    Danke schon mal
    Zitieren Zitieren Wincc Bit Togeln  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Lang...
    Code:
    #define TAG_1 "MyBit"
    
    IF GetTagBit(TAG_1)
    {
    	SetTagBit(TAG_1, FALSE);
    }
    ELSE
    {
    	SetTagBit(TAG_1, TRUE);
    }
    Kurz...
    Code:
    SetTagBit(TAG_1, !GetTagBit(TAG_1));
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Timbo ist offline Benutzer
    Themenstarter
    Registriert seit
    29.06.2015
    Beiträge
    30
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK. und da wo du hin geschrieben hast "MyBit" trage ich die variable ein oder wie?

    wo deklariere ich die Variable bei der kurzen Fassung?

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Zitat Zitat von Timbo Beitrag anzeigen
    OK. und da wo du hin geschrieben hast "MyBit" trage ich die variable ein oder wie?
    JA. Die volle Version ist aber...
    Code:
    // WINCC:TAGNAME_SECTION_START
        #define TAG_1 "MeineVariable1"
        #define TAG_2 "MeineVariable2"
        #define EinAndererNameAlsTAG_irgendwas "MeineVariable3"
    // WINCC:TAGNAME_SECTION_END
    Die Zeichen "// WINCC:TAGNAME_SECTION_START" etc. bekommst du automatisch eingefügt wenn du ein neue C-Aktion erstellst.
    Dazwischen, wie der Name "TAG-NAME-SECTION" schon sagt, musst du die WinCC-Variablen (die aus dem WinCC-Explorer) deklarieren.

    Wenn du die Variablen so wie oben deklariert hast, greift zum Beispiel GetTagBit(TAG_1) auf die WinCC-Variable "MeineVariable1" zu.
    Der Compiler macht beim Übersetzen nichts anderes als GetTagBit("MeineVariable1") daraus, man könnte also auch gleich selber GetTagBit("MeineVariable1") schreiben.
    #define definiert mit "TAG_1" nur einen Platzhalter für "MeineVariable1". Google "C #define" für mehr Infos.

    Warum die Mehrarbeit?
    WinCC-Funktionen wie Querverweise (Cross Referencing) und Umverdrahten erkennen wenn WinCC-Tags in einem Skript innerhalb von "WINCC:TAGNAME_SECTION_START/END"
    so verwendet werden. Wenn man es so macht, kann man bei Objekten die Funktion "Rechtsklick/Umverdrahten" verwenden und dann werden genau diese WinCC-Variablen für einen möglichen Austausch angeboten.

    Ich würde dir die Handbücher "WINCC GETTING STARTED" und "WINCC SCRIPTING REFERENCE" empfehlen.

    Zitat Zitat von Timbo Beitrag anzeigen
    wo deklariere ich die Variable bei der kurzen Fassung?
    Selbes wie vorher, ich war nur zu faul das "#define TAG_1" nochmal zu tippen.
    Und auch hier gehört es zwischen "// WINCC:TAGNAME_SECTION_START" und // WINCC:TAGNAME_SECTION_END"
    Geändert von RONIN (17.02.2016 um 19:12 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    Timbo (17.02.2016)

  6. #5
    Timbo ist offline Benutzer
    Themenstarter
    Registriert seit
    29.06.2015
    Beiträge
    30
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich habe jetzt mal ein paar Sachen ausprobiert. Bekomme einfach keine bit`s gewechselt. Auf den weg mit den bits bin ich auch nur gekommen weil es bei einem byte nicht geklappt hat. Hier meine Meldungen. das mit dem wb funktioniert leider auch nicht, obwohl hier wenigstens keine fehler beim kompelieren kommen.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Timbo (18.02.2016 um 11:45 Uhr)

  7. #6
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Dein Code sieht auch nun mal nicht so aus wie in meinem Beispiel in Beitrag #3.

    Nur der "#define"-Teil kommt zwischen // WINCC:TAGNAME_SECTION_START" und // WINCC:TAGNAME_SECTION_END"

    Der Code beginnt dann nach "// WINCC:PICNAME_SECTION_END"

    Des erste GetTagBit gehört in die selbe Zeile wie das "if".
    Aus den Set/GetTagBit gehören die Anführungszeichen bei "Tag" raus.
    Anführungszeichen markieren Tag als String-Zeichenkette und nicht als Referenz auf das was du mit #define definiert hast.

    Es könnte sein dass du TRUE und FALSE in Blockbuchstaben schreiben musst, ich weiß jetzt nicht was der Compiler frisst.
    Du kannst auch einfach 0 und 1 schreiben.
    Geändert von RONIN (18.02.2016 um 11:50 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  8. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Oh, an Screenshot 2 sehe ich das MB1150 ein Byte ist...
    Die Info hätten wir am Anfang gebraucht...

    Script-Nummer 1 ist für BOOL-Datentypen.

    Ein Variante für Byte müsste ungefähr so aussehen
    Code:
    #define TAG     "MB1150"
    #define BitNum   2
    
    
    //Invertiere Bit in Byte
    SetTagByte(TAG, GetTagByte(TAG)^(1<<BitNum));
    Script 2 war also gar nicht so falsch wenn man von den Systax-Fehlern (siehe ein Beitrag vorher) absieht.

    Script 3 müsste eigentlich gehen, aber einmal schreibst du "MB1150" dann wieder "mb1150".
    Geändert von RONIN (18.02.2016 um 12:09 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #8
    Timbo ist offline Benutzer
    Themenstarter
    Registriert seit
    29.06.2015
    Beiträge
    30
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

  10. #9
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Zitat Zitat von Timbo Beitrag anzeigen
    IMG_20160218_110046.jpg

    ich verstehe auch nicht warum der wb nichts macht
    Was is ein wb?

    Entscheid dich mal um welchen Datentyp es geht.
    Wenn du bei Bool bleibst und dann dein Script 1 so abänderst wie in Beitrag #6 beschrieben, dann muss es gehen.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  11. #10
    Timbo ist offline Benutzer
    Themenstarter
    Registriert seit
    29.06.2015
    Beiträge
    30
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    IMG_20160218_105514.jpg

    Was habe ich jetzt schon wieder falsch gemacht? Ok die VaRIABLE IST NOCH DIE FALSCHE; ABER DER cODE??

    das ist nicht meine Welt mid dem C. Muss mich da mal richtig ein lesen. leider habe ich dafür momentan nicht die Zeit.

    Ist wie das mit dem Holzfäller und der stumpfen Axt

Ähnliche Themen

  1. WinCC Setze Bit
    Von Chri im Forum HMI
    Antworten: 2
    Letzter Beitrag: 05.02.2014, 22:39
  2. Wincc Flex Bit-Anzeige
    Von fra226 im Forum HMI
    Antworten: 1
    Letzter Beitrag: 20.06.2013, 15:59
  3. In WinCC Bit in Var auswerten
    Von Move im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.03.2011, 12:29
  4. Antworten: 3
    Letzter Beitrag: 21.09.2010, 11:54
  5. WINCC V6.2 Bit setzen/rücksetzen
    Von HarbichC im Forum HMI
    Antworten: 19
    Letzter Beitrag: 03.05.2010, 10:12

Stichworte

Lesezeichen

Berechtigungen

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