Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Zufallszielsteuerung

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:  Zufallszielsteuerung (2967 mal gelesen)
fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 12. Mai. 2013 20:56    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 bin neu hier und hätte da mal eine Frage:
Ich habe ein Fördergut das mittels Querverschubwagen auf eine bestimmte Anzahl von Förderbändern zufällig verteilt werden soll. Am Ende der Bänder sitzen Lager. Die Methode die vor dem Querverschubwagen den zielort festlegen soll sieht folgendermaßen aus:
is
zufall1:integer;
do
zufall1:= z_gleich (1,1,4);
inspect zufall1
when 1  then 
if lager1.voll then zufall1:= z_gleich (1,1,4);
else
@.zielort:=Greifer1_1;
end;
when 2  then 
if lager2.voll then zufall1:= z_gleich (1,1,4);
else
@.zielort:=Greifer2_2;
end;
when 3  then 
if lager3.voll then zufall1:= z_gleich (1,1,4);
else
@.zielort:=.Modelle.Netzwerk.Greifer3_3;
end;
end;
end;

Ich generiere ein zufälliges Lager und prüfe danach ob es voll ist. Wenn ich einlagern kann, will ich den zielort festlegen lassen, wenn nicht wird eine neue Zahle (Lager) generiert. Aber ich bekomme immer die Fehlermeldung "ein Void kann keine Methode aufrufen" durch die zeile "@.zielort:=Greifer1_1;"
Hat jemand eine Ahnung was ich da ändern könnte um das zum Laufen zu bringen? bin für jede Hilfe dankbar.

lg

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: 13. Mai. 2013 17:38    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 fankmich 10 Unities + Antwort hilfreich

Zunächst: Sie müssten in Ihren Bedingungen, in denen die Lager voll sind auch einen Zielort festlegen.

Mit welcher Version arbeiten Sie und wie lautet die komplette Fehlermeldung?

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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 14. Mai. 2013 20:07    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 den hinweis. ich dachte ich generiere eine neue zufallszahl wenn das zuvor als ziel ausgesuchte lager voll ist. aber nach einem blick in den debugger, habe ich festgestellt das ich zwar eine neue zahl generiere, die methode aber nicht noch einmal durchlaufen wird. hätten Sie da eine elegante Lösung?
Ich verwende die Version 10.1 und die Fehlermeldung habe ich mit einer Korrektur der Zeiten behoben. Die Methode wollte BEs umlagern, die noch nicht da waren.

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: 14. Mai. 2013 23:01    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 fankmich 10 Unities + Antwort hilfreich

Sie können doch z.B. in den Zweigen mit den vollen Lagern zwischen den restlichen zwei Lagern würfeln. Auf jeden Fall müssen Sie in jedem denkbaren Fall den Zielort bestimmen, sonst bekommen Sie eine Fehlermeldung vom Querverschiebewagen.

Sie könnten auch zu Beginn die nicht vollen Lager bestimmen und zwischen diesen Würfeln (z.B. in dem Sie die Lager in eine Tabelle eintragen und dann die Zeilennummer würfeln).

Was machen Sie, wenn alle Lager voll sind?

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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 30. Mai. 2013 15: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

Vielen Dank Bon_Simul,
ich habe mittlerweile fast alles im Griff was meine Simulation betrifft. Allerdings hänge ich jetzt bei einem Problem der Priorisierung. Laut Hilfe erstellt mein QVW eine Auftragsliste (orderList). Ich schaff es allerdings nicht darauf zuzugreifen bzw. diese Liste zu öffnen. Hätten Sie eine Idee wie ich das angehen könnte?

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: 30. Mai. 2013 20:44    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 fankmich 10 Unities + Antwort hilfreich

Die orderList ist vom Typ table. Sie können Wie folgt zugreifen:
Code:

is
  warteschlange:table;
do
  warteschlange:=crossSlidingCar.orderList;

end;



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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 30. Mai. 2013 22: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


OrderList.JPG

 
Vielen Dank. Das hat schon mal ungemein geholfen. Jetzt kann ich zumindest mal die Liste öffnen und mir ein Bild davon machen. Wenn Sie jetzt auch noch einen Tip parat hätten wie ich beim Eintragen in diese Liste die Priority ändern kann, könnte ich die Liste sortieren und es würden immer die Aufträge zuerst abgearbeitet werden, die als Source die ÜGS11 haben.
Ich kann leider weder in diesem Forum, Steffen Bangsow's Buch, noch in der Hilfe von Plant Simulation dazu wirklich was brauchbares finden.
Sie retten mir übrigens gerade meine Bachelor-Arbeit. DANKE noch einmal.

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: 31. Mai. 2013 09:26    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 fankmich 10 Unities + Antwort hilfreich

Wenn Sie Elemente mit dem Querverschiebewagen verbinden, dann trägt der QVW eine Ausgangssteuerung in das Element ein (onExit).

Ändern Sie den 4. Parameter des Ausrufs der Methode transportOrder, ich schätze, das ist die Prio:

Code:

CrossSlidingCar.transportOrder( caller, target, part, <prio> );


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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 03. Jun. 2013 11:44    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

je länger ich mich mit meiner simulation beschäftige desto detailierter und anspruchsvoller wird sie...
ich hätte eine Frage zu einem Kommentar von Ihnen weiter oben. Wie würde eine Methode aussehen, die in meiner Lagerveraltungsliste nachsieht welche lager nicht voll besetzt sind und unter denen dann das Ziel der Auslagerung auswürfelt? ich komme leider mit dem tabellenzugriff noch nicht wirklich zurecht.
die lagerverwaltungsliste beinhaltet 2 spalten: in der ersten die bezeichnungen der lager und in der zweiten den aktuellen Füllstand.

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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 03. Jun. 2013 12:56    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

