Schieberegister mit Produktionsdaten

Waelder

Level-2
Beiträge
964
Reaktionspunkte
117
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal ne Frage zu Schieberegistern.
Wenn ich Produktionsdaten verarbeiten soll mit ~20 Stelligem Code (String)
Wie kann ich das mit einem Schieberegister realisieren ?
Ich hatte Dummerweise noch nie mit Schieberegistern zu tun. Die Beispiele Hier im Board habe ich mir auch schon angeschaut. Ich bin aber der (zu meinem jetztigen Wissensstand) Meinung dass die Beispiele für String nicht taugen. Ich hab mir mal den Baustein von IBN (FC110) angeschaut. Mit Eintragen und Löschen.
Vielleicht kann mir jemand auf die Sprünge helfen.

Danke noch
Wälder
 
Schieberegister

Hi,
in einem DB die String Arrays deklarieren, und mit einem Index-
Pointer die Einträge suchen/ändern usw.
Was soll denn das Ganze sein, FIFO, LIFO?

Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich nehme mal an es ist ein FILO weil ich weiss wieviel Artikel auf der Maschine maximal sein können.
D.h. Ich hab nen DB mit z.B 5x String á 25

Code:
Da kommts Rein -> Nr1    STRING[25]         
                  Nr2    STRING[25]         
                  Nr3    STRING[25]         
                  Nr4    STRING[25]         
                  Nr5    STRING[25] ->: hier wird rausgeschoben
So wär mein Gedanke.
 
Schieben

Hi,
kommt darauf an was Nr1, Nr2, bedeuten, bzw. rutschen die
Sätze nach unten(der kommende oben), oder werden sie angehängt(der kommende unten).
Wenn Nr.5 der allererster Satz war, ist es ein FIFO.

Gruss:V.
 
Reihenfolge

Die Rutschen von oben nach unten Durch.
Immer alle eins nach unten schieben.

NR1 ist der Erste, NR5 der letzte.

Eingang -> NR1 -> NR2 -> NR3 -> NR4 -> NR5 -> Ausgang

So ich hoff ich habs richtig gemacht. :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst von Hand oder mit SFC10 realiseren.


wenn Impuls zum schieben kommt
spbn weit

Aufruf SFC10 (NR5-Ausgang)
Aufruf SFC10 (NR4-NR5)
Aufruf SFC10 (NR3-NR4)
Aufruf SFC10 (NR2-NR3)
Aufruf SFC10 (NR1-NR2)
Aufruf SFC10 (Eingang-NR1)

weit: nop 0
 
ich würd nicht den SFC 10 nehmen :)

Sperren von bausteinbezogenen, symbolbezogenen und Leittechniksammelmeldungen mit der SFC 10 "DIS_MSG"

sondern SFC 20

Speicherbereich kopieren mit der SFC 20 "BLKMOV"

zu finden in der Standardlibrary unter "System Function Blocks"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es geht auch mit etwas weniger Rechenaufwand, mit einem Zeiger auf den gültigen Eintrag.

Code:
zuerst 1. Mal raus dann 1. Mal rein    -> Nr1    STRING[25]         
                                          Nr2    STRING[25]         
                                          Nr3    STRING[25]         
                                          Nr4    STRING[25]         
                                          Nr5    STRING[25] 
                                                         
                                          Nr1    STRING[25]         
zuerst 2. Mal raus dann 2. Mal rein    -> Nr2    STRING[25]         
                                          Nr3    STRING[25]         
                                          Nr4    STRING[25]         
                                          Nr5    STRING[25]  

                                          Nr1    STRING[25]         
                                          Nr2    STRING[25]         
zuerst 3. Mal raus dann 3. Mal rein    -> Nr3    STRING[25]         
                                          Nr4    STRING[25]         
                                          Nr5    STRING[25]

                                          Nr1    STRING[25]         
                                          Nr2    STRING[25]         
                                          Nr3    STRING[25]         
zuerst 4. Mal raus dann 4. Mal rein    -> Nr4    STRING[25]         
                                          Nr5    STRING[25]

                                          Nr1    STRING[25]         
                                          Nr2    STRING[25]         
                                          Nr3    STRING[25]         
                                          Nr4    STRING[25]         
 zuerst 5. Mal raus dann 5. Mal rein    ->Nr5    STRING[25]
Nach dem 5. Mal fängt man wieder bei 1 an.

Ausgangssituation:

Überall steht "" drin, also alles leer.
Das 1. Produkt kommt, also Auslesen Nr.1 im Output ablegen, Input einlesen in Nr.1 ablegen, Zeiger auf Nr.2
Das 12 Produkt kommt, also Auslesen Nr.2 im Output ablegen, Input einlesen in Nr.2 ablegen, Zeiger auf Nr.3

...

Das 5. Produkt kommt, also Auslesen Nr.5 im Output ablegen, Input einlesen in Nr.5 ablegen, Zeiger auf Nr.1

usw.

Im Output steht immer das rausgeschobene Produkt. Zum Schluß, wenn nur noch ausgelesen wird, z.Bsp. beim Leerfahren schreibt man immer "" rein.

Vorteil, man benötigt nur 2x SFC20, was bei manchen CPU schon Zykluszeit sparen hilft.
 
Stimmt, SFC20 nicht 10! Denkfehler .... :cool:

@Ralle,
mit dem sparen von Zyykluszeit gebe ih Dir zwar recht, aber selbst bei den alten CPU's waren es ja keine 10ms mehr, sondern weniger.
Ebenfalls wird der Programmteil ja nicht zyklisch sondern beim takten der Werkstücke einmal ausgeführt, somit ist die Zykluszeit für diesen einen Zyklus nicht merklich höher.

Wobei ich Dir mit dem Zeiger auch recht gebe und es eine nette Lösung ist!



Oder halt das ganze von Hand :) :

L DW Last-1
T DW Last
L DW Last-2
T DW Last-1
...

Wird aber ne nette Tipparbeit :)
 
Zuletzt bearbeitet:
Zurück
Oben