Autor
|
Thema: Förderstrecke und Attribute (4437 mal gelesen)
|
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 22. Jan. 2014 15:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich muss gleich vorweg sagen, dass ich nicht allzu viel Vorwissen mitbringe und deshalb verzeiht mir meine wahrscheinlich primitiven Fragen. Ich habe folgende Probleme: 1. Ich möchte ein Fördergut von einer Förderstrecke1 auf eine andere Förderstrecke auf den Punkt 25 Meter umsetzen. Das funktioniert zunächst auch eine Weile ganz gut, bis irgendwann mal sich ein anderes Fördergut auf diesem Punkt auf der Förderstrecke befindet. Dann bleibt das Fördergut, welches umlagern soll hängen und reiht sich in die Vorwärtsblockierliste ein. Meine Fragen dazu: Kann man einen bestimmten Bereich auf einer Förderstrecke abfragen? Kann man die BE´s die in der Vorwärtsblockierliste sind jede Sekunde wieder "wachrütteln", damit diese wieder umlagern wollen? Gibt es eine andere elegante Lösung dieses Problem zu beheben? 2. Ich möchte an jedes Fördergut ein Attribut anhängen. Dabei soll das erzeugte Attribut mit dem Namen Auftragsliste (table) 4 Stationen aufweisen, welche zufällig abgearbeitet oder nicht abgearbeitet sein sollen. Beispielsweise soll das erste Fördergut zu Maschine 1,3,4 und das zweite zu Maschine 2,3 und so weiter...ich habe bei diesem Problem schon einges ausprobiert, bin aber ehrlich gesagt unheimlich weit weg von einer Lösung... Ich wäre für ausführlich erläuterte Vorschläge und Erläuterungen für absolute Anfänger sehr dankbar. Schöne Grüße und Danke für´s Lesen 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: 22. Jan. 2014 17:31 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
Zitat:
Ich möchte ein Fördergut von einer Förderstrecke1 auf eine andere Förderstrecke auf den Punkt 25 Meter umsetzen. Das funktioniert zunächst auch eine Weile ganz gut, bis irgendwann mal sich ein anderes Fördergut auf diesem Punkt auf der Förderstrecke befindet. Dann bleibt das Fördergut, welches umlagern soll hängen und reiht sich in die Vorwärtsblockierliste ein.Meine Fragen dazu: Kann man einen bestimmten Bereich auf einer Förderstrecke abfragen? Kann man die BE´s die in der Vorwärtsblockierliste sind jede Sekunde wieder "wachrütteln", damit diese wieder umlagern wollen? Gibt es eine andere elegante Lösung dieses Problem zu beheben?
Sie können es mit "brute force" lösen. Sie definieren eine Variable für eine erfolgreiche umlagerung (z.B. umgelagert:boolean;). Dann versuchen Sie in einer Schleife so lang umzulagern, bis es erfolgreich war (mit einem kleinen zeitlichen Versatz): Code:
umgelagert:=false; while (umgelagert=false) loop umgelagert:=@.umlagern(förderstrecke2,25);-- false wenn es nicht klappt wait(1); --eine sekunde warten end;
Die Überwachung eines Teilbereichs der Förderstrecke ist leider etwas aufwändig. Das Einfachste ist, die Förderstrecke zu teilen, dann können Sie die Belegung des Teilbereiches überprüfen und darauf warten, dass der Bereich frei ist (belegt = false). zu 2.) wollen Sie aus n Stationen 4 Stationen auswählen? Das zweite Problem müssen Sie etwas genauer erklären.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 23. Jan. 2014 11:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, zunächst einmal vielen Dank für die schnelle Antwort. Zu dem ersten Problem: Das funktioniert eigentlich ganz gut, doch irgendwie schaff ich es nicht aus der while-schleife wieder rauszukommen. Er lagert das Teil um, aber setzt dann umgelagert nicht wieder auf true, wenn es denn umgelagert ist. Ich habe versucht es über eine If-Schleife innerhalb der While-Schleife zu lösen, komme da aber nicht auf das richtige Rezept. Also meine konkrete Frage ist, wie ich meiner Methode jetzt sage, dass das Teil umgelagert wurde?! Zu dem zweiten Problem: Ich habe insgesamt n Maschinen von denen eine bestimmte Anzahl x angelaufen werden soll. Dafür habe ich eine Häufigkeitsverteilung gegeben. Sprich von 100 Aufträgen haben genau 8 Aufträge beispielsweise 4 Maschinenen von den gesamten n Maschinen anzufahren. Welche Maschinen angefahren werden, soll zufällig passieren; zum Beispiel Maschine (1,3,7,9). Ich habe mich versucht ein bisschen an das Thema heranzurobben und habe mir die Aufgabenstellung erstmal ein wenig vereinfacht, um zu sehen, wie weit ich komme. Dafür habe ich dem Fördergut in der Klassenbibliothek ein Attribut ("Aufträge";table) zugewiesen. In dieser Tabelle habe ich dann einen bestimmten Auftrag festgelgt. Zum Beispiel Station1 = false, Station2 = true, usw. Dann habe ich das BE über Sensoren an den Abzweigungen gesteuert und nach den Stationen die Bearbeitung auf "true" gesetzt. Das funktioniert auch bis auf das umlagern sehr gut. Jetzt möchte ich aber nicht jedem BE den gleichen Auftrag zuweisen, sondern Unterschiedliche Anzahlen von Maschinen usw...Ich hoffe mein Problem ist nun ein bisschen besser beschrieben. Bin ich mit meiner Vorgehensweise überhaupt auf dem richtigen Dampfer oder muss ich mich davon verabschieden und ganz anders an die Sache rangehen? Wie weise ich einem BE in der Table des Attributs "Aufträge" ZUFÄLLIG eine bestimmte Anzahl von Maschinen zu?! Ganz schön schwer, die Probleme verständlich auf den Punkt zu bringen, aber ich hoffe die Quintessenz kommt irgendwie rüber 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: 23. Jan. 2014 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
|
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 25. Jan. 2014 10:09 <-- editieren / zitieren --> Unities abgeben:
Halli Hallo, also das mit dem umlagern funktioniert jetzt ausgezeichnet, somit können wir das Problem schonmal abhaken. Danke dafür. Das Ziehen der Zufallszahl ist auch genial und ich kann das auch immer als Attribut anhängen, sodass meine Sensoren wissen, ob das Teil zu der Maschine x muss oder nicht. Leider folgt auf das erste Problem schnell das nächste und da bräuchte ich nochmal deinen Rat, wenn es nicht zu viel Arbeit macht Und zwar möchte ich ein Attribut an das BE anhängen und zwar soll dieses Attribut den Namen "Auftragnummer_i" haben. Es soll eine Tabelle hinterlegt sein, in der dann das Ergebnis der Zufallsziehung ohne zurücklegen steht. Die Auftragsnummer soll immer um i steigen für jedes neue BE. Das Ergebnis zu hinterlegen, bekomme ich schon hin, allerdings schaffe ich es nicht das Attribut "Auftragsnummer_i" um eins steigen zu lassen. Da kommt bei mir jedesmal eine Fehlermeldung und ich hab keinen Schimmer warum. Anschließend habe ich noch folgendes Problem. Wenn ein Teil 26 zu Station_1 muss und es diese durchlaufen hat, möchte ich in dem Attribut "Auftragsnummer_26" in der Tabelle die Station_1 löschen, damit die Station nicht zweimal angelaufen wird. Ich habe es versucht mit @.auftragsnummer_i.holeZeilenNummer("Station_1") bzw. @.auftragsnummer_i.entferneZeile, aber das funktioniert alles irgendwie nicht... Ich möchte einfach aus der angehängten Tabelle die Station_1 (string) löschen. wie spreche ich dann dabei das BE mit der jeweiligen Auftragsnummer i an? Ich hoffe, es wurde deutlich, wo meine Probleme liegen... Deshalb habe ich mich auch öfter wiederholt, damit Sie keine Rückfragen stellen müssen. Schöne Grüße 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: 25. Jan. 2014 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
ich sehe da zwei Möglichkeiten: - Sie sortieren die Aufträge nach Maschínen, wenn Sie mit dem Teil an der ersten Maschine in der Tabelle ankommen, lagern Sie um und löschen die erste Zeile aus der Tabelle (@.tabelle.entferneZeile(1)). - die Zweite möglichkeit: Sie müssen die Maschine in der Tabelle suchen. Dazu brauchen Sie drei Schritte: <tabelle>.setzeZeiger(spalteSuche,1); <tabelle>.finden({spalteSuche,1}..{spalteSuche,*}, maschine); wenn die Maschine gefunden wurde gibt finden true zurück und der Zellzeiger wird auf die entsprechende Zelle versetzt, die Zeile können Sie dann mit <tabelle>.zeigerY auslesen. Das Attribut können Sie in jedem Teil gleich benennen (das ist ja gerade das gute am objektorientierten Ansatz) --> legen Sie es in der Klassenbibliothek im Teil an, das erleichtert auch die Programmierung. Wenn jedes Teil eine Auftragsnummer bekommen soll, dann definieren Sie in der Klassenbibliothek im Teil ein Attribut Auftragsnummer (string), in der Quelle Ausgangssteuerung Heck können Sie dann den Wert "zusammenbasteln":
Code:
@.auftragnummer:= "Auftragnummer_"+ to_str(@.id);
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 26. Jan. 2014 18:07 <-- editieren / zitieren --> Unities abgeben:
Hello again, wieder einmal sind einige Probleme danke Ihrer Hilfe verschwunden und einige neue durch meine fehlende Kompetenz hinzugekommen... Das mit den Attributen und der Auftragsnummer klappt super und kann ad acta gelegt werden. Das löschen der Zeile aus meiner Tabelle die im Attribut des BE hinterlegt ist dagegen nicht. also ich habe ein Attribut "Aufträge" als Tabelle hinterlegt. Wenn die Station_1 dann durchlaufen ist, möchte ich "Station_1" aus dieser Tabelle löschen. Dazu habe ich jetzt wie von Ihnen beschrieben @.aufträge.setzeZeiger(1,1); @.aufträge.finden({1,1}..{1,*}, Station_1); eingegeben. Warum kann ich denn jetzt nicht einfach @.aufträge.entferneZeile machen?! Bzw. wie übergebe ich dem Programm die Zeile in der Station_1 steht, damit ich diese anschließend löschen kann. Bin da ein bisschen durcheinander. Ich denke, dass dürfte für Sie kein Problem sein Und noch eine Frage, da ich ja neu in diesem Forum bin. Was hat es damit auf sich: Wenn Ihnen die Antwort oder der Beitrag von Bon Simul geholfen hat, würde er oder sie sich sicherlich über Ihre Unities freuen! Falls Sie die haben wollen, wie übergebe ich Ihnen diese? Schönes Wochenende noch. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sjerenz Mitglied Planer
Beiträge: 33 Registriert: 15.07.2013 Plant Simulation 10.1
|
erstellt am: 27. Jan. 2014 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
Hallo, du hattest geschrieben, dass 'Station_1' ein string sein soll. Dann muss in der Suchen-Funktion der zu suchende Begriff in Anführungsstrichen stehen ("..."). Wenn eine Zeile mit dem entsprechenden Eintrag gefunden wurde (das würde ich aber prüfen, um nicht die falsche Zeile zu löschen), hat das Attribut 'ZeigerY' die entsprechende Zeilennummer. Der Löschbefehl für die eine Zeile lautet daher: @.aufträge.entferneZeile(@.aufträge.ZeigerY); Unities kannst du vergeben, indem du auf die Unities-Zeile über der entsprechenden Antwort / entsprechenden Beitrag auf die Nummer klickst.
Grüße Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 28. Jan. 2014 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, also mein Programm funktioniert jetzt ausgezeichnet. Danke dafür Ich habe trotzdem noch 2 Fragen, um mein Programm noch zu perfektionieren. 1) wenn ich die Stationen zufällig ohne zurücklegen ziehe, dann habe ich wenn ich das Programm neu starte immer die gleiche Reihenfolge...Der Strom ist ja auch als 1 angegeben. Wie variere ich den Strom bei dieser Programmierung?! 2) Kann man einen Trigger mit einer Auftragsliste kombinieren?!Ich möchte am Liebsten am Anfang eines Tages festlegen, dass heute insgesamt 1000 Aufträge kommen und davon sollen beispielsweise 100 um zehn kommen, 120 um elf usw...Die Reihenfolge der Aufträge möchte ich aber als zyklisch festlegen bzw. anordnen können! Ist das möglich?! Ich habe die Hoffnung, dass dies auch meine letzte Frage sein könnte Schöne Grüße
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: 28. Jan. 2014 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
einfach die eins um eins erhöhen (z.B. mit einer globalen Variable, in der init die globale Variable um eins erhöhen, die globale Variable in der Methode z_gleich dort einsetzen, wo jetzt die eins als Zahl steht) zu 2.) geht alles, am Besten Sie bauen alles so auf, dass der Trigger nur noch den Wert einer (globalen) Variable ändern muss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 05. Feb. 2014 21:24 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Simulanten, ich habe nun ein beinahe perfektes Kommissioniersystem dank eurer Hilfe erstellt. Ich habe nun leider ein sehr mysteriöses Problem. Von den Stationen die ich habe, werden alle angefahren, außer eine. Da möchte anscheinend kein Teil abbiegen. Ich habe die Ausgangssteuerung des Förderbands exakt so programmiert, wie bei allen anderen Stationen auch. Es ist auch egal, wie ich die Station nenne oder ob ich alles nochmal neu einfüge, die Station wird einfach nicht angefahren. Es ist von den Einstellungen aber alles genau identisch mit den anderen Stationen (hab es 100x überprüft). Weiß irgendjemand woran das liegen kann?! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 05. Feb. 2014 21:30 <-- editieren / zitieren --> Unities abgeben:
Vielleicht noch ein paar kleine Hinweise zu dem aktuellen Vorgehen. Ich habe die Stationen A-G und diese sollen alle genau einmal angelaufen werden und zwar zufällig von der Auswahl. Dann gebe ich halt ein Attribut mit und darin steht, welche stationen angefahren werden. Jedoch funktioniert die Abfrage bei der ersten Station nicht. Ich suche immer in der attributtabelle nach beispielsweise "A" und dann soll er zu der Station A abbiegen. Dies tut er bei allen anderen Stationen auch, nur bei A nicht. Habe bereits das Attribut mehrfach umbenannt: "Auftrag1", "A1" usw. hat aber alles absolut nichts gebracht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sjerenz Mitglied Planer
Beiträge: 33 Registriert: 15.07.2013 Plant Simulation 10.1
|
erstellt am: 06. Feb. 2014 07:39 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
|
Fresh-Prince Mitglied
Beiträge: 8 Registriert: 22.01.2014 Plant Simulation 11
|
erstellt am: 06. Feb. 2014 10:20 <-- editieren / zitieren --> Unities abgeben:
Das angehängte Attribut ist ein table und heißt Stationen. In der ersten Spalte sind dann eine zufällige anzahl von Stationen z.B. 3 mit zufällig ausgewählten Stationen hinterlegt z.B. B,F,G... Das Teil biegt dann quasi von der Hauptförderstrecke auf einen Zubringer ab, durchläuft die Station und wird durch den Rückläufer wieder auf das Förderband gesetzt. Am ende der Förderstrecke wird dann gefragt: is moved:boolean; abbiegen:boolean; do abbiegen:=false; if @.stationen[1,1]="A" then abbiegen:=true else abbiegen:=false; end; if abbiegen =true then if Zubringer_zu_Station.voll=false then @.umsetzen(zubringer_zu_Station); else @.umsetzen(Umgehung_der_Station); end; else if Rückläufer_von_Station.voll=false then @.umsetzen(Umgehung_der_Station); elseif Umgehung_der_Station.voll=true and moved=false then wait(2); @.umsetzen(Umgehung_der_Station); end; end; end; Manchmal scheint es einfach total willkürlich zu sein, ob ein Teil reingeht oder nicht...besonders in den ersten Minuten der Animantion gehen die Teile häufig ohne genauen Grund vorbei...Es lässt sich auch kein Schema ableiten, sodass man sagen kann, jedes zweite Teil oder ähnliches. Könnte es an der Position in der Attributtabelle liegen?! Warum ist die Steuerung manchmal unzuverlässig und nur bei einer Station?! Eine schnelle Hilfe wäre ausgezeichnet.
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: 06. Feb. 2014 21:11 <-- editieren / zitieren --> Unities abgeben: Nur für Fresh-Prince
nur ein paar Ideen: Wenn die Zubringer auch Förderstrecken sind, dann könnten Sie anstatt umsetzen umlagern versuchen. Sie müssen bei umsetzen die gesamte Länge des BEs zur Verfügung haben, sonst geht es schief. Wenn der Zubringer komplett leer sein muss, dann sollten Sie lieber auf belegt=false statt auf voll=false prüfen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|