Volltextsuche Druckansicht Zurück Weiter
Inhalt Bedienung Befehle Beispiele  
Objektbefehle
Typbefehle
Allgemeine Objektbefehle
Objektvariable
Ereignisroutinen
Kontext
Station
Quelle
Routen
Job
Bedarf
Stochastik
Zeitplan
Schichtplan
Rüsten
Methode
Zielgröße
Ereignis
Takt
Modell
Log-Liste
Einfache Befehle
Schnittstellen
GUI-Befehle

2. 1. 8   Routen

Die Stationen werden durch spezielle Routing-Objekte miteinander verknüpft. Die Existenz von Routing-Objekten im Simulationsmodell ist die Voraussetzung für die zielgerichtete Bewegung der Jobs. Grundsätzlich gibt es zwei Routing-Objekte:

  • Technologie
  • Verzweigung
Die Technologie beschreibt eine einfache Folge von Arbeitsgängen, d.h., jeder Arbeitsgang hat genau einen Vorgänger (außer dem Startarbeitsgang) und einen Nachfolger (außer dem Schlussarbeitsgang). Jeder Arbeitsgang ist mit genau einer Station oder genau einer Verzweigung verknüpft. Eine Station bzw. Verzweigung darf von einem Arbeitsgang innerhalb einer Technologie auch mehrfach verwendet werden, so dass auf diese Weise zyklische Routen gebildet werden können.

Verzweigungen fassen alternative Arbeitsgänge zusammen und bilden so eine 1-aus-n-Entscheidung ab (n - Anzahl der Zweige). Darüber hinaus können auch m-aus-n-Entscheidungen abgebildet werden (m<n). Bei m=n werden alle in der Verzweigung enthaltenen Arbeitsgänge gleichzeitig gestartet und parallel ausgeführt.

Obwohl beide Objekte unterschiedliche Aspekte des Routings beschreiben, beruhen sie doch auf einer gemeinsamen Listen-Struktur. Die Befehle sind daher, abgesehen von wenigen Ausnahmen, identisch. Der Befehl routeCmd steht für techCmd und branchCmd. Befehle, die ausschließlich für Technologie- bzw. Verzweigungs-Objekte gelten, werden dagegen mit techCmd bzw. branchCmd bezeichnet.


SYNTAX

Der Tcl-Befehl routeCmd erlaubt Operationen mit Technologie- bzw. Vezweigungs-Objekten. Er hat die allgemeine Form:

    routeCmd option ?arg arg ...?

option und  args bestimmen das exakte Verhalten des Befehls. Ein Routing-Objekt stellt eine zweidimensionale Matrix dar, die beiden Dimensionen Arbeitsgang pass und Spezifikator spec oder specindex werden als option angegeben. Um die Matrixelemente von Spezifikator und Arbeitsgang (Zweig) anzusprechen, müssen beide Dimensionen angegeben werden, die Reihenfolge spielt dabei keine Rolle. Über die allgemeinen Objektbefehle hinaus sind folgende Befehle für Routing-Objekte definiert:

OBJEKTPARAMETER

routeCmd pass length
Gibt die Anzahl der Arbeitsgänge (Zweige) des Routing-Objektes zurück.
 
routeCmd pass exchange index1 index2
Vertauscht den index1-ten Arbeitsgang (Zweig) mit dem index2-ten Arbeitsgang.
 
routeCmd pass move index1 index2
Verschiebt den index1-ten Arbeitsgang (Zweig) an die Position index2.
 
