Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Sortierer Problem (AusgangBlockierliste)

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:  Sortierer Problem (AusgangBlockierliste) (1610 mal gelesen)
Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 11: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

Hallo

Ich kämpfe im Moment mit einem Sortierer der nicht das tut was er soll. Vielleicht weiss jemand von euch Rat.

Grundidee: Der Sortiererausgang ist standardmäßig gesperrt und sammelt Fördergut. In regelmäßigen Abständen wird der Ausgang geöffnet und die Elemente sollen in Sortierreihenfolge an den Ausgang kommen. Dort wird dann in einer Ausgangsmethode entschieden, ob das jeweils erste Element raus darf. Wenn nicht, wird der Ausgang des Sortierers wieder gesperrt bis zur nächsten geplanten Öffnung.

Das Problem: Das Fördergut tritt nicht in der sortierten Reihenfolge an den Ausgang. Als Grund dafür habe ich die Ausgangsblockierliste ausgemacht. Wenn ich kurz vor der Öffnung in den Sortierer schaue, ist die Bestandsliste leer und die Ausgangsblockierliste voll.

Die Freischaltmethode sind dann folgendermaßen aus:

Code:

is
do
.Modelle.Netzwerk.Auftragsfreigabe.sortieren;
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := false;
end;

Wenn ich einen Breakpoint in der Ausgangsmethode setze, kann ich sehen, dass die Bestandsliste jetzt voll und richtig sortiert ist und die Ausgangsblockierliste ist leer. Dennoch wird nicht das erste Element der Bestandsliste abgearbeitet, sondern eins das wohl ganz zuletzt in den Sortierer gekommen ist. Es sieht fast so aus, als würde die Bestandsliste von unten statt von oben abgearbeitet werden. Fast, weil dies nicht ganz der Fall ist.. Es scheint eher eine Reihenfolge zu sein, die sich aus der Rückeinfügung aus der Ausgangsblockierliste ergibt.

Leider ist dieses Verhalten für mich völlig sinnlos..
ich habe bereits die wait(0.001) Lösung aus dem anderen Thread probiert, leider ohne Erfolg.

Hat jemand eine Idee, wie ich dem Teil, erklären kann, dass ich tatsächlich die sortierte Reihenfolge der BEstandsliste und nicht irgendeine interne Reihenfolge haben möchte?

Bin für jeden Hinweis dankbar!

Planters Punch

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 12:21    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 Planters Punch 10 Unities + Antwort hilfreich

Hallo Planters Punch,
kannst Du das Modell bzw. die wesentlichen Teile mal in's Forum stellen. Mir ist nicht klar, wieso die Ausgangsblockierliste gefüllt ist bei geschlossenem Ausgang. Liegt das daran, dass beim vorherigen Öffnen die BEs nicht umgelagert wurden?
Opa

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

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 12:36    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

Was würdest du denn gerne genau wissen?

Auf die Quelle folgt direkt der von Anfang an ausgangsgesperrte Sortierer. Das Fördergut rauscht also rein und wird direkt in die Ausgangsblockierliste geschrieben. Scheint laut Hilfe das normale Verhalten zu sein. Kann ich dieses Verhalten umgehen?

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 12: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 Planters Punch 10 Unities + Antwort hilfreich


sortierer.gif

 
Hallo Planters Punch,

ich hab das mal ausprobiert:
zwei BEs mit unterschiedlicher Länge zufällig erzeugt, den Ausgang gesperrt, und dann sieht das so (Anhang) aus!

Opa

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

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 13:17    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


sortierer.JPG

 
Ja.. das Bild entspricht auch meiner "Ansicht" aber wie ich bereits geschrieben habe:

"Wenn ich einen Breakpoint in der Ausgangsmethode setze, kann ich sehen, dass die Bestandsliste jetzt voll und richtig sortiert ist und die Ausgangsblockierliste ist leer. Dennoch wird nicht das erste Element der Bestandsliste abgearbeitet, sondern eins das wohl ganz zuletzt in den Sortierer gekommen ist."

Siehe dazu mein Screenshot...

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


Ex-Mitglied

