TcPlcInterpolation Übersicht

TwinCAT PLC Library: TcPlcInterpolation

Übersicht

Die TcPlcInterpolation-Bilbliothek bietet eine Alternative zur Verwendung von G-Code (DIN 66025). Mit dieser Bibliothek ist es möglich, interpolierte Fahrbefehle unmittelbar von der SPS und ohne die Verwendung von G-Code zu beschreiben.

In einem ersten Schritt wird eine Tabelle verschiedener Fahrbefehle und Zusatzfunktionen beschrieben. Aus diesem Grund werden Strukturen wie ST_NciGeoLine verwendet. Mit dieser Struktur wird der FB ‚NciFeedTablePreparation’ aufgerufen und so wird der Befehl an die Tabelle angehängt. Wenn die Tabelle voll ist oder alle erforderlichen Einträge in der Tabelle sind, wird NciFeedTable dazu aufgerufen, den Tabelleninhalt zum NC-Kern zu übertragen. Mit der Datenübertragung wird die Ausführung direkt gestartet.

Funktionsbaustein | Beschreibung
NciFeedTablePreparation |
NciFeedTable |

Enum | Beschreibung
E_NciEntryType |
E_NciGeoPlane |
E_NciAxesInGroup |
E_TangentialFollowingBehavior |

Strukturen | Beschreibung
ST_NciEndOfTables |
ST_NciDynOvr |
ST_NciGeoCirclePlane |
ST_NciGeoLine |
ST_NciGeoStart |
ST_NciHParam |
ST_NciMFuncFast |
ST_NciMFuncHsk |
ST_NciMFuncResetAllFast |
ST_NciSParam |
ST_NciTangentialFollowingDesc |
ST_NciVertexSmoothing |
ST_NciAxisDynamics |
ST_NciDwellTime |

Entwicklungsumgebung | Zielsystem | Einzubindende SPS-Bibliotheken
TwinCAT v2.10 | PC (i386) | TcPlcInterpolation.lib


NciFeedTablePreparation

Interface

VAR_INPUT
nEntryType : E_NciEntryType;
pEntry : POINTER TO UDINT;
bResetTable: BOOL;
bResetAll : BOOL;
END_VAR

VAR_IN_OUT
stFeedGroupTable : ST_NciFeedGroupTable
END_VAR

VAR_OUTPUT
nFilledRows : INT;
bError : BOOL;
nErrorId : UDINT;
END_VAR

Der Funktionsbaustein FB_NciFeedTablePreparation hängt einen Eintrag eines spezifischen Typs an die Feed-Group-Tabelle. Ein angehängter Eintrag kann mehr als eine Zeile in der Tabelle erzeugen. Falls sich nicht genug freie Zeilen in der Tabelle befinden, wird ein Fehler zurückgeliefert und es wird kein Eintrag in der Tabelle hinzugefügt. Dann muss der Eintrag entweder einer anderen Tabelle hinzugefügt werden oder derselben nachdem FB_NciFeedTable ausgeführt wurde. Dieser Funktionsbaustein kümmert sich um Modalfunktionen wie die tangentiale Nachführung. Es ist deshalb also wichtig, dass man immer dieselbe Instanz dieses Funktionsbausteins verwendet.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Spezifiziert den Eintragstyp, z.B. Linie, Kreis, tangentiale Nachführung
pEntry | POINTER | Zeiger auf Eintragsstruktur – muss übereinstimmen mit nEntryType
bResetTable | BOOL | Wenn bResetTable = TRUE dann wird die Tabelle ‚stFeedGroupTable’ auf Null gesetzt und nFilledRows wird ebenfalls auf Null gesetzt. Wenn nErrorId = ErrNciFeedTableFull ist, wird dieser Fehler zurückgesetzt. Alle Modalflags (wie tangentiale Nachführung) bleiben konstant. Falls ein Eintrag an pEntry anliegt, wird dieser nicht berücksichtigt.
bResetAll | BOOL | Genau wie bResetTable. Daneben werden alle Modalflags auf ihren Standardwert gesetzt und alle Fehler-IDs werden zurückgesetzt.
Eingang/Ausgang | Datentyp | Beschreibung
stFeedGroupTable | ST_NciFeedGroupTable | Tabelle, die die Zeilen für den NC-Kernel enthält.

