Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Probleme mit dem Sortierer oder Lager

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Probleme mit dem Sortierer oder Lager (1977 mal gelesen)
NiemeyerLukas
Mitglied
Student


Sehen Sie sich das Profil von NiemeyerLukas an!   Senden Sie eine Private Message an NiemeyerLukas  Schreiben Sie einen Gästebucheintrag für NiemeyerLukas

Beiträge: 21
Registriert: 02.03.2015

erstellt am: 05. Mrz. 2015 15:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Schönen Guten Tag,

ich hab da mal ein paar Fragen zum Sortierer und zum Lager.

Ich hab eine kleine Simulation, bestehend aus Quelle - Sortierer - Lager.
Die Quelle erstellt 10BEs mit einem Attribut "Priorität" (Bei mir einfach 10, 20, .... ,100).
Der Sortierer soll diese absteigend nach der Priorität sortieren und denn die 3BEs mit der höchsten Priorität ins Lager packen.
Dies funktioniert auch wunderbar.

Nun will ich aber ein BE aus dem Lager entfernen, die anderen beiden wieder in den Sortierer umlagern und anschließend wieder sortieren.
So dass nun 9 BEs im Sortierer sind und davon sollen jetzt wieder die 3 mit der höchsten Priorität in das Lager gepackt werden.
Ich hab mir 2 Methoden geschrieben um einmal die Reihenfolge im Sortierer und eine für die Reihenfolge im Lager in der Konsole anzeigen zu lassen.

Dadurch ist mir aufgefallen, dass im ersten Schritt alles funktioniert.
Also:
Im Sortierer: 100, 90, 80,.....,10
Nachdem 3 BEs ins Lager geliefert wurden:
Im Lager: 100, 90, 80

Jetzt entferne ich das BE mit der Priorität 90. Die beiden anderen kommen wieder zurück zum Sortierer.
Jetzt
Im Sortierer: 100, 80, 70,....,10 (wie gewollt)

Jetzt das eigentliche Problem:
Nachdem 3 BEs ins Lager geliefert wurden:
Im Lager: 100, 70, 80

Also wird das BE was neu mit ins Lager kommt immer an die Stelle des BEs gepackt, welches zuvor entfernt wurde.

Zur Hilfe mein Quellcode zum Entfernen der BEs:

Code:

.Lager.BE(1).vernichteObjekt;
.Lager.BE(2).umlagern(Sortierer);
.Lager.BE(1).umlagern(Sortierer);
.Sortierer.sortieren;

Der Eingang des Lagers wird immer gesperrt, wenn im Lager 3 BEs sind. Geöffnet wird das Lager manuell durchs ausführen einer Methode.

Wo könnte mein Fehler liegen?

Gruß
NiemeyerLukas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 05. Mrz. 2015 21:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NiemeyerLukas 10 Unities + Antwort hilfreich

BE(1) ist immer das BE, was am längsten im Lager ist. Wenn Sie auf die einzelnen Plätze zugreifen wollen, müssen Sie PE(x,y).inhalt verwenden.
Es gibt keine Verbindung zwischen BE und PE(x,y).inhalt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

NiemeyerLukas
Mitglied
Student


Sehen Sie sich das Profil von NiemeyerLukas an!   Senden Sie eine Private Message an NiemeyerLukas  Schreiben Sie einen Gästebucheintrag für NiemeyerLukas

Beiträge: 21
Registriert: 02.03.2015

erstellt am: 09. Mrz. 2015 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für die Hilfe.
Tut mir Leid das ich mich übers Wochenende nicht melden konnte.

Also wenn ich das richtig verstehe muss ich die BEs immer mit Methoden einlagern und denn wieder auslagern, damit ich sie auf die Richtigen Plätze liegen habe.

