8. August 2023

Prozeduren während einer Schichtpause unterbrechen

In INOSIM kann die Verfügbarkeit von Ressourcen und Equipment mithilfe von Schichtkalendern ausgedrückt werden. Ein Schichtkalender legt fest, wann ein Equipment verfügbar ist oder wie sich die Verfügbarkeit von Ressourcen über den Simulationszeitraum ändert. In diesem Tipp und Trick werden zwei Möglichkeiten vorgestellt, die Belegung von Equipment oder Ressourcen während einer Schichtpause zu unterbrechen. (→ INOSIM Anwendungshandbuch / Online-Hilfe: Kapitel Schichtkalender)

Standardverhalten in INOSIM

Equipment-Belegung

Wenn ein Equipment derzeit belegt ist und eine Schichtpause eintritt (Equipment ist nicht mehr verfügbar), führt INOSIM die laufende Prozedur bis zum Ende aus. Neue Prozeduren können während einer Schichtpause nicht gestartet werden. Im Bild kann man sehen, dass der Trockner noch belegt ist, als die Schichtpause (blauer Balken) beginnt. Die Prozedur wird in die Schichtpause hinein ausgeführt. Außerdem ist zu sehen, dass die nächste Prozedur bis zum Ende der Schichtpause verzögert wird.

Gantt-Chart für ein Beispiel, bei dem die Prozedur bei Beginn der Schichtpause nicht unterbrochen wird.

Ressourcenzuweisung

Wenn ein Schichtkalender für eine Ressource verwendet wird, passiert Ähnliches. Im gezeigten Beispiel wird für jeden der Schritte Trocknung, Reaktion und Filtration ein Anlagenfahrer benötigt. Der Filtrationsschritt hat bereits begonnen, als die Verfügbarkeit der Anlagenfahrer aufgrund der Schichtpause (blauer Balken) auf 0 sinkt. Der Filtrationsschritt kann beendet werden und ein Anlagenfahrer bleibt während der ersten Hälfte der Schichtpause belegt, aber der Reaktions- und Trocknungsschritt können während der Schichtpause nicht starten, da neue Anlagenfahrer zugewiesen werden müssten. Daher entsteht auf dem Reaktor und dem Trockner eine Wartezeit für die Ressource (gelber Balken).

Gantt-Chart für ein Beispiel, bei dem die Ressourcenbelegung nicht mit Beginn der Schichtpause unterbrochen wird.

Unterbrechung oder Verzögerung während der Schichtpause

In einigen Fällen ist das Standardverhalten von INOSIM in Bezug auf Ressourcen- und Equipment-Belegung während einer Schichtpause unerwünscht. In diesem Fall sollte die Belegung eines Equipments nur dann starten, wenn genügend Zeit vor der Schichtpause verbleibt, oder die Ausführung einer Aufgabe sollte gestoppt werden, wenn Ressourcen in eine Schichtpause übergehen.

Unterbrechung einer Prozedur durch Haltepunkte

In unserem ersten Beispiel haben wir uns einen Trockner angesehen, der gemäß einem Schichtkalender an bestimmten Tagen nicht verfügbar ist. Für Equipment besteht die Möglichkeit, Operationen nur zu starten, wenn genügend Zeit bis zur nächsten Schichtpause verbleibt. Um dies zu erreichen, muss ein Haltepunkt für die Operation gesetzt werden, die warten soll. Der Haltepunkt kann in den Eigenschaften der Operation im Register Erweitert gesetzt werden. Die erwartete Ausführungsdauer bestimmt, wie viel Zeit bis zum Start der nächsten Schichtpause verbleiben muss, damit die Operation starten kann. In unserem Beispiel setzen wir einen Haltepunkt in der Trocknungsoperation und stellen die erwartete Dauer auf die tatsächliche Trocknungszeit ein, sodass der Trocknungsprozess nur startet, wenn die Operation vor der Schichtpause beendet werden kann. In dem Rezept werden Operationen mit Haltepunkten durch fett gedruckte äußere Linien dargestellt. Weitere Informationen zu Haltepunkten finden Sie im INOSIM Anwendungshandbuch / Online-Hilfe (Rezepte und Rezeptmodule : Ausführung von Grundrezepten : Ausführung von Operationen → Haltepunkte).

Links: Dialogfenster für die Equipment-Eigenschaften. In dem Tab „Erweitert“ wird der Haltepunkt gesetzt. – Rechts: Im Rezept erscheinen Operationen mit einem Haltepunkt mit dicken schwarzen Außenlinien.

Es ist auch in VBA möglich, Haltepunkte zu aktivieren und die erwartete Dauer festzulegen. Weitere Informationen finden Sie im INOSIM Anwendungshandbuch / Online-Hilfe: Basic : Objektmodell : Eigenschaften : EnableBreakpoint-Eigenschaft.

Das Gantt-Diagramm mit einem Haltepunkt in der Trocknungsoperation würde dann wie folgt aussehen:

Gantt-Chart für ein Beispiel, bei dem ein Haltepunkt genutzt wurde und die Prozedur somit vor der Schichtpause unterbrochen wird.

Der Transfer in den Trockner (blauer Balken) wird noch vor der Schichtpause ausgeführt, aber die Trocknungsoperation darf vor der Pause nicht starten, da bis zum Beginn der Schichtpause keine 8 Stunden mehr verbleiben. Die Trocknungsoperation startet dann nach Ende Schichtpause.

Unterbrechung bei Ressourcenschichtpause mittels Wartung

Die Verwendung von Haltepunkten sorgt dafür, dass Operationen verschoben werden. Um Operationen zu stoppen, die während einer Schichtpause eine Ressource benötigen, ist ein Workaround erforderlich.

Bei der Zuweisung einer Ressource zu einer Operation kann diese als unterbrechbar festgelegt werden.

Dialogfenster zur Zuordnung der Ressourcen in den Eigenschaften der Operationen. Die Ressource muss auf „unterbrechbar“ gesetzt werden.

Wenn die Ressource als unterbrechbar festgelegt ist, wird die Zuweisung der Ressource bei einer Störung oder einer Wartung unterbrochen. Damit die Ressource während der Wartung auch wirklich freigegeben wird, muss in den Ressourceneigenschaften, in dem Register Belegung, ein Haken bei Bei Wartung freigeben gesetzt werden. In den Beispielen hier werden Wartungen genutzt, um die Belegung von Ressourcen zu unterbrechen, es ist aber auch möglich, dasselbe Verhalten mit Störungen zu erreichen. Dafür muss hier Bei Störungen freigeben ausgewählt werden.

Dialogfenster für die Ressourceneigenschaften. Die Ressource muss während der Wartung freigegeben werden.

Dieses Verhalten wird im vorgestellten Workaround verwendet, um Operationen zu stoppen, die bereits gestartet wurden, wenn die Schichtpause beginnt. In der Initialisierungsphase der Simulation ist für jedes Equipment, das die Ressource benötigt, eine Wartung zum Zeitpunkt des nächsten Wechsels im Schichtkalender geplant:

Private Sub Simulation_Init() Handles Simulation.Init
    Dim u As Unit
    Dim NextChange As Double

    For Each u In UnitPools("OperatorUnit").Members 
        'the unit pool consists of all units that need Operators

        'this Method determines the next change in the shift calendar for the Operators
        NextChange = Resources("Operator").ShiftCalendar.NextChange(Simulation.SimDate)

        'when the next change in the shift calendar happens, the sub "SartMaintenance" is called
        Simulation.ScheduleSub("Macro1.StartMaintenance",NextChange,DateReferenceType.bAbsolute,u)
    Next
End Sub