Ausgang | Datentyp | Beschreibung
nFilledRows | INT | Anzahl gefüllter Zeilen.
bError | BOOL | Wird TRUE, wenn ein Fehler aufgetreten ist.
nErrorId | 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.

  • Hinweis:
    • Wenn bResetTable, bResetAll, oder bError true ist, werden keine weiteren Einträge akzeptiert.
    • Der Fehlercode 0x4B72 zeigt an, dass die Tabelle voll ist, und der letzte Eintrag nicht akzeptiert wurde.

    Beispiel:

    stGeoLine.nDisplayIndex := 1;
    stGeoLine.fEndPosX := 0;
    stGeoLine.fEndPosY := 400;
    stGeoLine.fEndPosZ := 100;
    stGeoLine.fEndPosQ1 :=-90;
    stGeoLine.fVelo := 1000; (*mm per sec*)

    fbFeedTablePrep(
    nEntryType := E_NciEntryTypeGeoLine,
    pEntry := ADR(stGeoLine),
    bResetTable:= FALSE,
    stFeedGroupTable:= stNciFeedGroupTable,
    nFilledRows=> nFilledRows,
    bError => bError,
    nErrorId => nErrorId);

    Entwicklungsumgebung | Zielsystem | Einzubindende SPS-Bibliotheken
TwinCAT v2.10.0 | PC (i386) | TcPlcInterpolation.lib


NciFeedTable

Interface

VAR_INPUT
bExecute : BOOL;
bReset : BOOL;
bLogFeederEntries : BOOL;
END_VAR

VAR_IN_OUT
stFeedGroupTable : ST_NciFeedGroupTable;
stNciToPlc : NciChannelToPlc;
END_VAR

VAR_OUTPUT
bFeedingDone : BOOL;
bChannelDone : BOOL;
bError : BOOL;
nErrorId : UDINT;
END_VAR

Der Funktionsbaustein FB_NciFeedTable übergibt eine gegebene Tabelle zum NC-Kern. Wenn der Override gesetzt und die Freigaben aktiviert sind, wird die Ausführung sofort gestartet. Nachdem die Übergabe abgeschlossen ist, wird bFeedingDone TRUE. Dieses Signal kann für einen erneutes Überschreiben der Tabelle mit NciFeedTablePreparation verwendet werden. In NciFeedTablePreparation muss die Tabelle vorher zurückgesetzt werden.

bChannelDone signalisiert die vollständige Ausführung im NC-Kern der Tabellen. Deshalb muss der Identifier ST_NciEndOfTables an das Ende der letzten Tabelle gesetzt werden.

Eingang | Datentyp | Beschreibung
bExecute | BOOL | Der Befehl wird durch eine steigende Flanke an diesem Eingang ausgelöst.
bReset | BOOL | Löst einen Kanalreset aus und setzt ebenfalls den Funktionsbaustein zurück
bLogFeederEntries | BOOL | Wenn TRUE, wird eine Logdatei ‚PlcItpFeed.log’ in den TwinCAT\CNC-Ordner geschrieben. Sie enthält alle Einträge, die über ADS an den NC-Kern gesendet werden Hinweis: Wenn bLogFeederEntries = TRUE, dann ist mehr Zeit erforderlich, bis bFeedingDone TRUE wird.
Eingang/Ausgang | Datentyp | Beschreibung
stFeedGroupTable | ST_NciFeedGroupTable | Tabelle, die die Zeilen für den NC-Kern enthält.
stNciToPlc | NciChannelToPlc | Die Struktur des zyklischen Kanalinterfaces von der NCI zur SPS.

