# Produktverfolgung



## markuscps (4 August 2010)

Hallo SPSler

wie wurdet ihr folgendes Programmieren?

Ich hab einen Rundlaufer mit festen Positionen und nutze ein Schieberegister in das ich schreibe falls das Produkt mal einen Fehler hat,
am Auswurf werfe ich fehlerhafte Produkte aus.
Ein Produkt kann aber mehrere Fehler haben, sehe ich in meinem System nicht.

Ich konnte naturlich fur jeden Fehler ein extra Schieberegister schieben (hab ich teilweise) aber da gibt es doch sicher eine bessere Loesung?
Was fur Vorteile hab ich wenn ich mit Pointern arbeite, hab ich noch nicht so ganz verstanden?

Danke


----------



## rostiger Nagel (4 August 2010)

mach doch ein FiFo Register und erstelle für jede Bearbeitunsstation ein
Index Zeiger auf das FiFo Register. Der Inhalt des Register kann dann für
jedes Werkstück mehr Information haben bis zu einen Struct bzw. Array.


----------



## Pinguino (4 August 2010)

Wie meinst du das, dass für jede Station einen Zeiger braucht?
Wie können die Zeiger auf das gleiche FiFo-Register zugreifen?

Ich danke dir für dein Hinweis!!!


----------



## Larry Laffer (4 August 2010)

Hallo,
du könntest alternativ zu deinem Schieberegister (Array_of_Bool) ein Array_of_Byte oder sogar Array_of_Word aufbauen. Hier gibt es dann zu jeder Position deines Rundschalttisches ein Speicher-Element, dass du entsprechend beschreibst. Du bräuchtest hierbei keine Pointer für die Zugriffe sondern kannst die einzelnen Bits immer absolut setzen. Das Einzige ist das Rotieren deines Schiebespeichers - da würde sich eine indirekte Adressierung anbieten, was du dann ansteuerst, wenn du auch den Rundschalttisch ansteuerst ...

Gruß
Larry


----------



## markuscps (4 August 2010)

ist nicht ein einfaches Schieberegister hier die bessere Losung? was fuer Vorteile hab ich durch ein Fifo?
Ich lege das Produkt in den Rundlaefer und Takte immer eine Station weiter, nach z.B. 8 Stationen verlaesst das Produkt den Rundlaefer wieder oder wird ausgeworfen.

Was fuer Vorteile hab ich durch das Fifo im vergleich zu einem Schieberegister?


----------



## Larry Laffer (4 August 2010)

... du kannst auf die Weise das machen, was du möchtest ...


----------



## markuscps (4 August 2010)

Ich koennte also ein ganzes Word schieben und in die einzelnen Bits verschiedene Fehler schreiben, das hoert sich fuer mich schon verstaendlicher an. 

"Das Einzige ist das Rotieren deines Schiebespeichers - da würde sich eine indirekte Adressierung anbieten, was du dann ansteuerst, wenn du auch den Rundschalttisch ansteuerst ..."

Das verstehe ich nicht, wie soll ich das machen?


----------



## Larry Laffer (4 August 2010)

... du machst dir einen DB mit der Anzahl von Worten, die du Plätze auf deinem Rundschalttisch hast.

Änderst du an dem Status eines Platzes etwas, so setzt (oder rücksetzt) du ein Bit in dem zuständigen Datenwort.

Willst du den Schiebespeicher takten, so kopierst du die Worte um ein hoch (von hinten nach vorne).
Also ohne Schleife :
	
	



```
L DB1.DBW18
T DB1.DBW20
 
L DB1.DBW16
T DB1.DBW18
 
usw.
```
... und vielleicht auch noch eine Flanke einbauen ...

Gruß
larry


----------



## rostiger Nagel (4 August 2010)

Pinguino schrieb:


