TIA Bereichszeiger aktuellen Datensatz

Junge

Level-2
Beiträge
235
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich suche derzeit nach einer schönen Lösung, wie die CPU auslesen kann, welcher Datensatz im Rezept im HMI geladen ist.

Bzw. ich möchte eigentlich aus der Steuerung einen neuen Auftrag anstoßen und dabei vergleichen, ob Neuer Datensatz <> alter Datensatz ist.

1.Lösung die ich gefunden habe:
In dem Rezept wird eine Zeile eingebunden für den entsprechenden Datensatz
Datensatz1= 1
Datensatz2= 2
...usw.

Gibt es noch eine bessere Lösung? Kann ich nicht direkt aus dem Rezept lesen, welcher Datensatz aktiv angewählt ist?
 
Morgen,

wenn Du aus der Steuerung einen neuen Auftrag anstößt, machst Du das doch wahrscheinlich über die Steuerungsaufträge:
69 Datensatz aus Steuerung lesen
70 Datensatz in Steuerung schreiben

Dafür musst Du Rezept und Datensatznummer angeben. Das ist recht gut im Abschnitt Steuerungsauftrag / Anleitung (WinCCAdvanded) beschrieben.




























 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke erstmal für die Antwort. Soweit ist das schon richtig, senden und schreiben funktioniert auch. Nur möchte ich gerne wissen, welcher Datensatz aktuell geladen ist. Ich kann natürlich den Datensatz, den ich im Panel Lade, in einen Merker schreiben und mir angucken. Was ich aber gerne haben möchte ist, dass ich den geladenen Datensatz mit dem aktuellen Datensatz verlgeichen möchte.
 
