Dieser Funktionsbaustein ermöglicht die Steuerung einer Achse durch einen benutzerdefinierten Algorithmus, der die zyklische gesetzte Position, die Geschwindigkeit und die Beschleunigung der Achse berechnet.
Der von Ihnen zur Programmierung eines Bewegungsprofils erstellte Funktionsbaustein muss FB_CustomJobBase der MotionInterface-Bibliothek erweitern. Dann wird der Funktionsbaustein am Eingang CustomJob zur Verfügung gestellt.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
Master |
Axis_Ref |
Verweis auf die Achse, für die der Funktionsbaustein ausgeführt werden soll. Kann unbelegt (nicht zugewiesen) bleiben, wenn bei dem benutzerdefinierten Auftrag (angegeben am Eingang CustomJob) eine Master-Achse verwendet wird. Wurde eine Achse zugewiesen, erhält der Rückruf an den Benutzerfunktionsbaustein zur Definition des Bewegungsprofils die Bewegungswerte der Master-Achse. Andernfalls werden die Bewegungswerte der Master-Achse als null angegeben. |
Axis |
Axis_Ref |
Verweis auf die Achse, für die der Funktionsbaustein ausgeführt werden soll. |
Execute |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE. Eine steigende Flanke des Eingangs Execute startet den Funktionsbaustein. Der Funktionsbaustein setzt die Ausführung fort, und der Ausgang Busy wird auf TRUE gesetzt. Dieser Funktionsbaustein kann während seiner Ausführung neu gestartet werden. Die Zielwerte werden zum Zeitpunkt des Auftretens der steigenden Flanke durch die neuen Werte überschrieben. |
BufferMode |
Die Zielwerte (Position, Geschwindigkeit, Beschleunigung) der Achse werden durch die neuen Werte im Bewegungstaskzyklus überschrieben, sobald der Funktionsbaustein auf der Achse aktiv wird. Standardwert: Aborting Puffermodus. Mögliche Werte:
Eine Beschreibung der Werte finden Sie unter MC_Buffer_Mode. |
|
OperationMode |
Betriebsart für Funktionsbaustein Standardwert: Position |
|
CustomJob |
MOIN.FB_CustomJobBase |
Eine Instanz eines vom Benutzer erstellten Funktionsbausteintyps, der von FB_CustomJobBase abgeleitet werden muss. Die Funktionsbausteininstanz kann mit zusätzlichen Parametern parametriert werden (z. B. Zielposition, Geschwindigkeit, Beschleunigung, Ruck usw.), gemäß den Anforderungen des durch den benutzerdefinierten Auftrag verwendeten Algorithmus. Setzen Sie die folgenden Methoden außer Kraft:
Setzen Sie die übrigen Methoden dieses Funktionsbausteins nicht außer Kraft. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
InSteadyState |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE, wie vom benutzerdefinierten Auftrag gemeldet.
|
Busy |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE, wie vom benutzerdefinierten Auftrag gemeldet.
|
Active |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE.
|
CommandAborted |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE.
|
Error |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE.
|
ErrorID |
Diese Aufzählung stellt Diagnoseinformationen zur Verfügung. |
Wenn Sie den Funktionsbaustein MC_SetPosition mit einem Funktionsbaustein MC_CustomJob verwenden, kann dies zu Positionssprüngen führen, wenn Sie die Offset-Position in Ihrer Positionsberechnung nicht berücksichtigen.
WARNUNG | |
---|---|
Um potenzielle Positionssprünge zu vermeiden, basieren Sie die Berechnung der Achsposition für den nächsten Zyklus auf der letzten physischen Position (gemäß Axis.lrPosition) der Achse oder überprüfen Sie, ob die Offset-Position in Ihrer Positionsberechnung korrekt berücksichtigt wird.
Wenn Sie den Funktionsbaustein MC_CustomJob mit einer Modulo-Achse verwenden, wird die über die Methode CalculateMovement generierte Position bei einem Modulo-Überlauf modulokorrigiert. Diese Korrektur basiert auf dem Speichern des Modulo-Offsets in MC_CustomJob. Das bedeutet, dass sich die Position für den nächsten Zyklus, wenn die Berechnung auf der letzten Referenzposition basiert (gemäß Axis.lrPosition), um die Größe des Modulo-Sprungs verschiebt.
WARNUNG | |
---|---|
Wenn eine Achse für den Eingangs-Master bereitgestellt wird, werden die neuen Ziel- oder Referenzwerte für die Master-Achse für den laufenden Echtzeitzyklus berechnet, bevor MC_CustomJob ausgelöst wird. Dies bedeutet, dass die benutzerdefinierte Auftragsimplementierung aktuelle (aus dem Echtzeitzyklus neu berechnete) Werte von der Master-Achse erhält, wenn sie aufgerufen wird, um ihre Werte für die Slave-Achse zu berechnen.
Wenn die Betriebsart über den Eingang OperationMode auf Velocity gesetzt wird und der Antrieb in der Betriebsart Cyclic Synchronous Velocity nicht betrieben werden kann, dann stellt der Funktionsbaustein MC_CustomJob einen Fehler fest. Die Achse wird dadurch nicht beeinflusst.