# ToolStatusAuswertung - uptimeTracking ... es kostet mich noch den letzten nerv



## vierlagig (21 Oktober 2009)

...heut erst wieder 300 code-zeilen in den tiefen irgendeiner ablage verschwinden lassen, weil sie nicht zum ziel führten...

folgende konstellation:

für ein "tool" kann einer von 14 status[²] gebucht werden. jeder status hat eine priorität. es wird die zeit und der buchende erfasst.
für ein tool wird dann ein zeitstrahl über einen bestimmten zeitraum mit den entsprechenden buchungen erstellt und ausgegeben, darüber hinaus werden die zeiten von status-gruppen zusammengefasst und daraus prozentuale werte zu "uptime", "utilization", "scheduledDown" und "unscheduledDown" berechnet.

soweit kein ding, das läuft primstens.

eine bestimmte anzahl von tools ergibt eine toolGruppe, einen linienabschnitt quasi. für die einzelnen linienabschnitte soll ebenfalls ein zeitstrahl erstellt und oben angesprochene auswertungen getätigt werden. klingt trivial, wenn der einfluss eines jeden tools 100% auf den linienabschnitt wären, aber es kann vorkommen, das tools parallel (bis zu 6) stehen und dementsprechend nur zu 50%, 40% (hier hat das handling seine finger im spiel, aber das ist egal, die werte sind gegeben) oder 16,6% in die gesamtwertung eingehen.
ich scheitere an der erstellung dieses timeTracks...

die buchungen überschneiden sich, logisch, und müssen entsprechend ihrer priorität in den resultierenden zeitstrahl eingehen. gleichzeitig muß aber auch der einfluss auf den teilabschnitt beachtet werden. also gibt es für einen zeitabschnitt x plötzlich zwei oder mehr buchungen unterschiedlicher priorität ... 

wenn irgendjemand eine clevere idee zur erstellung dieser cluster hat, her damit ... meine kollegen befürchten, das mir bald das fluchvokabular ausgeht (...und nein, keiner von ihnen hat eine idee  ) ... bin für jede sauerei zu haben... listen von arrays von structs mit arrays sind schon in der einfachen auswertung genug vorhanden, damit kann ich um


geproggt wird übrigens in Craute mit dem punktNetzRahmenWerk 3.5, aber das ist IMHO irrelevant ...


² vgl.: http://de.wikipedia.org/wiki/Status


----------



## vierlagig (21 Oktober 2009)

btw: ich wohn im 11ten stock


----------



## Ralle (21 Oktober 2009)

vierlagig schrieb:


> btw: ich wohn im 11ten stock



Ach was, wenn ich deine Erklärung im Teil 1 deines Posts lese, dann sag ich nur, zieh bitte in den 1. Stock, sonst passiert dir noch ein Unheil!


----------



## vierlagig (21 Oktober 2009)

Ralle schrieb:


> Ach was, wenn ich deine Erklärung im Teil 1 deines Posts lese, dann sag ich nur, zieh bitte in den 1. Stock, sonst passiert dir noch ein Unheil!



da is nix mehr frei... was denn los? warum versteht mich keiner??? menno


----------



## Paule (21 Oktober 2009)

vierlagig schrieb:


> btw: ich wohn im 11ten stock


Gehe erst mal ins Erdgeschoss und schau ob sich da eine Bar befindet. :-D


----------



## vierlagig (21 Oktober 2009)

Paule schrieb:


> Gehe erst mal ins Erdgeschoss und schau ob sich da eine Bar befindet. :-D



einzig erkennbares unternehmen in diesem haus ist eine änderungsschneiderei im EG


----------



## Ralle (21 Oktober 2009)

vierlagig schrieb:


> einzig erkennbares unternehmen in diesem haus ist eine änderungsschneiderei im EG



Prima 4L, laß dir dort deinen Parka auf ne Zwangsjacke ändern.


----------



## rostiger Nagel (22 Oktober 2009)

...du hast gestern im Chat gesagt das eine freundin neben dir steht
und die frage versteht und sie würde irgentetwas mir Wasserwirtschaft
machen....ich bin mir aber ziemlich sicher das sie es nicht versteht. Sie hat
nur Zeitstrahl mit Wasserstrahl verwechselt.....



vierlagig schrieb:


> die buchungen überschneiden sich, logisch, und müssen entsprechend ihrer priorität in den resultierenden zeitstrahl eingehen. gleichzeitig muß aber auch der einfluss auf den teilabschnitt beachtet werden. also gibt es für einen zeitabschnitt x plötzlich zwei oder mehr buchungen unterschiedlicher priorität ...


----------



## vierlagig (22 Oktober 2009)

vielen dank für die hilfe!


----------



## Ralle (22 Oktober 2009)

