WINCC V6.2 Bit setzen/rücksetzen

HarbichC

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

nach langer Zeit habe ich mal wieder eine Frage an die Spezialisten!

Gibt denn eigentlich keine Möglichkeit, ein Bit bei Drücken einer F-Taste zu setzten und nach loslassen wieder rückzusetzen?
Ich möchte allerdings nicht, dass ich vorher ein Button fokussiere!
Im Grunde soll der Bediener immer das Bit über die F-Taste setzen können, unabhängig im welchen Bild er sich gerade befindet...

Vielen dank im voraus und beste Grüße

Christian
 
Das geht, zumindest mit Bits aus Byte-Word-DWord-Variablen.

Am besten, du fügste einen Button ein und nimmst dann den Dynamik-Wizzard "Bit setzen/rücksetzen" in "Standard-Dynamiken".

Für Setzen von Bit 0 bei drücken der linken Maustaste wird dann z.Bsp. folgender Code generiert:

Code:
#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 "wTest"
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

DWORD dwHelp1,dwHelp2;

dwHelp1=GetTagDWordWait(TAG_0);
dwHelp2=dwHelp1|1;
SetTagDWordWait(TAG_0,dwHelp2);

}


zum Rücksetzen bei loslassen der linken Maustaste:

Code:
#include "apdefap.h"
void OnLButtonUp(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 "wTest"
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

DWORD dwHelp1,dwHelp2;

dwHelp1=GetTagDWordWait(TAG_0);
dwHelp2=dwHelp1&(0xFFFFFFFF^1);
SetTagDWordWait(TAG_0, dwHelp2);

}

Wenn du das allgemeingültig haben willst, mußt du den Inhalt der Scripte das in Scripte einfügen und diese dann bei jedem Button einhängen. Was meinst du mit "ohne Fokussieren"? Kann man nicht Shortcuts vergeben, im Notfall über Toolbars oder Menüs? Oder hat du das wirklich für ALLE Buttons vor? Bei jedem beliebigen Button automatisch, das wird so einfach dann nicht gehen wenn überhaupt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle,

vieleicht habe ich mich nicht richtig ausgedückt;
Es geht mir darum, mittels der Tastatur und einer Funktionstaste ein Bit zu setzen bzw. rückzusetzen, unabhängig in welchen WinCC Bild sich der Bediener befindet, einfach gesagt F1 Taste drücken Bit setzen -> losslassen Bit rücksetzen.
Ich habe es bis jetzt mit den Attribut "Tastatur drücken/losslassen" und dann per Skript eine Abfrage der gedrückten Taste gemacht, das geht aber nur dann, wenn das dementsprechende Objekt fokussiert ist.

Grüsse,

Christian
 
Ja, da hatte ich bei meiner Antwort schon befürchtet, daß ich am Thema vorbeischramme :ROFLMAO: .