und noch ein problem: (es hört nicht auf...)
wenn ich beim einlagern der behälter prüfe ob das erwürfelte lager voll ist, habe ich mit einer "or" verknüpfung eine weiter bedingung eingebaut, die prüft ob in diesem lager 7 behälter sind UND ob es für dieses lager bereits einen transportauftrag in der orderlist des qvw existiert. allerdings scheint mir als ob die funktion .finden nicht beachtet wird oder durch irgendeinen fehler meinerseits ausgehebelt wird.
das problem ist nämlich das es durchaus sein kann, das der lagerstand zwar kleiner 8 ist (ein einlagern wäre möglich) aber es bereits einen behälter gibt, der dieses ziel hat. damit lagert der qvw einen behälter in ein regal das eigentlich keinen platz mehr hat.
die methode die dieses einlagern durchführt sieht folgendermaßen aus:

is
Lagerd bject;
Greiferd bject;
do
d:= z_gleich (1,1,21);
Lagerd:=str_to_obj("Lager"+to_str(d));
Greiferd:=str_to_obj("Greifer"+to_str(d)+to_str(d)+to_str(d));
if lagerd.voll or lagerd.anzahlbes=7 and shuttle.orderList.finden({3,*},"*.Modelle.Netzwerk.Greifer"+to_str(d)+to_str(d)+to_str(d)) then
ref (zielzuordnung_umlagern).ausführen;
else
@.zielort:=Greiferd;
end;
end;

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: 03. Jun. 2013 19:39    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 fankmich 10 Unities + Antwort hilfreich

Das erste Problem bei Ihrem Programm ist eine "Endlosrekursion", die entsteht, wenn kein Lager frei ist (immer wieder der else Zweig).

Wenn Sie in einer Tabelle suchen, müssen Sie den internen Zeiger der Tabelle immer wieder an den Anfang der Tabelle setzen (Plant Simulation verschiebt den Zeiger auf die Zelle mit dem Treffer).
Das geschieht mit <Tabelle>.setzeZeiger(spalte,zeile).

Ihre or Bedingung müssen Sie komplett in eine Klammer setzen.

Code:

is
    Lagerd: object;
    Greiferd: object;
    d:integer;
  
do
    d:= z_gleich (1,1,21);
    Lagerd:=str_to_obj("Lager"+to_str(d));
    Greiferd:=str_to_obj("Greifer"+to_str(d)+to_str(d)+to_str(d));
    shuttle.orderList.setzeZeiger(3,1);
    if lagerd.voll or (lagerd.anzahlbes=7 and
    shuttle.orderList.finden   ({3,*},"*.Modelle.Netzwerk.Greifer"+to_str(d)+to_str(d)+to_str(d)))   
    then
      --problematisch, wenn alle Lager voll --> Programm "hängt sich auf"
      ref (zielzuordnung_umlagern).ausführen;
    else
      @.zielort:=Greiferd;
     
    end;
end;



[Diese Nachricht wurde von Bon Simul am 03. Jun. 2013 editiert.]

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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 05. Jun. 2013 21:37    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


ProblemEinlagerung.JPG

 
vielen danke wieder mal. methode funktioniert dank Ihrem tip.
das problem mit der endlosrekursion habe ich über eine Füllstandskontrolle in den griff bekommen. ich lagere jetzt keine behälter mehr ein wenn ein kritischer wert überschritten wird um dem system noch platz zum arbeiten zu geben. aber wie es halt für anfänger so ist, stolpere ich gleich in die nächste herausforderung.
im screenshot sehen Sie 6 Förderstrecken wovon jeweils 3 in eine richtung laufen.(die linken beiden Paare sollen eine einspurige, reversible Fördertechnik darstellen) ich habe per methode den eingang der mittleren strecke nach links laufend gesperrt um die BE davor aufzuhalten. eine Freigabe erfolgt dabei per sensor und methode auf der gegen seite. sobald diese freigabe erfolgt (ausgang entsperrt) "springt" meine BE aber auf den QVW anstatt die Förderstrecken sauber zu befahren. kann ich das irgendwie ändern?

[Diese Nachricht wurde von fankmich am 05. Jun. 2013 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: 05. Jun. 2013 22:51    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 fankmich 10 Unities + Antwort hilfreich

Hat die betreffende Förderstrecke eine Ausgangssteuerung (vielleicht die vom QVW?, dann holt sich der QVW das Teil).
Und welche Förderstrecke ist mit dem QVW verbunden (QVW Tab Verfahrweg - Seitenlinien)?

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

fankmich
Mitglied
Technischer Zeichner

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

Beiträge: 8
Registriert: 10.05.2013

Plant Simulation 10.1 Pro

erstellt am: 06. Jun. 2013 09:48    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

es ist bei keiner der 3 zuführenden strecken eine ausgangsteuerung eingetragen. mit dem QVW verbunden ist die linkeste der zuführenden strecken. allerdings wird die methode der zielort-definition für die BE bereits auf dem ersten zuführenden band durchgeführt (sensor). ist das das problem?

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: 06. Jun. 2013 10:11    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 fankmich 10 Unities + Antwort hilfreich

Ich denke schon, es sollte in der Ausgangssteuerung der Förderstrecke sein, die direkt mit dem QVW verbunden ist. Die QVW besitzt eine interne Auftragsliste, in die das BE eingetragen wird. Wenn der QVW frei ist, wird das BE umgelagert.

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