vierlagig schrieb:


> vielen dank für die hilfe!



Aber 4L, du kennst uns doch, auch wenn der Fragesteller uns sein Problem einfach nicht rüberbringen kann, wir versuchen immer zu helfen. Und seis nur mit "guten" Ratschlägen.


----------



## vierlagig (22 Oktober 2009)

Ralle schrieb:


> Aber 4L, du kennst uns doch, auch wenn der Fragesteller uns sein Problem einfach nicht rüberbringen kann, wir versuchen immer zu helfen. Und seis nur mit "guten" Ratschlägen.



ich verstehe nicht bzw. ist mir noch nicht klar, an welcher stelle ihr das problem nicht versteht ... es bemüht sich auch keiner irgendwie nachzufragen, also vergesst es - ist halt doch ein jämmerlicher haufen armer irrer hier...


----------



## Larry Laffer (22 Oktober 2009)

... mal zurück zum Thema ...

schon mal an "Fallschirm kaufen" gedacht ?

Aber nun ernsthaft - ich habe da nicht viel mehr als "Bahnhof - Umsteigen - Kofferpacken" gelesen. Könntest du das Ganze vielleicht auch noch etwas umformulieren damit es möglich wird etwas konstruktives zu deinem Beitrag 1 beizutragen ?

Gruß
LL


----------



## vierlagig (22 Oktober 2009)

aaaaaaaalso:

eine produktionslinie besteht aus teilanlagen.
um herrauszufinden, an welchen stellen es am meisten klemmt und um durchsatzzahlen zu ermitteln, werden status für jedes tool erfasst, also ob es läuft oder repariert wirs, eine störung hat oder gerade eingestellt oder qualifiziert. daraus ergibt sich für eine teilanlage eine lückenlose historie.

soweit klar?

nun sollen diese teilanlagen zu linienabschnitten zusammengefasst werden.
wenn in einem abschnitt teilanlagen nur hintereinander stehen, geht der status der anlage in die wertung ein, dessen priorität am höchsten, also deren einfluss auf die produktion am schlimmsten ist. (bsp: 3 anlagen hintereinander, 2 auf PRODUKTION, 1 auf KAPUTT ... kaputt wird für den abschnitt gebucht) ... das wäre die einfache übung ... nun stehen aber teilanlagen in einem linienabschnitt auch gern mal nebeneinander. wenn dann nur eine davon auf z.b. KAPUTT steht geht das nur zu 50% in die wertung ein, also 50% KAPUTT und 50% z.B. PRODUKTION

verstanden?

mein problem ist, das irgendwie zusammen zu packen


----------



## Larry Laffer (22 Oktober 2009)

aaaaalso ...

Für den Produktions-Betrieb würde ich zunächst in einem Strang den Leistungsanteil der Parallel-Zweige (soweit vorhanden) ermitteln. M.E. hat 1 von 2 nicht zwangsläufig den Anteil 50%. Diesen Weg kannst du dann auch verwenden um die aktuelle Real-Leistung zu bewerten - die Anlage 3.1 kann 785 Teile/Std. und macht aktuell nur 690 Teile/Std. - das heißt sie läuft zwar "auf Voll-Leistung" aber nicht mit max. Effizienz ...

Bearbeiten würde ich das im Grund-Ansatz Durchfluss-Orientiert - ich denke auch, dass es dir auf diese Daten ankommt ...

Bin ich in der Spur ?


----------



## vierlagig (22 Oktober 2009)

die werte für den einfluss auf den abschnitt sind gegeben, die muß ich nicht mehr ermitteln ...

ich hatte die letzten tage rumexperimentiert mit erst alle zusammenfassen, die nicht parallel stehen, also alle 100% und dann die mit kleinerem einfluß irgendwie zu injizieren ... 

problem ist, dass ich jeweils nur start und endzeit habe ... und irgendwie die kleineren anteile aus dem 100%-track rausnehmen und kleiner rechnen muß ... 

was meinst du mit durchfluss-orientiert? nein, ich glaub, das ist nicht, was ich will ...


----------



## Lipperlandstern (22 Oktober 2009)

Mein lieber VL.

Erwartest Du hier das jemand dir ne fertige Lösung präsentiert ? Da bist du hier falsch. Versuch es bei Hausaufgabenhilfe.de.

Hier wird nur geholfen wenn man schon an Lösung arbeiten und vor einem konkreten Problem steht. Also... wo genau geht es nicht weiter ?


----------



## vierlagig (22 Oktober 2009)

mein lieber lila-stern, 

ich poste im unterforum "Programmier*strategien*" ... ich erwarte keine fertige lösung, ich hätte nur gern, dass mich jemand von dem falschen weg abbringt, eine clevere idee äußert oder aufgrund von erfahrungswerten einen schlachtplan gemeinsam mit mir entwirft.