Du kannst einen Button einfügen und diesem eine Funktionstaste als Horkey zuweisen (Rechtsclick auf den Button, dann "Konfigurationsdialog". Dann mußt du diesen Button auf jedem Blatt "verstecken", so könnte es evtl. zu machen sein.
 
Hier mal ein Lösungsvorschlag:

Man verbindet ein Objekt über einen Hotkey mit einer F-Taste der Tastatur.

Dann verbindet man das Ereignis Mausklick des Objektes mit einer VBS-Aktion.

In der VBS-Aktion wird eine Bool-Variable getoggelt.

Das so projektierte Objekt fügt man in jedes Bild oder ein eventuell vorhandenes Hintergrundbild ein.

In der Runtime toggelt dann die Bool-Variable mit jeder Betätigung der F-Taste.

Gruß Kai
 

Anhänge

  • Ereignisgesteuerter Trigger.jpg
    Ereignisgesteuerter Trigger.jpg
    292,9 KB · Aufrufe: 72
  • Variablen.jpg
    Variablen.jpg
    263,1 KB · Aufrufe: 61
  • Hotkey.jpg
    Hotkey.jpg
    443,8 KB · Aufrufe: 52
  • Farben.jpg
    Farben.jpg
    451,5 KB · Aufrufe: 44
  • Mausklick.jpg
    Mausklick.jpg
    407,2 KB · Aufrufe: 60
Zuviel Werbung?
-> Hier kostenlos registrieren
Und noch ein paar Bilder aus der Runtime.

Gruß Kai
 

Anhänge

  • Runtime 1.jpg
    Runtime 1.jpg
    70,4 KB · Aufrufe: 31
  • Runtime 2.jpg
    Runtime 2.jpg
    71,4 KB · Aufrufe: 25
  • Runtime 3.jpg
    Runtime 3.jpg
    71,2 KB · Aufrufe: 23
Nachtrag:

Man kann als Objekt nur einen Button mit einem Hotkey verbinden.

Man muss hier also mit einen Button arbeiten.

Gruß Kai
 
Also ich muss schon sagen,

ich bin schwer begeistert...
Werde das morgen gleich mal ausprobieren, wenn ich in die Firma komme,
bis dahin erstmal vielen Dank!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
WinCC V6.2 Bit setzen rücksetzen

Hallo Leute,

jetzt hatte ich doch die Gelegenheit den Lösungsvorschlag von Kai auszuprobieren; funktioniert soweit auch ganz gut.

Leider darf das Bit nur beim drücken der Funktionstataste gesetzt sein, nach losslassen muss es dann zurückgsetzt werden!

Ist so ne Art Freigabetaste!
Gibts da auch ne Chance?


Grüsse Christian
 
Hallo Leute,

jetzt hatte ich doch die Gelegenheit den Lösungsvorschlag von Kai auszuprobieren; funktioniert soweit auch ganz gut.

Leider darf das Bit nur beim drücken der Funktionstataste gesetzt sein, nach losslassen muss es dann zurückgsetzt werden!

Ist so ne Art Freigabetaste!
Gibts da auch ne Chance?


Grüsse Christian

Ich kann dir nicht ganz folgen.
Du mußt dem Button ein Ereignis beim Drücken einer Tastaturtaste zuweisen (Wert setzen) und ein Ereignis beim Loslassen einer Tastaturtaste (Wert zurücksetzen). Wenn du dann die zugewiesene Funktionstaste betätigst, wird der Button betätigt, das Ereignis "Wert setzen" wird ausgelöst. Beim Loslassen der Funktiontaste wird das Ereignis "Wert zurücksetzen" ausgelöst. Grad getestet, geht so.

PS: Mit Mausevents funktioniert das nicht, du mußt Tastaturevents benutzen!
 
Ja so funktioniert das, aber nur solange wie der Fokus auf dem Button liegt....
Wähle ich einen völlig anderen Button oder ein Objekt an, so funktioniert mein Funktionstaste nicht mehr (bis ich wieder auf den Button klicke)

Oder ist das nur bei mir so und ich bin zu doof :confused:

Vielleicht mal zur Funktion der Anlage: Unser Bediener muss eine Freigabe drücken um eine Bewegung ausführen zu können (Funktionstaste an eine Tablet PC).
Danach muss er weitere Eingaben auf dem Touchscreen machen können (z.B. Geschwindigkitsvorgabe) dabei aber die ganze Zeit die F-Taste drücken.
Lässt der Biediener die F-taste los, so stoppt die Bewegung
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja so funktioniert das, aber nur solange wie der Fokus auf dem Button liegt....
Wähle ich einen völlig anderen Button oder ein Objekt an, so funktioniert mein Funktionstaste nicht mehr (bis ich wieder auf den Button klicke)

Oder ist das nur bei mir so und ich bin zu doof :confused:

Vielleicht mal zur Funktion der Anlage: Unser Bediener muss eine Freigabe drücken um eine Bewegung ausführen zu können (Funktionstaste an eine Tablet PC).
Danach muss er weitere Eingaben auf dem Touchscreen machen können (z.B. Geschwindigkitsvorgabe) dabei aber die ganze Zeit die F-Taste drücken.
Lässt der Biediener die F-taste los, so stoppt die Bewegung

Grüsse Christian
 
Ne, du bist nicht zu doof, siemens ist wieder mal zu doof, was denken die sich nur dabei :confused: .

Ich hab 3 Button angelegt, einer mit "F2", einer Mit "F4" und einer ohne jede Beschaltung. Dabei hab ich festgestellt, der Hotkey interessiert WinCC gar nicht. F2 und F4 funktioniert nur, weil Tastaturevents definiert sind und dazu müssen sie fokussiert sein. Dann funktioniert ja jede beliebige Taste. ISt der 3 Button fokussiert, reagiert WinCC nicht auf die F-Tasten. Ok, ich teste das auf einem Mac mit virtuellem XP, aber bisher ging da Alles. Vielleicht fällt ja noch jemandem was dazu ein.
 
Geht auch auf dem Laptop (XP Prof. SP3) nicht, Funktionstasten als Hotkey an Buttons interessieren mein installiertes WinCC6.2 momentan nicht die Bohne. :twisted: Quäl doch mal die Hotline, aber vergiß bitte nicht uns das Ergebnis mitzuteilen. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier noch mal ein neuer Lösungsvorschlag:

Für die Abfrage der F2-Taste kann man folgendes C-Script als globale Aktion programmieren:

Code:
#include "apdefap.h"
int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
// F2-Taste abfragen
 
if (GetAsyncKeyState(VK_F2) & 0x8000)
    SetTagBit("F2", 1);
else
    SetTagBit("F2" ,0);
return 0; 
}

