ItpBlocksearch

ItpBlocksearch 1:

Der Funktionsbaustein ItpBlocksearch setzt den Interpreter auf die an den Eingängen definierte Stelle.
Wenn Blocksearch während des ersten Segments, das eine Bewegung enthält, ausgeführt wird, kann der Ausgang sStartPosition des Bausteins ItpBlocksearch falsche Werte zurückgeben. Aus diesem Grund sollte Blocksearch erst ab dem zweiten Segment genutzt werden.

Die Eingangswerte können vom Funktionsbaustein ItpGetBlocksearchData übernommen oder manuell gesetzt werden. Nachdem der Interpreter mit ItpBlocksearch auf die definierte Stelle gesetzt worden ist, kann die Bewegung an der Position, die am Ausgang sStartPosition ausgegeben wird, mit ItpStepOnAfterBlocksearch fortgesetzt werden.

ItpBlocksearch 2: Eingänge

VAR_INPUT
    bExecute          : BOOL;
    nBlockId          : UDINT;
    eBlockSearchMode  : E_ItpBlockSearchMode;
    eDryRunMode       : E_ItpDryRunMode;
    fLength           : LREAL;
    sPrgName          : STRING(255);
    nPrgLength        : UDINT;
    tTimeOut          : TIME;
    sAxesList         : ST_ItpAxes;
    sOptions          : ST_ItpBlockSearchOptions;
END_VAR

Name

Typ

Beschreibung

bExecute

BOOL

Durch eine steigende Flanke an diesem Eingang wird der Befehl ausgeführt.

nBlockId

UDINT

Blocknummer oder EntryCounter des Segments im NC-Programm, ab der gestartet werden soll.

eBlockSearchMode

E_ItpBlockSearchMode

Definiert, ob die angegebene nBlockId eine Blocknummer (z.B. N4711) oder ein fortlaufender EntryCounter ist. Voraussetzung für die Verwendung der Blocknummer ist, dass diese eindeutig ist. Vgl. E_ItpBlockSearchMode.

eDryRunMode

E_ItpDryRunMode

Definiert, welche Zeilen des Programms ausgeführt und welche übersprungen werden. Vgl. E_ItpDryRunMode.

fLength

LREAL

Aufsetzpunkt innerhalb des mit nBlockId ausgewählten Segments in Prozent.

sPrgName

STRING(255)

Name bzw. Dateipfad des Programms, das ausgeführt werden soll.

nPrgLength

UDINT

Gibt die Länge des Strings sPrgName an.

tTimeOut

TIME

ADS-Timeout-Delay

sAxesList

ST_ItpAxes

Definition der Achsen, die sich in der NCI-Gruppe befinden. Vgl. ST_ItpAxes.

sOptions

ST_ItpBlockSearchOptions

ST_ItpBlockSearchOptions

ItpBlocksearch 3:/ItpBlocksearch 4: Ein-/Ausgänge

VAR_IN_OUT
    sNciToPlc           : NCTOPLC_NCICHANNEL_REF;
END_VAR

Name

Typ

Beschreibung

sNciToPlc

NCTOPLC_NCICHANNEL_REF

Struktur des zyklischen Kanalinterfaces von der NCI zur SPS. Auf diese Struktur wird nur lesend zugegriffen (Typ: NCTOPLC_NCICHANNEL_REF).

ItpBlocksearch 5: Ausgänge

VAR_OUTPUT
    bBusy             : BOOL;
    bErr              : BOOL;
    nErrId            : UDINT;
    bDone             : BOOL;
    sStartPosition    : ST_ItpBlockSearchStartPosition;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Bleibt TRUE, bis der Baustein eine Befehlsanforderung ausgeführt hat, längstens aber für die Dauer der an dem 'Timeout'-Eingang angelegten Zeit. Während Busy = TRUE wird an den Eingängen kein neuer Befehl angenommen.

bErr

BOOL

Wird TRUE, wenn bei der Ausführung des Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in 'nErrId' enthalten. Wird durch das Ausführen eines Befehls an den Eingängen auf FALSE zurückgesetzt.

nErrId

UDINT

Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt. Die Fehlernummern in ErrId können in der ADS-Fehlerdokumentation oder in der NC-Fehlerdokumentation (Fehlercodes ab 0x4000) nachgeschlagen werden.

bDone

BOOL

Der Ausgang wird TRUE, wenn der Befehl erfolgreich ausgeführt wurde.

sStartPosition

ST_ItpBlockSearchStartPosition

Gibt die Startposition aus, von der das NC-Programm weiterläuft. Die einzelnen Achsen müssen vor dem Ausführen von ItpStepOnAfterBlocksearch an diese Positionen verfahren werden. Vgl. ST_ItpBlockSearchStartPosition.

E_ItpBlockSearchMode

Über E_ItpBlockSearchMode wird definiert, auf welche Art die Blocksuche beim Blocksearch ausgeführt wird.

