Variable im Speicher des Panels hinterlegen

Lord Cartman

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

wollt euch mal fragen ob es möglich ist eine Variable, die per Hand auf einem Panel vom Typ KTP400 eingegeben wird, in dessen Speicher zu schreiben und sie so auch nach einem Neustart noch zur Verfügung zu haben?
Bisher bin ich nur auf eine Lösung über eine Rezeptur gestoßen, mit der ich mich aber nich so richtig anfreunden konnte.

Der Hintergrund dieser Funktion ist die Herstellung einer neuen Verbindung zu einer CPU (S7-1211C). Im Falle eines Ausfalls des Panels sollte es dem Anwender danach direkt möglich sein auf die zuletzt verwendete CPU zuzugreifen, ohne noch groß die richtige IP suchen zu müssen.


Würd mich freuen wenn ihr noch Vorschläge hättet :)


Gruß
Cartman
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei den Panel hast du keine Chance, wäre es ein Scriptfähiges Panel,
könntest du die Daten in einer Datei schreiben. Ausblick wäre wenn
du auf die kommenden Comfortpanel umsteigen würdest, da ist ein
kleines Panel, das etwa im Spektrum OP77 sich bewegt ist in zukunft
Scriptfähig.

Also bei den kleinen Panel und sogar bei einen großen Panel würde
ich das aber mit Bordmitteln lösen, sprich die Rezeptur. Du kannst
doch Ereignisgesteuert deine Werte in der Rezeptur speichern und
beim Systemstart z.b. über ein Startbild mit Firmenlogo bei Bildaufbau
die Rezeptur wieder laden. So blicken andere und du später noch
durch was da so passiert.
 
Hallo Helmuth,

schade dass es keine weiteren Möglichkeiten gibt. Trotzdem danke.

Hab leider mit Rezepturen bisher noch keine Erfahrung sammeln können. ALs ich eine Rezeptur auf dem "startbild" verwenden wollte, kam immer die fehlermeldung, dass das Element der Rezeptur (hier "IP") "bereits an anderer Stelle verwendet" wird. Der andere Verwendungszweck ist aber mein "wechsel_verbindung", bei dem die IP ja benötigt wird.
Kann in der hinsicht ja auch keine variable kopieren wie bei der CPU um ein "neue IP" zu erstellen, oder?

Ein weiteres Manko war die automatische Verschachtelung innerhalb der Rezeptur. Gewünscht ist lediglich ein Eingabefeld für die IP. Vlt. hab ichs in der hinsicht auch einfach nur falsch eingebunden?
 
so ganz habe ich noch nicht verstanden was du da gemacht hast, aber
du solltest dir mal die Anleitung für Rezepturen in Flexibel anschauen,
ist nicht so gut erklärt. Aber was du da vor hast geht bestimmt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die anleitung zu den rezepturen hab ich mir schon durchgelesen. Das Prinzip is eig auch klar soweit, aber auf meine aufgabe bezogen komm ich nicht direkt weiter.

Der momentane Stand ist folgender:
In dem Startbild des Panels wird der Benutzer aufgefordert eine IP Adresse anzugeben (die IP der CPU,zu der die Verbindung hergestellt werden soll). Nach getaner Eingabe wird mit einem Button bestätigt und ein "Wechsel_Verbindung" aktiviert. Das Panel stellt dann zu der eingegebenen IP eine Verbindung her.
Das Problem ist nur, dass nach einem Stromverlust des Panels die vorige Eingabe gelöscht ist. Deswegen wollte ich diese Variable einfach "remanent" machen. Dabei soll der nutzer später aber nicht durch ein rezepturen-netz sich durchblättern müssen, sondern wie bisher lediglich die IP eintippen.

Hoffe jetz ises halbwegs klarer :)
 
Hallo,

Wieso soll der die IP eintippen?

Auswahlfeld mit allen möglichen/freigegebenen IP-Adressen.
Das ganze wie eine Rezeptur behandeln.

Auswahl 1 (Rezept1) = IP ....1
Auswahl 2 (Rezept2) = IP ....2
...
 
Eig gute Idee.
Leider wirds in der fertigen Version insg 93 SPSen, davon jede mit einem Panel. Da wäre das Auswahlfeld entsprechend groß. Hinzu kommt, dass die IP's relativ flexibel später vergeben werden sollen. Also mit vordefinieren klappts leider nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst doch eine Rezeptur erstellen, in dieser Rezeptur steht als
einziger Wert deine IP Adresse. Ohne das du jeztzt eine Rezpturanzeige
oder ein Rezpturbild erstellst kannst du in dieser Rezeptur Werte
speichern.

Um die Werte speichern zu können, rufst du bei deinen Eingabefeld bei
bei dem Ereignis "Eingabe Abgeschlossen" die Funktion auf "Speichere
Datensatz", dort trägst du deine Rezeptur ein in der die IP Adresse ge-
speichert ist und als Datensatz gibst du fest eine "1" vor.

Wenn du jetzt das Panel hochfährst rufst du bei den Ereignis für das Bild,
die Funktion auf "Lade Datensatz" mit der Rezeptur für die IP Adresse und
den Datensatz "1".
 
Vlt stehe ich grad auf dem Schlauch, aber zzt liegt eine HMI-Variable vor (IP-Adresse). Bei den Rezepturen hab ich jetz eine neu angelegt (Adressen). In der Rezepturen gibts jetz ein ELement (IP). Als Variable für dieses Element habe ich die HMI-Variable "IP-Adresse" eingesetzt. Da die aber schon für das "Wechsele_Verbindung" verwendet wird, kommt ja die Fehlermeldung dass die variable bereits an anderer Stelle verwendet wird?
 
