WinCC Flex Bestätigungsabfrage für Schaltflächen

mpok

Level-1
Beiträge
17
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte die Betätigung einer Schaltfläche in einem Win CC flexible Projekt bestätigen lassen.

Z.B.:

"Möchten Sie diesen Befehl wirklich ausführen lassen?"

" ........... OK............................. Abbrechen.................. "

So oder in ähnlicher Form. Gibt es da Standard-Vorgehensweisen oder fertige Routinen?
Für eure Hilfe schon mal herzlichen Dank.
 
Ich würde einen Bildwechsel auf ein neues Bild machen in dem die Abfrage ist. wenn "ok" bestätigt wird die entsprechende Variable setzen und wenn auf "Abbrechen" gedruckt wird wieder die vorherige Seite aufrufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die prompte Antwort. Sicher ein praktikabler Lösungsansatz, aber besteht eigentlich auch die Möglichkeit, nur ein kleines Fenster einzublenden in dem die Abfrage durchgeführt wird?
 
Ja das geht auch. Du kannst z.B. eine Abfrage erstellen und mit der Schaltfläche diese erst sichtbar schalten. Diese Abfrage liegt einfach als unsichtbares Objekt über dem eigentlich Bild. Erst die Schaltfläche in der Abfrage löst dann die eigentliche Aktion aus.
In TIA könntest du dafür die POP-UP-Bilder verwenden.
 
Ja das geht. Du baust dir aus einem Rechteck und etwas Text und 2 Tasterlementen ein solches "Fenster" zusammen.
Diese Teile legst du dann alle auf die Ebene 31, dann wird das "Fenster" auf jeden Fall über allem anderen eingeblendet.

Über den ersten Knopf auf der Seite mit der du die Abfrage starten möchtest, setzt du eine interne Bool Variable.
An die Animation "Sichtbarkeit" der Bauteile des "Fensters" hängst du diese Boolsche Variable. Sichtbar wenn True.
An die Schaltfläche Ok hängst du zwei Ereignisse. Einmal "Aktiviere Bild" mit dem gewünschten Bildnamen und einmal "Ruecksetze Bit" für die interne Variable.
An die Schaltfläche Abbrechen hängst du nur einmal das Ereignis "Ruecksetze Bit" für die interne Variable.
Wird Abbrechen ODER Ok betätigt wird die Variable wieder false und das "Fenster" automatisch ausgeblendet. Nur wird bei OK auch noch das Bild gewechselt.

Dieses "Fenster" musst du dann in jedes Bild einfügen in dem du diese Option möchtest. Und du tauschst nur den Zielnamen der Seite aus auf die du welchseln möchtest.

Auf die Vorlage packen geht meiner Erfahrung nach nicht richtig weil dann die Zeichnungen auf der Seite vor dem "Fenster" liegen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zombie,

ich habe deinen Vorschlag mal umgesetzt und es klappt ganz gut. Ich habe ein Rechteck (Ebene 30) angelegt und darauf ein Textfeld (Ebene 31) und zwei Schaltflächen (Ebene 31) eingefügt.
Sobald ich dieses Konstrukt sichtbar schalte, wird es eingeblendet und überdeckt auch darunter liegende Elemente wie EA-Felder und Textfelder (Ebene 0).
Das Problem ist nur, wenn ich dieses "Fenster" über einer Kurvenanzeige (Ebene 0, versuchsweise auch Ebene 1) platziere, bleibt es von dieser überdeckt auch wenn es sichtbar sein sollte.
Was kann man da machen?
 
Das Problem ist nur, wenn ich dieses "Fenster" über einer Kurvenanzeige (Ebene 0, versuchsweise auch Ebene 1) platziere, bleibt es von dieser überdeckt auch wenn es sichtbar sein sollte.
Was kann man da machen?
Die Kurvenanzeige unsichtbar schalten. Sichtbare Kurvenanzeigen können nicht von anderen Objekten überdeckt werden.
Bedienbare symbolische EA-Felder können ebenfalls nicht überdeckt werden, bei denen muß zusätzlich zur Sichtbarkeit auch noch die Bedienbarkeit animiert werden.

Achtung, die Objekte außerhalb des eingeblendeten Dialogs (Rechteck + Elemente) bleiben bedienbar. Wenn das nicht gewünscht ist, dann hinter dem Dialog ein transparentes Rechteck oder eine unsichtbare (und evtl. unbedienbare) Schaltfläche über das ganze Bild legen (bei Dir z.B. Ebene 29) und "sichtbar" animieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

