Einige der Bewegungs-Funktionsbausteine verfügen über einen Eingang mit dem Namen BufferMode. Über diesen Eingang kann der Funktionsbaustein wahlweise sofort gestartet, beim Eintreffen eines Sondenereignisses gestartet oder das Eingangssignal kann gepuffert werden.
Die verfügbaren Optionen sind in dem Aufzählungstyp MC_BUFFER_MODE definiert:
oEventuelle Abbruchsbewegungen (mcAborting) werden sofort ausgeführt, die aktuelle Bewegung wird abgebrochen und die Bewegungswarteschlange wird gelöscht.
oGepufferte Bewegungen (mcBuffered, mcBlendingPrevious, seBufferedDelay) werden in die Warteschlange eingestellt und an die Liste der aktuellen bzw. anstehenden Bewegungen angehängt und ausgeführt, nachdem die vorangehende Bewegung abgearbeitet ist.
oEreignisgesteuerte Bewegungen (seTrigger) sind gepuffert und werden über ein Sondenereignis gestartet.
Bewegungswarteschlangendiagramm
Die folgende Abbildung stellt ein Bewegungswarteschlangendiagramm dar:
Der Puffer kann nur einen Bewegungs-Funktionsbaustein enthalten:
Die Ausführungsbedingung des Bewegungs-Funktionsbausteins in dem Puffer ist wie folgt gegeben:
omcBuffered: Wenn die aktuelle kontinuierliche Bewegung den Status InVelocity hat, bzw. wenn die aktuelle diskrete Bewegung anhält.
oseBufferedDelay: Wenn nach Ablauf der festgelegten Verzögerung die aktuelle kontinuierliche Bewegung den Status InVelocity hat, bzw. wenn die aktuelle diskrete Bewegung anhält.
omcBlendingPrevious: Wenn die Positions- und die Geschwindigkeitsvorgaben des aktuellen Funktionsbausteins erreicht sind.
oseTrigger: Wenn am Sondeneingang ein gültiges Ereignis erkannt wird.
Die Bewegungswarteschlange wird geleert (alle gepufferten Bewegungen werden gelöscht), wenn eine der folgenden Bedingungen zutrifft:
oWenn eine Abbruchsbewegung ausgelöst wird (mcAborting): Der CommandAborted-Pin wird an den gepufferten Funktionsbausteinen gesetzt.
oWenn eine MC_Stop_PTO-Funktion ausgeführt wird: Der Error-Pin wird an den geleerten gepufferten Funktionsbausteinen gesetzt, und ErrorId wird auf StoppingActive gesetzt.
oWenn ein Übergang in einen ErrorStop-Zustand erkannt wird: Der Error-Pin wird an den gepufferten Funktionsbausteinen gesetzt, und ErrorId wird auf ErrorStopActive gesetzt.
HINWEIS:
oEs können ausschließlich gültige Bewegungen in die Warteschlange eingestellt werden. Wenn die Ausführung des Funktionsbausteins mit gesetztem Error-Ausgang beendet wird, wird die Bewegung nicht in die Warteschlange eingestellt. Aktuell ausgeführte Bewegungen werden nicht beeinträchtigt, und die Warteschlange wird nicht geleert.
oWenn die Warteschlange bereits voll ist, wird der Error-Ausgang in dem zuständigen Funktionsbaustein gesetzt, und der ErrorId-Ausgang gibt den Fehler MotionQueueFull) zurück.