schon wieder verstehe ich dich nicht so richtig, aber nehme doch
eine zusätzliche Variabel, meinetwegen IP_Eingabe. Diese nimmst
du dann für dein Eingabefeld und ziehst Sie dann auch in die Rezeptur.

Bei der Variabel "IP_Eingabe" wird mit dem Ereignis "Wertänderung" die
Funktion "Setze Wert" aufgerufen, mit dem Parametern Variabel: IP
Adresse; Wert: IP_Eingabe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
entschuldige falls ich mich unverständliche ausdrücke.
hab jetz aber verstanden was du mir sagen willst :)
Um Missverständnisse zu vermeiden: mit ziehen von IP_eingabe in die rezeptur meinst du ip_eingabe in die variable einer rezeptur zu ziehen?

Das Ereignis "setze Variable" bei einer "Änderung" hab ich nur bei den Eigenschaften von dem "OK-Button" gefunden. Beim Kopieren von "IP-Eingabe" in "IP_Adresse" Hit hilfe des Buttons kommt aber immernoch die eine Meldung in der Rezeptur dass die Variable schon verwendet wird, obwohl sie nur bei "setze Variable" verwendet wird.
Anscheinend darf darf variable aus der rezeptur nirgends im Bild stehen...
:confused:
 
diese billigen Panels....!
flex akzeptiert es nicht die Variabel für die IP Adresse in eine Rezeptur
abzulegen also machst du das mit einen Stellvertreter, IP_Anzeige.
Diese wird zur Eingabe genutzt und in die Rezeptur abgelegt.

Wenn jetzt das Startbild aufgebaut wird, ladest du den Wert aus der
Rezeptur. Bei deinen Tastendruck um die Verbindung zu wechseln,
speicherst du den Wert in der Rezeptur ab (falls du eine neue IP eingegeben
hast), überträgst du die Variabel IP_Anzeige nach IP_Soll. Dann führst du die
Funktion aus um die Verbindung zu wechseln.
 
So sehr ich deine Idee gerne mal testen würde, aber das Problem mit dem "bereits verwendet" lässt sich nich so leicht bekämpfen. Hab jetz der einfachheit mal die HMIvariable IP_Eingabe angelegt und sie in die rezeptur gezogen. noch passts! sobald jetz aber ein E/A-Feld in das bild kommt und die Variable hier reingelegt wird, meckert die rezeptur direkt wieder und bringt die beliebte fehlermeldung^^ (sonst wird die Variable nirgends verwendet!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nochmal, die Variabel die du in der Funktion nutzt um das Bediengerät
neu zu Verbinden lässt sich nicht in einer Rezeptur einbinden.
Das hat Siemens anscheinend, schlicht und einfach gesperrt, also
musst du irgendwie einen Trick anwenden um die Situation zu umgehen.

Dafür sollst du einen Stellvertreter nehmen, du hast dann zwei Variabeln.
Eine die nur dafür da ist um die IP Adresse einzugeben und gegebenenfalls
zu speichern und mit der anderen führst du dann die gewünschte Funktion
durch.
Du musst nur den Stellvertreter vor deiner Aktion in die eine Variabel umladen.
Das habe ich in den Beiträgen oben beschrieben.
 
Hallo Helmut,
die Variable zum Ändern der Verbindung steht nicht in der Rezeptur, das war schon klar :)
Wie oben beschrieben, wollte ich die IP über eine neue Variable einlesen lassen und diese in die Rezeptur speichern. Über das Ereignis "setze_Variable" soll diese dann in die eigentliche IP-Adresse kopiert werden, um mit ihr dann die neue Verbindung herstellen zu können.
Die Variable "IP_Eingabe" kommt deswegen lediglich in der Rezeptur, sowie dem E/A-Feld vor und wird nicht als Verbindungsvariable genutzt.
 
Die Antwort

So, hier mal ein kurzes Update ;)
Laut Siemens heißt es:

"...Das Problem mit den Basic Panels ist, dass man eine Variable die in einer Rezeptur verwendet, nirgendwo anders in dem Projekt verwenden darf, sonst bringt der Compiler eine Fehlermeldung beim Generieren des Projektes. Man darf diese Rezeptvariable also weder irgendwo anders in dem Projekt auf einem EA-Feld anzeigen, für eine Animation nutzen, oder in einer Systemfunktion als Parameter.
Eine andere Möglichkeit wäre die IP Adressen in einer Textliste zu hinterlegen, dann könnte der Bediener über das symbolische EA-Feld eine IP Adresse auswählen zu der die Verbindung aufgebaut werden soll.
Aber:
Auch hier hat man das Problem mit den Basic PAnels, dass es leider keine Möglichkeit gibt, den aktuell angezeigten Text einer Textliste in eine Variable einzulesen. Also fällt auch diese Lösung weg.
..."

Die einzige vertretbare Lösung ihrer Seite aus war, ggf. Buttons mit festgelegten IP-Adressen zu verwenden, die dann nach einem Neustart der CPU einfach betätigt werden müsste(n). Alles in Allem lässt sich zusammenfassen dass Basic Panels wirklich Basic sind und nicht für komplexere Aufgaben ausgelegt sind.
 
Zurück
Oben