# Teilebearbeitung an unterschiedl.Stationen



## tigger (7 Februar 2011)

Hallo,
 es handelt sich um ein Projekt das aus 4 einzelnen Stationen besteht, die nicht miteinander verknüft sind. In der 1.Station wird der Barcode eines Teils eingelesen und dort weiter verarbeitet. An der 2. Station wird erneut der Barcode eingelesen und das Teil weiter verarbeitet usw. Es soll so sicher gestellt werden, dass jedes Teil jede Station durchläuft und nach jeder Station mit einem I.O. Status versehen wird bzw. bei N.I.O.darf keine weiter Verarbeitung stattfinden. Und nun zu meinem Problem. Ich weiß nicht, wie ich das am besten realisieren soll. Ich dachte da vielleicht an ein Schieberegister der mir die Barcodes und den derzeitigen Status speichert, den ich dann am Anfang jeder Station, nach lesen des Barcodes, abfrage.
 Ich weiß jedoch nicht, wie ich das entsprechende Teil aus z.Bsp: eines Datenbausteins auslese, wenn ich ihn vorher mit einem Schieberegister hineingeschrieben habe.Nach der letzten Station sollte diese Teil nicht mehr aufgeführt werden und aus dem Schieberegister gelöscht werden.
 Ich hoffe ihr könnt mir einige Tipps geben, wie ich dies am besten lösen könnte.



 Es wird eine CPU 317-2DP verwendet


 Gruß
 und Danke im voraus


----------



## Blockmove (7 Februar 2011)

Mein Vorschlag:
Du definierst eine UDT_Daten mit folgender Struktur:
Barcode
Station 1 Status iO / niO
Station 2 Status iO / niO
Station 3 Status iO / niO
Station 4 Status iO / niO

Dann erstellst du einen DB mit einem Array [1 .. max. Anzahl Teile] of UDT_Daten

Station 1 liest den Barcode.
Anschliessend durchläufst das Array bis ein freier Platz gefunden ist und trägst Barcode und Status der Station 1 ein.

Alle weiteren Stationen lesen den Barcode.
Anschliessend suchst du den Barcode im Array und prüfst den Status der vorherigen Stationen. Alle vorherigen Stationen iO, dann Bearbeiten und Status eintragen. Wenn alle Stationen den Status iO eingetragen haben, dann Teil fertig und entsprechendenes Array-Element mit Initialwerten überschreiben.

Mit dieser Vorgehensweise bist du nicht an eine Bearbeitungsreihenfolge oder dergleichen gebunden. Wichtig ist nur, dass du eine Funktion vorsiehst um das Array manuell zu leeren. Manchmal "verschwinden" Teile aus der Anlage (Handentnahme, Störung, ...)

Gruß
Dieter


----------



## tigger (13 Februar 2011)

Danke Dieter,
habe jetzt mir einen UDT aufgebaut und diese dan in einem DB (Array) aufgerufen. Es kommen noch zu den Barcode, io, nio auch zusätzliche Werte die in den folgenden Stationen aufgenommen werden, wie z.B. Kraft, Weg, Drehmoment usw. So habe ich mir im UDT diese Werte zusätzlich zugeschrieben.Jetzt zu meinen Fragen:

A) Wie durchsuche ich an den versch. Stationen das Array nach dem passenden Barcode um dann die Werte einzutragen?

B) Hat jemand vielleicht eine ähnliche Aufgabe gehabt und kann mir diesbezüglich ein Bsp. zukommen lassen

Gruß
Matze


----------



## Blockmove (13 Februar 2011)

tigger schrieb:


> A) Wie durchsuche ich an den versch. Stationen das Array nach dem passenden Barcode um dann die Werte einzutragen?



Stellt sich erstmal die Frage in welcher Sprache du es machen willst.
Ich würde hier SCL bevorzugen.

Gruß
Dieter


----------



## bike (13 Februar 2011)

Zwar heiße ich nicht Dieter, aber vielleicht kann ich dir helfen.