Ausgang | Datentyp | Beschreibung
bFeedingDone | BOOL | Wird TRUE, wenn alle Zeilen der Tabelle an den NC-Kern gesendet wurden
bChannelDone | BOOL | Wird TRUE, wenn alle Einträge der Tabelle im NC-Kern ausgeführt wurden und ST_NciEndOfTables erkannt wurde.
bFeedBusy | BOOL | Wird TRUE, wenn der Funktionsbaustein Einträge an den NC-Kern sendet
bResetBusy | BOOL | Wird TRUE, während ein Reset augeführt wird.
bError | BOOL | Wird TRUE, wenn ein Fehler aufgetreten ist.
nErrorId | 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.

Entwicklungsumgebung | Zielsystem | Einzubindende SPS-Bibliotheken
TwinCAT v2.10.0 | PC (i386) | TcPlcInterpolation.lib


Typen und Enums

E_NciEntryType

TYPE E_NciEntryType :
(
E_NciEntryTypeNone := 0,
E_NciEntryTypeGeoStart := 1,
E_NciEntryTypeGeoLine := 2,
E_NciEntryTypeGeoCirclePlane := 3,
E_NciEntryTypeGeoBezier3 := 10,
E_NciEntryTypeGeoBezier5 := 11,
E_NciEntryTypeMFuncHsk := 20,
E_NciEntryTypeMFuncFast := 21,
E_NciEntryTypeMFuncResetAllFast := 23,
E_NciEntryTypeHParam := 24,
E_NciEntryTypeSParam := 25,
E_NciEntryTypeTParam := 26,
E_NciEntryTypeDynOvr := 50,
E_NciEntryTypeVertexSmoothing := 51,
E_NciEntryTypeBaseFrame := 52,
E_NciEntryTypePathDynamics := 53,
E_NciEntryTypeAxisDynamics := 55,
E_NciEntryTypeDwellTime := 56,
E_NciEntryTypeTfDesc := 100,
E_NciEntryTypeEndOfTables := 1000
);
END_TYPE

Enum | Passende Struktur
E_NciEntryTypeNone |
E_NciEntryTypeGeoStart | ST_NciGeoStart
E_NciEntryTypeGeoLine | ST_NciGeoLine
E_NciEntryTypeGeoCirclePlane | ST_NciGeoCirclePlane
E_NciEntryTypeGeoBezier3 | ST_NciGeoBezier3
E_NciEntryTypeGeoBezier5 | ST_NciGeoBezier5
E_NciEntryTypeMFuncHsk | ST_NciMFuncHsk
E_NciEntryTypeMFuncFast | ST_NciMFuncFast
E_NciEntryTypeResetAllFast | ST_NciMFuncResetAllFast
E_NciEntryTypeHParam | ST_NciHParam
E_NciEntryTypeSParam | ST_NciSParam
E_NciEntryTypeTParam | ST_NciTParam
E_NciEntryTypeDynOvr | ST_NciDynOvr
E_NciEntryTypeVertexSmoothing | ST_NciVertexSmoothing
E_NciEntryTypeBaseFrame | ST_NciBaseFrame
E_NciEntryTypePathDynamics | ST_NciPathDynamics
E_NciEntryTypeAxisDynamics | ST_NciAxisDynamics
E_NciEntryTypeDwellTime | ST_NciDwellTime
E_NciEntryTypeTfDesc | ST_NciTangentialFollowingDesc
E_NciEntryTypeEndOfTables | ST_NciEndOfTables

ST_NciGeoStart

TYPE ST_NciGeoStart :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeGeoStart; (* diesen Parameter nicht überschreiben *)
fPosX: LREAL;
fPosY: LREAL;
fPosZ: LREAL;
fPosQ1: LREAL;
fPosQ2: LREAL;
fPosQ3: LREAL;
fPosQ4: LREAL;
fPosQ5: LREAL;
END_STRUCT
END_TYPE

