Rezept mit mehreren Schritten

Aljonator

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Community,

ich habe jetzt alle Beiträge mit Rezepturen durchsucht, aber leider keine Lösung gefunden.

Ich mache gerade meinen Techniker für Automatisierungstechnik und habe folgendes Problem:

Ich versuche alles so gut wie möglich zu beschreiben.

Ich habe in meinem Abschlussprojekt eine Anlage in der mit Rezepturen gearbeitet wird.
Ein Rezept besteht aber nicht klassisch aus einem Datensatz sondern aus bis zu 16 Schritten.

Ich habe ein Datenfeld mit 40 Rezepten. Jedes Rezept hat den gleichen Aufbau, die gleichen Parameter und enthält bis zu 16 Schritte die in einem Produktionszyklus durchlaufen werden.
Jeder dieser 16 Schritte enthält wie gesagt die Rezeptparameter, diese sind von der Anordnung in jedem Schritt gleich. Sie enthalten jedoch von Schritt zu Schritt andere Werte.

Jetzt ist es so, dass die Parameter der einzelnen Schritte nacheinander in ein Datenfeld geladen werden sollen von dem aus die Werte in die entsprechenden im Programm verwendeten Variablen geladen werden.

Sprich Ablaufbeispiel:

1. Rezept laden.
2. Zyklus starten.
3. Werte des 1. Schrittes in das Datenfeld für die aktuellen Prozessparameter laden.
4. Schritt 1 abgeschlossen.
5. Werte des 2. Schrittes in das Datenfeld für die aktuellen Prozessparameter laden.
6. Schritt 2 abgeschlossen.
.
.
.

So weit ich in meiner Ausbildung bisher mit Rezepturen gearbeitet habe, habe ich nur relativ einfache Rezepturen gehabt. Ich habe immer ein Rezept mit ensprechenden Elementen (Variablen) angelegt und beim Laden wurden die Daten des entsprechenden Datensazes direkt in die Variablen geladen. Jetzt muss dieses Laden der Werte in die Variablen ja aber nach Abschluss jedes Schrittes 16 mal hintereinander und automatisch geschehen.

Ich stehe dort leider etwas auf de Schlauch und kommt nicht so recht voran. Ich bin mir auch nicht sicher, ob das so mit der normalen herkömmlichen Rezeptur funktioniert, da ich auch nicht weiß wie ich die Rezepte in diesem Format dort anlagen soll/kann.
Ich habe noch 2 Bilder angehangen, die den Aufbau der Rezepte im DB zeigen.

Ich hoffe ich konnte mein Problem so gut wie möglich schildern, bei Unklarheiten bitte jederzeit melden.
Ich bin für jede Hilfe dankbar.

Vielen Dank und mit den besten Grüßen

Aljoscha
 

Anhänge

  • Rezeptaufbau.jpg
    Rezeptaufbau.jpg
    103,9 KB · Aufrufe: 70
  • aktueller_Rezeptschritt.jpg
    aktueller_Rezeptschritt.jpg
    81,3 KB · Aufrufe: 51
Ich vermute mal, Du hast Dein Rezept jetzt mit den Werten für einen Schritt angelegt, oder?
Idealerweise sollte dies einem UDT (z.B. myUDT_Step) entsprechen.

Um alle Schritte im Programm abzuarbeiten und auch in einem Rezept zu speichern, musst Du ein Array [0..x] of myUDT_Step dieser Schritte anlegen.
Dieses Array kannst Du im Programm in einer Schleife durchlaufen und auch so komplett in einem Rezept speichern.



Ich hoffe, ich hab' jetzt keinen Blödsinn erzählt, denn genau so realisiere ich gerade meinen Ablauf, der ähnlich gelagert ist.
Und eine der nächsten Sachen ist dann auch das Anlegen des Rezeptes dazu.
Ansonsten kann ich mich hier gleich mit anhängen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde es folgendermaßen machen:

HMI:
  • Rezept mit 16x deinen Datensätzen hintereinander.


SPS:
  • Rezept DB
    • In diesen Rezept DB stecken 16x UDT's (Parameter[1..16] of UDT_Parameter) mit Datensätzen
  • Ablauf (Schrittkette)
    • Index des UDT's erhöhen

Also Schritt 1 benutzt Parameter[1], Schritt 2 = Parameter[2] , ...


Stefan
 
Hallo hucki,

vielen dank schonmal für deine Antwort.

Wie auf dem Bild "Rezeptaufbau" zu sehen ist, habe ich das ganze als UDT angelegt.

Program_Recipe_Data[0..39] (jeweiliges Rezept) vom UDT Typ "Program Array" --> Dieses enthält Program_Step[0..15] (Arrays der einzelnen Prozessschritte) vom UDT Typ "Step Array" --> Diese enthalten die Rezeptparameter.

Vielleicht kann ich dir aber auch gerade nicht ganz folgen.:roll:

Es soll halt so aussehen, dass das ausgewählte Rezept komplett in ein Feld "Current_Process_Recipe" geladen wird. Sprich das jetzt zu nutzende Rezept. Dies ist auch vom UDT-Typ "Program_Array" entspricht also vom Aufbau her der Struktur eines Rezepts. Von da aus sollen dann wenn angefragt die Werte der Parameter des jeweiligen Schritts in das Feld "Current_Process_Parameters" geladen werden. Dieses ist vom UDT-Typ "Step_Array", enthält also die jeweiligen Parameter eines Schrittes. Von da aus werden die Werte halt im restlichen Programm verarbeitet bzw. da wird dann halt vom Programm drauf zugegriffen.