routeCmd pass index option ?arg1? ?arg2? ?arg3?
Der Arbeitsgang (Zweig) an der Position index wird adressiert. Bei der Angabe von option können folgende Parameter des Arbeitsgangs (Zweigs) abgefragt oder gesetzt werden:
option arg1 arg2 arg3

  • name
  • ?string? - -
    Abfrage oder Setzen eines frei wählbaren Namens des Arbeitsgangs (Zweigs).
  • refcount

  • - -
    Gibt die Anzahl der auf diesen Arbeitsgang gerichteten Referenzen zurück. Referenzierte Arbeitsgänge können nicht gelöscht werden.
  • remove

  • - -
    Der Arbeitsgang (Zweig) wird entfernt (nur möglich, wenn nicht mehr referenziert)
  • insert
  • stationCmd - -
    Vor dem Arbeitsgang (Zweig) wird die Station stationCmd als Arbeitsgang eingefügt (siehe routeCmd pass insert).
  • station
  • ?stationCmd? - -
    Abfrage oder Setzen der Station des Arbeitsgangs (Zweigs).
  • credit
  • ?double? - -
    Abfrage oder Setzen der auf dem Arbeitsgang (Zweig) gebuchten Menge.
  • collect
  • ?double? - -
    Abfrage oder Setzen der im Arbeitsgang (Zweig) gesammelten Menge. (Im Zusammenhang mit needCmd collect)
  • need
  • ?needCmd? - -
    Abfrage oder Setzen des Bedarfsobjekts des Arbeitsgangs (Zweigs) Abfrage oder Setzen des Bedarfsobjekts des Arbeitsgangs (Zweigs).
  • distrib
  • busy
    offset
    ?distribCmd?
    Abfrage oder Setzen der Stochastik für die absolute Störung der Bearbeitungszeit des Arbeitsgangs (Zweigs)
  • distrib
  • busy
    factor
    ?distribCmd?
    Abfrage oder Setzen der Stochastik für die relative Störung der Bearbeitungszeit des Arbeitsgangs (Zweigs)
  • distrib
  • gate
    ?distribCmd?
    -
    Abfrage oder Setzen der Stochastik für die Torzeit der Station im Arbeitsgang (Zweig)
  • split

  • unit
    ?type?
    -
    Abfrage oder Setzen, nach welchem Typ gesplittet werden soll. Zulässige Typen sind:
    {} - kein Split
    size - Die Jobgröße wird gesplittet.
    quantity - Die Jobmenge wird gesplittet.
  • split
  • distrib
    ?distribCmd?
    -
    Abfrage oder Setzen, nach welcher Stochastik gesplittet wird.
  • split
  • pattern
    ?string?
    -
    Abfrage oder Setzen des Namensmusters für alle erzeugenden Kinderjobs. Der String pattern kann Formatierungsanweisungen enthalten, die mit % eingeleitet werden. Die Syntaxregeln für den Formatstring sind an die C-Bibliotheksfunktion printf angelehnt. Die wichtigsten Anweisungen sind:
    - %p  Name des Eltern-Jobs
    - %x  Zähler, von 1 beginnend
    Desweiteren lässt sich einstellen:
    - Anzahl der zu übernehmenden Zeichen aus dem Eltern-Namen
    - Anzahl der darzustellenden Zeichen
    - Anzahl der Ziffern des Zählers
    - Rechts- oder linksbündig
    Beispiel 1: Job A wird gesplittet mit "%x. Kind von %p" -> "1. Kind von A", "2. Kind von A", ...
    Beispiel 2: Job A wird gesplittet mit "Teil %.2x von %p" -> "Teil 01 von A", "Teil 02 von A", ...
  • merge

  • unit
    ?type?
    -
    Abfrage oder Setzen, nach welchem Typ zusammengefasst werden soll. Zulässige Typen sind:
    {} - kein Merge
    size - Die Jobgröße wird zusammengefasst.
    quantity - Die Jobmenge wird zusammengefasst.
  • merge
  • kill
    ?boolean?
    -
    Abfrage oder Setzen der Eigenschaft, ob Kinderjobs nach dem Merge gelöscht werden (1) oder nicht (0).
  • next
  • priority jobCmd - -
    Abfrage der für den angegebenen Job jobCmd wirksamen Priorität als Kombination von Arbeitsgang- und Jobparametern für den Transfer zum nachfolgenden Arbeitsgang.
  • next
  • enable jobCmd - -
    ... wirksame Aktivität ...
  • next
  • enter jobCmd - -
    ... wirksame Freigabe ...
  • next
  • need jobCmd - -
    ... wirksame Bedarfserfüllung ...
  • next
  • opt jobCmd - -
    ... wirksame Operationszeit ...
  • next
  • tpt jobCmd - -
    ... wirksame Gesamtfertigungszeit ...
  • next
  • rpt jobCmd - -
    ... wirksame Restfertigungszeit ...
  • next
  • ldd jobCmd - -
    ... wirksamer Endtermin (identisch mit Jobtermin) ...
  • next
  • slack jobCmd - -
    ... wirksame Schlupfzeit ...
  • next
  • steps jobCmd - -
    ... verbleibende Anzahl an Maschinenarbeitsgängen ...
    Arbeitsgangparameter, die spezifikatorbezogen angegeben werden (time, forward, size, quandep, setup, quantity, enable, priority, esd), können als option eingesetzt werden (siehe option), um eine Liste der Werte für alle Spezifikatoren zu erhalten (Spaltenvektor). Wird zusätzlich ein Wert arg1 angegeben wird dieser Wert für alle Spezifikatoren gesetzt.
     
    routeCmd spec|specindex length
    Gibt die Anzahl der Spezifikatoren im Routing-Objekt zurück. Ein Routing-Objekt muss mindestens einen Spezifikator besitzen (spec length > 0).
     
    routeCmd spec|specindex append specValue
    Hängt einen weiteren Spezifikator mit dem Wert specValue (pattern) an das Routing-Objekt. Der neue Spezifikator erhält den Index spec length+1 (zugleich Rückgabewert des Befehls). Der Versuch, einen bereits vorhandenen Spezifikatorwert anzuhängen, erzeugt eine Fehlermeldung. Bei einem neu angelegten Routing-Objekt wird automatisch ein Spezifikator mit dem Wert 0 (specindex = 1) eingerichtet.
     
    routeCmd specindex ?index1? ?index2?
    Gibt eine Liste der Spezifikatoren, beginnend mit dem Index index1 ( = 1, 2, ..., spec length) und endend mit dem Index index2 ( = index1, index1+1, ..., spec length) zurück. Fehlt der Parameter index2, wird nur der Spezifikator an der Stelle index1 zurückgegeben. Fehlen beide Indices, wird eine geordnete Liste aller Spezifikatoren zurückgegeben. Ungültige Indices erzeugen eine Fehlermeldung.
     
    routeCmd spec specValue
    Gibt den Index (= 1, ..., spec length) zum Spezifikator specValue zurück (0 = Spezifikator ist nicht enthalten).
     
    routeCmd spec specValue option ?arg?
    routeCmd specindex index option ?arg?
    Der Spezifikator specValue bzw. mit dem Index index wird adressiert. Bei der Angabe von option können folgende Parameter des Spezifikators abgefragt oder gesetzt werden:
    option arg
  • name
  • ?string?
    Abfrage oder Setzen eines frei wählbaren Namens des Spezifikators.
  • refcount
  • -
    Gibt die Anzahl der auf diesen Spezifikator gerichteten Referenzen zurück. Referenzierte Spezifikatoren können nicht gelöscht werden.
  • remove
  • -
    Der Spezifikator wird entfernt (nur möglich, wenn nicht mehr referenziert)
  • value
  • ?newSpecValue?
    Abfrage oder Setzen des Spezifikatorwerts.
  • index
  • -
    Gibt den Index des Spezifikators zurück.
    Arbeitsgangparameter, die spezifikatorbezogen angegeben werden (time, forward, size, quandep, setup, quantity, enable, priority, esd), können als option eingesetzt werden (siehe option), um eine Liste der Werte des Spezifikators für alle Arbeitsgänge zu erhalten (Zeilenvektor).
     
    routeCmd pass passIndex spec specValue option ?value?
    routeCmd pass passIndex specindex specIndex option ?value?
    routeCmd spec specValue pass passIndex option ?value?
    routeCmd specindex specIndex pass passIndex option ?value?
    Abfrage oder Setzen logistischer Parameter von Arbeitsgängen entsprechend option. Zulässige Optionen sind:
  • time -
  • Bearbeitungszeit (value-Typ: double oder Inf). Voreinstellung ist 0.
  • forward -
  • Weitergabezeit (value-Typ: time). Voreinstellung ist Inf.
  • size -
  • Größe (value-Typ: double oder job). Bei Angabe von job gilt die Größe des Jobs im Arbeitsgang (Zweig). Voreinstellung ist job.
  • priority -
  • Priorität (value-Typ: integer oder job). Bei Angabe von job gilt die Priorität des Jobs im Arbeitsgang (Zweig). Voreinstellung ist job.
  • enable -
  • Aktivität (value-Typ: boolean). Voreinstellung ist 1.
  • quandep -
  • Mengenabhängigkeit (value-Typ: boolean). Voreinstellung ist 1.
  • setup -
  • Rüstarbeitsgang (value-Typ: boolean). Voreinstellung ist 0.
  • quantity -
  • Menge (value-Typ: double oder job). Bei Angabe von job gilt die Menge des Jobs im Arbeitsgang (Zweig). Voreinstellung ist job.
  • esd -
  • Freigabetermin (esd - earliest supply date, value-Typ: date). Voreinstellung ist 0.
    Beispiele:
    routeCmd pass 1 spec 9 time p31
    routeCmd spec 9 esd p31 p32 p33 p34
    routeCmd pass 1 specindex 3 priority p31
    routeCmd spec 0 pass 1 forward p21
    routeCmd specindex 3 enable p31 p32 p33 p34
    routeCmd pass 3 setup p13 p23 p33

    Technologie mit 4 Arbeitsgängen und 3
                  Spezifikatoren


    techCmd pass passIndex ?specindex specIndex? skip ?boolean?

    0 - der Arbeitsgang wird ausgeführt (Standardeinstellung); 1 - der Arbeitsgang wird übersprungen. Der Befehl kann formal auch auf die Zweige einer Verzweigung angewendet werden, hat dort aber keine Wirkung.

    branchCmd type ?value?

    Abfrage oder Modifikation des Typs der Verzweigung. value setzt den Typ der Verzweigung. Möglich sind die Typen:
  • sort -
  • sortierende Verzweigung
  • random -
  • zufällige Verzweigung
  • load -
  • lastabhängige Verzweigung
  • balance -
  • lastabhängige Verzweigung, gleichmäßig verteilend
  • static -
  • statische Verzweigung
    Voreinstellung ist sort.

    branchCmd active ?index?

    Abfrage oder Setzen des aktiven Zweiges. Der Zweig index (= 1, 2, ..., length) wird aktiviert. Ohne den Parameter index wird der Index des aktivierten Zweiges zurückgegeben. Ist kein Zweig aktiviert, wird 0 zurückgegeben.

    branchCmd lpass ?index? pass ?passIndex?

    Abfrage oder Setzen des letzten Arbeitsganges in einem Zweig, der für die Entscheidung bei lastabhängigen Strategien (load, balance) herangezogen wird. Der letzte zu prüfende Arbeitsgang des Zweigs index (= 1, 2, ..., length) wird mit dem Arbeitsgang passIndex des mit diesem Zweig verbundenen Technologie-Objektes verknüpft. Ohne den Parameter passIndex wird der Index des Arbeitsganges innerhalb seines Technologie-Objektes zurückgegeben. Ist der Zweig mit keiner Technologie verknüpft, wird 0 zurückgegeben. Fehlt auch der Parameter index, so werden die Indizes der letzten Arbeitsgänge aller Zweige als Liste zurückgegeben. Bei der lastorientierten Entscheidung wird die Summe der Ladung der Stationen von pass 1 bis einschließlich lpass als Kriterium für den bestmöglichen Zweig herangezogen.

    branchCmd pass index probability ?value?

    Abfrage oder Modifikation der Wahrscheinlichkeitswerte eines Zweigs. Der Zweig index (= 2,3, ..., length) erhält den Wahrscheinlichkeitswert value. Der erste Zweig (index = 1) kann nicht explizit gesetzt werden. Beim Setzen der anderen Zweige wird der Wahrscheinlichkeitswert des ersten Zweiges entsprechend verringert oder erhöht. Wird ein Zweig entfernt, so vergrößert sein Wahrscheinlichkeitswert den des ersten Zweiges. Fehlt der Parameter value, so wird der Wahrscheinlichkeitswert des Zweiges index zurückgegeben. value ist vom Typ double.

    branchCmd parallel option ?value?

    Abfrage oder Modifikation des Parallelverhaltens der Verzweigung. Der Parameter value (= 1, 2, ..., length) setzt den Parallelitätsgrad. Fehlt der Parameter value, so wird der Parallelitätsgrad der Verzweigung zurückgegeben. Mögliche Optionen sind: max (Anzhal der Zweige die versucht wird zu belegen) und min (Anzahl der Zweige die mindestens belegt werden müssen, damit der Job die Verzweigung betreten darf)
    Für value sind auch die Werte 0 und all zulässig. Voreinstellung ist single (= 1).


    OBJEKTVERKNÜPFUNGEN

    Zweige von Verzweigungen werden mit Arbeitsgängen verknüpft, die über Technologie und Arbeitsgangindex definiert werden:

    routeCmd pass append objCmd

    Hängt einen weiteren Arbeitsgang (Zweig) mit dem Objekt objCmd an die Liste des Routing-Objekts. Der neue Arbeitsgang (Zweig) erhält den Index length+1 (Rückgabewert des Befehls). Als Objekte sind zulässig: Technologie (nur in Verzweigungen), Station und Verzweigung. Für den Fall, dass in einer Verzweigung eine Technologie oder eine Verzweigung angehängt wird, wird der Arbeitsgangzeiger des Zweiges auf 0 gesetzt. 

    routeCmd pass pass-index insert objCmd

    Fügt einen weiteren Arbeitsgang (Zweig) mit dem Objekt objCmd vor den Arbeitsgang (Zweig) pass-index (= 1, 2, ..., length) ein. Als Objekte sind zulässig: Technologie (nur in Verzweigungen), Station und Verzweigung. Die Länge der Route wird zurückgegeben.


    EREIGNISROUTINEN

    Für Routing-Objekte stehen die folgenden Ereignisroutinen zur Verfügung:

    routeCmd check enter
    routeCmd after enter



     

    simcron MODELLER 3.4
    Copyright © 2025 simcron
    21.05.2025