WinCC Daten aus E/A Feld in neuen Rezepturdatensatz

Invisible

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

ich nutze Tia Portal V17/Win CC RT Advanced und als Hardware eine CPU1512C-1 PN.

Über eine seperate Seite in meiner Runtime, will ich einen neuen Rezeptur Datensatz erstellen.
Hierzu habe ich in Form von E/A Feldern wie im gestrigen Beitrag alle Rezeptur Elemente auf eine eigene Seite gelegt.
Nachdem alle neuen parameter in die E/A Felder eingetragen wurden, sollen diese über einen Button zu einem neuen Datensatz hinzugefügt werden.

Wie lässt sich das realisieren?

Vielen Dank vorab!
 
Unter dem Eintrag Datensatznummer/-name kannst du den Namen für den Datensatz vorgeben und unter Überschreiben was passieren soll wenn der Datensatz schon vorhanden ist (Nein; Ja oder nach Bestätigung)
 
Ich habs mal mit der Funktion "LeseDatensatzAusSteuerung" probiert, und in Datensatz nummer die "199" reingeschrieben.
Nachdem die Funktion ausgeführt wurde, wird allerdings unter den Rezepturen in Datensatz 199 nichts angezeigt.
Ich habe bisher 179 Datensätze in der Rezeptur so wie ich das verstehe, müsste dann dort unter datensatz 199 mein neuer erscheinen.


Will ich andere Parameter dann wiederholt auf Datensatz 199 speichern, frägt er mich ob ich die vorhandenen Daten überschreiben will.

Also er speichert wohl die eingegebenen Daten im Rezept unter einem Datensatz, aber legt sie für mich nicht sichtbar ab?

Was noch ergänzend dazu kommt, ich will nie einen Datensatz bzw. eine Datensatznummer doppelt belegen, also immer wenn ich einen neuen Datensatz hinzufügen will, soll dieser eine neue Nummer zugewiesen bekommen. Welche Möglichkeiten hab ich da?
Muss ich da mit einer Variable und einem Counter arbeiten? Welche Variable nutze ich dann Als Eingangsbit für den Counter?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Zuerst möchte ich mal auf die TIA-Hilfe verweisen, die für deine Aufgabenstellung notwendigen Systemfunktionen sind eigentlich recht gut beschrieben.

@schwimmer:
Gibt es einen Grund, warum du die Parameterwerte aus der Steuerung holen möchtest, um diese dann als Datensatz abzuspeichern?
Da (vermute ich) alle Parameter und deren Werte ja im HMI bekannt und aktuell sind (sein sollten), reicht doch ein "SpeichereDatensatz" ("SaveDataRecord"), um einen Datensatz zu erzeugen.

@Invisible:
Mit dem von schwimmer schon erwähnten Systemfunktions-Parameter "Überschreiben" erhältst du je nach Projektierung von der Runtime automatisch eine entsprechende Rückmeldung.
Eine automatische Bereitstellung der nächsten freien Datensatznummer gibt es soweit ich weiß nicht. Ich habe in der Vergangenheit mal eine Funktion gescriptet, die per Schleife und Systemfunktion "LeseDatensatzname" eine Rezeptur durchsucht hat und dann die niedrigste freie Datensatznummer zurückgab. Da ich WinCC-Rezepturen nicht mehr für den eigentlichen Zweck verwende, war dieses Script dann obsolet; glaube nicht, dass ich so auf die Schnelle in alten Projekten finde.


Gruß, Fred
 
Also ich habe in der Rezepturanzeige bei bei Rezepturdatensatz eine Variable hinterlegt in der mein Datensatzname steht. Über die reine Nummer bin ich bisher noch nie gegangen, kann sich ja auch kein Bediener merken.
Was hast du bei der Synchronisation der Rezeptur eingestellt?
1697793391053.png
Gibt es einen Grund, warum du die Parameterwerte aus der Steuerung holen möchtest, um diese dann als Datensatz abzuspeichern?
Da (vermute ich) alle Parameter und deren Werte ja im HMI bekannt und aktuell sind (sein sollten), reicht doch ein "SpeichereDatensatz" ("SaveDataRecord"), um einen Datensatz zu erzeugen.
In dem Bild wo ich die Variablen aufrufe, sind die Rezepturvariablen offline, wenn ich da mit SaveDataRecord arbeite, werden nur die vorhanden Daten gesichert, die Änderungen sind in der Rezeptur nicht bekannt.
 
Ich hab das jetzt alles mal so eingestellt wie bei dir, @schwimmer Tia Portal meckert allerdings das ich keinen bereichszeiger projektiert habe, will ich eine Variable vom Typ Int mit dem Bereichszeiger Datensatz verknüpfen zeigt er mir diese Rot an und meint die länge stimmt nicht überein.
Was mache ich falsch?

Auch finde ich in meiner Rezeptur leider immernoch nicht die über die HMI hinzugefügten Datensätze, wo kann ich die finden?

1697795784176.png
1697795828869.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@schwimmer:
Das bedeutet, dass bei dir Rezepturvariablen im Steuerungsprogramm geschrieben werden?
Das habe ich bei mir immer kategorisch ausgeschlossen:
Rezepturvariablen werden nur vom HMI geschrieben, Statusvariablen nur von der Steuerung (Um nur diese Konventionen zu nennen, gibt noch andere)
 
