Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Projektierung Bedienoberflächen 840D, Allgemeines zum programmieren von Bedienoberflächen

Beitrag 06.09.2018, 17:02 Uhr
E-T-W
E-T-W
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 06.09.2018
Beiträge: 1
Hallo,

ich habe ein Problem mit der Funktion von PI-Diensten bei der Projektierung meiner Bedienoberfläche.

Funktionen:

PI_SERVICE (Dienst, n Parameter)
PI_START(Übergabestring)

Speziell geht es darum mit einem Softkey einen Login oder einen Logout zu erzeugen.
Der Softwarestand soll dabei keine Rolle spielen da die Funktionsweise universell sein soll.
Ich finde auch keine Softwarestandbeschränkung in den Handbüchern. Also sollte es ja generell funktionieren.

Leider ist die Beschreibung in den Handbüchern dazu nicht gerade der Hammer.
Zum Beispiel wird nicht erklärt was im übergabestring enthalten sein muss oder kann? Im schlauen Internet finde ich leider auch nichts dazu.

Mein Ansatz war folgender:

- Softkey projektieren
- über CHANGE-Methode PI-Dienst ansprechen (hat folgenden Grund: da in der PRESS-Methode eine andere Funktion ausgeführt wird)

CODE
DEF "Erstellen einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)

VS1=("Softkey",ac7,se3)

PRESS(VS1)
  "Aktivierung einer Funktion einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)
END_PRESS

CHANGE(Variable)
    IF "Vergleich einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)
    ...   (* viele Funktionen welche ausgeführt werden *)
    ... dann wurde folgendes probiert am Ende der IF-Abfrage (* natürlich nicht alle auf einmal sondern einzeln *)
    PI_START("/NC,001,_N_LOGIN_,"Testword"")   (! funktioniert nicht !)
    PI_SERVICE("_N_LOGIN_","Testword")   (! funktioniert nicht !)
    PI_START("/NC,001,_N_LOGOUT")   (* funktioniert *)
    PI_SERVICE("_N_LOGOUT")   (! funktioniert nicht !)
  ENDIF
END_CHANGE


Damit es nicht zu unübersichtlich wird, habe ich die Variablenverarbeitung im Orginal hier nicht mit rein geschrieben. Diese funktioniert!!!
Es geht allein darum, das die PI-Dienste nicht funktionieren wie es in den Handbüchern beschrieben steht.

