Bedienung Siemens Panel

qpec_hagen

Level-1
Beiträge
105
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
habe eine etwas ungewöhnliche Frage bezüglich der Siemens HMI's. Ich nutze zur Zeit das MP377 und möchte gern in der Visualisierung eine Art Bedienhilfe einbauen. Dabei habe ich auf einer Seite viele Eingabefelder, zwischen denen ich mich hin und her bewegen möchte und zwar nicht per Touch sondern über Schaltflächen. Dabei dachte ich an eine Funktion, welche die vier Cursor einer Tastatur wiedergeben. Ist das möglich per Schaltfläche zwischen den Eingabefelder hin und her zu springen?!

LG Manuel
 
grundsätzlich ja, du kannst bei Drücken einer Taste die Funktion "AktiviereBild" durchführen, als Parameter
Bildname wird das Bild genommen auf den du dich befindest. Mit der Opjektnummer kannst du dann über eine
Variabel steuern zu welchen Eingabefeld du springen möchtest.

Ich würde die Funtion in ein Script verlagern, da du wissen musst auf welchen Eingabefeld du dich gerade befindest
und dieses auswerten, um das nächste gewünschte anspringen zu können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal für die schnelle Antwort. Habe das grad mit AktiviereBild ausprobiert und dort auch die Variable des Eingabefeldes hinterlegt aber leider springt er dort nicht hin :-(
Und mit Scripten kenne ich mich leider noch garnicht aus.
 
Achso okay danke. Aber wie finde ich diese Nr. raus?! Und kann ich mit einfachen Mitteln jetzt ein Feld hoch oder runter "gehen"? Hatte mir vorgestellt, dass ich eine Taste für hoch und eine für runter mache.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Rausfinden kannst du das wenn du auf der angewählten Seite auf den Bildschirm klickst und dann unter "Ansicht" die "Tabreihenfolge" anwählst.
Du könntest jetzt eine interne Variable anlegen die du bei Tastendruck durch die Funktion "Berechnung" -> "erhöhe Wert" mit +1 oder -1 änderst.
Darunter führst du dann als zweite Funktion, die mit dem Bildaufruf durch.
 
okay die Frage mit der Tastatur war Käse ^^
Aber die Funktion ist bei mir noch nicht ganz gegeben. Zwar "rechnet" er den Wert richtig allerdings springt er dann nicht zu dem passenden Feld. Bsp. habe in der Variablen den Wert 4 stehen er spring aber zum Tab 2 :confused:
 
Moin,

die Nummer des angewählten Tabs kannst Du indirekt holen, indem du unter "Verbindungen" den "Bereichszeiger" Bildnummer anlegst.
Darin ist nicht nur die Bildnummer des aktuell aufgeschlagenen Bildes enthalten, sondern auch die Tab-Nummer versteckt!

Schau Dir einfach mal die 5 Datenwörter auf der S7-Seite an, wenn Du dann zwischen den Objekten springst...
... dann findest du auch die richtige Adresse!

Gruß
Aweeller
 
Vielen Dank schonmal für den Hinweis. Den Zeiger hatte ich schon für die Bildnummer ^^ die Tabnummer liegt dabei im Wort 6 des Zeigers.
Schön und gut. Jetzt wollte ich ein Skript schreiben, welches bei Tastendruck aktiviert wird. Wollte das jetzt so machen:

ActivateScreen <Nr>, TabNr= TabNr+ 1

sollte doch so theoretisch schonmal für den Cursor abwärts gehen oder?! Sorry bin vollkommener Skript Neuling. Hab nur ein wenig Erfahrung mit C und SCL
 
Super Dankeschön. Jetzt fehlt nur noch die Frage, ob es eine elegenate Möglichkeit gibt darüber auch eine Cursorfunktion "Links" und "Rechts" darzustellen? Und gibt es auch eine Möglichkeit die Tastaureingabe über ein Skript abzufangen? Wollte einen Extra Button dafür machen.
 
Ich bin mir nicht ganz sicher, was genau du vorhast :confused:

Denke aber, du hast Probleme, da deine Felder recht dicht aneinander stehen..

Es gibt da noch einen anderen Lösungsansatz mit "Activate":
Du gehst über die Objektnamen, d.h.: jedes Objekt in deinem Bild bekommt den gleichen Namen, aber am Ende des Namens hängst du noch eine Kennung an, welche eine eindeutige X / Y Identifikation im Bild spezifiziert. Der Tab-Order ist dann erstmal völlig wurscht!
Also z.B.: Feld_2_3 als Objektname ist das Feld in Zeile 2, Spalte 3

Dann schreibst Du ein Script mit etwa folgendem Aufbau:

Dim Obj, ScreenName, FeldName

FeldName = "Feld_" & CStr(SmartTags("Name deiner X-Variable")) & "_" & CStr(SmartTags("Name deiner Y-Variable"))

ScreenName = HmiRuntime.BaseScreenName

On Error Resume Next

Set Obj= HmiRuntime.Screens(ScreenName).ScreenItems("FeldName")
If Err.Number <> 0 Then
Exit Sub
Err.Clear
End If

Obj.Activate

Set Obj= Nothing

Die X- und Y-Variable musst Du natürlich vorab (oder in dem gleichen Script) verrechnen!

Gruß
Aweeller
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm das wäre nun aber der deutlich längere Weg, da ich massig Seiten mit massig Feldern habe. Mist aber auch. Dachte man könnte auch mit den Tab Nr die Funktion "ein Feld nach rechts" und "ein Feld nach links" recht leicht darstellen. Hinweis dazu: habe zb eine 2x2 Matrix, in der ein linkes Feld nicht unbedingt einen "Nachbarn" hat.
 
Ja, nun...

gehen tut das schon ...
... man kann ja über die Abfrage IF Err.Number .... feststellen, ob es das nächste Objekt gibt.
Dann kann man automatisch das nächste (existierende) Feld anspringen. Alo kein "ExitSub", sondern das nächstmögliche Feld berechnen und probieren...

Wenn du so was unbedingt brauchst, musst du da mal ein bischen rumbasteln ;)

Gruß
Aweeller
 
Moment mal. Bei dem Script mit dem Activate: woher bekomme ich denn da das aktuelle Feld in dem ich bin?! :confused:
Edit: also woher bekomme ich denn eine X und Y Variable? die vergebe ich doch vorher als festen Text (Objektname) zb 1_2, 2_2.....
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nochmal,

also den Objektnamen müsstest Du eigentlich so bekommen:

Set Obj= HmiRuntime.Screens(ScreenName).ActiveScreenItem
AktivFeldname = Obj.ObjectName

"AktivFeldname" muss halt noch in die Deklarationen (DIM ...)
Den AktivFeldname(n) kannst du dann "zerlegen" und die momentan aktuellen Koordinaten weiterverarbeiten.

Zerlegen kannst du den Namen mit z.B.: den MID() und Right() Funktionen etc.... Dann hast du die Koordinaten extrahiert.
Danach bastelst du wieder den (neuen) Feldnamen zusammen und gibst ihm ein "Activate" wie oben beschrieben!

Ist schon etwas anspruchsvoll - sollte aber machbar sein!

Gruß
Aweeller
 
Anspruchsvoll ist gut :D bin seit nem Jahr ausgelernt (Automatisierer) und seit nem halben Jahr in der Programmierung ;-)
Bin aber ganz optimistisch
 
Na dann,

viel Spass und Erfolg!

p.s.: In Geräteeinstellungen den Haken bei "Namensinformationen transferieren" setzen nicht vergessen, sonst geht gar nix ...

Gruß
Aweeller
 
Zurück
Oben