Standardanwendungsfälle
Die Bibliothek SM3_Basic
enthält übergeordnete Funktionsbausteine, die nicht über die standardmäßige Soll-/Istwert-Schnittstelle mit dem Antrieb interagieren. Diese Bausteine geben Kommandos oder verändern die Einstellungen des Antriebs indem sie die Parameter der Instanz von AXIS_REF_SM3
lesen oder schreiben.
Antrieb reinitalisieren
Wenn Sie die Antriebsparameter während der Laufzeit geändert haben, müssen Sie den Antrieb neu initialisieren. Beispiel: Ändern des Skalierungsfaktors oder die Moduloperiode von rotatorischen Antrieben. Durch Aufruf des Funktionsbausteins SMC3_ReinitDrive
mit einer steigenden Flanke am Eingang Execute
wird der Parameter wCommuncationState
des Antriebs zurückgesetzt und der komplette Start-up-Prozess des Antriebs wiederholt.
Wichtig
Warten Sie mit der Reinitialisierung, bis die Achse den erforderlichen Zustand SMC_COMSTATE_BASE_COM_INITIALIZATION
oder höher erreicht hat. Andernfalls wird der Fehler SMC_RAG_ERROR_AXIS_NOT_INITIALIZED
ausgegeben.
Wenn die Kommunikation eines untergeordneten Feldbusses unterbrochen ist, dann ist ab CODESYS SoftMotion Version 4.18.0.0 keine explizite Reinitialisierung mehr notwendig. Die Achse wird automatisch neu initialisiert, sobald die Feldbuskommunikation wiederhergestellt wurde. Vor Version 4.18.0.0 war nach dem Kommunikationsabbruch des Feldbusses (Fehler mit SMC_DI_GENERAL_COMMUNICATION_ERROR)
ein expliziter Aufruf von SMC3_ReinitDrive
nötig, nachdem die Feldbuskommunikation wiederhergestellt war.
Tipp
Das alte Verhalten kann wiederhergestellt werden, indem der Eingang AutoRestart
des Funktionsbausteins SMC_AxisChangeSettings
auf SMC_AXIS_AUTORESTART_MODE.OFF
gesetzt wird.
Antrieb ein-/abschalten
Die Parameter bRegulatorOn
und bDriveStart
des Funktionsbausteins AXIS_REF_SM3
steuern die Leistungsstufe und das Abbremsen eines Antriebs. Der Zugriff erfolgt über den Funktionsbaustein MC_Power
.
Zur Freigabe der Endstufe müssen Sie den Parameter bRegulatorOn
des Funktionsbausteins MC_Power
setzen. Über den Ausgang bRegulatorRealState
meldet der Antrieb den momentanen Status dieses Prozesses. Wenn es vom Antrieb unterstützt wird, setzt ein Reset von bRegulatorOn
während einer Bewegung das Drehmoment mit sofortiger Wirkung außer Kraft. Der Funktionsbaustein meldet in diesem Fall einen Fehler und setzt die Achsen in den Zustand errorstop
.
Die Variable bDriveStart
bestimmt, ob sich der Antrieb bewegen darf oder nicht. In bDriveStartRealState
steht der aktuelle Zustand dieses Parameters.
Wenn es vom Antrieb unterstützt wird, führt ein Reset des Parameters bDriveStart
während der Bewegung ein Abbremsen des Antriebs mit der konfigurierten Rampe durch (genannt „QuickStop“). Danach hält der Antrieb die erreichte Position solange, wie bRegulatorOn
gesetzt bleibt. Die Achse bleibt im Zustand stopping
, solange der „QuickStop-Mechanismus“ aktiv ist (Eingang bDriveStart
= FALSE). Wenn der Antrieb zuvor von einem Funktionsbaustein bewegt wurde, zeigt dieser nun CommandAborted
. Das gilt nicht für den Funktionsbaustein MC_Stop
, der einen Fehler meldet und die Achsen in den Zustand errorstop
setzt.
Mechanische Bremsen handhaben
Wenn es vom Antrieb unterstützt wird, kann die Variable eBrakeControl
mit Hilfe des Funktionsbausteins SMC3_BrakeControl
gesetzt oder zurückgesetzt werden. Drei unterschiedliche Modi sind möglich.
SMC3_BrakeSetState
SMC_BRAKE_AUTO
: Der Zustand der Bremse wird vom Antrieb selbst geregelt.SMC_BRAKE_OPEN
: Die Bremse ist geöffnet.SMC_BRAKE_CLOSE
: Die Bremse ist geschlossen.
Die Variable bBrakeClosedRealState
meldet den aktuellen Status der Bremse.
Vom SoftMotion-Standpunkt aus hängen Kontrolle wie auch Zustand der mechanischen Bremse weder vom Zustand des Antriebs noch von der laufenden Bewegung ab.
Kontrollmodus wechseln
Mit dem Funktionsbaustein SMC_SetControllerMode
können Sie zwischen den verschiedenen Kontrollmodi wechseln. Die Parameter byControllerMode
und byRealControllerMode
von AXIS_REF_SM3
repräsentieren den gewünschten und den aktuellen Zustand des Reglers.
| SoftMotion sendet keine zyklischen Daten zum Antrieb. Somit kann der Antrieb anderweitig gesteuert werden. |
| Moment/-Kraft-Regelung |
| Geschwindigkeitsregelung |
| Lageregelung |
| Stromregelung |
Nach Schreiben der Variablen byControllerMode
wird der aktuelle Zustand solange geprüft bis er mit dem gewünschten Kontrollmodus übereinstimmt.
Währendessen berechnet der Baustein, beispielsweise bei Wechsel des Steuerungsmodus, die Sollwert für die Achse. Danach setzt er seinen Ausgang bDone
auf TRUE
. Ab diesem Zeitpunkt stellt er keine Sollwerte für die Achse mehr bereit. Dies muss dann von anderen Funktionsbausteinen übernommen werden. Beispiel: Der Ausgang bDone
triggert einen Funktionsbaustein MC_MoveVelocity
, MC_MoveAbsolute
oder MC_Halt
. Andernfalls stoppt die Achse sofort nach dem Wechsel des Kontrollmodus.
Referenzfahrt (antriebsgesteuert)
Sie können in SoftMotion einen Antrieb auf zwei Arten referenzieren:
Referenzierung über Regelung in der SPS: Diese Referenzierung wird durch Aufruf des Funktionbausteins
SMC_Homing
ausgeführt. Dabei muss das Referenzsignal Teil des E/A-Abbilds des Reglers sein. Während des Referenzierens bleibt der Antrieb im Kontrollmodus „Lageregelung“. Im Allgemeinen ist diese Methode nicht so genau, da die Erfassung der Position (beim Berühren des Referenzschalter) auf den vom Antrieb erhaltenen aktuellen Positionen basiert; folglich ist die Genauigkeit durch den Kommunikationszyklus beschränkt.Referenzierung über Regelung im Antrieb: Dabei ist der Referenzschalter zum Antrieb selbst verdrahtet. Dadurch wird seine Position schneller und mit höherer Genauigkeit ausgewertet. Während des antriebsgesteuerten Referenzpfads ist der Antrieb in einem anderen Kontrollmodus, in dem er nicht die Sollwerte des Reglers befolgt, sondern durch interne Prozesse gesteuert wird. Sobald der Referenzpfad beendet wird, wird der Antrieb in seinen ursprünglichen Kontrollmodus zurückversetzt.
Der Funktionsbaustein
MC_Home
startet den antriebsgesteuerten Referenzpfad durch Setzen vonfReference
undbStartReference
. Zusätzlich wird der Zustand vonAXIS_REF_SM3
(wState
) aufhoming
gesetzt. Sobald der Antrieb in den Referenzpfad übergeht (das heißt, dass er die vom Regler vorgegebenen Werte nicht mehr beachtet), setzt der Antrieb den Parameter aufTRUE
. Um das Ende des Referenzpfads anzuzeigen, setzt der Treiber die Werte vonbStartReference
undbStartReferenceRealState
wiederum aufFALSE
.
Positionserfassung
Abhängig davon, welche Funktionen der Antrieb zur Positionsermittlung der Antrieb unterstützt, kann die Position einer Achse auf mehrere Arten ermittelt werden:
Der Antrieb ermittelt die Achsposition selbst (integriert oder durch Anschaltung eines externen Gebers). Da die Istposition dabei vom Antrieb selbst übertragen wird, ist die Übertragungszeit des Signals minimal und somit präzise.
Die aktuelle Position der Achse wird unabhängig vom Antrieb erfasst und über einen Eingang der Steuerung übertragen. Dabei auftretende Latenzzeit des Steuerungseingangs und des Applikationszyklus machen diese Methode weniger präzise.
Wenn die Position vom Antrieb selbst übertragen wird, wird sie in der Applikation typischerweise vom zugehörigen Treiber herstellerspezifisch direkt verarbeitet. Um die Position einer solchen Achse zu ermitteln, können Sie den Funktionsbaustein
MC_TouchProbe
verwenden. Er ermöglicht die Aufzeichnung der Achsposition zu einem konfigurierbaren Trigger und innerhalb eines Positionsfensters. Wenn die Position nicht durch den Antrieb übertragen wird, muss sie dem Antriebstreiber beispielsweise zur Regelung übergeben werden.Für weitere Informationen siehe: Lageregelung auf der Steuerung mit SM_Drive_PosControl