Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Sortieren im Sortierer mittels Methoden

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:  Sortieren im Sortierer mittels Methoden (2602 mal gelesen)
Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 22. Jan. 2009 14: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 bin neu hier und möchte mich erst mal kurz vorstellen. Ich bin Student an der FH Jena und bearbeite in einer Studienarbeit eine kleine Fabriksimulation eines Kleinteilherstellers. Bei dieser Studienarbeit habe ich ein kleines aber wichtiges Problem. Ich habe als Puffer vor einer Einzelstation ein Sortierer. Dieser soll einkommende BEs nach gleichen Namen sortieren damit die Maschine nur einmal, im Bezug zum Namen des BEs rüsten muss. Ich habe versucht eine Methode zu schreiben bin aber mit dem Benutzerhandbuch kläglich gescheitert. Kennt jemand von euch vielleicht eine passende Methode zum Sortieren von BEs nach dem Attribut Name?

Über Hilfe wär ich sehr erfreut.
Danke im Voraus!

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 23. Jan. 2009 07:34    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 Binford6100 10 Unities + Antwort hilfreich


Sortieren.JPG

 
Hallo,

hast du einen "Puffer als Sortierer" oder einen Sortierer vor der Station?

Bei einem Sortierer kannst du nur nach real konvertierbaren Kriterien sortieren. Beispiel: Bearbeitungszeit.
Der Name ist vom Typ String und nich konvertier bzw. sortierbar. Ggf. hilft es eine Bezeichnung im Format integer zuverwenden, ein Freies Attribut! Zum Beispiel: @.Bezeichnung. Diese Bezeichnung kann in abhängigkeit des Namens gesetzt werden z.B. über die Verknüpfung mit einer Tabelle. Die Verknüpfung passiert mit Hilfe einer MEthode vor eintritt in den Sortierer.

Hier ein Beispiel wie das aussehen könnte:

Code:

Methode:

Is
Do
Tabelle.ZeigerY:=1;
Tabelle.finde(@.Name)
@.Bezeichnung:=Tabelle["Bezeichnung",Tabelle.ZeigerY];
end;

Tabelle:

Name:String | Bezeichnung:Integer
Zylinder    | 1
Quader      | 2
Dreieck      | 3



Wenn du keinen Sortierer verwendest, wird es komplizierter. Aber auch hier für gibts in Plant Sim eine Lösung.

Ersetze den Puffer durch ein Lager. Setze X-Dim = 1 und Y-Dim = 999999. Dadurch ereichst du das alle BEs, wie in einem Puffer, in einer "Reihe" gelagert werden.

Ziehe eine Tabelle in die Netzwerkoberfläche. Keine weiteren Änderungen nötig.

Erstelle eine Methode mit folgendem Inhalt:

Code:

(a,b:String) -- Uninteresant, Variablen die vom Trigger übermittelt werden
is
i:Integer;
do
Lager.Inhaltsliste(Tabelle); -- Kopiert den Inhalt des Lagers in eine Tabelle
Tabelle.sortieren(1,"auf"); -- Sortiert die Tabelle

If Tabelle[1,1] /= Void then -- Wenn ein Teil im Lager
Tabelle[1,1].umlagern(Lager.Nf); -- Dann Lager das erste aus der Tabelle auf den Nachfolger um
end;
end;

Nun brauchst du noch einen Trigger. Dort gibts du Periodisch wiederholen an und die Periodenlänge gibt an in welchem Abstand die BEs den Puffer verlassen können. (Beispiel: 5:00, alle 5 min verlässt ein BE das Lager, falls sich ein BE im Lager befindet). Im Trigger musst du unter Aktion die Methode auswählen, die du vorher erstellt hast.

Das Ganze hab ich dir als Bild angehängt.


MFG
Patrick

[Diese Nachricht wurde von pom am 23. Jan. 2009 editiert.]

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 10:16    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 danke für die Antwort und Mühe. Ich probiere das gleich aus und melde mich wenn ich erfolg habe.

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 11: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