Stellt die Startposition des ersten Geometrie-Eintrags ein. Ist erforderlich, wenn der erste Geometrie-Eintrag ein Kreis ist oder die tangentiale Nachführung im ersten Segment ON ist. Diese Struktur kann optional bei jedem Start der ersten Tabelle geschrieben werden.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
fPosX | LREAL | Startposition X
fPosY | LREAL | Startposition Y
fPosZ | LREAL | Startposition Z
fPosQ1 | LREAL | Startposition Q1
fPosQ2 | LREAL | Startposition Q2
fPosQ3 | LREAL | Startposition Q3
fPosQ4 | LREAL | Startposition Q4
fPosQ5 | LREAL | Startposition Q5

ST_NciGeoLine

TYPE ST_NciGeoLine :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeGeoLine; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fEndPosX: LREAL;
fEndPosY: LREAL;
fEndPosZ: LREAL;
fEndPosQ1: LREAL;
fEndPosQ2: LREAL;
fEndPosQ3: LREAL;
fEndPosQ4: LREAL;
fEndPosQ5: LREAL;
fVelo: LREAL;
bRapidTraverse: BOOL;
bAccurateStop: BOOL; (* VeloEnd := 0 *)
END_STRUCT
END_TYPE

Beschreibt eine Gerade mit spezifizierter Geschwindigkeit.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fEndPosX | LREAL | Zielposition X
fEndPosY | LREAL | Zielposition Y
fEndPosZ | LREAL | Zielposition Z
fEndPosQ1 | LREAL | Zielposition Q1
fEndPosQ2 | LREAL | Zielposition Q2
fEndPosQ3 | LREAL | Zielposition Q3
fEndPosQ4 | LREAL | Zielposition Q4
fEndPosQ5 | LREAL | Zielposition Q5
fVelo | LREAL | Zielbahngeschwindigkeit, wie F in G-Code, alledings in Basiseinheiten pro Sekunde (z.B. mm/s)
bRapidTraverse | BOOL | TRUE hat dieselbe Wirkung wie G0 FALSE behandelt diesen Eintrag wie G01
bAccurateStop | BOOL | TRUE hat dieselbe Wirkung wie G60

ST_NciGeoCirclePlane

TYPE ST_NciGeoCirclePlane :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeGeoCirclePlane; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fEndPosX: LREAL;
fEndPosY: LREAL;
fEndPosZ: LREAL;
fCenterX: LREAL;
fCenterY: LREAL;
fCenterZ: LREAL;
fEndPosQ1: LREAL;
fEndPosQ2: LREAL;
fEndPosQ3: LREAL;
fEndPosQ4: LREAL;
fEndPosQ5: LREAL;
fVelo: LREAL;
bClockwise: BOOL;
bAccurateStop: BOOL; (* VeloEnd := 0 *)
nPlane: E_NciGeoPlane := E_NciGeoPlaneXY;
END_STRUCT
END_TYPE

Beschreibt einen Kreis in der Hauptebene. Der Mittelpunkt ist in absoluten Koordinaten.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fEndPosX | LREAL | Zielposition X
fEndPosY | LREAL | Zielposition Y
fEndPosZ | LREAL | Zielposition Z
fCenterX | LREAL | Mittelposition X in absoluten Koordinaten
fCenterY | LREAL | Mittelposition Y in absoluten Koordinaten
fCenterZ | LREAL | Mittelposition Z in absoluten Koordinaten
fEndPosQ1 | LREAL | Zielposition Q1
fEndPosQ2 | LREAL | Zielposition Q2
fEndPosQ3 | LREAL | Zielposition Q3
fEndPosQ4 | LREAL | Zielposition Q4
fEndPosQ5 | LREAL | Zielposition Q5
fVelo | LREAL | Zielbahngeschwindigkeit in Basiseinheiten pro Sekunde (z.B. mm/s), wie F in G-Code
bClockwise | BOOL | Wenn TRUE, wird der Kreis im Uhrzeigersinn gezogen, ansonsten gegen den Uhrzeigersinn (ähnlich wie G02, G03)
bAccurateStop | BOOL | TRUE hat dieselbe Wirkung wie G60
nPlane | E_NciGeoPlane | Spezifiziert die Ebene: XY, YZ, oder ZX (ähnlich wie G17..G19)

