Autor
|
Thema: Variantenfertigung (771 mal gelesen)
|
tauli Mitglied Student
Beiträge: 23 Registriert: 28.01.2009
|
erstellt am: 28. Jan. 2009 15:33 <-- editieren / zitieren --> Unities abgeben:
hallo vielleicht kann mir jemand schnell und unkompliziert helfen. folgendes problem. an einer montagestation laufen hauptteile in verschiedenen Varianten auf und die passenden anbauteile dazu. ein anbauteil kommt 1:1 auf ein hauptteil. wie kann ich in einer methode dafür sorgen das genau das passende anbauteil auf dem hauptteil landet und nich x-beliebig umgelagert wird. ich hab es mit attributen versucht aber weder die hilfe noch die beispiele waren aufschlussreich. hauptteile werden zufällig generiert, anbauteile werden anhand der attribute der hauptteile generiert. aber selbst daran scheitere ich schon. wenn mir jemand helfen kann wäre ich dankbar. gruß tauli (ich benutze Tecnomatix 8.1) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 28. Jan. 2009 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für tauli
|
tauli Mitglied Student
Beiträge: 23 Registriert: 28.01.2009
|
erstellt am: 29. Jan. 2009 11:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Patrick Danke für die Antwort. Ich hab mich vielleicht undeutlich ausgedrückt und Informationen vorenthalten. Ich hab das erste mal mit dem Programm zu tun und komme der Lösung nur mit der Hilfe, Vergleichsbeispielen und u.a. dem Forum hier näher. Mein Kenntnisse in Sachen Programmierung sind auch sehr begrenzt. Ich hab lange in den Beiträge gestöbert und gesucht. Für dich ist vielleicht aus den Beiträgen die Lösung ersichtlich, klar du hast sie teilweise auch verfasst, für mich war das leider nicht so. Was ich immernoch nicht hinbekomme ist der Montagestation mitzuteilen, dass sie sich für Haupteil 1 Anbauteil 1, für Hauptteil 2 Anbauteil 2 und für Hauptteil n Anbauteil n aus dem Puffer nehmen soll. Ich hätte das lieber durch umlagern mit einer Methode versucht statt mit Montagestation und Liste, aber am Code dafür scheitere ich immer. Die Liste und Montagstation sind mir zu schwer zu verstehen. Ich hab mehrere Stunden damit verbracht das hinzubekommen, leider hat es nie funktioniert. Vielleicht verstehst du jetzt mein Anliegen. Gruß tauli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 30. Jan. 2009 07:06 <-- editieren / zitieren --> Unities abgeben: Nur für tauli
Hallo, mit ein bisschen Fantasie und genauem schauen wärst auch du bestimmt auf eine passende Lösung gekommen. Hilfestellung: 1. Suche in Abhängigkeit eines Haupteils (Name) in einer Tabelle nach dem passenden Anbauteil (Puffer). Stichwort für die Plant Hilfe: ZeigerY, Finden, Arbeiten mit Tabellen, Eingangssteuerung, Ausgangssteurung 2. Benutzte die gefunden Einträge mit der Methode "Umlagern" um sie zu der passenden Station umzulagern. Stichwort für die Plant Hilfe: Umlagern, Inhalt, ?, @ Diese beiden Schritte musst du für dein Problem durchführen bzw. programmieren. Mit den Beispielen im Forum zu diesem Thema wirst du bestimmt schnell eine Lösung finden. Versuch mal eine MTehode zu erstellen, falls diese nicht funktioniert, zeigst du sie uns einfach. MFG Patrick Ggf. in der Hilfe den INDEX benutzen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tauli Mitglied Student
Beiträge: 23 Registriert: 28.01.2009
|
erstellt am: 04. Feb. 2009 11:19 <-- editieren / zitieren --> Unities abgeben:
Hallo danke für die Antwort. Ich hab es jetzt so versucht (siehe Anhang). Was dort zuehen ist ist das Netzwerk in dem ich die Montage darstelle. In der Vorgängerstation 1 der Hauptlinie wartet ein Hauptteil. Ich lasse für die Montage das Lager mit Methode1 durchsuchen, die Position eines passenden Teils wird der Variablen übergeben, um dann genau eine passende Einheit des Anbauteils mit Hilfe der Variablen auf die Vorgängerstation 2 zuladen. Die Monatestation macht dann daraus ein Teil. Die Anbauteile wurden vorher von den Hauptteilen ausgelöst (sobald diese die Station X erreicht haben), kommen aber nicht in der gleichen Reiehenfolge im Lager/Puffer an, weil es Doppelstationen gibt mit unterschiedlichen Zeiten und später auch einen Mindestbestand im Puffer. Es soll mit der Methode eigentlich immer irgendein passendes Anbauteil aus dem Lager entnommen werden, welches ist egal Hauptsache es ist der richtige Typ. Ich hab die Farben entsprechend gewählt, so daß aus der Montagestation nur Teile gleicher Farbe herauskommen sollten. Leider klappt das irgendwie nicht. Gruß tauli [Diese Nachricht wurde von tauli am 04. Feb. 2009 editiert.] [Diese Nachricht wurde von tauli am 04. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 04. Feb. 2009 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für tauli
Hallo, das Bild lässt sich nach dem Umbennen nicht öffnen. Aber versuch mal ,vor dem Umlagern, den Puffer zu durchsuchen. Code:
for i:=1 to Puffer.AnzahlBEs loop IF Puffer.BEStueck(i).Name = GesuchterName then Puffer.BEStueck(i).umlagern(Ziel); exitloop; end; next;
Grüße Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tauli Mitglied Student
Beiträge: 23 Registriert: 28.01.2009
|
erstellt am: 04. Feb. 2009 15:18 <-- editieren / zitieren --> Unities abgeben:
Danke Ich weiß nur nicht warum das Bild nicht geht. Ich hab es ähnlich gemacht: is x : integer; xposition : integer; typ : string; do waituntil Vorgängerstation.belegt prio 1; typ := Vorgängerstation.inhalt.typ; -- für Variante 1 if typ = "Var1" then -- Var1 = Attribut Hauptteil x:=1; -- Typ suchen und umlagern while x <= Lager.xdim loop if Lager[x,1].belegt = true then if Lager[x,1].inhalt.Typ = "a" then -- a = Attribut Anbauteil, a gehört zu Var1 xposition := x; end; end; x:=x+1; end; end; -- für Variante 2 if typ = "Var2" then x:=1; -- Typ suchen und umlagern while x <= Lager.xdim loop if Lager[x,1].belegt = true then if Lager[x,1].inhalt.Typ = "b" then xposition := x; end; end; x:=x+1; end; end; -- wiederholt für weiter Varianten, ich hab genau 3 waituntil Einzelstation.belegt = false prio 1; Lager[xposition,1].inhalt.umlagern(Einzelstation); x:=1; end; Vorgängerstation ist die Station die in der Hauptlinie vor der Montatgestation steht. Einzelstation ist die Vorgängerstation die zwischen Lager und Montagestation steht, also die Vormontageseite. Ich hab den BEs benutzerdefinierte Attribute verpasst. Danach will ich suchen lassen. Was mein Problem bei der Sache ist, das trotzdem nicht die richtige BE zur Montagestation geschickt wird. Ich lasse die Methode vom Lagereingang aufrufen oder von der Vorgängerstation, es passiert das gleiche.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 05. Feb. 2009 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für tauli
Hallo, 1. Hat dein Lager wirklich nur Y-Dim = 1? 2. Warum zählst du auf die Variable x x:=x+1 nach dem du x zugewiesen hast? Weil so wählst du ja immer das Falsche BE aus. Grüße Patrick PS.
Code:
Mit Quellcode zwischen [C ode] und [/C ode] (Leerzeichen weg lassen. Kann man den Quellecode besser lesen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tauli Mitglied Student
Beiträge: 23 Registriert: 28.01.2009
|
erstellt am: 05. Feb. 2009 08:40 <-- editieren / zitieren --> Unities abgeben:
1. Ich hab der Einfachheit wegen dem Lager YDim=1 gegeben und ändere dann für die absolute Größe immer nur XDim. Ich hatte vorher ein Puffer, wusste nur nicht wie ich an die einzelnen Plätze komme, um dort an den Inhalt zu kommen. Beim Lager schien mir das einfacher zu sein. 2. Werde ich mal berücksichtigen, jetzt wo du das sagst fällt es auch auf. Ich schreibe das jetzt mit in die Schleife als else-Anweisung.
Code:
if typ = "Var1" then x:=1; while x <= Lager.xdim loop if Lager[x,1].belegt = true then if Lager[x,1].inhalt.Typ = "a" then xposition := x; else x:=x+1; end; end; end; end;
[Diese Nachricht wurde von tauli am 05. Feb. 2009 editiert.] [Diese Nachricht wurde von tauli am 05. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |