Einführung
CiA 402, alternativ auch als DS 402 / Device Standard 402 bezeichnet, ist ein Geräteprofil für Antriebe und Bewegungssteuerung, das von der CAN in Automation (CiA)-Organisation definiert wurde. Es spezifiziert ein universelles Interface und standardisiertes Verhalten zur Steuerung elektrischer Antriebe — wie Servoantriebe, Servorregler, Frequenzumrichter und ähnliche Geräte. Es ist als "CANopen Device Profile" Bestandteil des CANopen-Protokolls, findet jedoch auch in EtherCAT, POWERLINK- und anderen Applikationsprotokollen wie TCP/IP zum Einsatz. Das CiA 402 Geräteprofil ist in der Norm IEC61800-7-201 spezifiziert als Profil Typ 1 - CiA402 Drive Profile for power drive systems (PDS).
Dieser Abschnitt bietet einen Überblick über die zentralen Aspekte von CiA 402, mit Fokus auf die Antriebszustände / CiA 402 State Machine, das Haupt-Controlword (6040h) und Statusword (6041h), gängige Betriebsmodi (6060h) sowie eine Zusammenfassung weiterer wesentlicher Standardobjekte des Objektverzeichnisses / Object Dictionary.
Die CiA 402 State Machine
Im Zentrum des CiA 402 Profils steht die State Machine (PDS FSA, Power Drive System - Finite State Automat), welche die zulässigen Zustände und Übergänge eines Antriebs definiert. Die State Machine sorgt durch die Definition erlaubter Aktionen und erforderlicher Reaktionen in verschiedenen Betriebszuständen für eine sichere und vorhersehbare Steuerung von Bewegungsachsen.
Hauptzustände
•Not Ready to Switch On: Anfangszustand nach dem Einschalten. Der Antrieb ist nicht bereit, um Bewegungen auszuführen.
•Switch On Disabled: Antrieb darf nicht freigeschaltet werden (z.B. nach Fehler oder während Initialisierung).
•Ready to Switch On: Interne Prüfungen abgeschlossen; Antrieb kann freigeschaltet werden.
•Switched On: Antrieb ist bereit für Enable-Befehl.
•Operation Enabled: Der Antrieb kann Bewegungsbefehle ausführen.
•Quick Stop Active: Quick Stop ist aktiviert, der Antrieb stoppt so schnell wie möglich.
•Fault Reaction Active: Der Antrieb reagiert auf einen erkannten Fehler—er führt entsprechende Sicherheitsmaßnahmen durch.
•Fault: Ein Fehlerzustand wurde erkannt; der Antrieb muss zurückgesetzt werden.
Übergänge
Zustandsübergänge werden von Bits im Controlword (6040h) gesteuert, das vom Master an das Gerät gesendet wird. Der Antrieb meldet seinen aktuellen Zustand über das Statusword (6041h) zurück.
Eine detaillierte Beschreibung ist in der CiA 402 Spezifikation enthalten.
Controlword (6040h Objekt)
Das Controlword ist das zentrale Steuerobjekt (Index 6040h), mit dem der Master den Zustand und das Verhalten des Antriebs steuert. Es handelt sich um ein 16-Bit-Wort, wobei jedes Bit (bzw. Bitgruppen) bestimmte Aktionen oder Anforderungen am Antrieb auslösen, wie Zustandswechsel oder Bewegungsbefehle.
Wichtige Bit-Funktionen
Bit |
Name |
Beschreibung |
0 |
Switch On |
Fordert das Einschalten des Antriebs an |
1 |
Enable Voltage |
Schaltet die interne Spannungsversorgung frei |
2 |
Quick Stop |
Fordert schnelles Stoppen der Bewegung an |
3 |
Enable Operation |
Vollständige Freischaltung der Achse |
7 |
Fault Reset |
Fehler quittieren/zurücksetzen |
8 |
Halt |
Bewegung anhalten ohne den Antrieb zu deaktivieren |
9 |
Operation Mode Specific |
Wird in bestimmten Betriebsmodi verwendet |
10 |
Reserved |
- |
11-15 |
Hersteller-spezifisch |
- |
Die Kombination und zeitliche Abfolge dieser Bits bestimmen exakt, wie die State Machine zwischen Zuständen wechselt. Zum Beispiel: Für den Wechsel von „Switch On Disabled“ zu „Operation Enabled“ müssen die Bits 0, 1 und 2 gesetzt werden, anschließend Bit 3.
Statusword (6041h Objekt)
Das Statusword (Index 6041h) ist ein 16-Bit-Wort, das vom Antrieb an den Master gesendet wird und den aktuellen Status signalisiert. Durch das Auslesen des Statuswords erkennt der Master den aktuellen Zustand des Antriebs in der CiA 402 State Machine.
Repräsentative Bit-Bedeutungen
Bit |
Name |
Beschreibung |
0 |
Ready to Switch On |
Antrieb ist bereit zum Freischalten |
1 |
Switched On |
Antrieb ist freigeschaltet |
2 |
Operation Enabled |
Antrieb ist für Bewegungen freigegeben |
3 |
Fault |
Fehler liegt vor |
4 |
Voltage Enabled |
Interne Spannung liegt an |
5 |
Quick Stop |
Quick Stop Funktion ist aktiv |
6 |
Switch On Disabled |
Antrieb ist deaktiviert |
7 |
Warning |
Warnung liegt vor (kein Fehler) |
8 |
Manufacturer Specific |
*1) |
9 |
remote |
|
10 |
target reached |
Position ist innerhalb der Ziel-Toleranz |
11 |
internal limit active |
Grenze laut 607D Objekten erreicht |
12,13 |
Operation Mode specific |
- |
14,15 |
Hersteller-spezifisch |
- |
Hinweis:
*1) MovingCap und Festo-Antriebe nutzen dieses Bit für den Zustand „Drive Moving”.
Betriebsarten / Modes of Operation (6060h Objekt)
Operation mode (Index 6060h) bestimmt den Funktionsmodus, in dem der Antrieb arbeitet. Jeder Modus unterstützt ein anderes Steuerparadigma (z.B. Positionsregelung, Geschwindigkeitsregelung, Drehmomentregelung).
6060h Modes of Operation
Wert (Dezimal) |
Mode Name |
Anwendung |
-128 bis -1 |
Hersteller-spez. Modus |
Hersteller-spezifisch |
0 |
Kein Modus zugeordnet |
- |
1 |
Profile Position Mode |
Fährt Position mit definierten Profil |
2 |
Velocity Mode |
(veraltet, meist nicht unterstützt, siehe Mode 3) |
3 |
Profile Velocity Mode |
Fährt Geschwindigkeit mit Profilbeschleunigung |
4 |
Profile Torque Mode |
Steuert Drehmoment gemäß Profil |
6 |
Homing Mode |
Referenzfahrt ("Home"-Position anfahren) |
7 |
Interpolated Position Mode |
Fährt nach interpolierten Positionpunkten |
8 |
Cyclic Synchronous Position |
Synchrone Positionsregelung (Echtzeit) |
9 |
Cyclic Synchronous Velocity |
Synchrone Drehzahlregelung (Echtzeit) |
10 |
Cyclic Synchronous Torque |
Synchrones Drehmoment (Echtzeit) |
Ein Servoantrieb unterstützt in der Regel nur einige der Betriebsmodi gemäß CiA 402. Häufig verwendete Modi sind
•1 = Profile Position Mode,
•3 = Profile Velocity Mode,
•6 = Homing Mode,
•8 = Cyclic Synchronous Position Mode.
Der aktuelle Modus kann mit Modes of operation display (6061h) ausgelesen werden.
Profile Position Mode
Profile Position Mode (PPM, Wert 1 für 6060h) ist einer der grundlegenden Positionsregelungsmodi im CiA 402. In diesem Modus bewegt der Antrieb seine Last zu einer Zielposition entlang eines Bewegungsprofils. Dabei können Parameter wie Geschwindigkeit, Beschleunigung und Verzögerung eingestellt werden, was sanfte und kontrollierte Bewegungen ermöglicht. Der Modus eignet sich für Punkt-zu-Punkt-Positionierung, Ablaufbewegungen oder Indizierungsaufgaben.
Ablauf
1.Betriebsmodus (6060h) auf 1 setzen (Profile Position Mode).
2.Target position (607Ah) und gewünschte Profilparameter setzen.
3.Profile velocity (6081h), profile acceleration (6083h) und profile deceleration (6084h) konfigurieren.
4.Mit dem Controlword die Bewegung starten (z.B. durch Setzen des New Set-point Bits gemäß CiA 402).
5.Statusword und Position actual value (6064h) überwachen, um die Abwicklung zu bestätigen.
Wichtige Objekte für Profile Positioning
Index |
Name |
Beschreibung |
6060h |
Modes of Operation |
Auf 1 setzen für Profile Position Mode |
607Ah |
Target Position |
Zielposition |
6081h |
Profile Velocity |
Maximal zulässige Geschwindigkeit |
6083h |
Profile Acceleration |
Beschleunigungsrate |
6084h |
Profile Deceleration |
Verzögerungsrate |
6064h |
Position Actual Value |
Ist-Position |
6040h |
Controlword |
Bewegt auslösen und Status verwalten |
6041h |
Statusword |
Rückmeldung zum Zustand |
Optional/zusätzliche Objekte:
•60F2h: Positioning Option Code (z.B. "relative" oder "absolute")
•6073h: Max Current – Max. Strom/Drehmoment/Kraft für den Antrieb
•607Dh.01h/607Dh.02h: Software Position Limit – Software-Endschalter
Profile Velocity Mode
Profile Velocity Mode (PVM, Wert 3 für 6060h) ermöglicht es, die Achsgeschwindigkeit direkt vorzugeben, wobei profilierte Beschleunigungs- und Verzögerungsrampen eingehalten werden können. Typische Anwendungen finden sich beispielsweise bei Förderbändern, Lüftern oder anderen Systemen, in denen eine konstante Geschwindigkeit gefordert ist.
Ablauf
1.Betriebsmodus (6060h) auf 3 setzen (Profile Velocity Mode).
2.Target velocity (60FFh) sowie gewünschte profile acceleration/deceleration (6083h/6084h) setzen.
3.Controlword verwenden, um Start, Stop oder Geschwindigkeitsänderungen auszulösen.
4.Velocity actual value (606Ch) und Statusword zur Überwachung auslesen.
Wichtige Objekte für Profile Velocity
Index |
Name |
Beschreibung |
6060h |
Modes of Operation |
Auf 3 setzen für Profile Velocity Mode |
60FFh |
Target Velocity |
Soll-Geschwindigkeit |
6083h |
Profile Acceleration |
Beschleunigungsrampe |
6084h |
Profile Deceleration |
Verzögerungsrampe |
606Ch |
Velocity Actual Value |
Ist-Geschwindigkeit |
6040h |
Controlword |
Steuerung Start/Stop/Halt |
6041h |
Statusword |
Feedback und Zustandsüberwachung |
Wichtige Object Dictionary Einträge
Die folgende Tabelle enthält einige wichtige Einträge gemäß CiA 402 Device Profile, die für Antriebssteuerung und -überwachung zentral sind.
Index |
Name |
Beschreibung |
Typ |
6040h |
Controlword |
Steuer- und Zustandswechsel (Master → Antrieb) |
unsigned16 |
6041h |
Statusword |
Statusrückmeldung (Antrieb → Master) |
unsigned16 |
6060h |
Modes of Operation |
Setzt Betriebsmodus des Antriebs |
integer8 |
6061h |
Modes of Operation Display |
Aktueller Betriebsmodus |
integer8 |
607Ah |
Target Position |
Zielposition für Profile Position Mode |
integer32 |
6064h |
Position Actual Value |
Positionsrückmeldung |
integer32 |
606Ch |
Velocity Actual Value |
Geschwindigkeit (Istwert) |
integer32 |
6081h |
Profile Velocity |
Max. Geschwindigkeit bei Profile Position Mode |
unsigned32 |
6083h |
Profile Acceleration |
Beschleunigungsrampe |
unsigned32 |
6084h |
Profile Deceleration |
Verzögerungsrampe |
unsigned32 |
60FFh |
Target Velocity |
Soll-Geschwindigkeit im Profile Velocity Mode |
integer32 |
6098h |
Homing Method |
Auswahl Homing-Strategie |
integer8 |
607Dh.01h |
Min position limit |
Software-Endschalter Minimum |
integer32 |
607Dh.02h |
Max position limit |
Software-Endschalter Maximum |
integer32 |
6073h |
Max Current |
Max. Strom/Drehmoment/Kraft |
unsigned16 |
6075h |
Motor Rated Current |
Nennstrom für Antrieb/Motor |
unsigned32 |
6078h |
Current Actual Value |
Aktueller Motorstrom |
integer16 |
Positionsskalierung / User-Defined Units
Positionsskalierung in CiA 402 kombiniert konfigurierbare Skalierungsparameter mit festen Motor-/Encoder-Eigenschaften, um interne Positionseinheiten (Inkremente) in anwenderspezifische/technische Einheiten umzuwandeln.
Motor-/Encoder-Systemeigenschaften (608Fh)
•608Fh: Position Encoder Resolution
o608Fh.01 encoder_increments: Inkremente je Motordrehung
o608Fh.02 motor_revolutions: Motordrehungen pro Encoderumdrehung
oBeispiel: Bei einem 16-bit Inkremental-Encoder: 608Fh.01 = 65.536, 608Fh.02 = 1 (üblicherweise 1, außer bei nicht 1:1-Getriebe zwischen Motor und Encoder)
HINWEIS:
Diese Werte spiegeln Hardware-Eigenschaften wider und sollten nur bei Hardwarewechsel verändert werden.
Konfigurierbare Skalierung (6091h und 6092h)
•6091h: Gear Ratio
o6091h.01h motor_revolutions: Anzahl Motordrehungen
o6091h.02h shaft_revolutions Anzahl Abtriebsumdrehungen
oBeispiel: 5 Motordrehungen pro 2 Abtriebsumdrehungen → 6091h.01h = 5, 6091h.02h = 2
•6092h: Feed Constant
o6092h.01h feed: Technische Einheit pro Abtriebsumdrehung (z.B. mm, μm)
o6092h.02h shaft_revolutions: Anzahl Abtriebsumdrehungen
oBeispiel: Zahnriemenachse mit 100 mm pro Umdrehung, Skala μm: 6092h.01h feed = 100.000, 6092h.02h = 1
Formeln zur Positionsskalierung
Größe |
Formel (sprachlich) |
Formel (mit CiA 402-Objekten) |
Encoder resolution |
Encoder_resolution = encoder_increments / motor_rev |
608Fh.01h / 608Fh.02h |
Gear ratio |
Gear_ratio = motor_revolutions / shaft_revolutions |
6091h.01h / 6091h.02h |
Feed constant |
Feed_constant = feed / shaft_revolutions |
6092h.01h / 6092h.02h |
Interne Positionseinheit |
Pos_internal = Pos_user × Encoder_resolution × Gear_ratio / Feed_constant |
Pos_user × (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) / (6092h.01h / 6092h.02h) |
oder: Pos_user × (608Fh.01h × 6091h.01h × 6092h.02h) / (608Fh.02h × 6091h.02h × 6092h.01h) |
||
Position als Anwendergröße |
Pos_user = Pos_internal × Feed_constant / (Encoder_resolution × Gear_ratio) |
Pos_internal × (6092h.01h / 6092h.02h) / [ (608Fh.01h / 608Fh.02h) × (6091h.01h / 6091h.02h) ] |
oder: Pos_internal × (608Fh.02h × 6091h.02h × 6092h.01h) / (608Fh.01h × 6091h.01h × 6092h.02h) |
Beispiel
Gegeben:
•Motor-Encoder = 65.536 Inkremente je Motordrehung (608Fh.01h = 65536, 608Fh.02h = 1)
•Gear ratio: 1 Abtriebsumdrehung pro 5 Motordrehungen (6091h.01h = 5, 6091h.02h = 1)
•Feed constant: 100 mm pro Abtriebsumdrehung (6092h.01h = 100, 6092h.02h = 1)
Anwendereinheit / user-defined unit pro internen Encoder-Inkrement
= (Feed constant) / (Gear ratio × Encoder resolution)
= (100 mm/U) / (5 × 65.536 Inkremente/U)
= 0,00030517578125 [mm / Inkrement]
Beispiel: Bewegung um 80.000 interne Inkremente
--> Pos_user = 80.000 × 0.00030517578125 ≈ 24,41 mm