Übertrage die Datensätze mit Synchronisation. Dann weißt Du, dass die die Daten in SPS und Terminal gleich sind (bei Rückmeldung von Statuswort 4 = Übertragung fehlerfrei beendet.
 
Gibt es noch eine bessere Lösung? Kann ich nicht direkt aus dem Rezept lesen, welcher Datensatz aktiv angewählt ist?

Hast du für deine Rezepturanzeige eine Variable hinterlegt?

18-04-2017 14-52-48.jpg

Rezeptur- und Rezepturdatensatznummer/-name in Variable schreiben
Sie können in der Rezepturanzeige sowohl an die Rezeptur als auch den Rezepturdatensatz jeweils eine Variable projektieren. Abhängig vom Datentyp "String" oder "Int" der Variablen, wird der Name oder die Nummer der Rezeptur oder des Rezepturdatensatz in der Variablen gespeichert. Umgekehrt können Sie die Variable auch zur Auswahl der Rezeptur oder des Rezepturdatensatzes verwenden, indem Sie den entsprechenden Wert vorgeben. Die Variablen können Sie z. B. als Parameter für eine Systemfunktion übergeben.
Gehen Sie folgendermaßen vor:

  1. Geben Sie unter "Eigenschaften > Allgemein > Rezeptur" in das Feld "Rezepturvariable" eine Variable vom Typ "String" ein.
  2. Geben Sie unter "Eigenschaften > Allgemein > Rezepturdatensatz" in das Feld "Variable" eine Variable vom Typ "Int" ein.
Der Name der Rezeptur und die Nummer des Rezepturdatensatzes werden jeweils in einer Variablen gespeichert.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@Peter: Das ist auch noch eine gute alternative Lösung. Allerdings nicht das nachdem ich gesucht habe. Aber Danke trotzdem!!! ..(Obwohl ich mit dieser Idee auch gut leben könnte...:ROFLMAO:)

Aber nur aus reiner weiterer Interesse..gibt es noch andere Möglichkeiten?

@Vita: So wie ich dass verstehe, kann man nur in diesen Rezeptur- und Datensatzvariablen einen entsprechend Wert reinladen, um diese dann im Panel in der Rezepturanzeige anzeigen zulassen.
D.h. Ich will Rezept= "Automatik" mit dem Daternsatz=1
Wenn ich aus der SPS ein Rezept lade wird diese nicht automatisch in der Rezepturanzeige aktuallisiert. Dies könnte man dann mit diesen Variablen machen.

Was ich wollte ist, dass ich mir von dem HMI die Info hole, welcher Datensatz aktuell geladen ist bzw. zuletzt geladen wurde.


Danke aber schonmal für eure Unterstützung!!
 
Nein, das verstehst du falsch.
Die Variablen zeigen aktuelle Rezeptur/Datensatz an. Die ändern sich auch, wenn du einen anderen Rezeptur/Datensatz vom HMI anwählst.
Umgekehrt, wenn du die Variablen von der Steuerung änderst, werden entsprechende Rezeptur/Datensatz aufgerufen.
Wenn die Variablen remanent sind, dann beim Hochfahren und Wechsel in das Bild mit einer Rezepturanzeige, werden automatisch letzte aufgerufene Rezeptur/Datensatz geladen.
Ein Vergleich: „aktuell /zuletzt“ musst du natürlich in der Steuerung machen.


Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.


20-04-2017 08-18-11.jpg
 
Hi Vita,

schönes Video und gut veranschaulicht. In dem Beispiel von Dir wird genau das veranschaulicht was ich meinte, aber was ich womöglich zu ungenau beschrieben habe.

In deinem Video zeigst du folgendes:
1. Du lädst aus dem Panel ein Datensatz - diese wird in die Variable geschrieben
2. Du lädst nicht aus der CPU einen Datensatz sondern wählst einen Datensatz aus und zeigst in nur in der Rezepturanzeige an.

Was ich suche:
3. Wenn du jetzt aus der CPU einen Datensatz aus dem HMI lädst, wird dieser nicht automatisch in der Rezepturanzeige übernommen. Damit bleibt die Variable in der der Datensatz steht unverändert. (Dieser Schritt, die Rezeptanzeige zu aktuallisieren, muss anscheinend selber erzeugt werden, so wie du es in deinem Video zeigst).

DANKE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Junge,
ich glaube wir reden aneinander vorbei.

Was ich habe:
1. Rezeptur in HMI (wird auf SD gespeichert) mit XXX Datensätze (keine feste Wert, die werden vom Bediener angelegt, maximal 65535 Datensätze)
2. Ein Datenbaustein in der CPU, der menem Datensatz entspricht. (DB_Datensatz.Variable_YYY)
3. Zweite Datenbaustein in der CPU, mit zwei Variablen für Rezepturnummer (DB_Datensatnummer.Rezepturnummer) und Datensatznummer (DB_Datensatnummer.Datensatznummer). Die haben nichts mit Datensatzinhalt zu tun.

Was ich mache (HMI, Rezepturanzeige):
1. Ich lege einen neuen Datensatz an. Dann fülle mein Datensatz mit entsprechenden Werten (DB_Datensatz.Variable_YYY). Die Variablen werden syncron, sofort nach Eingabe, zu SPS übertragen. Speichere auf SD. Der Datensatz bekommt automatisch Nr.1 und schreibt in DB_Datensatnummer.Datensatznummer.
2. Ich lege noch ein Datensatz an, ..... Speichere. Der Datensatz bekommt automatisch Nr.2 und schreibt in DB_Datensatnummer.Datensatznummer
3. Ich lege noch ein Datensatz an, ..... Speichere. Der Datensatz bekommt automatisch Nr.3 und schreibt in DB_Datensatnummer.Datensatznummer
usw.
4. Ich wähle Datensatz Nr. 1 [FONT=&quot]in der Rezepturanzeige [/FONT] (über Datensatzname oder Nummer) -> in DB_Datensatnummer.Datensatznummer wird eine 1 geschrieben (damit weist der CPU, dass der Datensatz Nr. 1 angewählt ist)
5. Ich wähle Datensatz Nr. 2 [FONT=&quot]in der Rezepturanzeige [/FONT] (über Datensatzname oder Nummer) -> in DB_Datensatnummer.Datensatznummer wird eine 2 geschrieben ....
6. Ich wähle Datensatz Nr. 3 [FONT=&quot]in der Rezepturanzeige [/FONT] (über Datensatzname oder Nummer) -> in DB_Datensatnummer.Datensatznummer wird eine 3 geschrieben ....
usw.

Was ich mache (SPS):
1. Ich schreibe in DB_Datensatnummer.Datensatznummer eine 1, HMI ruft automatisch Datensatz Nr. 1 auf und liest die Werte vom SD, schreibt in DB_Datensatz.Variable_YYY
2. Ich schreibe in DB_Datensatnummer.Datensatznummer eine 2, HMI ruft automatisch Datensatz Nr. 2 auf und liest die Werte vom SD, schreibt in DB_Datensatz.Variable_YYY
3. Ich schreibe in DB_Datensatnummer.Datensatznummer eine 3, HMI ruft automatisch Datensatz Nr. 3 auf und liest die Werte vom SD, schreibt in DB_Datensatz.Variable_YYY
usw.
 
Hi,

tut mir leid, dass ich mich erst jetzt wieder melde. Ja ich glaube auch, es liegt allerdings daran dass ich mich unklar ausgedrückt habe.
Ich stimme Dir in deiner Erklärung soweit zu, allerdings habe ich da einen Punkt gefunden, der mir so nicht bekannt ist.

zu Deinem Punkt "Was ich mache (SPS)" ... schreibst du:

1. Ich schreibe in DB_Datensatnummer.Datensatznummer eine 1, HMI ruft automatisch Datensatz Nr. 1 auf und liest die Werte vom SD, schreibt in DB_Datensatz.Variable_YYY

Das verstehe ich so, dass du, nur durch Lade eines Wertes in den "DB_Datensatznummer", Dir aus dem entsprechenden Datensatz alle Werte in die SPS lädst. ( Falls ich diesen Satz missverstanden habe ist meine folgende Ergänzung hinfällig)

Wie du schreibst sind selbstverständlich alle Rezeptelemente als entsprechende Variablen in deinem "DB_Datensatz" hinterlegt. Ich kann mich täuschen, aber ich bin mir eigentlich sehr sicher, wenn du in deiner SPS den "DB_Datensatnummer.Datensatznummer" mit z.B. =1 beschreibst nicht die entsprechenden Rezeptelemente aus dem Datensatz 1 in deinen "DB_Datensatz" in der SPS geschrieben wird. Es wird lediglich nur im HMI der Datensatz1 angezeigt.

und mein "Problem" war/ist dass wenn ich aus der SPS einen Datensatz lade, d.h. mit einem Steuerungsauftrag, dass dann nicht automatisch auch der "DB_Datensatznummer.Datensatznummer" überschrieben wird. Dies erfolgt nur manuell, allerdings hatte der Peter dazu eine entsprechend gute Lösung die ich erstmal so übernommen hatte.
 
Zurück
Oben