Wie kann ich in WinCC Buttons so konfigurieren, dass der Zustand 0->1->0 wird?

tony90

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag zusammen,
möchte in WinCC ein Button deklarieren, der eine entsprechende Variable aktiviert.
Ich wollte diesen Button in SCL auswerten, sprich gucken, ob die Variable 0 oder 1 ist.

nachdem Motto: If Button =1 Then MAchwas:=1;END_IF;


Wollte das so in WinCC so machen: 1x Button betätigen, Variable:=1...nochmals betätigen des Buttons setztdie Variable auf 0.

Wie kann man sowas realisieren?
 
Du weist deinem Button in den Eigenschaften unter Ereignisse/Drücken die Aktion "InvertiereBit" zu, diese verknüpfst du mit deiner Variable.
 
Bitte entschuldige, ich hab in einem Anflug geistiger Umnachtung an WinCC flex gedacht, dort geht das so.

In WinCC gibt es diese Funktion nicht, du kannst entweder ein kleines Script verwenden um den aktuellen Zustand der Variable abzufragen und entsprechend neu zu setzen oder du machst das umschalten in der SPS, das geht dann mit der Direktverbindung (-> Stromstoßschalter).
Wenn du das Ganze in WinCC lösen willst sollte dir dieser Thread weiterhelfen.
 
Weist du aus dem Stand wie das mit der Direktverbindung funktioniert?
Setze ich da 2x die gleiche Variable ein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau hab ich das jetzt nicht im Kopf, aber in den Objekteigenschaften -> links Drücken -> Direktverbindung. Dann im Fenster Direktverbindung auf der linken Seite "Konstante" in dem Feld daneben 1 eingeben, auf der rechten Seite wird das mit der Variable in der SPS verknüpft, diese muss natürlich vorher angelegt werden, aber ich denke das hast du schon. Dadurch wird das Bit beim drücken der Taste auf 1 gesetzt.
Da du für den Stromstoßschalter beim loslassen aber das Bit wieder auf 0 setzen musst, musst du das gleiche nochmal für die Aktion "links loslassen" machen, hier aber die Konstante 0 eintragen.
 
Ich habe mich mal wieder falsch augedrückt.
Ich möchte(obwohl ich PCS7 nutze), einen Button in WinCC so konfigurieren, dass die dort gespeicherte Variable erst 1 wird und bei nochmaligem Betätigen o wird.
1x klicken = Variable=1
nochmals klicken = Variable =0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht über ein C-Script:
Ereignis/Button/Maus/Mausklick/C-Aktion
Code:
BOOL wert;
wert = getTagBit("DeineBitVariable");
wert = !wert;
SetTagBit("DeineBitVariable",(WORD)Wert);

gruß Approx
 
Und damit kann ich einmal an und auch wieder aus machen bei nochmaliger Betätigung?
Ich check nicht, warum der meinen Variablenstatus nicht ändert. Wollte diese Variable in SCL verarbeiten. Die Variable ist dauernd 0. :-(

Habe den Programmschnippsel von oben zumindest übersetzt bekommen ohne Compilerfehler...
Hilfe...
 
Auch wenn es jetzt vielleicht schräg klingt, aber mit "DeineBitVariable" ist deine benötigte Variable gemeint. Du hast sicher nicht Zeichen für Zeichen abgetippt, oder?
Wird Dein Bit vielleicht im Step7-Programm noch anderweitig beschrieben? (auch bereichsübergreifend z.B. als BYTE, INT oder so).
Kontrolle unter "gehe zur Verwendungsstelle" mit Häkchen "Überlappender Zugriff auf Speicherbereiche".
Oder unter Referenzdaten - Ansicht Belegung (zeigt aber nur bei E/A/M/T und nicht DB).
Oder versuch mal per Variablentabelle zu steuern - bleibt der Status dann erhalten?

Approx
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, die Variable wird sonst nirgendswo verwendet. Habe "DeineBitVariable" nat umbennant und nicht den Code 1zu1 übernommen ;-)
Per Variablentabelle ändert sich der Wert nur für ne ms. Sprich kurzzeitig 1, dann wieder 0.
 
Hallo, Deine Aussage:
Hi, die Variable wird sonst nirgendswo verwendet.

beisst sich dann aber mit:
Per Variablentabelle ändert sich der Wert nur für ne ms. Sprich kurzzeitig 1, dann wieder 0.

Wenn auf die Variable per Step7 nicht schreibend zugegriffen wird, dann muss der Signalzustand per VAT auf jeden Fall anstehen bleiben.
Wird vielleicht per Blockmove oder Fill auf den Datenbereich zugegriffen? Nimm doch mal nen freien Merker und füge diesen in den WinCC-Variablenhaushalt ein. Dann im Script den neuen Variablennamen anpassen und nochmal probieren.
 
Habe die Variable umbenannt, hat auch nichts gebracht.
Die Variable wird nur in einem SCL Code verwendet, dort nähmlich in einen DB rein geschrieben.
DB100.Variable:=Variable;
Und mit der DB.Variable wollte ich dann ne IF-Abfrage gestalten.

Das blöde ist, mit Direktverbindung funktioniert das auch nicht. HAbe als Konstante 1 und rechts die entsprechende Variable ausgewählt.
Woran kann dies noch liegen?
WinCC gibt nichts weiter an SIMATIC. Der Botton ist tot, obwohl in dieser konfiguration in anderen Projekten funkts.
 
Hi ducati, habe die Unterlagen nicht direkt vor Ort, könnte es aber nachträglich posten.
ICh glaub, ich weiß warum ich den Zustand des Buttons nicht abfragen kann. Im Variablenhaushalt wird mir unter meiner erstellten AS-OS Verbindung der Status Abgebaut angezeigt. Das heißt, die Kommunikation zwischen AS-OS funktioniert gar nicht :-( :-(
Nutze MPI.
 

Anhänge

  • Bildschirmfoto 2013-08-08 um 18.01.07.jpg
    Bildschirmfoto 2013-08-08 um 18.01.07.jpg
    29,4 KB · Aufrufe: 19
Zuletzt bearbeitet:
Ich hätte zwei Buttons überlagert:

1. Btn_SetBit:
Click_Event -->
*Set MyBit
*Reset Sichtbarkeit von Btn_SetBit (sich selbst also)
*Set Sichtbarkeit von Btn_ResetBit

1. Btn_ResetBit:
Click_Event -->
*Reset MyBit
*Set Sichtbarkeit von Btn_SetBit
*Reset Sichtbarkeit von Btn_ResetBit (sich selbst)

PS: Set/Reset evtl. mit SetTagWait ("sicheres Schreiben") realisieren
 
Zurück
Oben