Ich weiß halt nur nicht, wie ich ein solches Rezept in der klassichen Rezeptur anlege. Das Laden der einzelnen Werte des jeweiligen Schrittes aus dem Feld "Current_Process_Recipe" in das Feld "Current_Process_Parameters" muss ja später wohl sowieso programmgesteuert erfolgen.

Ich hoffe ich sehe das so richtig. :)

Beste Grüße

Aljoscha
 
Hallo Stefan,

vielen Dank für deine Antwort.

Aber ich kann über die Rezepturanzeige beipielsweise immer nur einen Datensatz einer Rezeptur laden, in meinem Fall müssen aber doch dann 16 geladen werden.
Dann müsste ich ja zuerst das Rezept auswählen und dann die Datensätze 1-16 nacheinander auswählen und laden. Oder sehe ich das gerade falsch?

Die einzige Möglichkeit die ich momentan sehe ist wie folgt:

Jeder Schritt enthält 35 Parameter. Wenn ich da alles auf einmal laden möchte, müsste ich 560 Elemente (16x35) anlegen und als Variable immer den jeweiligen Eintrag des Schrittes im Rezept_DB anwählen.
Dann würden alle Parameter auf einen Rutsch geladen.

Oder sehe ich das falsch?:confused:

Beste Grüße

Aljoscha
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Aljoscha,

ich frage mich allerdings auch warum du 40 Rezepte in der SPS benötigst. Dein SPS Programm benötigt doch nur 1 Rezept a 16 Datensätzen. Oder brauchst du wirklich alle 40 Rezepte gleichzeitig?

aber zum Verständnis. Ich hätte mir 40 Rezepte in der Rezeptverwaltung erstellt. Jedes dieser Rezepte hat 16 * n Elemente (16 Durchläufe * die Anzahl an Parameter)

  • Rezept 1
    • Parameter 1_1 -- UDT_Step_Array_1
    • Parameter 1_2 -- UDT_Step_Array_1
    • Parameter 1_3 -- UDT_Step_Array_1
    • Parameter 1_4 -- UDT_Step_Array_1
    • Parameter 1_5 -- UDT_Step_Array_1
    • Parameter 2_1 -- UDT_Step_Array_2
    • Parameter 2_2 -- UDT_Step_Array_2
    • Parameter 2_3 -- UDT_Step_Array_2
    • Parameter 2_4 -- UDT_Step_Array_2
    • Parameter 2_5 -- UDT_Step_Array_2
    • Parameter 3_1 -- UDT_Step_Array_3
    • ....


  • Rezept 2
    • Parameter 1_1 -- UDT_Step_Array_1
    • Parameter 1_2 -- UDT_Step_Array_1
    • Parameter 1_3 -- UDT_Step_Array_1
    • Parameter 1_4 -- UDT_Step_Array_1
    • Parameter 1_5 -- UDT_Step_Array_1
    • Parameter 2_1 -- UDT_Step_Array_2
    • Parameter 2_2 -- UDT_Step_Array_2
    • Parameter 2_3 -- UDT_Step_Array_2
    • Parameter 2_4 -- UDT_Step_Array_2
    • Parameter 2_5 -- UDT_Step_Array_2
    • Parameter 3_1 -- UDT_Step_Array_3
    • ....

Hast du angenommen 5 Parameter je Schritt würdest du in diesen Rezept 16*5 Elemente haben (16 Durchläufe * 5 Parameter).
Diese einzelnen Elemente ordnest du da den passenden Variablen in den UDT's zu und kannst dann damit arbeiten.


Stefan
 
Hallo Stefan,

vielen Dank nochmals.

Da hast du natürlich Recht, die vorhandenen Rezepte werden normalerweise nicht auf der SPS abgespeichert, sondern auf dem HMI in der Rezeptverwaltung.

Nur in einer bisherigen Lösung wurde das alles komplett über die Steuerung geregelt, von daher waren auch alle 40 Rezepte, Namen, usw. in einem DB gespeichert.
Normal hat man die Rezepturen auf dem HMI gespeichert und läd die jeweils benötigte in die CPU.


Wenn ich deine Erklärung dann richtig verstehe, habe ich das ja in meinem vorherigen Beitrag schon richtig angedeutet.

Ich muss in meinem Fall ein Rezept mit 16*35 Elementen anlegen. Dieses wird dann in den UDT "aktuelles Rezept" der Cpu geladen und von dort aus werden je nach Schritt die entsprechenden Parameter entnommen, richtig? Dies geschieht dann halt programmgesteuert über eine Schrittkette.


Beste Grüße

Aljoscha
 
Das wirklich blöde dabei ist allerdings, dass das WinCC sowohl in den Variablenlisten als auch in den Rezepten mit den UDTs, Structs oder Arrays der SPS so gar nichts anfangen kann und man statt dessen jede in diesen Strukturen enthaltene Variable einzeln anlegen muss.
:(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das habe ich nun auch gemerkt.

Wenn ich es so löse, muss ich wirklich jede der in meinem Fall 360 Variablen von Hand zu Fuß anlegen. Das ist ein Haufen Geklicke.:eek::sad:
 
Mit Copy & Past und anschließendem Suchen und Ersetzen mittels des Aufgabenbereichs am rechten Rand hält sich das Geklicke in einem "erträglichen" Rahmen.

Hab' so auch gerade meine knapp 300 Variablen jeweils in der VT und im Rezept angelegt.
 
Zurück
Oben