@Invisible :
Wofür der Vereichszeiger?
Wie gesagt: Ich meine, dass du für deinen Anwendungsfall keine Projektierung benötigst, die in irgendeiner Art und Weise etwas mit der Steuerung zu tun hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das bedeutet, dass bei dir Rezepturvariablen im Steuerungsprogramm geschrieben werden?
Nein, sie werden bei mir auch nur in der HMI geschrieben. Ich möchte sie aber ändern können ohne die Rezeptur zu ändern. Dann kann ich Werte anpassen und testen ohne die Rezeptur zu verändern und erst wenn alles wirklich passt, dann kann der Bediener die geänderten Parameter abspeichern.
 
@faust So wie ich das verstanden hab kann ich durch den Bereichszeiger die letzte geschriebene Position innerhalb des Datensatzes erkennen.
Dies würde mir ja ermöglichen, keinen Datensatz zu überschreiben sondern immer einen neuen zu generieren.


@schwimmer danke, das mit dem Array hat die Fehlermeldung entfernt, durch den Bereichszeiger gibt er mir die Meldung ob ich ab Datensatz 21 überschreiben will, da ich aber weiss das die ersten 180 Datensätze belegt sind, gibt es die möglichkeit dem Zeiger zu sagen fange einmalig ab pos x z.B 190 an zu zählen?

ich Hab spaßeshalber mal datensatz 21 mit den parametern aus meinen E/A Feldern überschrieben, schaue ich allerdings in die Rezepturanzeige der HMI_RT stehen da bei mir immernoch die alten parameter aus dem alten Datensatz drin, auch wenn ich die neue überschriebene nummer versuche aufzurufen, sagt er mir datensatz nicht vorhanden.

Wo speichert er die Datensätze wenn ich ihn in der HMI dazu auffordere?
Jedenfalls nicht in der bestehenden Rezeptur wenn ich das richtig verstehe?
 
Was hast du denn unter Rezepturnummer/-name angegeben? Wenn da nicht dein Rezepturname drinsteht wird es nicht gehen. Bin mir nicht sicher ob dann eine komplett neue Rezeptur angelegt wird. Mach dir doch in das Bild mal ein Meldefenster mit Systemmeldungen, vielleicht wird da ja beim Abspeichern was angezeigt.
Wie gesagt mit der reinen Nummer habe ich noch nie gearbeitet, ich glaube nicht, dass man die irgendwie vorbelegen kann ab wo sie zählen soll.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, sie werden bei mir auch nur in der HMI geschrieben. Ich möchte sie aber ändern können ohne die Rezeptur zu ändern. Dann kann ich Werte anpassen und testen ohne die Rezeptur zu verändern und erst wenn alles wirklich passt, dann kann der Bediener die geänderten Parameter abspeichern.
Defacto werden sie dann doch von der Steuerung beschrieben, auch wenn es nur händisch über "Forcen" ist ;)

@faust So wie ich das verstanden hab kann ich durch den Bereichszeiger die letzte geschriebene Position innerhalb des Datensatzes erkennen.
Dies würde mir ja ermöglichen, keinen Datensatz zu überschreiben sondern immer einen neuen zu generieren
Das wäre mir ehrlicherweise neu. Quelle? Schwimmer hat nichts dergleichen erwähnt.
(Außerdem meinst du wahrscheinlich "... die letzte verwendete Datensatznummer innerhalb der Rezeptur ...", nicht wahr?)


Ich glaube, dass ihr beide von ganz verschiedenen Voraussetzungen und Sichtweisen ausgeht.
 
Defacto werden sie dann doch von der Steuerung beschrieben, auch wenn es nur händisch über "Forcen" ist ;)
Wenn du es so sehen möchtest.
Wie realisierst du es denn Parameter für den Anlagenbetrieb zu ändern ohne gleich das Rezept zu ändern?
@faust So wie ich das verstanden hab kann ich durch den Bereichszeiger die letzte geschriebene Position innerhalb des Datensatzes erkennen.
Dies würde mir ja ermöglichen, keinen Datensatz zu überschreiben sondern immer einen neuen zu generieren.
Du kannst eigentlich nur den zuletzt geschriebenen Datensatz erkennen, dass muss ja nicht zwangsläufig der Letzte sein
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wozu benötigst du dann noch das WinCC-Rezepturanzeige-Control?
Bei mir wird in dem Bild nur der aktuelle Parametersatz angezeigt. Um in laufenden Prozess aber eine Möglichkeit zu haben die rezeptur zu bearbeiten (z.B. neue Datensätze anlegen) nehme ich dann eine Seite mit dem Rezepturanzeige-Control
 
@schwimmer:
Das mache ich/machen wir eigentlich nie! Eine Änderung von Rezepturparameterwerten findet immer transparent über das HMI statt.
Ich kann mich an keine Situation erinnern, wo ich die von dir beschriebene Vorgehensweise benötigt hätte.

Was machst du denn, wenn du Werte geforcst, aber noch nicht gespeichert hast, und der Bediener ändert und transferiert währenddessen am HMI?
 
Bei mir wird in dem Bild nur der aktuelle Parametersatz angezeigt. Um in laufenden Prozess aber eine Möglichkeit zu haben die rezeptur zu bearbeiten (z.B. neue Datensätze anlegen) nehme ich dann eine Seite mit dem Rezepturanzeige-Control
Jetzt bin ich aber verwirrt:
Wenn du im Rezepturanzeige-Control einen anderen Datensatz auswählst, dann werden die in der Rezeptur projektierten Variablen doch sofort mit den anderen Werten überschrieben.
==> Beim Wechsel in dein Aktual-Datensatz-Bild sind dann die Werte des zuletzt ausgewählten Datensatzes sichtbar.

Es sei denn, beim jedem Wechsel in dieses Bild holst du zuvor die gerade in der Steuerung verwendeten Werte per "LadeDatensatzAusSteuerung", richtig?
 
Zurück
Oben