Autor
|
Thema: Zeit (Dauer) erfassen von Weg / Stapler (1276 mal gelesen)
|
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 09:31 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, da die Standard-Auswertungen von Plant Simulation leider nicht auf meinen Anwendungsfall passen, muss ich mir eigene Auswertungen basteln. Und zwar brauche ich folgende Daten: Wenn ein Stapler auf einem speziellen Weg ein Hindernis (anderer Stapler) hat, dann soll er solange eine Zeit für sich hochzählen bis dieses Hindernis weg ist. Falls dies nochmal passiert soll er dieselbe Zeit weiter hochzählen... Warum schreib ich spezieller Weg? Naja ich habe mehrere Wege, bei denen der Stapler ein Hindernis hat, aber nur bei diesem speziellen Weg spielt es eine Rolle, weil ich diese Zeit auswerten. --> Gibt es da eine smarte Lösung zur Umsetzung? Ich habe ein Beispiel angehangen. In dem Fall würde ich die Zeit auswerten wollen, die Stapler2 hinter Stapler1 warten muss.
Pseudocode: Wenn (Stapler2 auf 'SpeziellerWeg') & (Stapler2 hat Vorgänger) dann solange 'BlockadeZeit' hochzählen bis (Stapler2 hat keinen Vorgänger) Grüße Stapler Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
Moin, Beispielsweise im Stapler einen Beobachter auf "Aufgefahren", oder eine Methode in Abstand (AbstandSt) hinterlegen. Dann Prüfung auf Standort. Wenn ok, entweder Zeit merken oder in Tabelle die Differenz dazu addieren. 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 12:01 <-- editieren / zitieren --> Unities abgeben:
Hi Nadin, den Beobachter im Stapler habe ich soweit hinbekommen. Auch, dass der Beobachter auslöst, wenn der Stapler auf dem speziellen Weg ist und auffährt. Die Zeit wird dann in eine Tabelle geschrieben. Aber wie genau kriege ich jetzt die Dauer bis der Stapler nicht mehr auffährt? Mir fehlt quasi der zweite Zeitstempel Mein Code: param Attributsname:string, Aufgefahren:boolean var Ursprung : object
if ?.aufgefahren Ursprung := ?.standort.standort.ursprung if Ursprung = .Modelle.Obj.LP root.Zeiten["Zeit", Zeiten.Ydim+1] := root.Ereignisverwalter.Zeit end end
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
Beobachter wird beim Ändern aufgerufen. Event1: aufgefahren = true Event2: aufgefahren = false ------------------ 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 13:48 <-- editieren / zitieren --> Unities abgeben:
Okay das funktioniert ganz gut, aber irgendwie habe ich ein Problem wenn mehrere Stapler sich einreihen Wäre folgende Lösung auch denkbar? Dem Stapler einen Status zu setzen, Beispiel "Wartend", "Gestört" oder sowas... Wenn Stapler ZweispurigerWeg betritt: 1. Wenn ZweispurigerWeg.AnzahlBEs > 1 -> dann Stapler.Status setzen 2. Sobald Stapler Sensor erreicht -> Stapler.Status zurücksetzen Die Dauer des Status müsste dann im Statistikbericht der Staplers auftauchen. Liege ich falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
Zitat: aber irgendwie habe ich ein Problem wenn mehrere Stapler sich einreihen
Wie sieht dein Code im Beobachter aus? bzw. was ist das Problem? ------------------ 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 16:52 <-- editieren / zitieren --> Unities abgeben:
Angehängt ist die Tabelle und der Code aus dem Beobachter Denke das Problem ist jetzt gelöst. Habe den Code nochmal überarbeitet. Man sieht im auskommentierten Teil meinen alten Code. Der hat wohl immer nur jeweils den Start (aufgefahren=true) mitgenommen. War auch bisschen verwirrend, dass Zeile 3 und 4 dieselbe Zeit haben. Liegt aber daran, dass 3 Stapler hintereinander sind und die zwei hinteren gleichzeitig vorrücken. Noch ne Idee wie, ich jeweils die Differenz aus Start- und End-Zeit korrekt zusammenrechne? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 17:55 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
Zitat: Und zwar brauche ich folgende Daten: Wenn ein Stapler auf einem speziellen Weg ein Hindernis (anderer Stapler) hat, dann soll er solange eine Zeit für sich hochzählen bis dieses Hindernis weg ist. Falls dies nochmal passiert soll er dieselbe Zeit weiter hochzählen...
Dein Bild hat kaum was mit Ziel zutun.... Wie willst du deine Tabelle haben? ------------------ 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 18:22 <-- editieren / zitieren --> Unities abgeben:
Zitat: Dein Bild hat kaum was mit Ziel zutun....
Meinst du mein ursprüngliches Ziel? Naja im Endeffekt würde es mir reichen, wenn ich sagen kann, der Stapler hat X % seiner Zeit mit Warten in einer Blockade verbracht. Das kann ich ja, wenn ich die einzelnen Start/Ende Zeiten summiere... Ich will mit der Auswertung zeigen, wie sich der %-Anteil der Blockaden mit der Anzahl weiterer Stapler verhält. Das hier kein linearer Anstieg erfolgt... Ich hab auch versucht jedem Stapler eine eigene Tabelle mitzugeben: Aufbau: | | ZeitVon | ZeitBis | Differenz | | Die Logik wäre: Bei Befahren des Wegs, wenn Weg.AnzahlBEs>1 dann Zeitpunkt in Spalte 'ZeitVon' eintragen Sobald man am entscheidenden Sensor ist, 'ZeitBis' eintragen Davon die Differenz in 'Differenz' eintragen und man hätte genau abgebildet, wie lange der Stapler dort blockiert war Zum Schluss kann man davon die Summe bilden und über die Gesamtfahrzeit den %-Anteil herleiten... Bei der Variante bin ich aber an der Fehlermeldung Unbekannter Bezeichner nicht herumgekommen, und hab es dann gelassen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 20:24 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
Beispiel auf Transporter2. Mit Endsim die relevanten Werte dann aus Gabelstapler auslesen. ------------------ 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 21:08 <-- editieren / zitieren --> Unities abgeben:
Sieht gut aus, genau so wie ich es brauche. Jeder Stapler trägt dann die Informationen in seiner eigenen Tabelle mit. Jetzt nur noch verstehen und für meinen Fall umsetzen, danke Das Befüllen der Tabellen hat bei mir immer den Fehler gegeben "Unbekannter Bezeichner BlockZeit" Die Tabelle 'BlockZeit' ist (wie bei dir) ein benutzerdefiniertes Attribut (time,time,real)
Ich hatte den Code: if @.BlockZeitStart >0 @.BlockZeit["ZeitVon", BlockZeit.Ydim] := @.BlockZeitStart @.BlockZeit["ZeitBis", BlockZeit.Ydim] := root.Ereignisverwalter.Zeit end @.BlockZeit wird noch erkannt. Aber das BlockZeit.Ydim ergibt den Fehler... Kannst du mir erklären, was hinter der Fehlermeldung steckt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 11. Feb. 2020 21:19 <-- editieren / zitieren --> Unities abgeben: Nur für Stapler
deine Adresse ist @.BlockZeit also @.BlockZeit.Ydim ------------------ 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 |
Stapler Mitglied Logistik
Beiträge: 21 Registriert: 08.01.2020
|
erstellt am: 11. Feb. 2020 21:37 <-- editieren / zitieren --> Unities abgeben:
|