Die Subroutine StartMaintenance, die mit der Methode ScheduleSub zum Zeitpunkt des nächsten Wechsels im Schichtkalender aufgerufen wird, ruft dann die Methode BeginMaintenance auf, um die Wartung am Equipment (u) zu starten. Innerhalb der Subroutine StartMaintenance wird eine andere Subroutine geplant, die die Wartung 0,01 Sekunden nach dem Start beendet. Für den nächsten Wechsel im Schichtkalender wird die Subroutine StartMaintenance erneut aufgerufen.

Sub StartMaintenance(u As Unit)
    
    Dim NextChange As Double
    
    If Resources("Operator").ShiftCalendar.Value(Simulation.SimDate+1) = 0 Then  
        'If change is setting Operator's availabilty to 0
        u.BeginMaintenance 'begin maintenance
        Simulation.ScheduleSub("Macro1.EndMaintenance",0.01,DateReferenceType.bRelative,u) 
        'end maintenance in 0.01 s
    End If

    'call the sub again, when there is the next change in the shift calendar
    NextChange = Resources("Operator").ShiftCalendar.NextChange(Simulation.SimDate)
    Simulation.ScheduleSub("Macro1.StartMaintenance",NextChange,DateReferenceType.bAbsolute,u)

End Sub

Die Subroutine, die die Wartung nach einer Hundertstelsekunde beendet und mit der Methode ScheduleSub aufgerufen wird, verwendet einfach die Methode EndMaintenance, um die Wartung zu beenden:

Sub EndMaintenance (u As Unit)
    u.EndMaintenance
End Sub

Bei Verwendung dieser Methode wird die Zuweisung der Ressource aufgrund der Wartung unterbrochen, wenn die Schichtpause beginnt. Da bei Beendigung der Wartung aufgrund der Schichtpause keine Ressourcen verfügbar sind, werden die Anlagenfahrer erst wieder zugewiesen, wenn die Schichtpause endet.

Gantt-Chart für ein Beispiel, bei dem die Ressourcenbelegung während der Schichtpause unterbrochen wird.

Wenn Sie diesen Workaround verwenden, werden gestartete Operationen (hier im Reaktor und im Trockner) pausiert (gelber Balken), bis die Ressource wieder verfügbar ist.

Der Ansatz, der hier genutzt wird, um Operationen während Ressourcen-Schaltpausen zu unterbrechen, kann auch angewendet werden, um Operationen während Equipment-Schichtpausen zu unterbrechen. Um die Unterbrechung der Operation für die gesamte Schichtpause zu gewährleisten, muss das Ende der Wartung am Ende der Schichtpause getriggert werden.

Im Download-Bereich steht ein Beispielmodell zur Verfügung.

 

Fragen?

Möchten Sie mehr über dieses Thema erfahren oder haben weitere Fragen? Bitte kontaktieren Sie uns.

Array ( [posts_per_page] => 3 [post_type] => [category__in] => Array ( [0] => 171 ) [orderby] => rand [order] => ASC )

Mehr Tipps & Tricks

Dieser Tipp & Trick beschreibt eine Vielzahl von Methoden zur Vermeidung und Behandlung von Laufzeitfehlern in Ihrem VBA-Code. Sie werden mit den FindColumn– und FindRow-Methoden…

19. März 2020

Das Reporting-Objekt

Ab INOSIM 12 ist das Reporting-Objekt Bestandteil des Objektmodells. Es ermöglicht den Zugriff auf die Ergebnisberichte über Visual Basic und bietet dadurch vielfältige Optionen zur…

Arbeiten mit externen Excel-Arbeitsmappen Neben dem Zugriff auf die in INOSIM eingebaute Excel-Arbeitsmappe (siehe Tipp Nutzen Sie Ihr Excel-VBA-Wissen bei der Arbeit mit INOSIM), können mit Hilfe…

mehr

INOSIM Kontakt

Zu den lokalen Geschäftszeiten

Deutschland +49 231 97 00 250