Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  einladen und entladen in Container

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:  einladen und entladen in Container (1674 mal gelesen)
Nancy X
Mitglied



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

Beiträge: 15
Registriert: 15.05.2009

erstellt am: 24. Jun. 2009 13:55    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

Hallo Zusammen, ich habe zwei Methode für Wareneinladung und Entladung geschrieben, um das Transport deutlich zu darstellen. Die Methode "einladen" funktioniert gut, aber bei Entladung geht's leider nicht. Ich habe @ benutzt, bei Compilierung der Methode ist es kein Problem, aber im Netztwerk funktioniert es nicht. Kann jemand mir bitte helfen? Vielen Danke im Voraus!

Das ist die Methode einladen, zuerst ein Container erzeugen, dann Produkt 1 (2 Produkt im Netzwerk) in Container erzeugen, die Type des Containers setzen. Ladung_HL ist eine Paralellstation.
if LiefermengeHL_P1 > 0 then
.BEs.Container.erzeugen(Ladung_HL[1,1]);
Ladung_HL[1,1].inhalt.xDim:= 1;
        Ladung_HL[1,1].inhalt.yDim:= LiefermengeHL_P1;
        Ladung_HL[1,1].inhalt.setzeAttribut("ContainerInhalt", LiefermengeHL_P1);
        Ladung_HL[1,1].inhalt.setzeAttribut("ContainerType", "P1");
for i:= 1 to LiefermengeHL_P1 loop
LagerH_P1.inhalt.umlagern(Ladung_HL[1,1].inhalt);
next;
end;

Zur Entladung solle zuerst die Attribut"ContainerType" abgeholt werden, und dann die Kapazität des Lagers prüfen. Es tritt aber immer Fehler auf:entweder void hat keine Method "holeAttribut" oder unbekanter Name ContainerType. Die Attribut "ContainerType" habe ich schon bei Objekt "Container" definiert, und bei Einladung hat es schon auch durch Methode setzeAttribut neue eingesetzt.

if @ /= void and @.holeAttribut("ContainerType") = "P1" then
          LBvorEntlad1:= LagerP1.AnzahlBEs;
  
  lagerKapa1:= LagerP1.xDim * LagerP1.yDim;
     if LagerP1.AnzahlBEs + @.AnzahlBEs <= lagerKapa1 then
      repeat
        @.inhalt.umlagern(LagerP1);
      until @.AnzahlBEs = 0;
      @.vernichten;
      LBnachEntlad1:= LagerP1.AnzahlBEs;
     else
     ...
     end;
...
end;

[Diese Nachricht wurde von Nancy X am 24. Jun. 2009 editiert.]

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

Homer Simpson
Mitglied



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

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 25. Jun. 2009 08: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 Nancy X 10 Unities + Antwort hilfreich

Anscheinend hat @ eben doch kein Attribut namens ContainerType. Anders ist die Fehlermeldung nicht zu erklären. Wenn du im Debugger mit der rechten Maustaste auf den Klammeraffe (@) klickst, kannst du das Objekt, auf das @ zeigt, direkt über das Kontextmenü öffnen. So kannst du einfach überprüfen, ob das Objekt ein solches Attribut besitzt.

Übrigens: Statt @.holeAttribut("ContainerType") kannst du einfacher @.ContainerType schreiben. Genauso kannst du statt Ladung_HL[1,1].inhalt.setzeAttribut("ContainerType", "P1") einfacher Ladung_HL[1,1].inhalt.ContainerType := "P1" schreiben.

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

Nancy X
Mitglied



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

Beiträge: 15
Registriert: 15.05.2009

erstellt am: 25. Jun. 2009 13:12    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

Danke für deine Antwort.
Ich habe nach dein Hinweis die Methode korrigiert.
Es tritt aber eine neue Fehlermeldung. es lautet: "Die maximale Anzahl der Aufrufketten wurde überschritten". Und die Simulation kann nicht mehr anhalten.Die fehlerhaft makierte Zeile im Debugger ist die Erstzeile. Die maximale Anzahl der Aufufketten des Modells hat gleich 5000 definiert.
"ContainerInhalt" ist Anzahl des Produkts im Container.


Das ist meine Code: Die Unterbruchsbedingung "Entladung_L.inhalt /= void" scheint nicht gültig.
if Entladung_L.inhalt /= void and Entladung_L.inhalt.ContainerType = "P1" then
      LBvorEntlad1:= LagerP1.AnzahlBEs;
      lagerKapa1:= LagerP1.xDim * LagerP1.yDim;
     if LagerP1.AnzahlBEs + Entladung_L.inhalt.ContainerInhalt <= lagerKapa1 then
            repeat
        @.umlagern(LagerP1);
                Entladung_L.inhalt.ContainerInhalt:= Entladung_L.inhalt.ContainerInhalt-1;
          until Entladung_L.inhalt.ContainerInhalt = 0;
         Entladung_L.inhalt.vernichten;

     else
/*vergröerung des Lagers und dann Produkt auf LagerP1 umlagern*/
end;
end;


[Diese Nachricht wurde von Nancy X am 25. Jun. 2009 editiert.]

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

Homer Simpson
Mitglied



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

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 25. Jun. 2009 13:55    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 Nancy X 10 Unities + Antwort hilfreich

Auf der Register "Eingereiht" des Debuggers sind die Aufrufsketten aufgelistet. Du solltest mal nachsehen, welche Methode(n) so oft eingereiht wird/werden. Du solltest rausfinden, wann und warum das passiert.

Du kannst die Zahl der Aufrufketten problemlos erhöhen (z.B. auf 50000), aber meistens ist die Ursache für das Überschreiten des Maximums ein Modellierungsfehler, und das Erhöhen der Grenze verschiebt das Problem nur.

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

Nancy X
Mitglied



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

Beiträge: 15
Registriert: 15.05.2009

erstellt am: 25. Jun. 2009 15:35    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 habe gesehen, dass diese "entladen" Methode Problem hat. Ich kann de maximale Anzahl der Aufrufketten erhöhen, aber es ist sinnvolllos.
Wenn die Einzelstation "Entladung_L" nicht belegt ist, soll die nachfolgende Aktivitäten anhalten.
Die IF-Bedingung funktioniert nicht.

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