Passwort- abfrage/eingabe und popup- Fenster unter WinCC

Koala

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

Ich beschäftige mich so nebenbei mit WinCC 6.0 (nachdem ich einen Kurs bei Elop hatte) und leider kenn ich jetzt nur die Grundlagen. Leider hab ich jetzt so das eine oder andere Problem, und deshalb hab ich da ein paar Fragen:

1. Frage: Ich will einen Passwort- geschützen Bereich erstellen (für den Service- Breich) Was heist, dass der butten solange versteckt ist, bis ich ein kennwort eingebe, oder die andere Möglichkeit wäre, wenn ich denn Button drücke, kommt eine Passwort- abfrage und dann sich erst das Bild für den Service- Bereich aufbaut.

Entschieden hab ich mich bis jetzt für die erste Möglichkeit. Also Button erstellt, E/A- Feld erstellt und eine Variable für vorzeichenlose 16 Bit Wert. Button über Eigenschaften --> Bedienungsfreigabe den Dynamik- Dialog bearbeitet. Die Passworteingabe funktioniert soweit einwandfrei (halt nur mit Zahlen), aber später mal schnell das Passwort ändern ist leider nicht möglich und wenn ich das Passwort eingebe, dann bleibt es gespeichert, bis ich wieder ein "falsches" eingebe.

Andere Möglichkeit wäre vielleicht eine zweite Variable erstellen und Passwort- vergleich über SPS- durchführen...

2. Frage:
Wenn ein Signal (z.B. von einem Ausgang) von der SPS kommt, dann soll im WinCC automatisch ein Bild (des im Graphics Designer erstellt wird) geöffnet werden und auch im Vordergrund sein.

Da hab ich keine Ahnung, wie ich das anstellen soll :-(

War mit denen Fragen schon an der Handwerkskammer, aber leider könnten die mir keinen Rat geben.

Ich hoffe, von euch kann mir jemand einen Rate geben

Thx schon mal im voraus!!!!!!!!!!!!

 
Ich benutze immer noch Version 5.1

Das mit dem Servicebereich ist doch am einfachsten über eine Benutzerverwaltung (User Administrator) zu realsisieren. Da kann man Benutzer anlegen mit namen und Passwort.
Die Controls (Buttons etc.) kann man über Eigenschaften Berechtigung dann bequem zuordnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
thx erst mal zotos!!

Also, das mit der Benutzerverwaltung hab ich auch probiert. Also, benutzer angelegt, Passwort vergeben und die Controlls hab ich das bei Berechtigungen dann "Bildwechsel" angegeben.

Wenn ich dann auf dem Button raufklicke, dann kommt so was in der Art "Sie haben keine Berechtigung" und des wars.

Leider keine Passwortabfrage !!
 
Leider funktioniert des mit:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogin('c');



}

leider nicht.
Beim übersetzen hab ich folgende Fehlermeldung:
line 2: error (0086) : function `_main` does not return a value

hab mir gedacht, ein return 0 oder ein return 1 würde abhilfe schaffen, dem ist aber leider nicht so.

Einen Tip für ein pop- up fenster unter wincc at noch keiner für mich??
 
hi jörg,

erst mal thx für deine Antwort!

Also egal ob mit oder ohne klammern, ich bekomm dann eine fehlermeldung:

error (0040):<type> expected before `return`
 
Ich habe den Code ja nicht erfunden.
Bei mir hat der auf anhieb gefunzt, einfach in WinCC einen Button nehmen, sich zu der C eingabe Links Klick des Button bewegen und den folgenden Code dort zwischen { und } einfügen.

Code:
#pragma code ("useadmin.dll") 
#include "PWRT_api.h" 
#pragma code() 
PWRTLogin('c');

Du musst an einer anderen Stelle sein. Der Rückgabewert der Beispiel Funktion lautet void == also nichts, da bekommst Du mit einem "return" auf jeden fall Ärger.


#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogin('c');

}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmm...

da muß ich leider passen, habe keine V6. :oops:

bei V5.1 funktioniert das obige Beispiel genau, wie abgedruckt, ohne returns oder anderem.

Frag mal beim support an, vieleicht gibts ja bei V6 was anderes, neues


Gruß Jörg
 
Ich glaub, ich werd wieder zur Version 5 wechseln.

Wenn ich einen button bearbeite, dann lauten die ersten paar zeilen:

#include "apdefap.h"
BOOL _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{

Die ersten drei zeilen lassen sich leider auch nicht verändern :cry:


euch beiden sag ich trotzem ein dickes fettes danke :)
 