Mein Eingang vom Lager ist ja von Beginn an gesperrt, und kann nur manuell geöffnet werden. Wenn der Eingang offen ist kommen die BEs aus dem Sortierer zum Lager.
Nun möchte ich über eine Methode die 3 BEs, welche nacheinander ankommen, korrekt einlagern. Das 1. BE an PE(1,1), das 2. BE an PE(1,2) und das 3. an PE(1,3).

Mit folgendender Schleife dachte ich mir sollte das wunderbar funktionieren:

Code:

is
i:integer;
do
for i:=1 to 3 loop
if  Lager.PE(1,i).leer then
@.umlagern(Lager.PE(1,i));
                exitloop;
end;
next;


if Lager.voll then
.Modelle.Netzwerk.Lager.eingangGesperrt:=True;
end;
end;


Doch leider funktioniert es nicht.
"Maximale Anzahl der Aufrufketten wurde überschritten!"
Und zwar in der Zeile "@.umlagern(Lager.PE(1,i));".

Was bringt meine Schleife dazu nicht so zu arbeiten, wie ich es möchte :P ?

Gruß

[Diese Nachricht wurde von NiemeyerLukas am 10. Mrz. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 11. Mrz. 2015 00:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NiemeyerLukas 10 Unities + Antwort hilfreich

Sie dürfen die Schleife nicht über die Ausgangssteuerung aufrufen. Mit @ können Sie jeweils nur auf ein Teil zugreifen, damit geht das mit der Schleife nicht. Und die Ausgangssteuerung wird bei jedem Teil aufgerufen, das sie umlagern.

Sie könnten einen Beobachter im Puffer für anzahlBEs verwenden...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

NiemeyerLukas
Mitglied
Student


Sehen Sie sich das Profil von NiemeyerLukas an!   Senden Sie eine Private Message an NiemeyerLukas  Schreiben Sie einen Gästebucheintrag für NiemeyerLukas

Beiträge: 21
Registriert: 02.03.2015

erstellt am: 12. Mrz. 2015 14:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich hab es gestern noch hinbekommen.
Wie gesagt mit der Eingangssteuerung vom Lager gehts nicht.
Habs einfach in die Ausgangssteuerung vom Sortieren gepackt.
Nun funktioniert es genau so wie gewünscht 

Vielen Dank für die Hilfe

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

beesdauer
Mitglied
Student


Sehen Sie sich das Profil von beesdauer an!   Senden Sie eine Private Message an beesdauer  Schreiben Sie einen Gästebucheintrag für beesdauer

Beiträge: 37
Registriert: 18.08.2015

erstellt am: 03. Sep. 2015 11:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NiemeyerLukas 10 Unities + Antwort hilfreich

Ich habe ein ähnliches Problem.

Ich entnehme aus einem Lager (X_Dim=1, Y_DIm=80) BEs von bestimmten Plätzen. Nun möchte ich erreichen, dass nach der Entnahmen oder vor der nächsten Einlagerung alle verbleibenden BEs auf den ersten Plätzen angeordnet werden. Ziel ist freie Plätze mit BEs  von  "hinteren" Plätzen zu besetzen. Die Reihenfolge, die dabei entsteht ist unwichtig. Es also nur um das Auffüllen der Lagerplätze.

Hat jemand ein Tipp?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bon Simul
Mitglied
Simulant


Sehen Sie sich das Profil von Bon Simul an!   Senden Sie eine Private Message an Bon Simul  Schreiben Sie einen Gästebucheintrag für Bon Simul

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 04. Sep. 2015 08:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NiemeyerLukas 10 Unities + Antwort hilfreich

mit Lager.pe(x,y) können Sie auf die Plätze des Lagers zugreifen, mit

if Lager.pe(x,y).Inhalt = void then...

können Sie prüfen, ob der Lagerplatz leer ist

Umlagern können Sie innerhalb des Lagers mit:

lager.pe(x1,y1).Inhalt.umlagern(lager.pe(x,y))

Dann benötigen Sie nur noch ein paar Schleifen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz