Achs-Interface NC → SPS (128 Byte)
TYPE NCTOPLC_AXLESTRUCT
TYPE NCTOPLC_AXLESTRUCT
STRUCT
nStateDWord : DWORD; (* Status double word *)
nErrorCode : DWORD; (* Axis error code *)
nAxisState : DWORD; (* Axis moving status *)
nAxisModeCon : DWORD; (* Axis mode confirmation (feedback from NC) *)
nCalibrationState : DWORD; (* State of axis calibration (homing) *)
nCoupleState : DWORD; (* Axis coupling state *)
nSvbEntries : DWORD; (* SVB entries/orders (SVB = Set preparation task) *)
nSafEntries : DWORD; (* SAF entries/orders (SAF = Set execution task *)
nAxisId : DWORD; (* Axis ID *)
nOpModeDWord : DWORD; (* Current operation mode *)
nReserved2_HIDDEN : DWORD; (* reserved *)
fPosIst : LREAL; (* Actual position (absolut value from NC) *)
fModuloPosIst : LREAL; (* Actual position as modulo value (e.g. in degrees) *)
nModuloTurns : DINT; (* Actual modulo turns *)
fVeloIst : LREAL; (* Actual velocity (optional) *)
fPosDiff : LREAL; (* Position difference (lag distance) *)
fPosSoll : LREAL; (* Setpoint position *)
fVeloSoll : LREAL; (* Setpoint velocity *)
fAccSoll : LREAL; (* Setpoint acceleration, OLD: "fReserve1_HIDDEN" *)
fReserve2_HIDDEN : LREAL; (* reserved *)
fReserve3_HIDDEN : LREAL; (* reserved *)
fReserve4_HIDDEN : LREAL; (* reserved *)
END_STRUCT
END_TYPE
TYPE NCTOPLC_AXLESTRUCT2
TYPE NCTOPLC_AXLESTRUCT2
STRUCT
nStateDWord : DWORD; (* Status double word *)
nErrorCode : DWORD; (* Axis error code *)
nAxisState : DWORD; (* Axis moving status *)
nAxisModeCon : DWORD; (* Axis mode confirmation (feedback from NC) *)
nCalibrationState : DWORD; (* State of axis calibration (homing) *)
nCoupleState : DWORD; (* Axis coupling state *)
nSvbEntries : DWORD; (* SVB entries/orders (SVB = Set preparation task) *)
nSafEntries : DWORD; (* SAF entries/orders (SAF = Set execution task *)
nAxisId : DWORD; (* Axis ID *)
nOpModeDWord : DWORD; (* Current operation mode *)
nActiveControlLoopIndex : WORD; (* Active control loop index (equivalent to old variable "nCtrlLoopIndex") *)
nControlLoopIndex : WORD; (* Axis control loop index (0, 1, 2, … when multiple control loops are used) *)
fPosIst : LREAL; (* Actual position (absolut value from NC) *)
fModuloPosIst : LREAL; (* Actual position as modulo value (e.g. in degrees) *)
nModuloTurns : DINT; (* Actual modulo turns *)
fVeloIst : LREAL; (* Actual velocity (optional) *)
fPosDiff : LREAL; (* Position difference (lag distance) *)
fPosSoll : LREAL; (* Setpoint position *)
fVeloSoll : LREAL; (* Setpoint velocity *)
fAccSoll : LREAL; (* Setpoint acceleration, OLD: "fReserve1_HIDDEN" *)
fPosTarget : LREAL; (* Estimated target position *)
fModuloPosSoll : LREAL; (* Setpoint modulo position (e.g. in degrees) *)
nModuloTurnsSoll : DINT; (* Setpoint modulo turns *)
nCmdNo : WORD; (* Continuous actual command number *)
nCmdState : WORD; (* Command state *)
END_STRUCT
END_TYPE
Nr. | Datentyp | Byte | Bit | Def.-Bereich | Variablenname | Variablenname | Beschreibung |
---|---|---|---|---|---|---|---|
1 | UINT32 | 0-3 | - | - | nStateDWord | StateDWord | Status-Doppelwort. |
|
|
| 0 | 0/1 | Operational | Operational | Achse ist betriebsbereit |
|
|
| 1 | 0/1 | Homed | Homed | Achse ist referenziert („Achse geeicht“) |
|
|
| 2 | 0/1 | NotMoving | NotMoving | Achse ist im logischen Stillstand („Achse fährt nicht“) |
|
|
| 3 | 0/1 | InPositionArea | InPositionArea | Achse ist im Positionsbereichsfenster (physikalische Rückmeldung) |
|
|
| 4 | 0/1 | InTargetPosition | InTargetPosition | Achse ist in Zielposition (PEH) (physikalische Rückmeldung) |
|
|
| 5 | 0/1 | Protected | Protected | Achse ist in geschützter Betriebsart (z. B. Slave-Achse) |
|
|
| 6 | 0/1 | ErrorPropagationDelayed | ErrorPropagationDelayed | Achse signalisiert eine Fehlervorwarnung (ab TC 2.11) |
|
|
| 7 | 0/1 | HasBeenStopped | HasBeenStopped | Achse ist gestoppt worden bzw. führt einen Stopp aus |
|
|
| 8 | 0/1 | HasJob | HasJob | Achse hat Auftrag, führt Auftrag aus |
|
|
| 9 | 0/1 | PositiveDirection | PositiveDirection | Achse fährt logisch größer |
|
|
| 10 | 0/1 | NegativeDirection | NegativeDirection | Achse fährt logisch kleiner |
|
|
| 11 | 0/1 | HomingBusy | HomingBusy | Achse referenziert („Achse wird geeicht“) |
|
|
| 12 | 0/1 | ConstantVelocity | ConstantVelocity | Achse hat V-Konst bzw. Drehzahl erreicht |
|
|
| 13 | 0/1 | Compensating | Compensating | Streckenkompensation passiv[0]/aktiv[1] (siehe MC_MoveSuperImposed) |
|
|
| 14 | 0/1 | ExtSetPointGenEnabled | ExtSetPointGenEnabled | Externe Sollwertgenerierung freigegeben |
|
|
| 15 | 0/1 |
|
| Betriebsart noch nicht ausgeführt (Busy). Noch nicht freigegeben! |
|
|
| 16 | 0/1 | ExternalLatchValid | ExternalLatchValid | Externer Latchwert bzw. Messtaster gültig geworden |
|
|
| 17 | 0/1 | NewTargetPos | NewTargetPos | Achse hat neue Endposition bzw. neue Geschwindigkeit erhalten |
|
|
| 18 | 0/1 |
|
| Achse nicht in Zielposition bzw. kann/wird diese nicht erreichen (z. B. Achs-Stopp). Noch nicht freigegeben! |
|
|
| 19 | 0/1 | ContinuousMotion | ContinuousMotion | Achse führt Endlos-Positionierauftrag aus |
|
|
| 20 | 0/1 | ControlLoopClosed | ControlLoopClosed | Achse betriebsbereit und Achsregelkreis geschlossen (z.B. Lageregelung) |
|
|
| 21 | 0/1 | CamTableQueued | CamTableQueued | Neue Tabelle steht für „Online Change“ bereit und wartet auf Aktivierung |
|
|
| 22 | 0/1 | CamDataQueued | CamDataQueued | Tabellendaten (MF) stehen für „Online Change“ bereit und warten auf Aktivierung |
|
|
| 23 | 0/1 | CamScalingPending | CamScalingPending | Tabellenskalierungen stehen für „Online Change“ bereit und warten auf Aktivierung |
|
|
| 24 | 0/1 | CmdBuffered | CmdBuffered | Nachfolgekommando liegt im Auftragspuffer bereit (siehe Buffer Mode) (ab TwinCAT V2.10 Build 1311) |
|
|
| 25 | 0/1 | PTPmode | PTPmode | Achse in PTP Betriebsart (kein Slave, keine NCI-Achse, keine FIFO-Achse) (ab TC 2.10 Build 1326) |
|
|
| 26 | 0/1 | SoftLimitMinExceeded | SoftLimitMinExceeded | Software Endlage Minimum ist aktiv/belegt (ab TC 2.10 Build 1327) |
|
|
| 27 | 0/1 | SoftLimitMaxExceeded | SoftLimitMaxExceeded | Software Endlage Maximum ist aktiv/belegt (ab TC 2.10 Build 1327) |
|
|
| 28 | 0/1 | DriveDeviceError | DriveDeviceError | Antriebshardware hat einen Fehler (keine Warnung), Interpretation nur möglich wenn Antrieb im IO-Datenaustausch, z. B. EtherCAT „OP“-State (ab TC 2.10 Build 1326) |
|
|
| 29 | 0/1 | MotionCommandsLocked | MotionCommandsLocked | Achse ist gesperrt für Bewegungskommandos (TcMc2) |
|
|
| 30 | 0/1 | IoDataInvalid | IoDataInvalid | IO Daten ungültig (z. B. „WcState“ oder „CdlState“ des Feldbusses) |
|
|
| 31 | 0/1 | Error | Error | Achse ist im Fehlerzustand |
|
|
|
|
|
|
|
|
2 | UINT32 | 4-7 | - | ≥0 | nErrorCode | ErrorCode | Fehlercode Achse |
3 | UINT32 | 8-11 | - | ENUM | nAxisState | AxisState | Bewegungszustand der Achse |
4 | UINT32 | 12-15 | - | ENUM | nAxisModeCon | AxisModeConfirmation | Betriebsart der Achse (Rückmeldung der NC) |
5 | UINT32 | 16-19 | - | ENUM | nCalibrationState | HomingState | Referenzierstatus der Achse („Eichstatus“) |
6 | UINT32 | 20-23 | - | ENUM | nCoupleState | CoupleState | Koppelstatus der Achse |
7 | UINT32 | 24-27 | - | ≥0 | nSvbEntries | SvbEntries | SVB-Einträge/Aufträge |
8 | UINT32 | 28-31 | - | ≥0 | nSafEntries | SafEntries | SAF-Einträge/Aufträge (NC-Interpreter, Fifo-Gruppe) |
9 | UINT32 | 32-35 | - | >0 | nAxisId | AxisId | Achs-ID |
10 | UINT32 | 36-39 | - | - | nOpModeDWord, | OpModeDWord, | Achs-Betriebsart-Doppelwort |
|
|
| 0 | 0/1 | PosAreaMonitoring | ...PosAreaMonitoring | Positionsbereichsüberwachung |
|
|
| 1 | 0/1 | TargetPosMonitoring | ...TargetPosMonitoring | Zielpositionsfensterüberwachung |
|
|
| 2 | 0/1 | Loop | ...Loop | Schleifenweg |
|
|
| 3 | 0/1 | MotionMonitoring | ...MotionMonitoring | Physikalische Bewegungsüberwachung |
|
|
| 4 | 0/1 | PEHTimeMonitoring | ...PEHTimeMonitoring | PEH-Zeitüberwachung |
|
|
| 5 | 0/1 | BacklashComp | ...BacklashComp | Losekompensation |
|
|
| 6 | 0/1 | DelayedErrorReaction | ...DelayedErrorReaction | Verzögerte Fehlerreaktion der NC |
|
|
| 7 | 0/1 | Modulo | ...Modulo | Modulo-Achse (Modulo-Anzeige) |
|
|
| 8-15 | 0/1 |
|
| RESERVE |
|
|
| 16 | 0/1 | PosLagMonitoring | ...PosLagMonitoring | Schleppabstandsüberwachung Position |
|
|
| 17 | 0/1 | VeloLagMonitoring | ...VeloLagMonitoring | Schleppabstandsüberwachung Geschwindigkeit |
|
|
| 18 | 0/1 | SoftLimitMinMonitoring | ...SoftLimitMinMonitoring | Endlagenüberwachung Min. |
|
|
| 19 | 0/1 | SoftLimitMaxMonitoring | ...SoftLimitMaxMonitoring | Endlagenüberwachung Max. |
|
|
| 20 | 0/1 | PosCorrection | ...PosCorrection | Positionskorrektur („Messsystemfehlerkompensation“) |
|
|
| 21 | 0/1 | AllowSlaveCommands | ...AllowSlaveCommands | Erlaube Bewegungskommandos an Slave-Achsen |
|
|
| 22 | 0/1 |
|
| RESERVE |
|
|
| 23 | 0/1 | ApplicationRequest | ApplicationRequest | Anforderungs-Bit für die Anwendersoftware (SPS-Code) für z. B. einen „ApplicationHomingRequest“ ab TwinCAT V2.11 Build 1546 |
|
|
| 24-31 | 0/1 |
|
| RESERVE |
11 | UINT16 | 40-41 | - | ≥0 | nActiveControlLoopIndex | ActiveControlLoopIndex | Aktiver Achsregelkreis Index (identisch mit alter Variable "nCtrlLoopIndex") ab TwinCAT V2.10 Build 1311 |
12 | UINT16 | 42-43 | - | ≥0 | nControlLoopIndex | ControlLoopIndex | Achsregelkreis Index (0, 1, 2, wenn mehrere Achsregelkreise verwendet werden) ab TwinCAT V2.10 Build 1311 |
13 | REAL64 | 44-51 | - | ±∞ | fPosIst | ActPos | Istposition (verrechneter Absolutwert) |
14 | REAL64 | 52-59 | - | >∞ | fModuloPosIst | ModuloActPos | Modulo-Istposition (verrechneter Wert z.B. in Grad) |
15 | INT32 | 60-63 | - | ±∞ | nModuloTurns | ModuloActTurns | Modulo-Ist-Umdrehungen |
16 | REAL64 | 64-71 | - | ±∞ | fVeloIst | ActVelo | Istgeschwindigkeit (optional) |
17 | REAL64 | 72-79 | - | ±∞ | fPosDiff | PosDiff | Schleppabstand (Position) |
18 | REAL64 | 80-87 | - | ±∞ | fPosSoll | SetPos | Sollposition (verrechneter Absolutwert) |
19 | REAL64 | 88-95 | - | ±∞ | fVeloSoll | SetVelo | Sollgeschwindigkeit |
20 | REAL64 | 96-103 | - | ±∞ | fAccSoll | SetAcc | Sollbeschleunigung |
21 | REAL64 | 104-111 | - | ±∞ | fPosTarget | TargetPos | Voraussichtliche Zielposition der Achse ab TwinCAT V2.10 Build 1311 |
22 | REAL64 | 112-119 | - | >∞ | fModuloPosSoll | ModuloSetPos | Modulo Sollposition (verrechneter Wert z.B. in Grad) ab TwinCAT V2.10 Build 1311 |
23 | INT32 | 120-123 | - | ±∞ | nModuloTurnsSoll | ModuloSetTurns | Modulo Soll-Umdrehungen ab TwinCAT V2.10 Build 1311 |
24 | UINT16 | 124-125 | - | ≥0 | nCmdNo | CmdNo | Kommandonummer des aktiven Auftrags der Achse (siehe Buffer Mode) ab TwinCAT V2.10 Build 1311 |
25 | UINT16 | 126-127 | - | ≥0 | nCmdState | CmdState | Kommando Statusinformation (siehe Buffer Mode) ab TwinCAT V2.10 Build 1311 |
Beschreibung der Inhalte der einzelnen Felder:
Define | Referenzierstatus der Achse (nCalibrationState bzw. HomingState) |
---|---|
0 | Referenziervorgang fertig (READY) |
1 | Endlosstart in Richtung der Referenziernocke. Info: Wenn die Nocke zu Beginn belegt ist, dann wird direkt mit Referenzierstatus 3 begonnen. |
2 | Warten auf positive Flanke der Referenziernocke und Achsstopp einleiten |
3 | Warten bis Achse im Stillstand (Prüfung ob Nocke noch belegt ist) und dann Endlosstart vom Referenziernocken in Richtung Syncimpuls |
4 | Warten auf fallende Flanke der Referenziernocke |
5 | Latch aktivieren, warten bis Latch gültig geworden ist und dann den Achsstopp einleiten |
6 | Wenn Achse im Stillstand dann Istposition setzen (Istposition = Referenzposition + Bremsweg) |
Siehe auch: Anmerkungen zu MC_Home
Define | Koppelstatus der Achse (nCoupleState bzw. CoupleState) |
---|---|
0 | Singleachse, die weder Master noch Slave ist (SINGLE) |
1 | Masterachse mit beliebiger Anzahl Slaves (MASTER) |
2 | Slave-Achse, die Master eines anderen Slaves ist (MASTER-SLAVE) |
3 | Nur Slave-Achse (SLAVE) |
Define | Master: Bewegungszustand / Fahrphase der kontinuierlichen Masterachse (Servo) (nAxisState bzw. AxisState) |
0 | Sollwertgenerator nicht aktiv (INACTIVE) |
1 | Sollwertgenerator aktiv (RUNNING) |
2 | Geschwindigkeitsoverride ist Null (OVERRIDE_ZERO) |
3 | Konstante Geschwindigkeit (PHASE_VELOCONST) |
4 | Beschleunigungsphase (PHASE_ACCPOS) |
5 | Verzögerungsphase (PHASE_ACCNEG) |
Define | Master: Bewegungszustand / Fahrphase der diskreten Masterachse (Eil/Schleich) (nAxisState bzw. AxisState) |
0 | Sollwertgenerator nicht aktiv |
1 | Fahrphase (Eilgang bzw. Schleichgang) |
2 | Umschaltverzögerung von Eil- auf Schleichgang |
3 | Schleichfahrt (innerhalb vom Schleichweg) |
4 | Bremszeit (beginnend ab Bremsweg vor dem Ziel) |
Define | Slave: Bewegungszustand / Fahrphase der kontinuierlichen Slaveachse (Servo) (nAxisState bzw. AxisState) |
0 | Slavegenerator nicht aktiv (INACTIVE) |
11 | Slave befindet sich in einer Bewegungs-Vorphase (PREPHASE) |
12 | Slave ist am Aufsynchronisieren (SYNCHRONIZING) |
13 | Slave ist aufsynchronisiert und fährt synchron (SYNCHRON) |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 | PC (i386) | PlcNc.Lib |
TwinCAT v2.8.0 | PC (i386) | TcNC.Lib |