aber ich merke schon, man darf eben nicht erwarten, dass man irgendwann mal etwas für die in hilfestellung für andere investierte zeit zurück bekommt.

enttäuscht
dein 4L


----------



## Lipperlandstern (22 Oktober 2009)

das darfst du so nicht sehen. LL hat ja einen Versuch gestartet und ich zähle mich zu den 99.9x% die dir da nicht weiterhelfen können da ich nicht mal den Ansatz wirklich verstanden habe.

Aber spätestens wenn Zottel mal wieder hier vorbei schaut wird es einen Lösungsansatz geben

Hab Geduld auch wenn schwerfällt (als Widder)


----------



## Larry Laffer (22 Oktober 2009)

Na ... Na ...

Zurück zum Thema :
Du möchtest aber eine zyklische Anzeige der aktuellen Leistung ?


----------



## vierlagig (22 Oktober 2009)

Larry Laffer schrieb:


> Na ... Na ...
> 
> Zurück zum Thema :
> Du möchtest aber eine zyklische Anzeige der aktuellen Leistung ?



ich möchte einen report erstellen

angehangen siehst du, wie die einzeltoolauswertung aussieht
die dargestellten sind alle bestandteil einer gruppe
also resultierend müßten sie nur übereinander gelegt werden, wobei LSR1a und LSR1b parallele tools sind und mit nur jeweils 50% in die wertung eingehen


----------



## Grubba (22 Oktober 2009)

Kann mir das (noch) nicht so richtig vorstellen, vermute mal, dass das anderen auch so geht.

Beschreib deine Anlagen oder Linien doch mal a la:

Sockenaufbereitungsanlage:

1. Stufe : Socken sammeln
2. Stufe : Socken sortieren
3. Stufe : Socken waschen
4. Stufe : Socken trocknen
5. Stufe : Socken bügeln
etc.

Was ich dann z.B. nicht verstehe, ist, warum der Ausfall einer Teilanlage nicht irgendwann automatisch den Stillstand aller folgenden Teile nach sich zieht. 
Zu den Teilanlagen:
Gibts denn bezogen auf mein Beispiel mehrere Trockner, so dass der Ausfall eines Trockners nur die Gesamtkette verzögern würde?

Würde ja so gerne helfen (), blicke aber nicht durch das Gesamtkonzept.
Die Ausdrucke der Reports sind ja hübsch anzusehen, sind für die Problemlösung aber (glaube ich mal) erst mal nebensächlich.


----------



## Larry Laffer (22 Oktober 2009)

... und in der X-Achse des 1. Bildes sehe ich die Uhrzeit ?
Wenn ja, dann ist LSR1a von ca. 10:00 bis 11:30 Uhr nicht aktiv oder gestört gewesen ?
Erzeugt jedes "Tool" (was immer ein Tool ist) bei Status-Änderung eine Meldung, die du aufnimmst ? Also etwa so :
	
	



```
LSR1a - 10:00 - 22.10.09 - Störung der Anlage
LSR1a - 11:30 - 22.10.09 - Anlage gestartet
etc ...
```
Wenn nein, woher und wie beziehst du die Leistungsdaten ?

...


----------



## vierlagig (22 Oktober 2009)

Larry Laffer schrieb:


> ... und in der X-Achse des 1. Bildes sehe ich die Uhrzeit ?
> Wenn ja, dann ist LSR1a von ca. 10:00 bis 11:30 Uhr nicht aktiv oder gestört gewesen ?
> Erzeugt jedes "Tool" (was immer ein Tool ist) bei Status-Änderung eine Meldung, die du aufnimmst ? Also etwa so :
> 
> ...



richtig und richtig


----------



## Larry Laffer (22 Oktober 2009)

... wenn ich zu 100% getroffen habe ...
... wie wäre es dann, wenn du dir von einem laufenden Tool zyklisch (z.B. alle 30 Minuten) einen Status ausgeben liessest, der es dir dann ja ermöglichen würde auch zwischen 2 Ereignissen die Leistung etc. der Anlage zu bewerten ...?


----------



## vierlagig (22 Oktober 2009)

Larry Laffer schrieb:


> ... wenn ich zu 100% getroffen habe ...
> ... wie wäre es dann, wenn du dir von einem laufenden Tool zyklisch (z.B. alle 30 Minuten) einen Status ausgeben liessest, der es dir dann ja ermöglichen würde auch zwischen 2 Ereignissen die Leistung etc. der Anlage zu bewerten ...?



99,9% getroffen ^^
ein operator steht stellvertretend für das tool und gibt den status an...

