|
Autor
|
Thema: Probleme mit dem Sortierer oder Lager (2351 mal gelesen)
|
NiemeyerLukas Mitglied Student

 Beiträge: 21 Registriert: 02.03.2015
|
erstellt am: 05. Mrz. 2015 15:15 <-- editieren / zitieren --> Unities abgeben:         
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
   
 Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 05. Mrz. 2015 21:13 <-- editieren / zitieren --> Unities abgeben:          Nur für NiemeyerLukas
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

 Beiträge: 21 Registriert: 02.03.2015
|
erstellt am: 09. Mrz. 2015 14:14 <-- editieren / zitieren --> Unities abgeben:         
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
   
 Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 11. Mrz. 2015 00:52 <-- editieren / zitieren --> Unities abgeben:          Nur für NiemeyerLukas
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

 Beiträge: 21 Registriert: 02.03.2015
|
erstellt am: 12. Mrz. 2015 14:42 <-- editieren / zitieren --> Unities abgeben:         
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

 Beiträge: 37 Registriert: 18.08.2015
|
erstellt am: 03. Sep. 2015 11:08 <-- editieren / zitieren --> Unities abgeben:          Nur für NiemeyerLukas
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 |

| | Mechanical Engineer - Forklift Design & Development (m/f/d) | Heli Research and Development Center Europe GmbH is a wholly owned subsidiary of Anhui Heli Co., Ltd., a leading manufacturer of industrial trucks in China. Founded in 2024 in Friedberg, Hessen, the company is Heli's first R&D center outside of China. Its focus is on market research, product development of industrial vehicles, construction machinery components, intelligent logistics, and the industrial internet.... | | Anzeige ansehen | Feste Anstellung |
|
Bon Simul Mitglied Simulant
   
 Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 04. Sep. 2015 08:14 <-- editieren / zitieren --> Unities abgeben:          Nur für NiemeyerLukas
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 >>)
 |