> Wie meinst du das, dass für jede Station einen Zeiger braucht?
> Wie können die Zeiger auf das gleiche FiFo-Register zugreifen?
> 
> Ich danke dir für dein Hinweis!!!


 
Ich bin für jeden Hinweis gerne zu haben,
so habe ich das gemeint einen Zeiger der Hochtaktet für das Register
selber und jeweils einen Zeiger für jede Station die beim Takt den
Register Zeiger folgen. Haben alle Zeiger den selben Wert ist alles ab-
gearbeitet. Dieses Register kann dann z.b. 1000 Einträge haben, ist das
Ende erreicht wird wieder bei 1 angefangen, so mussen nicht ständig
die Werte umgeladen werden.


----------



## markuscps (5 August 2010)

@Larry Laffer

so werde ich das wahrscheinlich machen, gefaellt mir gut und ist einfach.

Ich frage mich jetzt nur, welche Vorteile koennte ich hab wenn ich versuche das ueber Pointer zu machen?


----------



## rostiger Nagel (5 August 2010)

wenn du mit Pointern arbeitest kannst du eine Schleife für das umladen machen.


----------



## Pinguino (10 August 2010)

Helmut_von_der_Reparatur schrieb:


> Ich bin für jeden Hinweis gerne zu haben,
> so habe ich das gemeint einen Zeiger der Hochtaktet für das Register
> selber und jeweils einen Zeiger für jede Station die beim Takt den
> Register Zeiger folgen. Haben alle Zeiger den selben Wert ist alles ab-
> ...


 
Kannst du mir zeigen wie du das gemeinst hast mit einem konkreten Beispiel: "Zeiger der Hochtaktet für das Register und jeweils einen Zeiger für jede Station den Register folgen". Somit wird es durchsichtiger und verstehe wie Du es gemeint hast!!


----------



## rostiger Nagel (10 August 2010)

Pinguino schrieb:


> Kannst du mir zeigen wie du das gemeinst hast mit einem konkreten Beispiel: "Zeiger der Hochtaktet für das Register und jeweils einen Zeiger für jede Station den Register folgen". Somit wird es durchsichtiger und verstehe wie Du es gemeint hast!!



Ich habe es dir doch gerade erklärt,
soll ich dir noch ein Gemälde dazu malen?


----------



## rostiger Nagel (11 August 2010)

Helmut_von_der_Reparatur schrieb:


> soll ich dir noch ein Gemälde dazu malen?


 
Hallo Pinocchio,
ich habe dir das jetzt mal aufgemalt, ich hoffe es ist verständlich...

Anhang anzeigen test_1.pdf


----------



## Pinguino (11 August 2010)

Hallo Helmut,
Was ich nicht kapiere, warum müssen die Stationen den Zeiger mit zählen?


----------



## rostiger Nagel (11 August 2010)

das hat den Vorteil das du jeden Aggregat seinen eigenen Trigger geben
kannst, so kannst das eine schon weiterbeartein z.b. in der nächsten
Station obwohl das andere noch nicht fertig ist.

Wir nutzen so etwas in der Holzbearbeitung und nennt sich da Strecken-
steuerung. Das mußt du dir so vortstellen das du eine Maschine hast die
von 5-70m sein kann. Auf dieser sind dann Bearbeitungsaggregate, z.b.
Fräser. Da läuft das Werkstück dran vorbei und dann setzt der Fräser dann in 
das Werkstück ein, wenn es dran vorbei läuft.

Diese Maschinen laufen von 15-120m Vorschub, es können dann so als
Beispiel 50 Werkstücke in der Maschine sein.


----------



## Pinguino (11 August 2010)

Hallo Helmut
Wie Du mir das erklärt hast und wenn ich die PDF-Datei anschaue da kann nur ein Werkstück weitergeschaltet werden. Stimmt das?


----------



## rostiger Nagel (11 August 2010)

bein einlesen ja, beim auslesen nein, da jeder Zeiger seinen
eigenen Trigger haben könnte. Das kommt darauf an wie du
es für deinen Anwendungsfall brauchst.


----------

