Autor
|
Thema: über Methode Werte in einer Tabelle ausgeben (2654 mal gelesen)
|
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 17. Jul. 2018 15:08 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, ich möchte gerne folgende Werte aus meiner Senke durch eine Methode in einer Tabelle ausgegeben haben: 1)jeweilige produzierte Komponente 2)produzierte Teile in einer Woche pro Komponente 3)Durchlaufzeit pro Komponente 4)produzierte Teile pro Tag pro Komponente 5)und noch zu produzierende Teile für einen Monat - bezogen auf eine Abrufliste die den Monatsbedarf pro Komponente aufzeigt ->(Produzierte Teile(Durchsatz) - Abrufliste des jeweiligen Monats und Komponente) ich habe folgenden Versuch gestartet: T_Prod.schreibeZeile(1,1, Dekore_L.NumMUParts, Dekore_L.ProcTime, Dekore_L.statThroughputPerDay); leider wird mir hier kein Wert ausgegeben. Wie kann ich die Methode am einfachsten für 7 Komponenten gestalten? Vielen Dank javascript:InsertSMI(' %20');
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 19. Jul. 2018 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Hallo AM-SIM, Zitat: 1)jeweilige produzierte Komponente
<DeinBeInDerBibliothek>.name Zitat: 2)produzierte Teile in einer Woche pro Komponente [...] 4)produzierte Teile pro Tag pro Komponente [...] 5)und noch zu produzierende Teile für einen Monat
einen Generator je Woche/Tag aufrufen. In for-Schleife BE durchgehen ... <DeinBeInDerBibliothek>.statVernichtet --> Anzahl vernichteter Objekte in extra! Tabelle(n) notieren. Tannst auf Tag mitschreiben. Zum Simulationsende mit Methode die Ergebnisse auf Woche, Monat, Jahr verdichten. optional diese Statistik im BE zurücksetzen mit.... <DeinBeInDerBibliothek>.initStat(false) ---> Durchlaufzeit nicht Zurücksetzen Zitat: 3)Durchlaufzeit pro Komponente
<DeinBeInDerBibliothek>.StatMittDurchlaufzeit vG Nadin
------------------
Zitat: Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 23. Jul. 2018 17:31 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Vielen Dank Nadin, irgenwie schaffe ich es leider nur die Zeitabstände vom Generator auf meine Tabelle zu schreiben. Der Rest klappt nicht. Um die Ausbringung pro Woche auf die Tabelle zu schreiben müsste ich ja auch auf meine Senke zugreifen... wie kann ich dann gleichzeitig die Daten im Generator und Senke lesen und schreiben? So sollte es ausschauen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 24. Jul. 2018 19:30 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Beispiel ist angehängt V14 vG Nadin ------------------
Zitat: Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 29. Jul. 2018 20:36 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Vielen Dank Nadin, ich habe mehrere Quellen die BE´s werden dann auf eine Platte geladen und zum Schluss wieder entladen. Da ich auch einen Ausschuss in meinem Prozess habe ist es für mich wichtig wie viel Teile ich von jeder Komponente raus bekomme. Im Moment kann ich nur meine Platten zählen, aber die Fördergüter. Da meine Montageliste(T_Montage) siehe Anhang, auch eine Subtabelle besitzt müsste diese doch mit meiner T_Quelle verbunden sein.. Wie komme ich auf das Ergebnis der Fördergüter? Vielen Dank. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 30. Jul. 2018 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Solange die Montage und Demontage keine BE vernichtet, sondern nur auf- oder abläd, kann Monitoring ausschließlich auf die Systemgrenzen bezogen werden. Werden BE in Demontage- oder Montagestation vernichtet und neue BE erzeugt, übernimmt das neue BE die Statistik der vernichteten BE nicht. Das Auslesen erfolgt mithilfe einer For-Schleife. Diese gibt die Reihenfolge und die BEs vor. Mehr nicht. Zum Beispiel für die EndSim:
Code: var _T_STATISTIK: object _T_STATISTIK := current.T_DLZ_GES--************************************* _T_STATISTIK.löschen({0,1}..{*,*}) for var i:= 1 to /*current.T_Quelle.ydim*/ current.DeineSpezielleTabelle.ydim loop _T_STATISTIK[0,_T_STATISTIK.ydim+1]:= current.DeineSpezielleTabelle[1,i].name _T_STATISTIK[1,_T_STATISTIK.ydim+1]:=time_to_num(current.DeineSpezielleTabelle[1,i].StatMittDurchlaufzeit) next
In current.DeineSpezielleTabelle legst du beispielsweise alle BEs (aus Bibliothek als Objekt) ab, die du schreiben wills. Auch die M_Schreibe Methode greift dann auf DeineSpezielleTabelle zu... Code: var _T_STATISTIK: object _T_STATISTIK := current.T_ProdTag--*********************************** _T_STATISTIK[0,_T_STATISTIK.ydim+1]:= EventController.Zeit --notiere Zeit in sec, da beispielsweise in Excel die SimZeit umständlicher zu handhaben ist for var i:= 1 to current.DeineSpezielleTabelle.ydim /*current.T_Quelle.ydim*/ loop --gehe Obj durch _T_STATISTIK.setzeZeiger(0,0) --setze Zeiger für das Suchen --if _T_STATISTIK.finden({0,0}..{*,0},current.T_Quelle[4,i]) =true if i= 1 _T_STATISTIK[current.DeineSpezielleTabelle[1,i].name,_T_STATISTIK.ydim+1]:= current.DeineSpezielleTabelle[1,i].statVernichtet --_T_STATISTIK[current.T_Quelle[3,i],_T_STATISTIK.ydim+1]:= current.T_Quelle[1,i].statVernichtet else _T_STATISTIK[current.DeineSpezielleTabelle[1,i].name,_T_STATISTIK.ydim]:= current.DeineSpezielleTabelle[1,i].statVernichtet --_T_STATISTIK[current.T_Quelle[3,i],_T_STATISTIK.ydim]:= current.T_Quelle[1,i].statVernichtet end; --end; --_T_STATISTIK[_T_STATISTIK.ZeigerX,_T_STATISTIK.ydim+1] := current.T_Quelle[1,i].statVernichtet --schreibe Anzahl vernichtetet Teile current.DeineSpezielleTabelle[1,i].initStat(false) --current.T_Quelle[1,i].initStat(false) ---> Durchlaufzeit nicht Zurücksetzen!! next;
In Tabellen T_DLZ_GES und T_ProdTag sind nun die Name der BEs, Paletten usw. manuell noch nachzuflegen.. Mit einwenig Modifikation kannst du auch eine der Tabellen, in die du die Daten Schreibst, für die For-Schleife nutzen, sodass keine zusätzliche Tabelle nötig ist.... vG Nadin
------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 30. Jul. 2018 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Vielen Dank. leider taucht dann folgender Fehler in beiden Methoden auf: unbekannter Bezeichner für die Methode: .statVernichte und .statMittDurchlaufzeit - liegt das an der Subtabelle in T_Montage[1,i]? Kann man die Subtabelle der Tabelle auch angeben? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 30. Jul. 2018 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
wenn es unbedingt auf Montageliste gehen soll, dann sehe Pic. Dies ist eine Vereinfachte Lösung. Denn es wird NUR die erste Position in der MontageListe genommen. Auch wird nicht geprüft, ob BE schon notiert ist. Deshalb, wenn ein BE in mehreren Montagelisten vorkommt, bedeutet dies, dass nochmaliger Zugrif den Wert überschreibt und somit - da es auch noch resetet wird - "0" einträgt. ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 30. Jul. 2018 18:15 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Es müsste nicht über die Montageliste gehen. Für mich ist es vom verständis her mit der T_Quelle Liste Leichter - wichtig ist für mir nur dass in der Tabelle nicht die Anzahl der Förderhilfsmittel, sondern nur der Födergüter(BE)steht, da ich noch Ausschuss und weitere Montagelisten berücksichtige. Wenn ich die Methode so übernehme erhalte ich einen Syntaxfehler zur folgenden Zeile: _obj:= str_to_obj(incl(to_str(root.location),incl(".MU.",current.T_Montage[1,i][1,i],-1)-1))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 31. Jul. 2018 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Zitat: _obj:= str_to_obj(incl(to_str(root.location),incl(".MU.",current.T_Montage[1,i][1,i],-1),-1))
anbei ein implementiertes Beispiel für "DeineSpezielleTabelle" vG Nadin ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AM-SIM Mitglied Studentin
Beiträge: 26 Registriert: 20.06.2018
|
erstellt am: 05. Aug. 2018 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
Vielen Dank für die Unterstützung! Meine DLZ berechnet sich nur dann wenn ich den Generator genau auf die angebene Laufzeit im Ereignisverwalter setzte. Sobald der Generator eine niederigere Berechnungszeit als der Ereignisverwalter hat - bekomme ich den Wert 0. Desweiteren ist die Summe meiner Mittleren DLZ größer als die gesamte Simulationszeit. Nach meinem Verständnis macht es wenig Sinn oder wie berechnet sich das? Vielen Dank. AM-SIM Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 05. Aug. 2018 22:25 <-- editieren / zitieren --> Unities abgeben: Nur für AM-SIM
ja hast recht...Anscheinend ist für EM Durchlaufzeit nicht gleich StatMitDurchlaufzeit, sodass initStat auch die Durchlaufzeit resetet. Also einmal ohne initStat einmal den Inhalt in Methode "M_Schreibe" ersetzen durch: Code:
var _T_STATISTIK: object _T_STATISTIK := current.T_ProdTag--*********************************** _T_STATISTIK[0,_T_STATISTIK.ydim+1]:= EventController.Zeit --notiere Zeit in sec, da beispielsweise in Excel die SimZeit umständlicher zu handhaben ist for var i:= 1 to current.DeineSpezielleTabelle.indexydim loop --gehe Obj durch _T_STATISTIK.setzeZeiger(0,0) --setze Zeiger für das Suchen if _T_STATISTIK.indexydim = 1 then _T_STATISTIK[current.DeineSpezielleTabelle[0,i],_T_STATISTIK.indexydim]:= current.DeineSpezielleTabelle[1,i].statVernichtet else _T_STATISTIK[current.DeineSpezielleTabelle[0,i],_T_STATISTIK.indexydim]:= current.DeineSpezielleTabelle[1,i].statVernichtet- _T_STATISTIK.sum({current.DeineSpezielleTabelle[0,i],1}..{current.DeineSpezielleTabelle[0,i],_T_STATISTIK.indexydim-1}) end -- current.DeineSpezielleTabelle[1,i].initStat(true) next;
...wenn du die alte Menge - diese wird in den obigen Code mit _T_STATISTIK.sum({current.DeineSpezielleTabelle[0,i],1}..{current.DeineSpezielleTabelle[0,i],_T_STATISTIK.indexydim-1}) berechnet, in einer anderen Variable speicherst und in darauffolgenden Aufruf auf diesen Wert zurückgreifst und anschließend überschreibt, ist es eleganter.
------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|