ST_NciGeoBezier3

TYPE ST_NciGeoBezier3:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeGeoBezier3; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fControlPoint1X: LREAL;
fControlPoint1Y: LREAL;
fControlPoint1Z: LREAL;
fControlPoint2X: LREAL;
fControlPoint2Y: LREAL;
fControlPoint2Z: LREAL;
fEndPosX: LREAL;
fEndPosY: LREAL;
fEndPosZ: LREAL;
fEndPosQ1: LREAL;
fEndPosQ2: LREAL;
fEndPosQ3: LREAL;
fEndPosQ4: LREAL;
fEndPosQ5: LREAL;
fVelo: LREAL;
bAccurateStop: BOOL; (* VeloEnd := 0 *)
END_STRUCT
END_TYPE

Beschreibt einen Bezier dritter Ordnung mit Hilfe von Kontrollpunkten. Die Startposition ergibt sich aus dem vorherigen Segment. Der dritte Kontrollpunkt wird durch die Zielposition vorgegeben.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fControlPoint1X | LREAL | X Komponente Kontrollpunkt 1
fControlPoint1Y | LREAL | Y Komponente Kontrollpunkt 1
... |  |
fControlPoint2Z | LREAL | Z Komponente Kontrollpunkt 2
fEndPosX | LREAL | Zielposition X
fEndPosY | LREAL | Zielposition Y
fEndPosZ | LREAL | Zielposition Z
fEndPosQ1 | LREAL | Zielposition Q1
fEndPosQ2 | LREAL | Zielposition Q2
fEndPosQ3 | LREAL | Zielposition Q3
fEndPosQ4 | LREAL | Zielposition Q4
fEndPosQ5 | LREAL | Zielposition Q5
fVelo | LREAL | Zielbahngeschwindigkeit in Basiseinheiten pro Sekunde (z.B. mm/s), wie F in G-Code
bAccurateStop | BOOL | TRUE hat dieselbe Wirkung wie G60

ST_NciGeoBezier5

ab Library Version 1.1.31

TYPE ST_NciGeoBezier5:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeGeoBezier5; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fControlPoint1X: LREAL;
fControlPoint1Y: LREAL;
fControlPoint1Z: LREAL;
fControlPoint2X: LREAL;
fControlPoint2Y: LREAL;
fControlPoint2Z: LREAL;
fControlPoint3X: LREAL;
fControlPoint3Y: LREAL;
fControlPoint3Z: LREAL;
fControlPoint4X: LREAL;
fControlPoint4Y: LREAL;
fControlPoint4Z: LREAL;
fEndPosX: LREAL;
fEndPosY: LREAL;
fEndPosZ: LREAL;
fEndPosQ1: LREAL;
fEndPosQ2: LREAL;
fEndPosQ3: LREAL;
fEndPosQ4: LREAL;
fEndPosQ5: LREAL;
fVelo: LREAL;
bAccurateStop: BOOL; (* VeloEnd := 0 *)
END_STRUCT
END_TYPE

Beschreibt einen Bezier 5ter Ordnung mit Hilfe von Kontrollpunkten. Die Startposition ergibt sich aus dem vorherigen Segment. Der 5 te Kontrollpunkt wird durch die Zielposition vorgegeben.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fControlPoint1X | LREAL | X Komponente Kontrollpunkt 1
fControlPoint1Y | LREAL | Y Komponente Kontrollpunkt 1
... |  |
fControlPoint4Z | LREAL | Z Komponente Kontrollpunkt 4
fEndPosX | LREAL | Zielposition X
fEndPosY | LREAL | Zielposition Y
fEndPosZ | LREAL | Zielposition Z
fEndPosQ1 | LREAL | Zielposition Q1
fEndPosQ2 | LREAL | Zielposition Q2
fEndPosQ3 | LREAL | Zielposition Q3
fEndPosQ4 | LREAL | Zielposition Q4
fEndPosQ5 | LREAL | Zielposition Q5
fVelo | LREAL | Zielbahngeschwindigkeit in Basiseinheiten pro Sekunde (z.B. mm/s), wie F in G-Code
bAccurateStop | BOOL | TRUE hat dieselbe Wirkung wie G60

ST_NciMFuncHsk

TYPE ST_NciMFuncHsk :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeMFuncHsk; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nMFunc: INT;
END_STRUCT
END_TYPE

Beschreibt eine M-Funktion des Typs Handshake. Die M-Funktionsnummer liegt zwischen 0 und 159

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nMFunc | INT | M-Funktionsnummer (0..159)

ST_NciMFuncFast

TYPE ST_NciMFuncFast :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeMFuncFast; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nMFuncIn0: INT;
nMFuncIn1: INT;
nMFuncIn2: INT;
nMFuncIn3: INT;
nMFuncIn4: INT;
nMFuncIn5: INT;
nMFuncIn6: INT;
nMFuncIn7: INT;
END_STRUCT
END_TYPE

Parametriert bis zu 8 schnelle M-Funktionen. Die erste M-Funktion muss nMFuncIn0 zugewiesen werden, die zweite nMFuncIn1 usw. -1 gibt das Ende der Zuweisungen an.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nMFuncIn0 | INT | schnelle M-Funktionsnummer (0..159)
nMFuncIn1 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn2 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn3 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn4 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn5 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn6 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.
nMFuncIn7 | INT | schnelle M-Funktionsnummer (0..159) -1 gibt das Ende der Liste an.

ST_NciMFuncResetAllFast

TYPE ST_NciMFuncResetAllFast :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeMFuncResetAllFast; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
END_STRUCT
END_TYPE

Setzt alle schnellen M-Funktionen zurück.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code

ST_NciHParam

TYPE ST_NciHParam :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeHParam; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nHParam: UDINT;
END_STRUCT
END_TYPE

Stellt einen H-Parameter im zyklischen Kanalinterface ein.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nHParam | UDINT | H-Parameter von der NC zur SPS

ST_NciSParam

TYPE ST_NciSParam :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeSParam; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nSParam: UINT;
END_STRUCT
END_TYPE

Setzt einen S-Parameter im zyklischen Kanalinterface.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nSParam | UINT | S-Parameter von der NC zur SPS

ST_NciTParam

TYPE ST_NciTParam :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeTParam; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nTParam: UINT;
END_STRUCT
END_TYPE

Setzt einen T-Parameter im zyklischen Kanalinterface.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nTParam | UINT | T-Parameter von der NC zur SPS

ST_NciDynOvr

TYPE ST_NciDynOvr :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeDynOvr; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fDynOvr: LREAL;
END_STRUCT
END_TYPE

Modalfunktion zur Änderung der Bahndynamik.

Vergleiche DynOvr in Interpreter-Dokumentation.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fDynOvr | LREAL | Wert für dynamischen Override ( 0.01 < fDynOvr <= 1)

ST_NciVertexSmoothing

seit Library Build 11

TYPE ST_NciVertexSmoothing :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeVertexSmoothing; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nType: UDINT; (* Art der Verschleifung, z.B. Parabel- oder Bi-quadratische-Verschleifung *)
nSubtype: UDINT; (* z.B. adaptiver, konstanter Radius *)
fRadius: LREAL; (* max. Radius für Toleranzkugel*)
END_STRUCT
END_TYPE

Modalfunktion zur Aktivierung der Vertex-Verschleifung.