Habe die erste Variante mit den Sortierer mal ausprobiert und sie funktioniert leider nicht so ganz. Es kommt immer die Meldung das das BE im Sortierer nicht einsortiert werden kann.


Das BE '.Fabrik_V.Fertigung.Sortierer4' kann auf dem Objekt '.BEs.Fördergut:23' nicht einsortiert werden.

Code

Is
Tabelle : table;
Name : string;
Bezeichnung : integer;
Do
Tabelle.ZeigerY:=1;
Tabelle.finde(@.Name);
@.Bezeichnung:=Tabelle["Bezeichnung",Tabelle.ZeigerY];
end;

Und die Tabelle sieht so aus:

        string0  I    integer1
string  Name    I  Bezeichnung
1        Bogen    I        1
2        Bogen2  I        2
3        Bogen3  I        3

Muß der Wert "Bezeichnung" vieleicht als Attribut in einer Reihenfolgeliste gesetzt werden?

Die Parameter im Sortierer sind --> Sortierzeitpunkt beim Eintritt
                                    nach "Freies Attribut"
                                          @.Bezeichnung

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 23. Jan. 2009 12: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 Nur für Binford6100 10 Unities + Antwort hilfreich


Sortierer.JPG

 
Hallo,

Das Attribut "Bezeichnung" muss im BE hinterlegt sein.


Code:

Is
Do
Tabelle.ZeigerY:=1;
Tabelle.finde(@.Name);
@.erzeugeAttr("Bezeichnung","integer");
@.Bezeichnung:=Tabelle["Bezeichnung",Tabelle.ZeigerY];
end;

Sortierer wie auf dem Bild einstellen

MFG
Patrick

[Diese Nachricht wurde von pom am 23. Jan. 2009 editiert.]

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 13:03    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


emplant.JPG

 
Geht leider immer noch nicht. Ich habe beim Sortierer die Methode in die Eingangsteuerung gelegt, da er sie sonst nicht angesprochen hat. Jetzt läuft allesdurch aber die Fehlermeldung ist immernoch die selbe. Das Attribut ist immer 1. Er sucht quasi nicht in der Tabelle nach den Namen um das Attribut zu setzten. Ich hab dir mal nen Bild angehangen. Ich hoffe du erkennst was.

Beste Grüße
Christian

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 13:06    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


emplant.JPG

 
Ich hab das mit den Bild nochmal geändert.

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 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

Ich habe einen grundlegenden Fehler gemacht. Die Methode lag nicht vor den Sortierer. Sorry! Jetzt kommt die Fehlermeldung nicht mehr. Allerdings bin ich mir nicht sicher ob das mit der Vergabe der Attribute richtig funktioniert, da alle BEs bei benutzerdefinierten Attributen den Wert 1 besitzen.

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 23. Jan. 2009 13:40    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 Binford6100 10 Unities + Antwort hilfreich

Hallo,

die Methode sieht richtig aus. Stell sicher das die Namen in der Tabelle mit den BE-Namen = @.Name wirklich übereinstimmen.

Du kannst ja mal überprüfen welche Bezeichnung ausgelesen wird. Füge dafür eine Print Anweisung ein.

MFG
PAtrick

[Diese Nachricht wurde von pom am 23. Jan. 2009 editiert.]

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

Binford6100
Mitglied
Student

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

Beiträge: 8
Registriert: 22.01.2009

erstellt am: 23. Jan. 2009 13:46    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 es hinbekommen. Dank dir! Mein Problem war ein aktiver Zeilenindex in der Tabelle. Damit wurde das Attribut Bezeichnung nicht richtig gesetzt. Durch das Sortieren ist mein Rüstaufwand im Jahr um 3% gesunken. Das sieht jetzt gut aus. Ich danke dir nochmal für deine Hilfe.

Beste Grüße
Christian

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