Du musst zunächst für die maximale Anzahl von Teilen in dem DB deine UDT einbinden.
Wenn du dann den Barcode gelesen hast, schaust du mit einem Pointer ob die vom Scanner gelesene zu einer Nummer im DB passt. 
Wenn dies der Fall ist, hast du den Zeiger und kannst dir die Daten aussuchen. Dein i.O und n.i.O stehen ja immer im selben Offset zu dem Namen des Teils.
Wenn nicht, erhöhst du den Zeiger um die Schrittweite der UDT.

Solch eine Funktion würde ich in SCL schreiben, da geht das schnell und sehr gut leserlich.


bike


----------



## tigger (13 Februar 2011)

Blockmove schrieb:


> Stellt sich erstmal die Frage in welcher Sprache du es machen willst.
> Ich würde hier SCL bevorzugen.
> 
> Gruß
> Dieter



Eigentlich ist es mir egal, hauptsache es funzt irgendwie. Hätte vielleicht jemand ein Beispiel für mich?


----------



## bike (13 Februar 2011)

tigger schrieb:


> Eigentlich ist es mir egal, hauptsache es funzt irgendwie. Hätte vielleicht jemand ein Beispiel für mich?



Ich denke es ist nicht Lösung wen du irgend ein Programm hast, das du nicht verstehst und im Problemfall dann Fehler nicht beheben kannst.
Ist es so schwer eine Lösung selbst zu suchen?

Da gehe ich mit Blockmove völlig konform, du musst dir im Vorfeld klar sein wie das Programm erstellen willst.

bike


----------



## tigger (13 Februar 2011)

Alles kein Problem, dachte nur das jemand gleich etwas parat hätte. Wenn ich dich mit meinem Problem jedoch belästigt haben sollte, tut es mir äußerst leid. Vielleicht solltest du aber auch nicht auf alles antworten, wenn es dich nervt. Wenn ich selbst eine Lösung hätte würde ich auch nicht nach einer in diesem Forum suchen. 
Ich denke das Blockmove sehr gut zu diesem Thema passt, ich werde es u.a. auch verwenden.
Schönen Sonntag noch


----------



## bike (13 Februar 2011)

tigger schrieb:


> Alles kein Problem, dachte nur das jemand gleich etwas parat hätte. Wenn ich dich mit meinem Problem jedoch belästigt haben sollte, tut es mir äußerst leid. Vielleicht solltest du aber auch nicht auf alles antworten, wenn es dich nervt. Wenn ich selbst eine Lösung hätte würde ich auch nicht nach einer in diesem Forum suchen.
> Ich denke das Blockmove sehr gut zu diesem Thema passt, ich werde es u.a. auch verwenden.
> Schönen Sonntag noch



Also du belästigst mich nicht.
Ich antworte eigentlich nur, wenn ich denke meine Hinweise können helfen.
Und da ich solche Programme oft selber brauche und schon sehr viele verschiedenste Arten programmiert habe, dachte ich gebe Hinweise und dann ist dem Fragenden geholfen. 
Es ist nur traurig, dass immer sofort nach Lösungen gefragt wird, anstelle selbst etwas zu versuchen und wenn es nicht klappt, dann fragen.
Das sollte in einem Forum wie hier der Weg sein.


bike


----------



## Blockmove (13 Februar 2011)

Wenn du SCL hast, dann ist es eigentlich kein großer Akt, da dir die ganze Zeigergeschichte erspart bleibt.
Um deinen Barcode zu vergleichen kannst du entweder in einer Schleife die Barcodes byteweise vergleichen oder du verwendest die FCs für Stringvergleich. Hängt davon ab, in welcher Form deine Barcodes vorliegen.

Gruß
Dieter

PS:
Ich hab auch keine fertige Lösung dafür.
Aber deine Aufgabe kann wunderschön mit SCL und PLCSIM am Schreibtisch gelöst werden


----------



## bike (13 Februar 2011)

Blockmove schrieb:


> Wenn du SCL hast, dann ist es eigentlich kein großer Akt, da dir die ganze Zeigergeschichte erspart bleibt.
> Um deinen Barcode zu vergleichen kannst du entweder in einer Schleife die Barcodes byteweise vergleichen oder du verwendest die FCs für Stringvergleich. Hängt davon ab, in welcher Form deine Barcodes vorliegen.
> 
> Gruß
> ...



