Zählen von Werkstückträger in einem Umlauf

HENSCj

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

Ich habe folgendes Problem. Es gibt ein Umlaufsystem in dem ich eine max. Anzahl an Werkstückträgern habe und diese können beliebig entnommen und dazugegeben werden das heißt es gibt eine tatsächliche Anzahl an Werkstückträgern im System, die sich jeden Zyklus ändern kann (Es können auch mehrere entnommen werden). Ich würde gerne wissen wie viel Werkstückträger in meinem System tatsächlich sind. Jeder WT hat ein Nummer die man am Start und am Ende durch RFID auslesen kann.

max. Anzahl = mx
entnommene Anzahl = ent
tatsächliche Anzahl = mx - ent = tat

Ich habe schon probiert die WT Nummern zu addieren und dann immer abziehen, jedoch nie erfolgreich.

Hättet ihr eine Lösung für mich :)

LG2020-01-14 10_43_10-WT zählen - OneNote.png
 
Wie häufig kommt ein WT an einer Lesestelle vorbei?

Ich denke an sowas wie nehme irgendeine Nummer und zähle bis du diese Nummer wieder siehst. Kann man natürlich auch für mehrere machen.
 
Eine exakte Lösung kann ich auch nicht bieten, aber einen Ansatz.

Man braucht eine Liste bzw. besser einen Umlaufpuffer, in den man nach der Reihe immer die Werkstückträgernummern
einträgt.

Wenn die hinten nicht in der Reihenfolge wieder ankommen wie sie vorne eingelsen wurden, dann wurde
hinzugefügt oder entnommen.
Entweder eine Nummer fehlt oder eine neue Nummer ist hinzugekommen.

Der Umlaufpuffer enthält z.B. 256 Einträge 0..255, so lässt sich der Überlauf leicht bewerkstelltigen.
Bei jedem gelesenen Werkstückträger am Anfang die Trägernummer in den Puffer schreiben und den Zeiger um 1 erhöhen.

Gleiches für den Puffer am Ende.

Dann muss man irgendwie schauen, wann man 1x rum ist oder den Ausgangs mit dem Eingangspuffer verlgeichen.
Daraus bringt man garantiert die Anzahl der WT raus.

Weiterhin hat man auch noch die Reiehnfolge bzw. weis wo sich ein WT in der Anlage befinden müsste.
 
Hallo,
ist das so denn wirklich dein Ansatz ?
Du hast doch, so vermute ich jedenfalls, keine Sushi-Bar.
Ich denke eher, dass deine WT's an Arbeitsstationen vorbeifahren und an jeder Station dann etwas mit dem WT (oder dem was sich darauf befindet) gemacht wird. Wenn das so ist dann geht es für mich nur mit absolutem Nachhalten aller Aktionen damit du weißt wann ein WT (oder das Ding darauf) fertig (bearbeitet) ist.
Hier habe ich dann bislang immer an jeder Station einen RFID-Leser gehabt. Anders sehe ich da keine Möglichkeit.
Das Arbeitsergebnis von jedem WT habe ich in der SPS vorgehalten und nicht auf dem Chip - es läßt sich dann auch m.E. leichter visualisieren ...

Gruß
Larry
 
Hallo HENSCj

ich habe bei unseren Maschinen öfters das Problem, dass nicht zu jedem Zeitpunkt die Anzahl der Produkte bekannt ist. Grund: es spielen Faktoren eine Rolle, welche der Steuerung nicht bekannt sind.
Bei laufender Produktion ist dies egal. Um jedoch trotzdem irgendwann eine konkrete Zahl zu haben, pausiere ich in einem geeignetem Moment alle Abläufe bis alle Produkt-Bewegungen zur Ruhe kommen. Und dann zähle ich die Lichtschranken durch.
 
ja jede station hat auch einen rfid leser nur weis ich nicht ob das was bringt

Wenn alle WT an einem Leser ins System reinkommen und auch herauskommen müssen, dann würde ich es wie folgt lösen:

Du erstellst einen Datenbaustein mit einem Array, dessen ID die ID des RFID-Chips ist. Wenn die ID des Chips nicht klein bzw. aufsteigend ist, dann kann man ein Array, sagen wir mit Bereich 0-255 erstellen und die Struktur dann wie folgt aufbauen:
STRUCT
RFID_ID - REAL/INT/UINT/STRING - Was auch immer Du benötigst
im_System - BOOL
END_STRUCT

Jedes Array beinhaltet also die Information ob der WT im System ist oder nicht und wird halt bei jedem Leser ein- oder ausgetragen, je nachdem wie herum es passieren soll. Man könnte die Struktur vergrößern, sollen noch Begleitwerte mit hinzukommen. Irgendwas ähnliches hast Du doch auch schon im System oder speicherst Du alle Daten auf dem Chip? (Mache ich nie, da ich dem KD immer die Möglichkeit geben will die Daten bei laufender Anlage über das HMI zu wechseln, z.B. aus einer Lackierung in Rot soll eine Gelbe werden, ebenso finde ich es sicherer die Daten in der CPU zu halten als im Chip.)

Damit auch immer die richtige Stelle genutzt wird würde ich stumpf eine Schleife mit einer Abfrage erstellen, ob die vorliegende WT-ID auch die im Array ist und entsprechend ein- oder austragen.
Sollte dem nicht so sein, dann einfach die erste freie Stelle suchen und dort eintragen lassen, beim Entnehmen natürlich löschen.

Somit kannst Du anschließend mit einer Schleife einfach nur einmal das Array durchlaufen und jeder der als im System eingetragen ist mit +1 zählen, vorher den Zähler natürlich auf Null setzen. Diesen Zählwert nach der Schleife nun noch in eine neue Variable schreiben damit beim Zählen die HMI-Anzeige nicht flimmert.

Könnte man auch alles mit 2 Schleifendurchläufen erledigen, was dann, je nachdem wieviele WT Du da hast, keine groß bemerkbare Bearbeitungszeit hat.

Setzt natürlich voraus, das Du nicht verfolgen willst an welcher Stelle der WT aktuell steht. Das würde ähnlich, aber mit einem anderen Ablauf geschehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn jede Arbeitsstation einen Leser hat:

vorhergehende Station mit aktueller abgleichen:
ist die Reihenfolge gleich -> Zählen
fehlt was -> subtrahieren
was dazugekommen -> addieren

Das jeweils zwischen allen einzelnen Stationen.

Oder:

Hast du vor den Stationen Vereinzelungsstrecken wo du die Träger ev durch Inis zählen kannst? Ob in den Bearbeitungsstationen was ist sollte ja leicht zu erfassen sein.
Dann bräuchtest du nur die Träger in den Wartepositionen und die besetzten Stationen zu addieren. (braucht halt viele Inis oder nur einen und den Wartebereich so abdecken das hier nur entnommen werden kann wenn das auch einen Sensor auslöst)

Kannst du ev. das entnehmen und zufügen auf wenige Stellen eingrenzen und das dann hier irgendwie detektieren? zB. Rein gehts nur über einen (oder wenigen) Zugang, Entnommen kann nur an wenigen Stellen werden zB durch ausschleusen oder so
 
Zurück
Oben