Man kann hier sehen, das PI_START("/NC,001,_N_LOGOUT") durchaus funktioniert. Alles Andere leider nicht.
Mit PI_START("/NC,001,_N_LOGIN_,"Testword"") bin ich mir auch nicht sicher. Das war nur ein Versuch, da ich nicht genau ergründen konnte wie der Übergabestring auszusehen hat!
Alle Anderen wurden direkt aus den Dokumentationen übernommen, (PI_START("/NC,001,_N_LOGOUT"), PI_SERVICE("_N_LOGIN_","Testword") und PI_SERVICE("_N_LOGOUT").

Fúr das "Testwort" wurde natürlich ein offizielles Passwort von Siemens mit 8 Buchstaben verwendet!!!

Im Moment bin ich etwas ratlos da der LOGOUT mit PI_START durchaus funktioniert aber ein LOGIN úberhaupt nicht.
Und Randbedingungen zu den PI-Diensten finde ich auch nicht!

Also, her mit Ratschlágen und Hinweisen. smile.gif

Der Beitrag wurde von E-T-W bearbeitet: 06.09.2018, 17:14 Uhr
   
Beitrag 11.10.2018, 19:26 Uhr
dschenk
dschenk
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 02.07.2011
Beiträge: 119
QUOTE (E-T-W @ 06.09.2018, 18:02 Uhr) *
Hallo,

ich habe ein Problem mit der Funktion von PI-Diensten bei der Projektierung meiner Bedienoberfläche.

Funktionen:

PI_SERVICE (Dienst, n Parameter)
PI_START(Übergabestring)

Speziell geht es darum mit einem Softkey einen Login oder einen Logout zu erzeugen.
Der Softwarestand soll dabei keine Rolle spielen da die Funktionsweise universell sein soll.
Ich finde auch keine Softwarestandbeschränkung in den Handbüchern. Also sollte es ja generell funktionieren.

Leider ist die Beschreibung in den Handbüchern dazu nicht gerade der Hammer.
Zum Beispiel wird nicht erklärt was im übergabestring enthalten sein muss oder kann? Im schlauen Internet finde ich leider auch nichts dazu.

Mein Ansatz war folgender:

- Softkey projektieren
- über CHANGE-Methode PI-Dienst ansprechen (hat folgenden Grund: da in der PRESS-Methode eine andere Funktion ausgeführt wird)

CODE
DEF "Erstellen einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)

VS1=("Softkey",ac7,se3)

PRESS(VS1)
  "Aktivierung einer Funktion einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)
END_PRESS

CHANGE(Variable)
    IF "Vergleich einer Variablen"   (* ist jetzt nicht die Funktion die original drin steht *)
    ...   (* viele Funktionen welche ausgeführt werden *)
    ... dann wurde folgendes probiert am Ende der IF-Abfrage (* natürlich nicht alle auf einmal sondern einzeln *)
    PI_START("/NC,001,_N_LOGIN_,"Testword"")   (! funktioniert nicht !)
    PI_SERVICE("_N_LOGIN_","Testword")   (! funktioniert nicht !)
    PI_START("/NC,001,_N_LOGOUT")   (* funktioniert *)
    PI_SERVICE("_N_LOGOUT")   (! funktioniert nicht !)
  ENDIF
END_CHANGE


Damit es nicht zu unübersichtlich wird, habe ich die Variablenverarbeitung im Orginal hier nicht mit rein geschrieben. Diese funktioniert!!!
Es geht allein darum, das die PI-Dienste nicht funktionieren wie es in den Handbüchern beschrieben steht.

Man kann hier sehen, das PI_START("/NC,001,_N_LOGOUT") durchaus funktioniert. Alles Andere leider nicht.
Mit PI_START("/NC,001,_N_LOGIN_,"Testword"") bin ich mir auch nicht sicher. Das war nur ein Versuch, da ich nicht genau ergründen konnte wie der Übergabestring auszusehen hat!
Alle Anderen wurden direkt aus den Dokumentationen übernommen, (PI_START("/NC,001,_N_LOGOUT"), PI_SERVICE("_N_LOGIN_","Testword") und PI_SERVICE("_N_LOGOUT").

Fúr das "Testwort" wurde natürlich ein offizielles Passwort von Siemens mit 8 Buchstaben verwendet!!!

Im Moment bin ich etwas ratlos da der LOGOUT mit PI_START durchaus funktioniert aber ein LOGIN úberhaupt nicht.
Und Randbedingungen zu den PI-Diensten finde ich auch nicht!

Also, her mit Ratschlágen und Hinweisen. smile.gif


Hallo E-T-W,

Hast du schon zufällig eine Lösung gefunden?
Ich bin auch erst vor kurzen über die Möglichkeit der PI_Dienste gestossen...
Leider habe ich dazu noch keine vernünftige Doku gefunden.
Hast du dazu vielleicht schon mehr?

lg
   
Beitrag 09.09.2019, 14:23 Uhr
CaptainFu
CaptainFu
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 49
Die Antwort kommt etwas spät aber vielleicht kann es ja noch jemand brauchen.
Geht es nur um Login bzw. Logout kann man das etwas einfacher gestalten, ich kann hier allerdings nur auf Operate 4.7 testen. Hoffe natürlich das es bei euch ebenso funktioniert
Ihr müsst als erstes bei den Definitionen am Anfang eurer Maske ein Hilfsvariable für das Login / Logout definiern, der Hintergund dazu ist das diese Befehle immer einen Wert zurückgeben ob die Aktion geklappt hat. Man muss das nicht zwingend auswerten, nur es muss eben einer vorhanden sein.
Also wie gesagt Hilfvariable definieren z.B.

Def Trigger

und dann an den enstprechenden Stellen das Login / Logout setzen, man fährt meist ganz gut damit im "Load" und im "Resume" Block das Login zu bringen und das Logout im "Unload" und im "Suspend" Block, damit würde das Passwort nur so lange gesetzt bleiben wie man in der Maske ist. Aber das bleibt jedem selbst überlassen und kann ja von Fall zu Fall angepasst werden.
Das ganze sähe dann z.B. so aus

Load
Trigger=HMI_LOGIN("DASPASSWORT")
End_Load


Unload
Trigger=HMI_LOGOFF
End_Unload

Das mit den Pi-Diensten ist dann wieder etwas anders und wie selbst schon bemerkt nicht gerade zufriedenstellend in der DocOnCd beschrieben. Eines möchte ich allerding noch dazu bemerken, man sollte sich natürlich darüber im klaren sein das man sein Steuerungspasswort dann im Klartext in der *.com Datei stehen hat!
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: