Autor
|
Thema: Kommisioniersystem! (3504 mal gelesen)
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 13. Feb. 2006 12:47 <-- editieren / zitieren --> Unities abgeben:
Ich habe ein riesen großes Problem! Ich soll für eine Studienarbeit ein Kommissioniersystem modellieren. Mein Prof stellt sich das so vor, dass ein Auftrag eingereicht wird, dieser von einem Werker aufgenommen, bearbeitet und dann der volle Warenkorb wieder abgelegt wird. Ist dies überhaupt mit Werkern möglich?? Ich dachte mir jetzt, dass jeweils ein Objekt "Lager" ein Artikel darstellt. Über eine eingegebene Liste (oder Zufall) erhält ein Werker den Befehl nur die Lager anzulaufen aus denen er etwas holen soll. Nachdem der Auftrag abgearbeitet ist, gibt er die Teile an eine Senke (Versand). Wie sieht das mit dem Baustein "HBW- Hochregallager" aus? kann der mir weiterhelfen? Gruß Steffi P.S Ihr seht schon was ich für Ahnung habe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 13. Feb. 2006 13:45 <-- editieren / zitieren -->
Hi, was soll denn das Ergebnis der Arbeit sein ? nur ein reines Modell ? zu Frage 1 Nein, die derzeitige Standardfunktionalität sieht nicht vor, dass ein Werker Teile aufnehmen bzw. transportieren kann. Ein Fahrzeug auf einer Strecke wäre hier wahrscheinlich günstiger (s. hierzu auch das Thema "Transportsysteme modellieren" unter "in eM-Plant 2D modellieren" in der Hilfe. zu Frage 2 HBW geht schon - aber vielleicht versuchst Du es erstmal mit dem Standard-Baustein "Lager" oder einem Puffer-Baustein. Gruss
------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 13. Feb. 2006 13:54 <-- editieren / zitieren --> Unities abgeben:
Meine Aufgabe ist herauszufinden, ob es mit eM-Plant möglich ist eine Kommissionierlager zu erstellen. Mit was für einer Methode kann ich denn dem Fahrzeug eine zuvor erstellte Auftragsliste übergeben? Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 13. Feb. 2006 13:57 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 13. Feb. 2006 14:23 <-- editieren / zitieren -->
|
Ex-Mitglied
|
erstellt am: 13. Feb. 2006 19:05 <-- editieren / zitieren -->
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 13. Feb. 2006 19:39 <-- editieren / zitieren --> Unities abgeben:
ja danke, dass thema hatte ich auch schon gefunden..entspricht aber nicht ganz dem was ich eigentlich wollte. aber mit beiden Lösungen zusammen werde ich erstmal weiterkommen Vielen Dank und bis zur nächsten Frage! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 15. Feb. 2006 13:40 <-- editieren / zitieren --> Unities abgeben:
|
Adriano125 Mitglied
Beiträge: 15 Registriert: 14.02.2006
|
erstellt am: 15. Feb. 2006 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für StefanieSch
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 15. Feb. 2006 15:49 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 15. Feb. 2006 16:53 <-- editieren / zitieren -->
Hi, strRcopy(?.name,1) kopiert das letzte Zeichen des Namens. sprint("p",index) erzeugt aus p und der selbstdefinierten Variable "index" (1..n)einen string (z.B. "p1") us:= str_to_obj... erzeugt aus dem generierten string einen Objekt-Pfad. (z.B. "p1") mit der (Objekt-)Variablen "us" hast Du dann Zugriff auf den Baustein "p1" Klingt im ersten Moment vielleicht etwas kompliziert, ist aber ganz praktisch bei Bausteinnamen mit einem fortlaufenden Index Gruss
------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 15. Feb. 2006 16:57 <-- editieren / zitieren --> Unities abgeben:
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 17. Feb. 2006 11:50 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 17. Feb. 2006 12:27 <-- editieren / zitieren -->
Hi, der Zielort (@.Zielort) sollte in diesem Fall ein Weg-Objekt sein, das auch mit den anderen Wegobjekten verbunden ist damit die entsprechende Routenlänge berechnet werden kann. Schau mal was bei @.zielort eingetragen ist. Vermutlich kein Weg-Objekt. Könnte also sein, dass bei der Zuordnung eines neuen Zieles (weiter oben) in der Methode etwas nicht stimmt. Also den Kommissionierwagen selektieren und F3 drücken- dann erscheint eine Tabelle mit den Objekt-Attributen & Methoden. Gruss
------------------ SimulatoR [Diese Nachricht wurde von Simulator am 27. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 17. Feb. 2006 15:41 <-- editieren / zitieren --> Unities abgeben:
Problem: 1:wie muss ich mein Programm und dann meine MethodeBeladen ändern, damit ich das Fahrzeug von einer Station mal 3Fördergüter und dann wieder nur 1 Fördergut aufnimmt? 2: ich weiß nicht wie ich zielort einen weg zuordne. Kann Variabeln auch Werten von Tabellen zuweisen? und zwar eine best. zeile? habe das nur für Karteien gefunden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 17. Feb. 2006 16:03 <-- editieren / zitieren -->
Zu 2. z.B. Variable:=tabellenname[spalte,zeile]; fahrzeug.zielort:=weg; Zu 1. eine Möglichkeit wäre, Du definierst ein fahrzeugspezifisches Attribut (s.benutzerdefinierte Attribute), das bei jedem Methodenaufruf den Wert ändert zwischen 1 und 3
z.B. if @.attribut=1 then @.attribut:=3; else @.attribut:=1; end; Die Beladeschleife wird solange durchlaufen, bis der Schleifenindex = @.attribut ist. Gruss
------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 17. Feb. 2006 16:06 <-- editieren / zitieren --> Unities abgeben:
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 20. Feb. 2006 10:36 <-- editieren / zitieren --> Unities abgeben:
Was habe ich nun falsch gemacht?? ich habe beim Fahrzeug ein benutzerdef. Attribut "gueter" (integer) definiert. dieser bekommt aus einer Tabelle einen Wert zugewiesen (funktioniert auch), der der Anzahl der Güter von dieser Station entspricht. Die Schleife wird einmal ausgeführt und dann gibt er die Fehlermeldung wieder. Warum???? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 20. Feb. 2006 11:03 <-- editieren / zitieren -->
Hi, ganz unten im Debugger-Fenster steht der Grund: "ein Void kann keine Methode umsetzen empfangen" Ich vermute mal, Du hast versucht ein Be von "us" umzusetzen, das garnicht vorhanden ist. Schau Dir mal die ursprüngliche Methode an. Dort war eine waituntil.. Anweisung implementiert, die die Schleifenanweisungen so lange suspendiert, bis auf "us" ein Be zum Umlagern bereitsteht. Bedenke bitte auch, dass so wie Du den Schleifendurchlauf jetzt programmiert hast, durch das Umlagern keine Zeit verbraucht wird. D.h. es müssen vor Beginn der Schleife bereits alle umzulagernden Be´s auf "us" vorhanden sein, sonst erscheint eine derartige Meldung. Gruss ------------------ SimulatoR
[Diese Nachricht wurde von Simulator am 20. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 20. Feb. 2006 11:06 <-- editieren / zitieren --> Unities abgeben:
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 20. Feb. 2006 13:29 <-- editieren / zitieren --> Unities abgeben:
http://ww3.cad.de/foren/ubb/Forum262/HTML/000177.shtml#000000 bei diesem Beispiel wurde die Tabelle TabObj immer geändert dadurch das sich das Arbeitsverhalten der Einzelstationen geändert hat (Tabelle immer neu sortiert). Das wollte ich nun auch gern, aber ich habe ja keine Einzelstationen, sondern nur Puffer. Da dachte ich mir, wenn sich der Abstand immer ändert (Abstand Gleichverteilung), dann müsste das ja auch gehen. nur ändert/aktualisiert die Tabelle ihre Werte nicht für den ABstand..wieso? [Diese Nachricht wurde von StefanieSch am 20. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 20. Feb. 2006 14:55 <-- editieren / zitieren -->
Hi, tabobj wird nach der 2. Spalte (aufwärts) sortiert! also nach der Stationsauslastung, bevor drauf zugegriffen wird. D.h. die Stationen, die am wenigsten ausgelastet sind, werden bevorzugt selektiert. Das geht bei Puffern genauso. ggf. kannst Du auch ein anderes Sortierkriterium z.B. puffer.anzahlaus wählen. Gruss
------------------ SimulatoR
[Diese Nachricht wurde von Simulator am 20. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 20. Feb. 2006 15:41 <-- editieren / zitieren --> Unities abgeben:
okay, das hatte ich schon verstanden, was sich an der Tabelle immer ändert, nur änderten sich bei mir die Werte halt nicht. ich sortiere nach QuelleX.Abstand. Den Abstand habe ich als gleichverteilt angenommen. Nun müssten sich doch da die werte auch immer ändern oder nich?? wieso bleiben die gleich? [Diese Nachricht wurde von StefanieSch am 20. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 20. Feb. 2006 16:00 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 20. Feb. 2006 17:04 <-- editieren / zitieren -->
Hi, in der Tat werden beim Aufruf von quelle.abstand immer die selben Werte angezeigt - obwohl die Erzeugungsabstände korrekt variieren. Kleines Workaround. stell mal beim Abstand "Formel" ein und trage dort eine Methode mit folgendem Inhalt ein :time is abstand2 :real; do abstand2:=z_gleich(1,60,120); return abstand2; end; abstand2 kannst Du in die Tabelle eintragen. ------------------ SimulatoR
[Diese Nachricht wurde von Simulator am 20. Feb. 2006 editiert.] |
Ex-Mitglied
|
erstellt am: 20. Feb. 2006 17:08 <-- editieren / zitieren -->
Zitat: Original erstellt von StefanieSch: Bei mir funktioniert das nicht mit Puffer.statArbeitsAnteil Er trägt dann gar keine Werte in die Liste ein (habe da das Format auf real geändert)!!!!
in der Spalte 0 der Tabelle müssen die Objekte (Puffer) stehen, deren Auslastungen in die Tabelle eingetragen werden sollen. Ist das bei Deiner Tabelle/Methode der Fall? Gruss ------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 21. Feb. 2006 08:53 <-- editieren / zitieren --> Unities abgeben:
bei mir ist es die es die Spalte 4. dementsprechend habe ich aber auch den Aufruf gestarte: TabelleObjekte[4,i].statArbeitsAnteil; [Diese Nachricht wurde von StefanieSch am 21. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 21. Feb. 2006 09:02 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 21. Feb. 2006 10:16 <-- editieren / zitieren -->
Hi, die Vorgehensweise ist folgende: die Objekte werden in die Spalte 0 = Zeilenindexspalte eingetragen so kannst Du dann die relevante Zeile in einer (Eingangs/Ausgangs-) Methode ueber das Objekt aufrufen . z.B. tabelle[5,?].... die abstand-Methode trägst Du in das Abstand-Feld der Quelle ein und den Abstandswert ueber tabelle[5,?]:=abstand2 in die Tabelle Gruss ------------------ SimulatoR
[Diese Nachricht wurde von Simulator am 21. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 21. Feb. 2006 11:09 <-- editieren / zitieren --> Unities abgeben:
Kriege das nicht hin..habe jetzt die MethodeABstand, da habe ich dein Programm eingetragen. Diese Methode in alle Quelle bei Abstand (Formel) eingetragen. Über die MethodeZliste möchte ich die Werte in die Tabelle eintragen können, nur findet er die Variable abstand2 nicht (ist ja auch nur ne lokaleVariable?). Was muss ich denn ändern? Meine Tabelle in die es eingetragen werden soll, ist auch auf dem Foto! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 21. Feb. 2006 11:56 <-- editieren / zitieren -->
Hi, schau Dir mal das Beispiel an. Gruss ------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 21. Feb. 2006 12:27 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank, nur leider hat meine Tabelle ja mehrere Einträge, auch mehrere Objekte. Außerdem bekomme ich keine Tabelle hin, in der es eine SPalte 0 gibt. bei mir fangen die immer mit 1 an. warum?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 21. Feb. 2006 12:47 <-- editieren / zitieren --> Unities abgeben:
okay, hat sich erledigt habe es anders gelöst (statArbeitsAnteil des Weges genommen)!! Allerdings neues Problem: ich habe eine Quelle die erst FahrzeugA dann FahrzeugB und dann FahrzeugC (alle unterschiedliche selbstdef. Attribute) erzeugt. Diese sollen nun auf drei Wege verteilt werden und zwar FahrzeugA auf WegA,... ist das möglich?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 21. Feb. 2006 13:03 <-- editieren / zitieren -->
Hi, Zur Indexspalte: unter Format Formatvererbung ausschalten und die Indexspalte bzw -Zeile aktivieren. Die Objekte sind eindeutig! also können alle Objekte im Zeilenindex stehen Gruss ------------------ SimulatoR |
Ex-Mitglied
|
erstellt am: 21. Feb. 2006 13:07 <-- editieren / zitieren -->
Hi, schau Dir mal die Flusssteuerung an. In der Flusssteuerung kannst Du unter Ausgangsverhalten /Strategie=Attribut attributbezogen die Fahrzeuge umsetzen. Gruss ------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 22. Feb. 2006 09:39 <-- editieren / zitieren --> Unities abgeben:
Danke, das werde ich probieren aber nun ein neues Problem, was ist der Fehler (s. Bild) 1: die Methode soll folgendes tun: der Benutzer kann die gewünschten Artikel manuell eingeben. Die Methode sorgt dann dafür, dass zu den entsprechenden Artikel, die Wege eingegeben werden. Dies wollte ich mit einer repeat-until-scheife realisieren! aber irgendwie meint er da gibt es nen syntax fehler und ich finde nicht welchen... 2: kann ich diese if-Anweisungen irgendwie zusammenfassen???? Gruß und schonmal vielen dank [Diese Nachricht wurde von StefanieSch am 22. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 22. Feb. 2006 14:00 <-- editieren / zitieren -->
Hi, zu 1. ich vermute, Du hast das Semikolon vergessen! zu 2. so geht´s is tab : object; str :string; i :integer; do tab:=bitteauftrageingeben; for i:=1 to tab.ydim loop str:=sprint("Weg",copy(tab[2,i],strlen(tab[2,i])-2,3)); -- print str; tab[1,i]:=str_to_obj(str); next; end; mit strRcopy (string-Reverse-copy) kannst Du das Ganze noch eleganter in einer Zeile zusammenfassen. Aber das wurde ja bereits innerhalb dieses Themas erklärt! s. http://ww3.cad.de/foren/ubb/Forum262/HTML/000332.shtml#000010 Gruss ------------------ SimulatoR [Diese Nachricht wurde von Simulator am 22. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 22. Feb. 2006 15:18 <-- editieren / zitieren --> Unities abgeben:
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 23. Feb. 2006 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo mal wieder, Wenn eine best. Bedingung erfüllt ist, wird eine Zeile einer Tabelle gelöscht. Da entsteht nun eine Freizeile. Was muss ich tun, damit die nachfolgenden Einträge aufrutschen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 23. Feb. 2006 12:21 <-- editieren / zitieren --> Unities abgeben:
|
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 24. Feb. 2006 09:23 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 24. Feb. 2006 10:45 <-- editieren / zitieren -->
Hi yupp, geht ! in der Sensormethode inkrementierst Du eine Objekt-Variable, denn diese ist beobachtbar. Eine 2. Methode suspendierst Du ueber eine Waituntil-Anweisung bis die Variable den SOLL-Wert (=3) erreicht hat. Dannach kannst Du das Be via "Be.angehalten:=false;" (neu in 7.5.x!) losfahren lassen. Gruss ------------------ SimulatoR |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 24. Feb. 2006 11:04 <-- editieren / zitieren --> Unities abgeben:
1: ich kann also einfach in der Sensormethode nach is bla bject; do und das findet er dann in der 2. methode?? aber was soll denn da drin stehen?? kann ich nicht in der sensor methode sagen, wenn @ (alo mein fahrzeug) den sensor aktiviert, dann soll quelle ein BE erzeugen, bzw. dann soll das erzeuge BE wieder losfahren? 2: habe einen fehler aber weiß nicht welcher... wieso erhält die Variable Artikel den Wert "A_1 (?)" und nicht nur A_1??? das steht doch in meiner Tabelle.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 24. Feb. 2006 12:30 <-- editieren / zitieren -->
Hi, zu 2. A_1(?) bedeutet, dass das Objekt nicht mehr existiert ! schau Dir auch mal die Werte von M/N an. Die sind beide 0!!!! Also wurde der Artikel (A_1) auch nicht im Lager gefunden. Irgendwo im Forum gibt´s ein Beispiel hier zu, wo dieser Fall zumindestens als Konsolenausgabe abgefangen wurde. zu 1. zur Vorgehensweise. - erzeuge im Netz ein Objekt vom Typ Variable. - benenne diese Variable "Zaehler" - in der Sensormethode inkrementierst Du den Zaehler Zaehler:=Zaehler+1; Die 2. Methode wartet bis der Zaehler den Sollwert erreicht hat also z.B.: waituntil zaehler=3 prio 1; be.angehalten:=false; . . . Danach wird der Zaehler wieder zurückgesetzt auf 0. Alternativ kannst Du auch in der Sensormethode den Ausgang des Bausteines, auf dem das Be gerade wartet, via station.ausganggesperrt:=True/False oeffnen bzw. schliessen, sobald die entsprechenden Zaehler-Werte erreicht werden. So brauchst Du nur die Sensormethode. Ist vielleicht etwas einfacher.
Gruss ------------------ SimulatoR [Diese Nachricht wurde von Simulator am 24. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 24. Feb. 2006 18:40 <-- editieren / zitieren --> Unities abgeben:
Danke, das werde ich ausprobieren, aber nun mein neues problem: Diese Methode: inventarliste.create; Versandlager3.inhaltsliste(inventarliste); inventarliste.zeigerX :=1; inventarliste.zeigerY :=1; VorhandeneArtikelC.zeigerX :=1; VorhandeneArtikelC.zeigerY :=1; index :=strrcopy(?.name,1); us:=str_to_obj(sprint("Versandlager",index)); if @.name ="AuftragA" then waituntil us.belegt prio 1; for i :=1 to TabelleKomplettAuftrag1.yDim loop if TabelleKomplettAuftrag1[4,i] = "C" then for j :=1 to TabelleKomplettAuftrag1[2,i] loop if VorhandeneArtikelC.finden(TabelleKomplettAuftrag1[1,i]) then k :=0; l :=VorhandeneArtikelC.zeigerY; Artikel :=VorhandeneArtikelC[k,l]; VorhandeneArtikelC.entferneZeile(l); if inventarliste.finden(Artikel) then m :=inventarliste.zeigerX; n :=inventarliste.zeigerY; end; Versandlager3[m,n].inhalt.umsetzen(@); end; next; TabelleKomplettAuftrag1.entferneZeile(i); end; next; end; soll dazu führen, dass die Anzahl ArtikelC die in TabelleKOmplettAuftrag1 stehen, von einem Lager auf ein Fördermittel umgelagert werden. Allerdings wird nur ein BE umgelagert...warum??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 24. Feb. 2006 19:23 <-- editieren / zitieren -->
Hi, Es ist natürlich schwer, anhand dieses Methodenausschnittes und ohne Kenntnis der Tabelleninhalte bzw. des eigentlichen Modells, die genaue Ursache zu finden. Eine Sache, die sicherlich zu falschen Abläufen führt, sind die Tabellenzeilen, die Du in der Schleife löscht !! Damit werden immer wieder Zeilen uebersprungen, weil der Schleifenindex nach dem Zeilenlöschen nicht zurueckgesetzt wird !! Desweiteren werden die Tabellen.Zeiger vor dem Aufruf der Methode "finden" nicht innerhalb der Schleife zurueckgesetzt und die Inventarliste des Versandlagers3 nach dem Umsetzen nicht upgedatet ! Warum suchst Du eigentlich in der ganzen Tabelle und nicht in der entsprechenden Tabellenspalte - eine weitere Fehlerquelle , wenn in verschiedenen Tabellenzellen identische Werte stehen!! Nutz doch mal den Debugger. Damit kannst Du Dir Schritt für Schritt die Datenveränderungen anschauen. Gruss ------------------ Simulator [Diese Nachricht wurde von Simulator am 26. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 27. Feb. 2006 10:28 <-- editieren / zitieren --> Unities abgeben:
Vielen dank, jetzt klappt alles wunderbar, auch mit der sensormethode!!!! aber warum fährt mein Fahrzeug nicht weiter, wenn die if bedingung abgearbeitet ist? if @.belegt then @.anhalten; repeat @.be.umsetzen(Lager); until @.leer; @.fahren; end; das geht bei einer anderen ähnlichen methode auch nicht.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Feb. 2006 11:37 <-- editieren / zitieren -->
die Methode ist soweit korrekt und funktioniert auch wenn sie von einem Sensor aufgerufen wird ! Anbei 2 Fälle bei denen das Fzg nicht mehr losfährt: 1. Die Methode wird nicht von einem Sensor, sondern von der Ausgangssteuerung (Häkchen auf "BUG") aufgerufen. 2. Die Beschleunigung am Fzg ist aktiv und der Beschleunigungswert beträgt 0 m/s^2 Gruss
------------------ SimulatoR [Diese Nachricht wurde von Simulator am 27. Feb. 2006 editiert.] |
StefanieSch Mitglied
Beiträge: 41 Registriert: 13.02.2006
|
erstellt am: 27. Feb. 2006 11:44 <-- editieren / zitieren --> Unities abgeben:
AHso, ja gut, dann lag es daran, dass es eine Augangssteuerung war... aber mal eine andere Frage: ich aheb für je ein best. Fördergut ein neues Bild angelegt. Jede Quelle erzeugt nun eins der Fördergüter. Manchmal erscheint das neue Bild und dann wieder nicht (dann das alte). Das gleiche passiert, wenn die Fördergüter auf die Fahrzeuge geladen werden. Manchmal sind auf dem Fahrzeug Fördergüter drauf, aber das Symbol des Fahrzeugs ist "unbeladen". WIe kann das sein???? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Feb. 2006 12:10 <-- editieren / zitieren -->
Thema Symbole ! die Zustände der Objekte werden durch verschiedene Farben dargestellt z.B. wenn ein Be sich im Zustand "wartend" befindet, ist es gelb. Die entsprechenden Zustandssymbole kannst Du selber definieren (rechte Maustaste und "Symbole bearbeiten" aufrufen) Gib einfach den Zustandsymbolen (waiting,failed,paused..) , die Du nicht dargestellt haben willst, einen anderen Namen. Auch die Positionen der aufnehmbaren Be´s lassen sich ueber den Symboleditor definieren. Defaultmäßig liegt die Position in der Mitte des Be´s. Also werden alle aufgenommenen Be´s uebereinander dargestellt. Schau Dir auch mal das Lagersymbol an. Dort sind standardmäßig 4 Positionen definiert Gruss ------------------ SimulatoR [Diese Nachricht wurde von Simulator am 27. Feb. 2006 editiert.] |