Da hast du sehr recht.
Daher der Hinweis, dass der TE sich eine Strategie überlegt wie das funktionieren soll.
Wenn diese steht ist das Codieren doch ein Spaß, denke ich.


bike


----------



## tigger (13 Februar 2011)

Na dann bedanke ich mich für Eure Mühe. Und ich hab gedacht, ich kann euch mal die Aufgabenstellung geben, ihr löst es komplett und ich sitz schön zu Hause auf dem Sofa bei Chips und Bier. So kann man sich täuschen . 
Na dann muß ich mich wohl an die Arbeit machen. SCL besitze ich leider nicht, so muß ich dann es wohl byteweise vergleichen.
Gruß


----------



## bike (13 Februar 2011)

Also das musst du nicht tun.
Zum Arbeiten mit Strings gibt es da tolle Dinger:
EQ_STRING, GE_STRING oder ähnliches.
Ich würde mir die Standard Library anschauen.


bike


----------



## Blockmove (13 Februar 2011)

tigger schrieb:


> Na dann muß ich mich wohl an die Arbeit machen. SCL besitze ich leider nicht, so muß ich dann es wohl byteweise vergleichen.
> Gruß



DAS wäre dann vielleicht der richtige Augenblick in SCL einzusteigen. 

Dieter


----------



## tigger (13 Februar 2011)

Blockmove schrieb:


> DAS wäre dann vielleicht der richtige Augenblick in SCL einzusteigen.
> 
> Dieter



SCL sagt mir eigentlich nicht wirklich viel, nur das ich bereits in SCL fertige FBs oder FCs verwendet bzw. aufgerufen habe und mich eigentlich nur das Ergebnis daraus interessiert hatte. Vielleicht hast du ja recht mit SCL. Ich werde es mir, wenn zeit ist, mal genauer ansehen.


----------



## bike (13 Februar 2011)

tigger schrieb:


> SCL sagt mir eigentlich nicht wirklich viel, nur das ich bereits in SCL fertige FBs oder FCs verwendet bzw. aufgerufen habe und mich eigentlich nur das Ergebnis daraus interessiert hatte. Vielleicht hast du ja recht mit SCL. Ich werde es mir, wenn zeit ist, mal genauer ansehen.



SCL entlastet dich beim Codieren, aber das Konzept musst du selbst erstellen.
Wie schon oben erklärt, ist auch mit AWL alles zu machen.

bike


----------



## Blockmove (13 Februar 2011)

tigger schrieb:


> SCL sagt mir eigentlich nicht wirklich viel, nur das ich bereits in SCL fertige FBs oder FCs verwendet bzw. aufgerufen habe und mich eigentlich nur das Ergebnis daraus interessiert hatte. Vielleicht hast du ja recht mit SCL. Ich werde es mir, wenn zeit ist, mal genauer ansehen.



Also wenn du irgendwann mal eine Hochsprache (Pascal, Basic, C, ...) gelernt hast, dann findest du dich schnell in SCL zurecht. Deine Aufgabe lässt sich in wenigen Zeilen SCL lösen.
Aber wie schon gesagt: Das Konzept muss vorher vorhanden sein.
Wichtig ist, aber das gilt für AWL genauso, dass alle Daten per Variablenzugriff "erreichbar" sind. Deshalb auch der Hinweis auf UDT und Array.
SCL bietet dir sogenannte Views an. Damit kann man sehr viel machen.

Ich will dich aber nicht zu SCL überreden. Deine Aufgabe lässt sich selbstverständlich auch in AWL erledigen.

Gruß
Dieter


----------



## Larry Laffer (14 Februar 2011)

Blockmove schrieb:


> Ich will dich aber nicht zu SCL überreden. Deine Aufgabe lässt sich selbstverständlich auch in AWL erledigen.


 
Das hat mit "überreden" (glaube ich) gar nichts zu tun - ist eher Selbstschutz ... 
Ich würde eher nicht versuchen, dass in AWL lösen zu wollen - in SCL ist es aber, wie von Bike und Blockmove schon gesagt, keine große Aktion und auch sauber und verständlich umzusetzen ...

Gruß
Larry


----------