erstellt am: 04. Jul. 2005 13:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

fragen wir mal so:

- nach was wird sortiert ?
  - Sortierattribut ?
  - Sortierkriterium ?
-  wie wird sortiert ?
  - über Methode
  - aufwärts/abwärts ?

- wie sieht Deine Ausgangsmethode aus ?

wie Opa schon erwähnt hat, wenn Du nicht gerade mit der Studentenlizenz arbeitest, dann schicke mal diesen Ausschnitt  des Modells.

Ein eM-Plant-Modell sagt mehr als tausend Worte :-);

Gruss


------------------
DER SIMULATOR 

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 14: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 Nur für Planters Punch 10 Unities + Antwort hilfreich

Nach was wird eigentlich sortiert! Hat jedes BE einen anderen (Sortier)Wert, oder gibt es gleiche?

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

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 14:25    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


sortierer2.JPG

 
Hallo,

leider verwende ich die Studentenlizenz..

Der Sortierer arbeitet absteigend, bei Eintritt über BE-Eigenschaft "Freies Attribut". Den Wert des Attributes "Frist" erhält das Fördergut in der Quelle. Dieses hat ein zufälligen Wert mit Obergrenze. Mehrer Fördergüter können die gleich Frist haben.

Die Ausgangsmethode sieht folgendermaßen aus (lang):

Code:

is
Maschine1Kapazität : integer;
Maschine1Belastung : real;
Maschine1Gesperrt : boolean;
Maschine2Kapazität : integer;
Maschine2Belastung : real;
Maschine2Gesperrt : boolean;
Maschine3Kapazität : integer;
Maschine3Belastung : real;
Maschine3Gesperrt : boolean;
Maschine4Kapazität : integer;
Maschine4Belastung : real;
Maschine4Gesperrt : boolean;
do
if .Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt = true then
return;
end;

Maschine1Kapazität := .Modelle.Netzwerk.Maschine1.Kapazität;
Maschine1Belastung := .Modelle.Netzwerk.Maschine1.Belastung;
Maschine2Kapazität := .Modelle.Netzwerk.Maschine2.Kapazität;
Maschine2Belastung := .Modelle.Netzwerk.Maschine2.Belastung;
Maschine3Kapazität := .Modelle.Netzwerk.Maschine3.Kapazität;
Maschine3Belastung := .Modelle.Netzwerk.Maschine3.Belastung;
Maschine4Kapazität := .Modelle.Netzwerk.Maschine4.Kapazität;
Maschine4Belastung := .Modelle.Netzwerk.Maschine4.Belastung;

if @.Frist > .Modelle.Netzwerk.Planperiode then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return;
end;

if Maschine1Kapazität < Maschine1Belastung then
Maschine1Gesperrt := true;
end;
if Maschine2Kapazität < Maschine2Belastung then
Maschine2Gesperrt := true;
end;
if Maschine3Kapazität < Maschine3Belastung then
Maschine3Gesperrt := true;
end;
if Maschine4Kapazität < Maschine4Belastung then
Maschine4Gesperrt := true;
end;

--    messageBox(to_str(@.AuftragNr) , 3, 14);