Wenn die F2-Taste gedrückt wird, wird die Bool-Variable F2 gesetzt, und wenn die F2-Taste losgelassen wird, wird die Bool-Variable F2 wieder zurückgesetzt.

Gruß Kai
 

Anhänge

  • C-Sript.jpg
    C-Sript.jpg
    285,5 KB · Aufrufe: 29
Ich hab 3 Button angelegt, einer mit "F2", einer Mit "F4" und einer ohne jede Beschaltung. Dabei hab ich festgestellt, der Hotkey interessiert WinCC gar nicht. F2 und F4 funktioniert nur, weil Tastaturevents definiert sind und dazu müssen sie fokussiert sein. Dann funktioniert ja jede beliebige Taste. ISt der 3 Button fokussiert, reagiert WinCC nicht auf die F-Tasten. Ok, ich teste das auf einem Mac mit virtuellem XP, aber bisher ging da Alles. Vielleicht fällt ja noch jemandem was dazu ein.

Der Hotkey funktioniert nur mit dem Buttonereignis "Mausklick":

Beim Buttonereignis "Mausklick" wird eine Aktion ausgeführt, wenn
  • ein Mausklick auf diesen Button ausgeführt wird oder
  • der Button den Fokus besitzt und die Leertaste gedrückt wird.
Grund hierfür ist, dass das Drücken der Leertaste von Windows ebenfalls als Mausklick interpretiert wird. Da WinCC auf Microsoft Windows aufbaut, wird diese Eigenschaft des Betriebssystems mitübernommen. Falls Sie die Funktionalität des Hotkey benutzen möchten, muss die Aktion zwingend hinter dem Buttonereignis "Mausklick" projektiert werden, da Hotkey laut Definition nur mit dem Buttonereignis "Mausklick" funktioniert.

Beim Buttonereignis "Tastatur drücken" wird eine Aktion ausgeführt, wenn
  • der Button den Fokus besitzt und
  • eine beliebige Taste gedrückt wird.
Welche Besonderheit ist bei der Aktionsprojektierung hinter dem Ereignis "Mausklick" bzw. "Tastatur drücken" bei einem Button zu beachten?

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Argh, irgendwie komm ich mit dieser dämlichen WinCC-Hilfe einfach nicht klar, genau wie mit der Siemens-Homepage. Anscheinend unterscheidet sich meine "Denke" grundlegend von der der Siemens-Leute. Ich finde bei denen einfach nie auf Anhieb die richtigen/wichtigen Informationen. geht das nur mit so?

Toll aber, das das nur bei Mausclick geht, warum soll man auch mal was so machen, wie es alle andern machen würden :ROFLMAO:. Das wäre doch unsimensianisch!
 
Hallo Leute,

habe das C-Script von Kai eingesetzt, funktioniert tadellos, so wie ich es mir vorgstellt habe!!!

Habe trotzdem mal die Hotline bezüglich der Problematik Button/Tastatur kontaktiert;

Bin gespannnt was denen dazu einfällt!!!:ROFLMAO:

Werde euch auf dem Laufenden halten, besten Dank nochmals für Eure super Hilfe.

Grüsse Christian
 
"Man verbindet ein Objekt über einen Hotkey mit einer F-Taste der Tastatur. Dann verbindet man das Ereignis Mausklick des Objektes mit einer VBS-Aktion. In der VBS-Aktion wird eine Bool-Variable getoggelt. "

Hört sich spannend an - jedoch habe ich noch nie mit VBS gearbeitet und würde gerne auch diese Funktion umsetzen - kan mir vielleicht da jemand auf die sprünge Helfen oder geht das auch anders

Gruß
 
Zurück
Oben