SPiiPlus-ES mit bis zu 32 in TwinCAT 3.1 integrieren
Der SPiiPlus-ES ist eine Erweiterung der bekannten SPiiPlus-EC-Baureihe um eine EtherCAT-EtherCAT-Bridge mit einem beidseitigen zyklischen Speicherbereich von (aktuell) maximal 256/256 Byte, wobei die Daten über maximal 8 PDO‘s pro Richtung mit je maximal 32 Bytes pro PDO verteilt werden können.
Standardmäßig wird der SPiiPlus-ES als 8-Achs-DS402-EtherCAT-Slave ausgeliefert, diese 8 „zyklischen“ DS402-Achsen können dann im CSP-, PPM-, PVM- oder Homing-Mode) betrieben werden. Daher sind standardmäßig auch nur 2 PDO‘s pro Richtung eingerichtet (ausreichend für 8 zyklische Achsen). Die Verschaltung der Daten erfolgt automatisiert auf dem NC/CNC-Bereich des TwinCAT-Projektes (im Bereich MOTION). Ein direkter Zugriff auf diese Austauschbereiche unter EtherCAT (CoE) durch das SPS-Anwendungsprogramm ist seitens Beckhoff nicht erforderlich. Die restlichen bis zu 56 Achsen sind dann auf die langsamere SDO-Kommunkation (SDO = Service Data Object) angewiesen oder es müssen dafür weitere PDO‘s (Process Data Object) definiert werden, die dann mit einem anwendungsspezifischen Protokoll anzusteuern sind.
ACS stellt die EtherCAT-Beschreibungsdatei „ACS SPiiPlusES.xml“ zur Verfügung, die in das Verzeichnis „C:\TwinCAT\3.1\Config\Io\EtherCAT“ kopiert werden muss (gegebenenfalls muss der EtherCAT-Geräte-Verzeichnis aktualisiert werden durch den Befehl „Menü\TwinCAT\EtherCAT Device\Reload Device Descriptions“). Beckhoff-seitig muss die Option "PtP" zur TwinCAT-SPS geordert werden. SPiiPlus-ES erscheint nach dem Scan als EtherCAT-Slave mit 8 Antrieben. Diese 8 Achsen werden über die MC2-Bibliothek von Beckhoff angesprochen und unterscheiden sich nicht in der Ansteuerung von anderen 3rd-Party-Antriebsherstellern.
Probleme entstehen, wenn ein antriebsgeführtes Homing durchgeführt werden muss, weil keine Absolutwertgeber verwenden werden oder weil die Achsanzahl 8 übersteigen soll und das aufwendige und langsamere SDO-Protokoll zu den nicht-zyklischen Achsen (Achsnummern > 8) nicht gewünscht wird.
Das neue Verfahren arbeitet mit einer veränderten Geräteimagedatei, welche je 256 Bytes schreibend und lesend zur Verfügung stellt und den Betrieb von bis zu 32 zyklischen Achsen ermöglicht. Die Achsen werden mit einer nahezu Tc2-MC2-kompatibler Schnittstelle integriert.
SPiiPlus-ES und dessen Antriebe sind aus Sicht von TwinCAT eine modulare Einheit von 32 Achsen und nicht als Einheit mit untergeordnetem EtherCAT-Strang zu erkennen. Die Integration erfolgt einfach in der bekannten Weise über den Systemmanager mittels Scan im Konfigurationsmodus.
Vorteil: Werden keine Antriebe am primären EtherCAT-Starng verwendet, kann bei der Bestellung der TwinCAT-CPU sogar auf die PtP-Option verzichtet werden.
Aus Sicht des TwinCAT-Systemmanagers ist der SPiiPlus-ES ein modularer und "anwendungsneutraler" EtherCAT-Slave mit jeweils 256 Bytes für Eingänge und Ausgänge. SPiiPlus-ES erscheint daher nicht in der NC-Schnittstelle, die Motion-Tasks werden nicht angelegt.
Die Bibliothek Tc3_SPiiPlusES für SPiiPlus-ES (32-Achsen) enthält analog zur Bibliothek TC2_MC2 folgende MC-Blöcke: Die Endung "_SPES" wurde den jeweiligen Blöcken hinzugefügt, um Namenskonflikte, z.B. mit der Standard-Bibliothek Tc2_MC2 zu vermeiden.
Die Entwicklung der Bibilothek ist keinesweges abgeschlossen, die Integration weiterer Blöcke, z.B. für Gantry-Anwendungen kann auf Anforderung implementiert werden.
- MC_Power_SPES (Bestromen und stromlos schalten)
- MC_Reset_SPES (Fehler quittieren)
- MC_ReadStatus_SPES (Achsstatus)
- MC_MoveAbsolute_SPES (absolute Positionierung)
- MC_MoveRelative_SPES (relative Positionierung)
- MC_Home_SPES (antriebsgeführte Referenzierung)
- MC_Jog_SPES (Hand+/-)
- MC_QuickStop_SPES (Schnellhalt)
- MC_Halt_SPES (Halt mit aktuellem Bewegungsprofil)
- MC_SetPosition_SPES (Position setzen)
- MC_ReadActualPosition_SPES (Auslesen der aktuellen Position, wahlweise APOS oder FPOS)
- MC_ReadActualVelocity_SPES (Auslesen der aktuellen Geschwindigkeit)
- MC_ReadAxisError_SPES (Auslesen der aktuellen Fehlernummer)
Zusätzlich wurden folgende Blöcke realisiert:
- FB_SearchLabel_SPES (Suchen eines schnellen Eingangs und nachfolgendem Positionieren ab "Marke/Register", bekannt auch als "Registerpositionierung")
- FB_MotorRMS_SPES (Auslesen des Motor-RMS-Wertes)