du meinst, ich solle die daten live abholen und bewerten ... ok, ist auch eine möglichkeit, kommt aber am ende aufs selbe raus, wie auf daten der vergangenheit zuzugreifen ... bei beiden arten muss zusammengeführt werden ... und hier hapert es an meinem verständnis für die aufgabe ... ich kann es auf dem papier machen, aber ich bekomme es nicht vernünftig erklärt, so dass ich code daraus machen könnte ...

an folgendem ablauf beiß ich mir gerade die zähne aus:

1. nimm alle einträge eines abschnittes
2. suche alle möglichen einflüsse herraus (100% ... 50% etc. -> array, variable länge)
2. sortiere die liste nach dem eintragsstart (ersetze dabei alle zeiten, die außerhalb des logzeitraums liegen, durch die des logstarts/ende)
3. setze alle 100% einflüsse entsprechend priorität zusammen
4. nächste einfluss"gattung" - zeitraum betrachten und im 100% track finden
5. 100% eintrag aufspalten, abschneiden und zweiten, entsprechend des einflusses, eintrag erstellen (z.b. 50% eintrag erzeugt gleichzeit einen anderen 50% eintrag mit dem status der aufgespalten wird)
6. andere einflüsse vorhanden GOTO 4.


----------



## HaDi (22 Oktober 2009)

So wie ich es verstanden habe handelt es sich um eine starr verkettete Linie ohne Pufferstrecken usw., d.h. der Ausfall eines Tools ohne Parallelbearbeitung führt sofort zum Stillstand dieser Gruppe/Linie, der Ausfall eines Tools mit Parallelbearbeitung reduziert die Ausbringung um 50%.
Mein bescheidener Ansatz wäre der:
Die Leistung der Gruppe/Linie über den gewünschten Betrachtungszeitraum wird in einem Array abgebildet, die Anzahl der Arrayelemente ergibt sich über das gewünschte Zeitintervall (1min, 5min, 30min, ...), das Array wird mit 100 (%) intialisiert.
Über die Zeitstempel eines Ereignisses werden dann die entsprechenden Elemente des Zielarrays beschrieben:
-Tool ohne Parallebearbeitung -> 0
-Tool mit Parallelbearbeitung->50, wenn noch keine 0 drin steht
Aufwändiger wird es, wenn mehrere Parallelbearbeitungen in der Gruppe  sind:
Dann müsste man die jeweils parallel arbeitenden Tools erst analog zu einem zusammen fassen und dies dann in das Zielarray verarbeiten.
Ob sich das irgendwie vernünftig coden lässt, kannst du sicherlich besser beurteilen als ich.


Grüße von HaDi


----------



## vierlagig (22 Oktober 2009)

@HADI

an sich eine schöne idee, auf die ich auch schon gekommen bin, aber das ganze verworfen habe da 6 tools nebeneinander stehen können ... aber ich glaub, ich werd das trotzdem mal tiefer evaluieren...

ein array[1440,12]

[status] [einfluss] [status] [einfluss] ......
[status] [einfluss]
[status]
.
.
.
.          ...........                          .......

das könnte sogar funktionieren


----------



## Larry Laffer (22 Oktober 2009)

vierlagig schrieb:


> 1. nimm alle einträge eines abschnittes
> 2. suche alle möglichen einflüsse herraus (100% ... 50% etc. -> array, variable länge)
> 2. sortiere die liste nach dem eintragsstart (ersetze dabei alle zeiten, die außerhalb des logzeitraums liegen, durch die des logstarts/ende)
> 3. setze alle 100% einflüsse entsprechend priorität zusammen
> ...


Bin ich nicht mit einverstanden ...

mir würde es so besser gefallen :

```
1. nimm alle Einträge eines Abschnittes
2. berechne für alle Einträge die Dauer - kommt und geht ggf. verrechnen und ...
2a. aus beiden einfach einen neuen Eintrag in einer neuen Liste mit dem entsprechenden Vermerk machen
2b. hierzu den Einfluß und ggf. die Auswirkung berechnen
3. sortiere die neu gewonnene Liste - z.B. nach der Einfluß-Gattung
3a. verrechne gleiche Einflüsse miteinander - hier ggf. das schon genannte ARRAY füllen
```
was sagst du dazu ?

...


----------



## vierlagig (22 Oktober 2009)

habe mich jetzt für die array-variante (minütlich) entschieden und fast fertig umgesetzt ... sieht schon ganz gut aus. wenn das array dann fertig ist, wird mit sequenzieller suche das array abgegrast und schon sind die minuten einzelner status zusammen und brauchen nur noch verrechnet werden.

die darstellung mach ich über die status-sortierte ursprungliste, da da nur rechtecke übereinander zu malen sind, sollte das so gehen ... mit niedrigster priorität anfangen und immer wieder übermalen ...

abgabe ist morgen 15uhr - wünscht mir glück...


----------