Es befindet sich eine detaillierte Beschreibung des Parameters in der Interpreter-Dokumentation (paramVertexSmoothing).

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nType | UDINT | Verschleifungsart (z.B. Parabel=2, Bi-quadratisch=3, Bezier 3. Ordnung=4, Bezier 5. Ordnung=5)
nSubtype | UDINT | 1: konstanter Toleranzradius, 3: adaptiver Toleranzradius

ST_NciBaseFrame

seit Library Build 21

TYPE ST_NciBaseFrame:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeBaseFrame; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fShfitX: LREAL;
fShiftY: LREAL;
fShiftZ: LREAL;
fRotX: LREAL;
fRotY: LREAL;
fRotZ: LREAL;
fShiftQ1: LREAL;
fShiftQ2: LREAL;
fShiftQ3: LREAL;
fShiftQ4: LREAL;
fShiftQ5: LREAL;
END_STRUCT
END_TYPE

Die Struktur ST_NciBaseFrame beschreibt eine modale Nullpunktverschiebung und Rotation. Dabei ist die Wirkungsweise die gleiche wie die Nullpunktverschiebung und Rotation im Interpreter. D.h. der Punkt um den rotiert wird, ist der aktuelle Nullpunkt (vergl. Rotation in der Interpreterdokumentation)

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fShiftX | LREAL | Nullpunktverschiebung in X-Richtung
fShiftY | LREAL | Nullpunktverschiebung in Y-Richtung
fShiftZ | LREAL | Nullpunktverschiebung in Z-Richtung
fRotX | LREAL | Rotation der X-Achse
fRotY | LREAL | Rotation der Y-Achse
fRotZ | LREAL | Rotation der Z-Achse
fShiftQ1 | LREAL | Offset der Q1-Achse
fShfitQ2 | LREAL | Offset der Q2-Achse
fShiftQ3 | LREAL | Offset der Q3-Achse
fShiftQ4 | LREAL | Offset der Q4-Achse
fShiftQ5 | LREAL | Offset der Q5-Achse

ST_NciPathDynamics

Seit library Build 22

TYPE ST_NciPathDynamics:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypePathDynamics; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fAcc: LREAL;
fDec: LREAL;
fJerk: LREAL;
END_STRUCT
END_TYPE

Die Struktur ST_NciPathDynamics setzt die Dynamik (Beschleunigung, Verzögerung, Ruck) auf der Bahn. Dabei ist die Wirkungsweise die gleiche wie paramPathDynamics im Interpreter (vergl. paramPathDynamics in der Interpreterdokumentation)

Eingang | Datentype | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fAcc | LREAL | Maximal erlaubte Bahnbeschleunigung
fDec | LREAL | Maximal erlaubte Bahnverzögerung
fJerk | LREAL | Maximal erlaubter Bahnruck

ST_NciAxisDynamics

Seit library Build 30

TYPE ST_NciAxisDynamics:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeAxisDynamics; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
nAxis: UDINT;
fAcc: LREAL;
fDec: LREAL;
fJerk: LREAL;
END_STRUCT
END_TYPE

Die Struktur ST_NciAxisDynamics setzt die Dynamik (Beschleunigung, Verzögerung, Ruck) auf der Bahnachsen. Dabei ist die Wirkungsweise die gleiche wie paramAxisDynamics im Interpreter (vergl. paramAxisDynamics in der Interpreterdokumentation)

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | >diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
nAxis | UDINT | Achse in der Interpolationsgruppe X:0 Y:1 Z:2 Q1:3 ... Q5:7
fAcc | LREAL | Maximal erlaubte Achsbeschleunigung
fDec | LREAL | Maximal erlaubte Achsverzögerung
fJerk | LREAL | Maximal erlaubter Achsruck

ST_NciDwellTime

Seit library build 30

TYPE ST_NciDwellTime:
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeDwellTime; (* diesen Parameter nicht überschreiben *)
nDisplayIndex: UDINT;
fDwellTime: LREAL;
END_STRUCT
END_TYPE

Mit der Struktur ST_NciDwellTime wird eine Verweilzeit eingeschaltet (vergl. Verweilzeit in der Interpreterdokumentation)

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | diesen Parameter nicht überschreiben
nDisplayIndex | UDINT | Zu Anzeigezwecken, wie Satznummer im G-Code
fDwellTime | LREAL | Verweilzeit in Sekunden

ST_NciTangentialFollowingDesc

TYPE ST_NciTangentialFollowingDesc :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeTfDesc; (* diesen Parameter nicht überschreiben *)
bTangOn: BOOL;
nTangAxis: E_NciAxesInGroup; (* Achse verwendet für tangentiale Nachführung *)
nPathAxis1: E_NciAxesInGroup; (* Beschreibung der Ebene z.B. x *)
nPathAxis2: E_NciAxesInGroup; (* z.B. y ==> g17, xy Ebene *)
fOffset: LREAL; (* Geotangente ist 0 Grad, Zählrichtung ist mathematisch positiv *)
fCriticalAngle1: LREAL;
nTfBehavior: E_TangentialFollowingBehavior; (* was tun wenn der Winkel größer wird als der kritische Winkel 1 *)
END_STRUCT
END_TYPE

Dies ist ein Modalbefehl zur Ein-/Ausschaltung der tangentialen Nachführung.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben
bTangOn | BOOL | Wenn TRUE, wird die tangentiale Nachführung eingeschaltet
nTangAxis | E_NciAxesInGroup | Achse (Q1..Q5), die als Tangentialachse verwendet wird
nPathAxis1 | E_NciAxesInGroup | Erste Bahnachse, die die Ebene und Ausrichtung zur Berechnung der Tangente beschreibt
nPathAxis2 | E_NciAxesInGroup | Zweite Bahnachse, die die Ebene und Ausrichtung zur Berechnung der Tangente beschreibt
fOffset | LREAL | Offset der Tangentialachse
fCritialAngle1 | LREAL | Kritischer Winkel 1. Die Reaktion, wenn der Winkel zwischen zwei Segmenten größer ist als fCriticalAngle1, wird mit nTfBehavior spezifiziert
nTfBehavior | E_TangentialFollowingBehavior | siehe fCriticalAngle1

ST_NciEndOfTables

TYPE ST_NciEndOfTables :
STRUCT
nEntryType: E_NciEntryType := E_NciEntryTypeEndOfTables; (* diesen Parameter nicht überschreiben *)
END_STRUCT
END_TYPE

Gibt den letzten Eintrag der letzten Tabelle an. Wird verwendet zur Signalisierung der bChannelDone-Flag in FB_NciFeedTable.

Eingang | Datentyp | Beschreibung
nEntryType | E_NciEntryType | Diesen Parameter nicht überschreiben

E_NciGeoPlane

TYPE E_NciGeoPlane :
(
E_NciGeoPlaneXY := 17,
E_NciGeoPlaneZX := 18,
E_NciGeoPlaneYZ := 19
);
END_TYPE

E_NciAxesInGroup

TYPE E_NciAxesInGroup :
(
NoneAxis := 0,
XAxis,
YAxis,
ZAxis,
Q1Axis,
Q2Axis,
Q3Axis,
Q4Axis,
Q5Axis
);
END_TYPE

E_TangentialFollowingBehavior

TYPE E_TangentialFollowingBehavior :
(
E_TfIngoreAll, (* nicht um kritischen Winkel kümmern *)
E_TfErrorOnCritical1 (* wenn Winkel größer wird als kritischer Winkel1 ==> Fehler *)
);
END_TYPE

Entwicklungsumgebung | Zielsystem | Einzubindende SPS-Bibliotheken
TwinCAT v2.10.0 | PC (i386) | TcPlcInterpolation.lib