das ganze geht auch eleganter und einfacher:
An der entsprechenden Taste bei Maus-Click folgende C-Aktion hinterlegen s.u.:
Dann öffnet sich eine Windows Message-Box und fragt nach einer Bestätigung

Gruß Move
----------------------------------------------------------------------------------------------------

#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 "SPERRE_FRK_SYS" // Variable die beschrieben werden soll
#define TITEL "Freigabe -> Sperren" // Titel der Message-Box
#define HINWEIS "Wollen Sie die freie Kühlung sperren?" // Frage der Message-Box an den Bediener
long RetVal;

HWND Handle=NULL;
Handle=GetForegroundWindow();
RetVal = MessageBox(Handle, HINWEIS, TITEL, (MB_YESNO+256)|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
if (RetVal==6) // Ja betätigt

// WINCC:TAGNAME_SECTION_END

// WINCC:pICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:pICNAME_SECTION_END
{ // Hier wird das Bit 0 der DINT Variable auf 1 gesetzt
DWORD dwHelp1,dwHelp2;
dwHelp1=GetTagWordWait(TAG_0);
dwHelp2=dwHelp1|1;
SetTagWordWait(TAG_0,(WORD)dwHelp2);
}
}
 
Da gibt es 3 Probleme...

1.) Weder WinCC-Flex noch WinCC-TIA-Basic/Comfort/Advanced verfügen über eine C-Skript-Runitme
2.) Mann könnte zwar über VBS ebenfalls eine MessageBox aufrufen, aber das geht nur auf PC-Runtime, aus den Panels hat Siemens bewusst die Funktion entfernt.
3.) Ist von der Verwendung abzuraten da dir die MessageBox die gesamte Skript-Runtime (auch bei WinCC v7) blockiert und kein anderes Skript/Ereignis laufen kann während die MsgBox offen ist.

Siehe den Hinweis von Siemens hier: https://support.industry.siemens.com/cs/ww/de/view/268859
Siemens schrieb:
Hinweis
Eine Alternative zur Windows Dialogbox sind die Bildfenster, die Sie in WinCC direkt projektieren können. Im Gegensatz zur Dialogbox wird durch ein Bildfenster die Abarbeitung der Runtime nicht angehalten. Informationen hierzu finden Sie unter So fügen Sie ein Bildfenster einim WinCC V7.4 Systemhandbuch "Arbeiten mit WinCC" unter der Beitrags-ID 109736220.

Sowas kann man nur mit den Bordmitteln der jeweiligen Umgebung zusammenbasteln.
Egal was man macht, basierend auf dem Grund das Skriptereignisse nicht parallel laufen können, ist sowieso von jeglichen Skripten, abzuraten welche auf Ereignisse warten müssen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Kurvenanzeige unsichtbar schalten. Sichtbare Kurvenanzeigen können nicht von anderen Objekten überdeckt werden.
Bedienbare symbolische EA-Felder können ebenfalls nicht überdeckt werden, bei denen muß zusätzlich zur Sichtbarkeit auch noch die Bedienbarkeit animiert werden.

Achtung, die Objekte außerhalb des eingeblendeten Dialogs (Rechteck + Elemente) bleiben bedienbar. Wenn das nicht gewünscht ist, dann hinter dem Dialog ein transparentes Rechteck oder eine unsichtbare (und evtl. unbedienbare) Schaltfläche über das ganze Bild legen (bei Dir z.B. Ebene 29) und "sichtbar" animieren.

Harald
Jetzt hast du was geäußert das mich auch gerade geärgert hat. Ich habe in TIA V13 Comfort gerade was ähnliches versucht, aber anscheinend ist dort ein Transparentes Rechteck tatsächlich nur der Rahmen. Ich hatte bei einer Auftragseingabe ein Bestätigungsfenster eingebaut und ein Rechteck transparent dahinter gelegt. Die Tasterelemente und Eingabefenster blieben aber bedienbar. In WinCC V6.2 und Flexible klappt das mit dem von dir beschriebenen Weg, aber in TIA ging es mit der kopierten Flexible Variante nicht.
Hat da jemand ähnliche Erfahrungen gemacht, oder hab ich was falsch gemacht?
Da ich auf der Inbetriebnahme knapp bei Zeit war, konnte ich nicht mehr versuchen den Fehler zu finden und hab die Auftragsbestätigung auf eine Extra Seite gelegt.
 
Zurück
Oben