Hi Koala,

ähm, ich glaube, Du bist im falschen Unterdialog :wink:

der

BOOL _main....

steht nur bei C-Aktionen von EIGENSCHAFTS-ATTRIBUTEN, die JA/NEIN zur Auswahl haben.

Du musst Die angegebene C-Aktion unter

Objekteigenschaften->Ereignis->Maus->Mausclick eintragen.

Dann sollte es funktionieren.


Gruß Jörg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo koala,

wenn Du möchtest kann ich Dir ja mal eine kleines WinCC Projekt, nur Login, in Ver 5.1 erstellen und zusenden. Dann kannst Du es ja mal versuchen in Ver 6 zu öffnen.

Gib mir bescheid.
 
Es funktioniert :))

Thx erst mal an alle!!

eine Frage hab ich noch und zwar ist es möglich, den code so zu erweitern, dass wenn ich ein gülten Benutzer und passwort eingegeben habe, dass sich dann ein bildfenster (im Graphic- designer erstellt) öffnet. Ich schaff es leider nur, dass sich passwortabfrage und bild gleichzeitig öffnen.

OpenPicture("Service.Pdl"); //Return-Type: void

Ach ja, wie sieht des eigentlich unter wincc mit popups aus?? würde das funktionieren??
 
Messageboxen in WinCC

Unter C aktion bei Mausklick

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
HWND Handle;
long ReturnValue;

Handle = FindWindow("PDLRTisAliveAndWaitsForYou","WinCC-Runtime - ");

ReturnValue = MessageBox(Handle,"Funktion ausführen ?","Bedienung Anlage xyz",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND);
printf("Dieser Wert wurde zurückgeliefert = %ld\r\n", ReturnValue);
SetTagDWord("long",ReturnValue); //Rückgabe-Typ :BOOL

// Bei Bedienung von "JA" wird der Wert "6", bei "NEIN" der Wert "7" und bei "ABBRECHEN" der Wert "2" zurückgegeben.

if ( ReturnValue == 6 ) // Operator mit ja geantwortet ??
{
SetTagSWord("variable-x",99); // 99 in Variable x scheiben
SetTagSWord("variable-y",1); // 1 in Variable y schreiben
}
}

Unter VB aktion bei Mausklick

Sub OnClick(ByVal Item)

Dim Antwort

Antwort = MsgBox ("Funktion ausführen ?" ,36,"Bedienung Anlage xyz" )

If Antwort = 6 Then
HMIRuntime.Tags("variable-x").Write 99 ' 99 in Variable x schreiben
HMIRuntime.Tags("variable-y").Write 1 ' 1 in Variable y schreiben

End If

End Sub


Bild öffnen wenn Userlevel stimmt ( auslösung bei änderung von @CurrentUser )

#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
int Master; // Masterlogin festlegen

Master = PASSCheckLevelPermission(9); // Userlevel überprüfen auf Level 9 = Übergeordnete Prozesssteuerung

if (Master == 1) OpenPicture("Service.Pdl");
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anzeigen von Objekten je nach User

Eigenschaften-> Sonstige-> Anzeige


if (strcmp(GetTagChar("@CurrentUser"),"Max Mustermann")) return (0); //Rückgabe-Typ :long int

else return (1);



Achtung
Statik auf nein setzen da das Objekt beim Bildaufschlag kurtz sichtbar und evt. bedinbar ist.

Gruss
uz
 
thx erst mal an euch beiden!!

Hab leider irgendwie das Problem, dass das bei mir nicht funktioniert.

Könntet ihr mal bitte eure vorschläge erklären, was ihr meint und vor allem wohin damit, weil ich steh grad irgendwie auf`m schlauch
 
Fenster nach Login öffnen

Koala schrieb:
Es funktioniert :))

eine Frage hab ich noch und zwar ist es möglich, den code so zu erweitern, dass wenn ich ein gülten Benutzer und passwort eingegeben habe, dass sich dann ein bildfenster (im Graphic- designer erstellt) öffnet. Ich schaff es leider nur, dass sich passwortabfrage und bild gleichzeitig öffnen.

Das einfachste ist, wenn Du eine Global Script Aktion machst (C oder VBS), die auf Änderung der internen WinCC Variable "@CurrentUser" getriggert wird (am besten Variablentriggerung auf Änderung). Dort prüfst Du, ob die Variable "@CurrentUser" nicht leer ist und blendest dann Dein Bild auf.

GlobalScript Runtime muss noch in der Anlaufliste (Rechnereigenschaften) eingetragen sein.

Michael
 
Zurück
Oben