if @.Maschine1 = 1 then
Maschine1Belastung := Maschine1Belastung + @.BedarfGewichtet1;
if Maschine1Gesperrt and (Maschine1Kapazität < Maschine1Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine1 = 2 then
Maschine2Belastung := Maschine2Belastung + @.BedarfGewichtet1;
if Maschine2Gesperrt and (Maschine2Kapazität < Maschine2Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine1 = 3 then
Maschine3Belastung := Maschine3Belastung + @.BedarfGewichtet1;
if Maschine3Gesperrt and (Maschine3Kapazität < Maschine3Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine1 = 4 then
Maschine4Belastung := Maschine4Belastung + @.BedarfGewichtet1;
if Maschine4Gesperrt and (Maschine4Kapazität < Maschine4Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;


if @.Maschine2 = 1 then
Maschine1Belastung := Maschine1Belastung + @.BedarfGewichtet2;
if Maschine1Gesperrt and (Maschine1Kapazität < Maschine1Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine2 = 2 then
Maschine2Belastung := Maschine2Belastung + @.BedarfGewichtet2;
if Maschine2Gesperrt and (Maschine2Kapazität < Maschine2Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine2 = 3 then
Maschine3Belastung := Maschine3Belastung + @.BedarfGewichtet2;
if Maschine3Gesperrt and (Maschine3Kapazität < Maschine3Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine2 = 4 then
Maschine4Belastung := Maschine4Belastung + @.BedarfGewichtet2;
if Maschine4Gesperrt and (Maschine4Kapazität < Maschine4Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;


if @.Maschine3 = 1 then
Maschine1Belastung := Maschine1Belastung + @.BedarfGewichtet3;
if Maschine1Gesperrt and (Maschine1Kapazität < Maschine1Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine3 = 2 then
Maschine2Belastung := Maschine2Belastung + @.BedarfGewichtet3;
if Maschine2Gesperrt and (Maschine2Kapazität < Maschine2Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine3 = 3 then
Maschine3Belastung := Maschine3Belastung + @.BedarfGewichtet3;
if Maschine3Gesperrt and (Maschine3Kapazität < Maschine3Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine3 = 4 then
Maschine4Belastung := Maschine4Belastung + @.BedarfGewichtet3;
if Maschine4Gesperrt and (Maschine4Kapazität < Maschine4Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;


if @.Maschine4 = 1 then
Maschine1Belastung := Maschine1Belastung + @.BedarfGewichtet4;
if Maschine1Gesperrt and (Maschine1Kapazität < Maschine1Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine4 = 2 then
Maschine2Belastung := Maschine2Belastung + @.BedarfGewichtet4;
if Maschine2Gesperrt and (Maschine2Kapazität < Maschine2Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine4 = 3 then
Maschine3Belastung := Maschine3Belastung + @.BedarfGewichtet4;
if Maschine3Gesperrt and (Maschine3Kapazität < Maschine3Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;

if @.Maschine4 = 4 then
Maschine4Belastung := Maschine4Belastung + @.BedarfGewichtet4;
if Maschine4Gesperrt and (Maschine4Kapazität < Maschine4Belastung) then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return
end;
end;


-- Maschinen-Konten addieren

     .Modelle.Netzwerk.Maschine1.Belastung := Maschine1Belastung;
.Modelle.Netzwerk.Maschine2.Belastung := Maschine2Belastung;
.Modelle.Netzwerk.Maschine3.Belastung := Maschine3Belastung;
.Modelle.Netzwerk.Maschine4.Belastung := Maschine4Belastung;
@.umlagern(Verteiler);
end;


Ein Bild von dem Modell habe ich mal beigefügt.

Vielen Dank schon mal, dass ihr euch das überhaupt mal anschaut.

[Diese Nachricht wurde von Planters Punch am 04. Jul. 2005 editiert.]

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 14:41    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 Planters Punch 10 Unities + Antwort hilfreich

Huu, da ist mir der SIMULATOR dazwischengekommen .
Wenn es gleiche Sortierwerte gibt, dann wird das BE mit einer der grössten Fristen, das als letztes eingetreten ist, zuerst austreten (So ist das jedenfalls bei mir).

Du müsstest noch innerhalb der gleichen Fristen eine Reihenfolge definieren, so dass die BEs mit der kleinen ID zuerst kommen.

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

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 14:47    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

Zitat:
Original erstellt von Opa:
Wenn es gleiche Sortierwerte gibt, dann wird das BE mit einer der grössten Fristen, das als letztes eingetreten ist, zuerst austreten (So ist das jedenfalls bei mir).

Du müsstest noch innerhalb der gleichen Fristen eine Reihenfolge definieren, so dass die BEs mit der kleinen ID zuerst kommen.


Hm.. eigentlich will ich aber, dass das Fördergut mit der geringsten Frist als erstes austritt, egal wann es reingekommen ist. (Deshalb soll er ja sortieren...) Die sortierte Bestandstabelle hat auch die richtige Reihenfolge - nur kommt das Fördergut nicht in dieser Reihenfolge raus :-(

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


Ex-Mitglied

erstellt am: 04. Jul. 2005 14:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn der Ausgang einmal gesperrt ist, dann wird die Ausgangsmethode nicht mehr aufgerufen!

Du solltest nicht via Ausgangsmethode den eigenen Ausgang steuern.

Versuch den Ausgang ueber die Eingangsmethode zu steuern

Gruss


------------------
DER SIMULATOR  

[Diese Nachricht wurde von Simulator am 04. Jul. 2005 editiert.]

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 15:05    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

Ja.. eigentlich kann ich mir dann nur die erste if-Abfrage in der Ausgangsmethode schenken.

Das Prinzip ist folgendes:

Eine externe Methode, die über einen Generator aufgerufen wird, schaltet den Ausgang regelmäßig frei.

Die Ausgangsmethode schaut sich dann das austretende Element an und lässt es heraus.. oder macht den Ausgang wieder dicht.

Das funktioniert ja auch.. nur die Reihenfolge mit der die Elemente an die Ausgangsmethode gefüttert werden ergibt für mich keinen Sinn.

Vielleicht habt ihr ja einen grundsätzlich anderen Vorschlag?

Ich hab an ein Lager gedacht, das ständig befüllt wird und regelmäßig schaut eine Methode drin nach und holt die nächsten paar dringenden Elemente raus.. vielleicht würde das besser funktionieren..

Gruss

Planters Punch

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 15: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 Nur für Planters Punch 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Planters Punch:
Hm.. eigentlich will ich aber, dass das Fördergut mit der geringsten Frist als erstes austritt, egal wann es reingekommen ist. (Deshalb soll er ja sortieren...) Die sortierte Bestandstabelle hat auch die richtige Reihenfolge - nur kommt das Fördergut nicht in dieser Reihenfolge raus :-(


Wenn Du absteigend sortierst, dann steht ja das mit der grössten Frist am Anfang!
Es ist übrigens so, dass die Inhaltstabelle von unten nach oben abgearbeitet wird, d.h. das letzte BE in der Tabelle wird zuerst entnommen. Wenn Du die kleinste Frist zuerst haben willst, musst Du Aufsteigend sortieren, die kleinste Frist steht dann unten!

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


Ex-Mitglied

erstellt am: 04. Jul. 2005 15:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

mach doch mal folgendes:

Erhöhe mal die Kapazität des Sortierernachfolgers  (Rückstau!)

Sortieren "bei Eintritt" einstellen im Sortierer

Schliesse Sortierereingang und sortier mal via Deiner Generatormethode
bevor Du den Ausgang wieder öffnest.

Öffne dann  den Eingang zeitverzögert (z.B. wait(1))

Das ganze bitte im STEP-Modus beobachten

Gruss


------------------
DER SIMULATOR 

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 16: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


sortierer3.JPG

 
Zitat:
Original erstellt von Opa:
Wenn Du absteigend sortierst, dann steht ja das mit der grössten Frist am Anfang!
Es ist übrigens so, dass die Inhaltstabelle von unten nach oben abgearbeitet wird, d.h. das letzte BE in der Tabelle wird zuerst entnommen. Wenn Du die kleinste Frist zuerst haben willst, musst Du Aufsteigend sortieren, die kleinste Frist steht dann unten!

Danke für den Hinweis..!

@Simulator

Die Generator-Methode sieht nun so aus:

Code:

is
do

.Modelle.Netzwerk.Auftragsfreigabe.EingangGesperrt := true;
wait(1);
.Modelle.Netzwerk.Auftragsfreigabe.sortieren;
wait(1);
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := false;
wait(1);
.Modelle.Netzwerk.Auftragsfreigabe.EingangGesperrt := false;
end;

Leider ändert das auch nichts...

Fördergut:15 ist immer das erste das durch die Ausgangsmethode bearbeitet wird. Es ist das letzte, das reinkommt, bevor der Eingang auch gesperrt wird.

Zur Verdeutlichung noch mal ein Screenshot, der die Situation kurz vor dem Öffnen des Ausgangs zeigt...

[Diese Nachricht wurde von Planters Punch am 04. Jul. 2005 editiert.]

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


Ex-Mitglied

erstellt am: 04. Jul. 2005 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wie sieht denn eigentlich die Frist-Attribut aus
(Format: real,integer oder string ?)

hast Du dir mal die die einzelnen Be´s mit Fristen ausgeben lassen ?
als Vergleich

wie sollte denn die korrekt-sortierte bzw. Umlagerungsreihenfolge aussehen.

Schicke mal eine Liste mit den Fristen & Planperiode dann kann ich es mal ausprobieren

Du hast da noch diese Vergleiche mit

.....if @.Frist > .Modelle.Netzwerk.Planperiode then
.Modelle.Netzwerk.Auftragsfreigabe.AusgangGesperrt := true;
return;
end;.... usw

die den Austritt verhindern können.

Kannst Du mal das ganze ohne diese Abfragen/Sperrungen testen.

Gruss


------------------
DER SIMULATOR  

[Diese Nachricht wurde von Simulator am 04. Jul. 2005 editiert.]

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 17: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

So siehts aus beim ersten Aufruf der Ausgangsmethode:

01 .BEs.Fördergut:13 Frist:10
02 .BEs.Fördergut:2
03 .BEs.Fördergut:6
04 .BEs.Fördergut:9
05 .BEs.Fördergut:4
06 .BEs.Fördergut:1
07 .BEs.Fördergut:3
08 .BEs.Fördergut:8
09 .BEs.Fördergut:10
10 .BEs.Fördergut:14
11 .BEs.Fördergut:15
12 .BEs.Fördergut:11
13 .BEs.Fördergut:5
14 .BEs.Fördergut:12 Frist:1
15 .BEs.Fördergut:7 Frist:1

Frist ist übrigens Integer und wir folgendermaßen erstellt:

@.Frist := z_gleich(1,1,MAXFRIST); mit MAXFRIST=11

Fördergut:7 sollte als erstes rausgehen, dann 12 usw..

Ohne die Ausgangsmethode gehen die einfach in umgekehrter Reihenfolge wie sie rein sind wieder raus.. also 15, 14, 13, 12 etc...

So als ob da gar nix sortiert wäre...

*seufz*

[Diese Nachricht wurde von Planters Punch am 04. Jul. 2005 editiert.]

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 17: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 Nur für Planters Punch 10 Unities + Antwort hilfreich

Aber das ist doch klar! 15,14... haben doch alle Frist 0, bzw. blank, falls das ein string ist. Und blank oder 0 ist halt immer das kleinste. Innerhalb der gleichen Fristen sortiert er dann nicht, d.h. er nimmt halt den Letzten (15), der reingegangen ist, als Ersten. (Das sortieren in eM-Plant ist so eine Sache  ).

Wenn man das verhindern will, muss man das Sortierkriterium noch über die BE.ID  oder was anderes gewichten.

Und das Modell in der Anlage hilft vielleicht auch! Hoffe ich ...

[Diese Nachricht wurde von Opa am 04. Jul. 2005 editiert.]

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

Opa
Mitglied
Selbständiger Simulationsexperte


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

Beiträge: 62
Registriert: 16.06.2005

eM-Plant 7.6 / 8.2
Development License

erstellt am: 04. Jul. 2005 20:24    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 Planters Punch 10 Unities + Antwort hilfreich


sortierer.spp.jpg

 
Oha, beim Ändern kann mal wohl keine Anlagen senden...

Hier also die Anlage!

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

Planters Punch
Mitglied


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

Beiträge: 9
Registriert: 04.07.2005

erstellt am: 04. Jul. 2005 21:21    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

Entschuldigung, wenn das missverständlich war...  die Fördergüter bei denen keine Frist dahinter stand, hatten Fristen zwischen 1 und 10.. einen Wert haben die alle da (integer).. ich war nur in Eile und wollte die nicht alle dahinschreiben.

Und der Punkt ist eben, dass das erste Element, das rauskommt weder den höchsten noch den niedrigsten hat...

´Bin eben erst wieder nach Hause gekommen, werde mir als nach dem Essen mal dein Model anschauen, vielen Dank!

Gruss

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