WinCC Flexible 2008 Rezpetur-Datensatznamen nach der Eingabe auslesen

Hotte5

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

ich habe ein Problem mit Wincc Flexible / PC-Runtime und komme nicht weiter. Ich habe eine Rezeptur angelegt wo neue Datensätze eingegeben werden können. Der Datensatzname setzt sich aus mehreren Komponenten zusammen.
Wie z.B. 4567300.

Kunde: 456
Material: 7
Materialbreite 300

Nun möchte ich gerne die Rezeptvariabeln nach der Eingabe des Datensatznamens füllen. Und dort fängt mein Problem an. Mit einem Skript, Beispiel siehe unten, kann ich zwar über die Datensatznummer den entsprechenden Namen auslesen, dafür muss ich aber erst den neuen Datensatz speichern. Ich möchte aber gerne z.B. durch Bestätigung mit einer beliebigen Taste oder wenn es so etwas gibt wie ein Event den String auslesen und in die einzelnen Komponenten spliten und dann erst speichern. Im Moment muss ich immer die Daten bei einen Neuen Datensatz zweimal eingeben. Erstens als Datensatznamen und danach muss ich diese in der Rezeptur ausfüllen. Kann mir jemand dabei weiterhelfen? Ist dieses Überhaupt möglich?

Code:
'DATENSATZ LADEN'


Dim Ausgabe, Abfrage
GetDataRecordName "Kommission",SmartTags("DB_Kommission.DatensatzNr"),M_Rezeptname,M_Datensatzname, M_FehlerSkript


Do While M_FehlerSkript = 2
    'Nichts'
Loop
If M_FehlerSkript = 4     Then
  
  Set Ausgabe = CreateObject("WScript.Shell")
  Abfrage = Ausgabe.Popup( "Erfolgreich")
  SmartTags("DB_Kommission.KommissionNr") = CDbl(M_Datensatzname) 
End If
If M_FehlerSkript = 12     Then
    Set Ausgabe = CreateObject("WScript.Shell")
  Abfrage = Ausgabe.Popup( "Fehler")
End If

Step 7
WinCC Flexible 2008 SP3
PC Runtime als Visuoberfläche
 

Anhänge

  • rezept.jpg
    rezept.jpg
    169,8 KB · Aufrufe: 29
Hallo Hotte,

ehrlicherweise verstehe ich dein Problem nicht so richtig :confused: (Wobei ich zugeben muss, dass ich die Rezepturanzeige nie verwendet habe):

Du möchtest also alle Rezeptparameter eingeben, aus bestimmten Werten den Datensatznamen erstellen und den Datensatz dann unter diesem abspeichern, richtig?

Was spricht gegen die Abarbeitung eines Skriptes, welche den Datensatznamen selbst zusammensetzt, anstatt ihn auszulesen?


Gruß, Fred
 
Musst/Willst du zwingend die Rezepturanzeige einsetzen?

Ich weiß jetzt nicht, wieviele Parameter zu 'befeuern' sind, aber eine Seite mit einem Eingabefeld (Rezeptname) und vielleicht 3 Ausgabefeldern (Parameter, um bei deinem Beispiel zu bleiben) sollte schnell erstellt sein. Nach Eingabe des Rezeptnamens führst du ein Skript aus, welches zuerst den Namen aufteilt, die so gewonnenen Werte an die Rezeptvariablen übergibt und danach mittels Systemfunktion des Datensatz unter dem gegebenen Namen speichert.

Gruß, Fred
 
Erstmal Danke für die schnellen Antworten und den Denkanstoss.

Nur habe ich das Problem, dass der Bediener schon vorhandene Rezepte per drop down aus der Rezeptur auswählen kann und wenn der Datensatz nicht vorhanden ist, sich einen neuen anlegen kann.
Wenn ich dich Richtig verstanden habe, lege ich doch so nur neue Datensätze an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann wäre ein Paralleleinsatz denkbar:
einmal mein Vorschlag zur Neuanlage von Datensätzen, daneben die Rezeptanzeige zur Auswahl bereits bestehender.

BTW: Ist denn eine Änderung von Datensatzwerten erlaubt bzw. angedacht? Wäre nach deinem Modell ja so nicht erlaubt, da dann Datensatzname und Werte nicht mehr 'gleich' sind. :confused:

Gruß, Fred
 
Guten Abend,

ja leider es ist auch angedacht die Datensätze jeweils anzupassen. Du musst dir das so Vorstellen nach Eingabe des Namen ist es Fa. Müller die zwar immer das gleiche Material haben (siehe Datensatzname), aber z.B. andere Verpackungsart. Dieses wird alles mit der Rezeptur festgelegt. Die Rezeptur hat 12 Eingabefelder wobei ich drei davon aus dem Datensatznamen vorbelegen möchte. Ich werde das Gefühl nicht los, dass es so etwas nicht mit der Rezeptur von Siemens funktioniert.

MfG
Hotte
 
Doch, das geht... ;)

Stell dir einen Dialog vor, in welchem sich Ausgabefelder für die drei automatisch zu besetzenden Parameter und Eingabefelder für die restlichen befinden. Dazu packst du ein Eingabefeld (für die Eingabe eines neuen Datensatznamens), welches du von einer reduzierten WinCC-Rezeptanzeige (und zwar nur die Datensatzauswahl sichtbar) ÜBERDECKST. Dann noch zwei Schaltflächen für 'Neu' und 'Speichern', fertig.

Vorgehensweise bei Neuanlage eines Datensatzes:
1. Bediener betätigt 'Neu' ->Datensatzauswahl ausblenden, ggf. Vorbesetzung der Paraameter mit Defaultwerten.
2. Bediener gibt den Datensatznamen und die Parameter ein.
3. Bediener betätigt 'Speichern' -> Skript prüft den Rezeptnamen, besetzt die 3 nichteditierbaren Parameter und speichert den Datensatz. Danach wird die Datensatzauswahl wieder eingeblendet.

Vorgehensweise bei Bearbeitung eines bestehenden Datensatzes:
1. Bediener wählt einen Datensatz aus -> Datensatz wird geladen.
2. Bediener editiert die Parameter.
3. Bediener betätigt 'Speichern' -> siehe oben

Zusätzlich könnte man z.B. die Eingabefelder ausblenden/deaktivieren, wenn kein Datensatz ausgewählt bzw. solange kein neuer Datensatzname ejngegeben wurde, etc.

Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend Fred,

erstmal herzlichen Dank für deine Mühe.

Der Vorschlag ist gar nicht schlecht, nur hast du das in WinCC schon mal umgesetzt? Ich habe es nicht hinbekommen dass ich eine E/A-Feld über das drop down Menu der Rezepturanzeige legen kann. Irgendwie scheint die Rezepturanzeige immer in den Vordergrund gestellt zu sein. Oder ich mache etwas falsch?:confused:

MfG

Hotte
 
Musst du genau umgekehrt anordnen, leider meint Siemens nämlich, dass gewisse Controls unbedingt immer bedienbar bleiben müssen.

Besonders toll fand ich dabei immer, dass ich die Reihenfolge der besagten Controls wahlfrei projektieren konnte und nicht einmal der Compiler gemeckert hat... :sb7:


Gruß, Fred
 
Zurück
Oben