2. 2   Log-Liste

SYNTAX

Zur Auswertung der Simulationsergebnisse steht die Log-Liste zur Verfügung. In dieser Liste werden alle Zustandsänderungen des Modells während der Simulation gespeichert (z.B.: Transfer von Jobs, Ein- und Ausschalten von Maschinen, usw.). Damit lassen sich alle simulationsrelevanten Ergebnisse aus der Log-Liste herleiten, so dass eine spezifische Auswertung ermöglicht wird.

Der Tcl-Befehl log erlaubt Operationen mit der Log-Liste. Er hat die allgemeine Form:

    log option ?arg arg ...?

option und args bestimmen das exakte Verhalten des Befehls. Folgende Befehle sind für die Log-Liste definiert:


LOGPARAMETER

log objtype
Abfrage des Typs des Objekts. Gibt log zurück.
 
log level ?integer?
Abfrage oder Modifikation des Log-Levels:
  • 0 -
  • Ereignisse werden nicht geloggt.
  • 1 -
  • Nur diejenigen Informationen der Ereignisse werden geloggt, die für die exakte Rekonstruktion des Simulationslaufs erforderlich sind. Eine Auswertung anhand der Log-Liste ist nur begrenzt möglich.
  • 2 -
  • Alle Informationen der Ereignisse werden geloggt, die für eine Auswertung des Simulationslaufs erforderlich sind.
    Voreinstellung ist 2.
     
    log control ?boolean?
    Abfrage oder Modifikation der Steuerung des Simulationslaufs durch die Log-Liste. Bei 1 werden während der Simulation die in der Log-Liste gespeicherten Ereignisse abgearbeitet (sofern möglich!). Die Ereignisse werden dann nicht geloggt (siehe level). Voreinstellung ist 0
     
    log append date
    Hängt einen weiteren Eintrag an die Log-Liste mit dem Datum date (long) an. Der Datumseintrag muss chronologisch an die Log-Liste passen. Die neue Länge der Log-Liste wird zurückgegeben.
     
    log insert index date
    Fügt einen weiteren Eintrag in die Log-Liste mit dem Datum date vor dem indexten Eintrag (long) ein. Der Datumseintrag muss chronologisch in die Log-Liste passen. Die neue Länge der Log-Liste wird zurückgegeben.
     
    log remove index
    Löscht den indexten Eintrag aus der Log-Liste. Die neue Länge der Log-Liste wird zurückgegeben.
     
    log length
    Gibt die Länge der Log-Liste zurück.
     
    log clear
    Löscht die gesamte Log-Liste. Die neue Länge der Log-Liste wird zurückgegeben.
     
    log info option
    Abfrage verschiedener Informationen aus der Logliste:
  • queue -
  • Gibt eine Liste mit allen verschiedenen in der Log-Liste als Station enthaltenen Warteschlangen zurück.
  • machine -
  • Gibt eine Liste mit allen verschiedenen in der Log-Liste als Station enthaltenen Maschinen zurück.
  • station -
  • Gibt eine Liste mit allen verschiedenen in der Log-Liste enthaltenen Stationen (nur Maschinen und Warteschlangen) zurück.
  • job -
  • Gibt eine Liste mit allen verschiedenen in der Log-Liste enthaltenen Jobs zurück.
  • branch -
  • Gibt eine Liste mit allen verschiedenen in der Log-Liste enthaltenen Verzweigungen zurück.
     
    log last
    Gibt eine Liste der Indices aller vom letzten Ereignis verursachten Logeinträge zurück.
     
    LOGEINTRÄGE

    Jeder Eintrag enthält eine Reihe von Parametern und könnte auch als Datensatz aufgefasst werden. Ein Eintrag beschreibt ein Elementarereignis. Durch ein Ereignis des Scheduler können ein bis mehrere Elementarereignisse ausgelöst werden, die als solche in Logeinträge übertragen werden (bei log level > 0). Die Parameter der Einträge werden mit ihrem Namen und dem 1-basierten Index in der Log-Liste angesprochen.

    log date index
    Gibt das Datum des indexten Eintrags der Log-Liste zurück. Das Datum kann nur durch die Befehle append und insert beeinflusst werden.
     
    log type index ?value?
    Abfrage oder Modifikation des Typs (Ereignistyp) des index-ten Eintrages:
  • start -
  • Startereignis
  • clock -
  • Taktereignis
  • ready -
  • Fertigstellung
  • forward -
  • Weiterstellung
  • leave -
  • Transfer aus einer Station
  • enter -
  • Transfer in eine Station
  • supply -
  • Bereitstellung
  • stop -
  • Stoppereignis
  • failure -
  • Ausfall
  • repair -
  • Reparatur
  • jobfailure -
  • Ausfall (durch Ausfall einer Parallelstation)
  • jobrepair -
  • Reparatur (durch Reparatur einer Parallelstation)
  • turnon -
  • Einschalten
  • turnoff -
  • Ausschalten
  • jobturnon -
  • Einschalten (durch Einschalten einer Parallelstation)
  • jobturnoff -
  • Ausschalten (durch Ausschalten einer Parallelstation)
  • create -
  • Joberzeugung
  • kill -
  • Job senken
  • script -
  • Skriptereignis
  • init -
  • Anfangszustand
  • stack -
  • Arbeitsgang-Stack
     
    log job index ?jobCmd?
    Abfrage oder Modifikation des Jobs des indexten Eintrags.
     
    log jstate index ?value?
    Abfrage oder Modifikation des Jobzustands des indexten Eintrags (nach dem Ereignis):
  • busy -
  • Job wird bearbeitet.
  • setup -
  • Job wird gerüstet.
  • ready -
  • Job ist fertig bearbeitet.
  • down -
  • Job ist defekt (in ausgefallener Station oder Parallelstation ausgefallen).
  • off -
  • Job ruht (in ausgeschalteter Station oder Parallelstation ausgeschaltet).
  • {} -
  • Kein Zustand (Job außerhalb einer Station, nicht bereitgestellt, fertig gestellt, etc.)
     
    log jname index ?value?
    Abfrage oder Modifikation des Jobnamens des indexten Eintrags.
     
    log station index ?objCmd?
    Abfrage oder Modifikation der Station des indexten Eintrags. Es handelt sich bei objCmd um eine Maschine, eine Warteschlange oder eine Methode.
     
    log stype index
    Abfrage des Stationstyps des indexten Eintrags. Es handelt sich bei value um eine Maschine (machine) oder eine Warteschlange (queue). Der Wert kann nur durch den Befehle machine und queue beeinflusst werden.
     
    log sstate index ?value?
    Abfrage oder Modifikation des Stationszustands des indexten Eintrags:
  • empty -
  • leer
  • ready -
  • Alle Jobs in der Station sind fertig bearbeitet.
  • rab -
  • Wenigstens ein Job ist in Bearbeitung und wenigstens ein Job ist weitergabebereit.
  • busy -
  • Alle Jobs in der Station werden noch bearbeitet.
  • down -
  • Ausgefallen (defekt)
  • off -
  • Ausgeschaltet
  • {} -
  • Kein Zustand
     
    log sname index ?value?
    Abfrage oder Modifikation des Stationsnamens des indexten Eintrags.
     
    log machine index machineCmd
    Modifikation der Station und des Stationstyps (auf machine) des indexten Eintrags.
     
    log queue index queueCmd
    Modifikation der Station und des Stationstyps (auf queue) des indexten Eintrags.
     
    log branch index ?branchCmd?
    Abfrage oder Modifikation der Verzweigung des indexten Eintrags.
     
    log rest index ?time?
    Abfrage oder Modifikation der Restzeit des indexten Eintrags.
     
    log frest index ?time?
    Abfrage oder Modifikation der Weitergaberestzeit (rest forward) des indexten Eintrags.
     
    log grest index ?time?
    Abfrage oder Modifikation der Torrestzeit (rest gate) des indexten Eintrags.
     
    log tech index ?techCmd?
    Abfrage oder Modifikation der Technologie des Hauptarbeitsgangs im indexten Eintrags.
     
    log pass index ?passIndex?
    Abfrage oder Modifikation des Hauptarbeitsgangs (1-basierter Index) des indexten Eintrags.
     
    log pname index ?string?
    Abfrage oder Modifikation des Namens des Hauptarbeitsgangs (1-basierter Index) des indexten Eintrags.
     
    log index index
    Abfrage des Indices des indexten Eintrags. (Gibt index zurück.)
     
    log size index ?integer?
    Abfrage oder Modifikation des Kapazitätsbedarf (Größe) des indexten Eintrags.
     
    log busy index ?integer?
    Abfrage oder Modifikation der Kapazitätsbelegung (load) durch in Bearbeitung befindliche Jobs des indexten Eintrags.
     
    log setup index ?integer?
    Abfrage oder Modifikation der Kapazitätsbelegung (load) durch in Rüstung befindliche Jobs des indexten Eintrags.
     
    log ready index ?integer?
    Abfrage oder Modifikation der Kapazitätsbelegung (load) durch fertig gestellte Jobs des indexten Eintrags.
     
    log off index ?integer?
    Abfrage oder Modifikation der Kapazitätsbelegung (load) durch ruhende (ausgeschaltete) Jobs des indexten Eintrags.
     
    log down index ?integer?
    Abfrage oder Modifikation der Kapazitätsbelegung (load) durch defekte (ausgefallene) Jobs des indexten Eintrags.
     
    log load index
    Abfrage der Kapazitätsbelegung (load) durch Jobs des indexten Eintrags. ( = busy + ready )

     
    PARAMETERABFRAGE UND MODIFIKATION IN LISTEN

    Die Parameter der Logeinträge können einzeln oder zusammengefasst als Liste abgefragt und modifiziert werden. Der log-Befehl hat dann folgende allgemeine Form:

        log {option option ...} index ?{value value ...}?

    oder

        log {option option ...} ?where condition?

    Die Parameter können wie angegeben verwendet und in einer Liste zusammengestellt werden. In der ersten Form muss der Index des Eintrags angegeben werden, dessen Parameter abgefragt oder modifiziert werden sollen. Die Modifikation ist nur möglich, wenn alle angegeben Parameter auch modifizierbar sind und die Anzahl der angegebenen Werte (Liste value) der Anzahl Parameter entspricht sowie der x-te Wert in der Liste (value) gültig für den x-ten Parameter (Liste option) ist. Eine Liste mit den Werten in der Reihenfolge der angegebenen Parameter wird zurückgegeben.

    Beispiele:

    % log {date station stype job} 20
    905895 machine1 machine job1

    % log {station job} 20 {machine2 job2}
    machine2 job2

    % log {date station stype job} 20 {905899 machine3 machine job3}
    wrong # args: should be "log {date station stype job} 20", date can not be set"

    % log {station job} 20 {machine4 job4 machine}
    the number of specified parameters does not fit the number of specified options for log

    In der zweiten Form können die gewünschten Parameter von allen Einträgen oder von Einträgen, die bestimmten Bedingungen entsprechen, abgefragt, nicht jedoch modifiziert, werden. Die hinter dem Schlüsselwort where angegebene Bedingung kann im Rahmen der Tcl-Syntax beliebig sein. Innerhalb der Bedingung können die Parameter der Einträge in eckigen Klammern angegeben werden, die dann mit dem jeweiligen Inhalt des Parameters im Eintrag abgetestet werden.

    Beispiele:

    % log {date type}
    {0 init} {0 init} {0 init} {0 start} {0 leave} {0 enter} {100 ready} {100 leave} {100 enter} {100 stop}

    % log {index date type station} where {[index] > 3 && [index] < 8}
    {4 0 start {}} {5 0 leave queue1} {6 0 enter machine1} {7 100 ready machine1}

    % log {date type job sstate busy} where {[station] == "machine1"}
    {0 init {} empty 0} {0 enter job1 busy 1} {100 ready job1 ready 0} {100 leave job1 empty 0}

    % log {date type station stype jstate} where {[job] == "job1"}
    {0 init queue1 queue ready} {0 leave queue1 queue busy} {0 enter machine1 machine busy} {100 ready machine1 machine ready} {100 leave machine1 machine {}} {100 enter queue2 queue {}}

     
    GESETZTE PARAMETER IN ABHÄNGIGKEIT VOM EREIGNISTYP

    Nicht alle Parameter der Logeinträge sind bei den unterschiedlichen Ereignissen von Interesse und bleiben daher unverändert mit den Standard-Werten belegt:

    Typ date type job jstate1) jname1) station stype sstate1) sname branch1) rest frest grest pass tech pname1) index size1) busy1) setup1) ready1) off1) down1) load1)
    start x x                                            
    stop x x                                            
    clock x x                                            
    ready x x x x x x x x x   x x x x x x x x x x x x x x
    forward x x x x x x x x x   x x x x x x x x x x x x x x
    leave x x x x x x x x x   x x x x x x x x x x x x x x
    enter x x x x x x x x x   x x x x x x x x x x x x x x
    branch1) x x               x                            
    tech1) x x                         x                  
    supply x x x x x x x x x   x x x x x x x x x x x x x x
    block x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    unblock x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    failure x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    repair x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    jobfailure1) x x x x x x x x x   x x x x x x x x x x x x x x
    jobrepair1) x x x x x x x x x   x x x x x x x x x x x x x x
    turnon x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    turnoff x x 2) 2) 2) x x x x   x 2) x 2) 2) 2) 2) 2) x x x x x x
    jobon1) x x x x x x x x x   x x x x x x x x x x x x x x
    joboff1) x x x x x x x x x   x x x x x x x x x x x x x x
    create x x x x x x x x x   x x x x x x x x x x x x x x
    kill x x x x x x x x x   x x x x x x x x x x x x x x
    init1) x x x x x x x x x   x x x x x x x x x x x x x x
    script x x       x x                                  
    Voreinstellung 0 {} {} {} {} {} {} {} {} {} 0 0 0 {} {} {} {} 0 0 0 0 0 0 0
    1) Wird prinzipiell nur bei log level = 2 geloggt.
    2) Bei log level = 2 wird für jeden Job in der Station ein Eintrag erzeugt und die Parameter des Jobs angegeben. Sonst gibt es nur einen Eintrag pro Station.