ItpBlocksearch

ItpBlocksearch 1:

Der Funktionsbaustein ItpBlocksearch setzt den Interpreter auf die an den Eingängen definierte Stelle. 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.

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

bExecute: Der Befehl wird durch eine steigende Flanke an diesem Eingang ausgelöst.

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

eBlockSearchMode: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: Definiert, welche Zeilen des Programms ausgeführt und welche übersprungen werden. Vgl. E_ItpDryRunMode

fLength:Verbleibende Länge innerhalb des mit nBlockId ausgewählten Segments in Prozent.

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

nPrgLength: Gibt die Länge des Strings sPrgName an.

tTimeOut: ADS-Timeout-Delay

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

sOptions: Gibt Informationen zum Retrace (Rückwärtsfahren) an.

VAR_IN_OUT
sNciToPlc         : NciChannelToPlc;
END_VAR

sNciToPlc: Struktur des zyklischen Kanalinterfaces von der NCI zur SPS. Auf diese Struktur wird nur lesend zugegriffen. Vgl. NciChannelToPlc

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

bBusy: 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: 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: 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: Der Ausgang wird TRUE, wenn der Befehl erfolgreich ausgeführt wurde.

sStartPosition: 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

Der E_ItpDryRunMode definiert, wie mit programmierten Sätzen umgegangen wird, die sich bei Abarbeitung des gesamten Programms vor dem Satz, von dem im Blocksearch gestartet wird, befinden.

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.

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 Informationen zur Retrace-Funktionalität.

TYPE ST_ItpBlockSearchOptions :
STRUCT
bIsRetrace        : BOOL:= FALSE;
bRetraceBackward  : 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

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
fStartPosition    : ARRAY[1..8] OF LREAL;
END_STRUCT
END_TYPE

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

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