Hallo Community,
ich verzweifle so langsam an meinem Problem.
Ich möchte für meine Studienarbeit eine Schleifmaschine modellieren, die einen Wechseltisch (PlatzPuffer) zur Bestückung beinhaltet. Somit kann während das eine Teil gefertigt wird, ein zweites Teil beriets bestückt werden. Zudem gibt es vor der Maschine zwei Puffer, die je einen Auftrag mit unterschiedlicher Teileanzahl beinhalten. Die Teile sind auf einem Ladungsträger gelagert und sollen im Wechsel aus den jeweiligen Puffern genommen und bearbeitet werden, solange bis das Los komplett bearbeitet ist.
Erster Versuch: Ausgangssteuerung der Puffer:
is
i,k:integer;
vorherigerPuffer: object;
Teil: object;
do
vorherigerPuffer:= Wechseltisch.vorherigerPuffer;
if aktiverPuffer /= Puffer1 then
for i:=1 to ?.inhalt.yDim loop
for k:=1 to ?.inhalt.xDim loop
Teil:= ?.inhalt.pe(i,k).inhalt;
if Teil /= void and Teil.Status_bearbeitet = false then
Teil.umlagern(Wechseltisch);
Wechseltisch.vorherigerPuffer:= ?;
Teil.Nummer:= Schaufel.Nummer + 1;
exitloop 2;
end;
next;
next;
end;
end;
--> Problem: da die Methoden in den Ausgangssteuerungen der Puffer liegt, wird diese nur einmal aufgerufen, wenn der Ladungsträger in den Ausgang eintritt.
--> möglicher Lösungsansatz: Ausgangssteuerung so oft aufrufen, bis alle Teile einmal bearbeitet worden. Wie wäre das möglich?
Zweiter Versuch: Ziehensteuerung im Wechseltisch:
is
BlockListe:table;
i,k : integer;
Inhalt_P1, Inhalt_P2: object;
vorherigerPuffer, Teil: object;
do
s:= 1;
t:= 1;
BlockListe.create;
?.vBlockierliste(BlockListe);
if Blockliste.ydim >= 2 then
Inhalt_P1:= Blockliste[1,1];
Inhalt_P2:= BlockListe[1,2];
vorherigerPuffer:= ?.vorherigerPuffer;
if vorherigerPuffer = void then
vorherigerPuffer:= Inhalt_P1;
else
inspect vorherigerpuffer.name
when "Inhalt_P1" then
vorherigerPuffer:=Inhalt_P2;
when "Inhalt_P2" then
vorherigerPuffer:= Inhalt_P1;
end;
end;
waituntil wechseltisch.leer prio 1;
for i:=1 to vorherigerPuffer.yDim loop
for k:=1 to vorherigerPuffer.xDim loop
Teil:= vorherigerPuffer.pe(i,k).inhalt;
if Teil /= void and Teil.Status_bearbeitet = false then
?.entblockieren(Produkt);
Teil.Nummer:= Teil.Nummer + 1;
exitloop 2;
end;
next;
next;
end;
end;
--> Problem: Die Teile auf dem Ladungsträger (Inhalt Puffer) zugreifen, aber die werden nicht umgelagern.
Ich habe keine richtige Idee, wie ich das grundlegende Problem lösen kann.
Könnt ihr mir dazu bitte Input geben und gern auch Lösungsvorschläge.
Tausend Dank...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP