Autor
|
Thema: Ereignisse aufzeichnen (2456 mal gelesen)
|
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 07. Mai. 2007 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, wisst ihr wie ich Ereignisse einer Simulation aufzeichnen kann? Ich will solche Ereignisse hier Aufzeichnen: 1. BE wird erstellt 2. BE wird zerstört 3. BE „betritt“ die Maschine 4. BE verlässt die Maschine 5. Maschinen Attribut XY wird verändert 6. BE wird zusammengebaut 7. BE wird auseinandergebaut
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Mai. 2007 17:01 <-- editieren / zitieren -->
schau Dir mal das Thema "Protokolldatei" an. ------------------ Der Simulator |
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 07. Mai. 2007 17:17 <-- editieren / zitieren --> Unities abgeben:
ja hab ich gefunden, aber wie kann ich mich selbst an die Ereignisse drann hängen? ich will z.B. auch noch eigene Parameter an jeder Zeile eines Trace Files, bei bestimmten Ereignissen drannhängen. Desweiteren bekomme ich in der Trace File keine Ereignisse wie, BE tritt in Maschine A ein, BE tritt aus Maschine A aus Zitat: Aus 1:00.0000 .BEs.Fördergut:158076 (.Modelle.Netzwerk.Einzelstation) Aus 1:00.0000 .BEs.Fördergut:158075 (.Modelle.Netzwerk.Senke) ErzeugeBE 1:00.0000 .Modelle.Netzwerk.Quelle Aus 1:00.0000 .BEs.Fördergut:158077 (.Modelle.Netzwerk.Quelle) Aus 2:00.0000 .BEs.Fördergut:158076 (.Modelle.Netzwerk.Einzelstation)
z.B. Fördergut: 158076 der gibt mir beidemale wieder das BE geht "Aus" der Einzelstation Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Mai. 2007 19:03 <-- editieren / zitieren -->
hmmmm, ich glaube, Du versuchst gerade Deine eigenen Ideen und Vorstellungen in eMPlant wieder zu finden. Wenn in der Ereignisliste - dem eigentlichen "Herz" des ereignisorientierten Simulators- 2 "AUS"-Ereignisse des .BEs.Fördergut:158076 von der "Einzelstation" zum Zeitpunkt 1 /2min stehen, so bedeutet es fuer mich nur, dass zum 1. Ereigniszeitpunkt das Be nicht umgelagert werden konnte (vielleicht weil die Senke blockiert war ?) und ein neues Be-"Aus"-Ereignis zum Zeitpunkt 2 min bestimmt und in die Ereignisliste eingereiht wurde. Das Verhalten ist also wohl korrekt! Wenn im Tracefile nicht die von Dir erdachten Ereignisse ("BE tritt in Maschine A ein") stehen, so werden Sie wohl so auch nicht benötigt fuer die Ereignisverarbeitung oder lassen sich durch andere Zusammenhänge bestimmen ( z.B. Vorgänger/ Nachfolgerbeziehung) Soweit ich weis, kannst Du die Protokolldatei in eine Tabelle auslesen. Hier hättest Du durch eine weitere Spalte, die Möglichkeit "etwas" anzuhaengen. Hast Du Dir eigentlich auch die 3D-Protokolldatei angeschaut ? In dieser Datei werden alle relevanten Daten fuer die 3D-Simulation protokolliert. ------------------ Der Simulator
|
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 08. Mai. 2007 10:54 <-- editieren / zitieren --> Unities abgeben:
also die Protkolldatei ist ja nur eM-Plant spezifisch. und ist auch nur eine binär Datei. Ich muss ein allgemeines Konzept zur Kopplung einer Simulation an eine externe Visualisierung entwickeln. das ganz mache ich am Beispiel eM-Plant. Hier wird mir z.B. nicht angezeigt das das BE 1 zur Zeit 0 in der Quelle erzeugt wird. Zitat: ErzeugeBE 0.0000 .Modelle.Netzwerk.Quelle Aus 0.0000 .BEs.Fördergut:1 (.Modelle.Netzwerk.Quelle) ErzeugeBE 0.0000 .Modelle.Netzwerk.Quelle Aus 0.0000 .BEs.Fördergut:2 (.Modelle.Netzwerk.Quelle) Aus 1:00.0000 .BEs.Fördergut:1 (.Modelle.Netzwerk.Einzelstation)
Die von mir definierten Ereignisse machen meines erachtens eine Ereigniss Simulation aus. Wie könnte ich solche Ereignisse Mitloggen? Zitat: 1. BE wird erstellt 2. BE wird zerstört 3. BE „betritt“ die Maschine 4. BE verlässt die Maschine ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 08. Mai. 2007 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für Nash25
Ab Plant Simulation 7.6 kann man mittels der globalen Funktion setMUTraceRouteMethod(ref(Methode)); eine Methode bestimmen, die aufgerufen wird, sobald ein BE von einem Objekt auf ein anderes umgelagert wird. Der Methode wird u.a. der alte und neue Standort übergeben. Somit kann man einfach den Materialfluss mitprotokollieren. Achtung: Die Methode wird erst aufgerufen, wenn der Referenzpunkt umgelagert wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 08. Mai. 2007 14:41 <-- editieren / zitieren --> Unities abgeben:
die Funktion schau ich mir mal an. ich bin bis jetzt "soweit" gekommen
Code: EreignisTabelle := Ereignisverwalter.holeEreignisListe(0); if(EreignisTabelle[ 2, 1]="ErzeugeBE") then Hilfe := EreignisTabelle[ 4, 1]; BE := Hilfe.BEStueck(Hilfe.AnzahlBEs); temp := false; end;
ich will mitloggen wenn das Ereigniss ErzeugeBE erscheint dann, soll er mir die IDE des BE's speichern nur dumm das, wenn dieses Ereigniss auftritt, sich das BE noch auf keinem Objekt befindet, dafür brauch es anscheinend noch ein zweites EreignissEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mai. 2007 17:46 <-- editieren / zitieren -->
@ Protokolldatei die 2D-Protokolldatei ist mit jedem Texteditor einles- und bearbeitbar! die 3d-Protokolldatei ist eine gepackte (*.gz) Textdatei - also auch les- und editierbar!! Den Inhalt kannst Du auch während der (3D-)Simulation in der Konsole ausgeben lassen (rechte Maustaste und Channels aktivieren).
Zitat:
Die von mir definierten Ereignisse machen meines erachtens eine Ereigniss Simulation aus. Wie könnte ich solche Ereignisse Mitloggen?
mach es doch so:
1. BE wird erstellt wird durch das Aus-Ereignis der Quelle nachgebildet 2. BE wird zerstoert wird durch das Aus-Ereignis der Senke nachgebildet 3. BE "betritt" Station wird durch das Aus-Ereignis der Vorgängerstation bestimmt. Also such in der chronolgisch sortierten Ereignisliste das Vorgänger-Aus-Ereignis zum spezifischen Be. 4. BE "verlässt" Station s. Aus-Ereignis Diese 4 Ereignisse kannst Du aber auch ueber folgende Methode protokollieren. is ort1 : object; do print @,"erzeugt auf ",chr(9),?.~;
ort1:=?.~; repeat waituntil ?.~/=ort1 prio 1; if ort1 /=VOID then print @, " verlässt", ort1; print @, " betritt ", ?.~; end; ort1:=?.~; until false or ort1.internalclassname="Drain"; print @,"vernichtet auf ",chr(9),?.~; end; trage sie beim Be in das Feld der Konstruktorsteuerung ein. ------------------ Der Simulator |
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 08. Mai. 2007 18:26 <-- editieren / zitieren --> Unities abgeben:
stimmt, und wieder hast du recht, die 3D informationen waren nur gepackt. Ich kann diese Infos aber nicht verwenden, da die möglichkeit gegeben sein muss Simulatoren an die Visualisierung anzuschließen, welche keine 3D Ausgabe haben. dein Quellcode ließt sich für mich wie assembler code ich finde die Konstruktersteuerung bei dem BE nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mai. 2007 18:32 <-- editieren / zitieren -->
Welche Simulatoren haben keine 3D-Ausgabe ? @Konstruktorsteuerung Menue "Extras" und dann "Steuerungen" auswählen. ------------------ Der Simulator |
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 08. Mai. 2007 18:39 <-- editieren / zitieren --> Unities abgeben:
ich bin über Select Controls auf den Konstruktor gekommen. dort hab ich den Namen "meiner" Methode dann eingetragen z.B. SLX der verfüt über keine 3D Visualsierung, soll aber angeblich verdammt schnell und gut sein, kann ich aber nicht beurteilen aber wenn man jeder simulationssoftware an eine Visualisierungssoftware koppeln kann wäre es doch schon toll. PS: kannst du mir bitte kurz deinen Quellcode erklären? das klingt alles so verdammt kryptisch für mich print @," erzeugt auf ",chr(9),?.~; ort1:=?.~; ?.~/=ort1
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mai. 2007 19:14 <-- editieren / zitieren -->
@ = aufrufendes BE = ? in diesem Fall !! ?.~ = @.standort, also Objekt auf dem das Be liegt ort1 = Vorgaengerort des BEs. ------------------ Der Simulator |
Nash25 Mitglied
Beiträge: 32 Registriert: 20.02.2007
|
erstellt am: 08. Mai. 2007 19:39 <-- editieren / zitieren --> Unities abgeben:
achso @ ist sowas wie ein this zeiger aber warum steht das ? dann nochmal für das BE? es ist doch sicher realisitisch das sich Attribute eines Objektes währen der Laufzeit ändert? Ich meine jetzt solche Attribute, bei stationären Objekte, wie z.B. Förderstrecke. Das man z.B. sagt weil zuviele BE's sich auf dem Förderband befinden ändern wir die Geschwindigkeit des Förderbandes. wie könnte man sowas abfragen? Welche Attribute ich überwache, gebe ich natürlich vor. über eine externe Methode und ein Waituntil (Value Changed)?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mai. 2007 19:57 <-- editieren / zitieren -->
Zitat:
aber warum steht das ? dann nochmal für das BE?
Der anonyme Bezeichner ? verweist auf den Baustein, der die Methode aufruft. (s. Hilfe) in diesem Fall wird die Methode vom Be (Konstruktorsteuerung) aufgerufen ! Besser , Du machst dies ueber eine Eingangssteuerung des Förderbandes if ?.anzahlbes > ... then ?.geschwindigkeit:=0.1 ; else ?.geschwindigkeit:=0.15 ; end;
------------------ Der Simulator
|