DB-Werte nacheinander einem FB zuweisen

Herrminator

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

ich habe in einem DB eine Rezeptur die aus Zeiten besteht:

1 Wert 2min
2 Wert 5min
3 Wert 1min
4 Wert 9min

Ich habe einen FB Zeit mit den Parametern:

Start --> IN
TW-->IN
Fertig <-- OUT

Jetzt sollen die Werte nacheinander durch den FB Zeit abgearbeitet werden.

(Das ganze ist nur ein Ansatz)

Meine Frage:

Wie weise ich dem TW nacheinander die Werte aus dem DB zu?
Gibt es da ne elegante Möglichkeit?
Mir reichen auch Stichworte nach was ich Suchen soll.

Vielen Dank schonmal.

Gruß Tobias
 
Die Zeit mittels indirekter Adressierung und einem Zählwert (1 bis Anzahl der Zeiten im DB) einem temp Word zuweisen und dieses an TW schreiben.
Nach Ablaufen der Zeit den Zählwert +1 und weiter gehts.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der code könnte dann ungefähr so aussehen


auf db 1
l mw1 // MW der entsprechend erhöt werden muss
l p#2.0 // Pointer mit zwei Byte
lar1 // Übernehme in AR1
l dbw[ar1,p#0.0] // Datenwort in abhängigkeit von MW1
t mw3 // MW in dem dein Zeitwert übertragen wird

MW3 wäre dann dein TW

MW1 solltest du dann über eine Schleifen entprechen erhöhen
 
Der code könnte dann ungefähr so aussehen


auf db 1
l mw1 // MW der entsprechend erhöt werden muss
l p#2.0 // Pointer mit zwei Byte
lar1 // Übernehme in AR1
l dbw[ar1,p#0.0] // Datenwort in abhängigkeit von MW1
t mw3 // MW in dem dein Zeitwert übertragen wird

MW3 wäre dann dein TW

MW1 solltest du dann über eine Schleifen entprechen erhöhen

Aber nur gaaaanz ungefähr, so liest du immer das selbe aus, egal was in MW1 steht.

Herminator: Lies mal hier im FAQ und in der Step7-Hilfe zum Stichwort.
 
auf db 1
l mw1 // MW der entsprechend erhöt werden muss
l p#2.0 // Pointer mit zwei Byte

*D // Stimmt kleinigkeit vergessen

lar1 // Übernehme in AR1
l dbw[ar1,p#0.0] // Datenwort in abhängigkeit von MW1
t mw3 // MW in dem dein Zeitwert übertragen wird
 
Jetzt brauch ich doch nochmal Input

Hallo zusammen

Meine Anlage sieht so aus:
Eine Verfahrachse (X-Achse) soll über eine Hubachse (Z-Achse) Materialkörbe aufnehmen, und je nach Rezeptur in Behälter getaucht werden.
Es gibt 2 verschiedene Typen von Behältern (insgesagmt sind es 6 Behälter):

Typ A Reihenfolge / Position / Verweilzeit / Soll-Temperatur / Ultraschall(ja/nein)
Typ E Reihenfolge / Position / Verweilzeit
Die Rezeptur sieht vor, das der Bediener über Reihenfolge der Behälter frei Wählen kann.

Bis jetzt habe ich für jeden Behältertyp einen FB geschrieben der die jeweilige Funktion ausführt.
Jetzt müsste ich ja eine Fc schreiben, die nach der Reihenfolge von 0 bis x den jeweiligen Behältern ihre Werte zuordnet.(Und später auch steuert)
Macht es jetzt Sinn die Parameter erst mal in die Richtige Reihenfolge zu bringen? Oder ist es besser sie so zu belassen, und gleich mit einem Pointer zu arbeiten?
Wie reagiere ich am geschicktesten darauf, dass die Rezeturteile nicht gleichlang sind?
Ich hoffe, ich konnte mein Vorhaben halbwegs verständlich rüberbringen.

Gruß Tobias
 
Hallo,
ich würde hier als Basis eine Struktur mit gleichem Aufbau wählen. Nicht benötigte Feld-Einträge würde ich dann dabei einfach nicht benutzen.
Die Quelle dieser Struktur wird ja sehr wahrscheinlich ein DB sein.
Hier könntest du deine Daten (Rezept) dann ggf. sogar als ARRAY_of_STRUCT für die verschiedenen Rezepte anlegen ...

Gruß
LL
 
Hallo,
ich würde die Werte indiziert (entsprechend der Rezept-Anwahl) aus der Struktur heraus laden. Du baust dir mit Hilfe des Indexes und des dir bekannten Struktur-Anfangs einen Pointer (ist ja weiter oben im Thread schon mal angerissen) und über den lädst du dir dann die Einzel-Variablen (ggf. in den TEMP-Bereich deines Bausteins) und übergibst die dann den jeweiligen Unter-Bausteinen.
Ich würde mir dafür sogar eine eigenständige Funktion erstellen, der ich den gewünschten Index übergebe und die mir dann per OUT-Parameter die angewählten Werte zurück gibt ...

Gruß
LL
 
Ah jetzt wirds langsam Tag ;)

Wenn ich das richtig verstanden habe, sortiere ich meine einzelnen Rezeptur-Segmente. Mache sie alle gleich groß, und lese sie dann mit einem Pointer aus und schreibe sie an die gewünschte Zielfunktion.

Sozusagen Lese Schritt 1 ---> Wert 1, Wert 2 ,.....
Und Welcher Block an Welches Ziel Kopiert wird, mache ich über einen Ident Parameter Lese Schritt 1--> Ident A kopiere Werte ---> Funktion A--> Wert 1, Wert 2
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Holla,
ich denke, du bist jetzt auf der richtigen Spur.
Wichtig ist jetzt nur (auch) noch, welche (Neben-)Info's du noch so in deiner Struktur versteckst. Hier könnte nun z.B. auch drinstehen, welchen Typ du benutzen willst/sollst usw.

Kommst du nun klar ?

Gruß
LL
 
Zurück
Oben