TYPE E_ItpBlockSearchMode :
(
    ItpBlockSearchMode_Disable        := 0,
    ItpBlockSearchMode_BlockNo        := 1,
    ItpBlockSearchMode_EntryCounter   := 2
);
END_TYPE

ItpBlockSearchMode_Disable: Blocksearch deaktiviert (Initialwert).

ItpBlockSearchMode_BlockNo: Der Blocksearch wird über die vom Anwender im NC-Programm programmierte Blocknummer (z.B. N4711) ausgeführt. Voraussetzung ist, dass die Blocknummer vom Anwender eindeutig vergeben wurde.

ItpBlockSearchMode_EntryCounter: Der Blocksearch wird über einen eindeutigen EntryCounter ausgeführt. Dieser EntryCounter ist implizit eindeutig, kann jedoch vom Anwender im NC-Programm nicht eingesehen werden.

E_ItpDryRunMode

Die Enumeration E_ItpDryRunMode zählt diejenigen Vorgehensweisen auf, wie mit den programmierten Sätzen vom Anfang des Programms bis zur gesuchten Stelle umgegangen werden soll.

TYPE E_ItpDryRunMode :
(
    ItpDryRunMode_Disable             := 0,
    ItpDryRunMode_SkipAll             := 1,
    ItpDryRunMode_SkipMotionOnly      := 2,
    ItpDryRunMode_SkipDwellAndMotion  := 3
);
END_TYPE

ItpDryRunMode_Disable: DryRun deaktiviert (Initialwert).

ItpDryRunMode_SkipAll: Alle vorherigen Sätze werden übersprungen. R-Parameter werden geschrieben.

ItpDryRunMode_SkipMotionOnly: Nur Bewegungssätze werden übersprungen. R-Parameter werden geschrieben und Verweilzeiten und M-Funktionen ausgeführt.

ItpDryRunMode_SkipDwellAndMotion: Bewegungssätze und Verweilzeiten werden übersprungen. R-Parameter werden geschrieben und M-Funktionen ausgeführt.

ST_ItpAxes

Die Struktur ST_ItpAxes beinhaltet die Achsen, die sich bei der Abarbeitung des Programms in der NCI-Gruppe befunden haben. Die Interpolationsgruppe sollte zum Zeitpunkt der Ausführung von Blocksearch nicht gebildet sein. Um dennoch eine Referenz auf die Gruppenachsen zu haben, ist die Struktur ST_ItpAxes mit den Gruppenachsen zu füllen.

TYPE ST_ItpAxes :
STRUCT
    nAxisIds          : ARRAY[1..8] OF UDINT;
END_STRUCT
END_TYPE

nAxisIds: Array der Achen, die sich in der NCI-Gruppe befunden haben. Dabei ist die Reihenfolge nAxisIds[1]=X, nAxisIds[2]=Y, nAxisIds[3]=Z, nAxisIds[4]=Q1, nAxisIds[5]=Q2… Die Achs-Id kann aus dem zyklischen Achsinterface ausgelesen werden.

St_ItpBlockSearchOptions

Die Struktur beinhaltet zusätzliche Blocksearch-Optionen.

TYPE ST_ItpBlockSearchOptions :
STRUCT
    bIsRetrace        : BOOL:= FALSE;
    bRetraceBackward  : BOOL:= FALSE;
    bScanStartPos     : BOOL:= FALSE;
END_STRUCT
END_TYPE

bIsRetrace: Zeigt an, ob die Retrace-Funktionalität aktiv ist.

bRetraceBackward: Zeigt an, ob rückwärts auf der Bahn verfahren wurde.

bScanStartPos: Gibt an, ob die aktuellen Achspositionen beim Programmstart eingelesen werden sollen oder nicht. In Verbindung mit ST_ItpAxesList ist dieser Eingang auf TRUE zu setzen. Diesen Eingang auf FALSE zu setzen, ist nur aus Kompatibilitätsgründen für alte Projekte sinnvoll.

ST_ItpBlockSearchStartPosition

Die Struktur gibt die Position an, an der das NC-Programm nach einem Blocksearch fortgesetzt wird. Der Anwender ist dafür verantwortlich, die Achsen an die entsprechenden Positionen zu verfahren.

TYPE ST_ItpBlockSearchStartPosition :
STRUCT
    sStartPosition    : ARRAY[1..8] OF LREAL;
END_STRUCT
END_TYPE

sStartPosition: Array der Achspositionen, an der das NC-Programm fortgesetzt wird.

Dabei ist die Reihenfolge sStartPosition[1]=X, sStartPosition [2]=Y, sStartPosition [3]=Z, sStartPosition [4]=Q1, sStartPosition [5]=Q2…

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

Classic Dialect Interpreter: TwinCAT V3.1.0

GST Interpreter: TwinCAT V3.1.4024.20

PC oder CX (x86 oder x64)

Tc2_NCI