Ausführung asynchroner Methoden - Überblick

Beschreibung

Methoden, die zum Lesen oder Schreiben von Geräteparametern über den SERCOS-Dienstkanal verwendet werden, können erheblich Zeit in Anspruch nehmen. Eine Ausführung als asynchrone Methode im aktuell laufenden Programm ist in diesem Fall sinnvoll.

Bisher war es bei der Ausführung dieser Methoden notwendig, die Zykluszeit zu erhöhen, sodass die Task, die auf diese Geräteparameter zugreift, gestoppt wird, bis der Parameterwert abgerufen wurde. Mit Hilfe der ab PD_PacDriveLib V.1.2.9.0 zugänglichen Bibliothek CmpAsyncMgr haben Sie die Möglichkeit, diese Methoden in einer zusätzlichen Task, die erstellt wird, auszuführen (Async-Mechanismus).

Die Bibliothek CmpAsnycMgr beinhaltet alle Funktionsbausteine und Strukturen, die benötigt werden, um eine zusätzliche Task zu erstellen. In dieser Task kann die asynchrone Methode ausgeführt werden.

In der PD_PacDriveLib V.1.2.9.0 wurden folgende Elemente hinzugefügt, die zur Ausführung der asynchronen Methoden verwendet werden:

oSchnittstelle IF_Async, die die Methode Job() und die Eigenschaft xDone enthält, die zur Nutzung des Async-Mechanismus notwendig sind.

oSchnittstelle IF_AsyncManager, die die Methoden Init() und Start() enthält, die zur Erzeugung zusätzlicher Tasks verwendet werden.

Verwendung des Async-Mechanismus

Bei der Optimierung von Teilen einer Anwendung werden zeitkritische Tasks durch die Auslagerung geeigneter Tasks entlastet. Durch diese Optimierung ändert sich unter Umständen das zeitliche Verhalten der gesamten Anwendung. Die Optimierungsüberlegungen müssen deshalb immer die gesamte Anwendung einschließen.

HINWEIS

DER ASYNC-MECHANISMUS ÄNDERT DAS ZEITVERHALTEN DER ANWENDUNG.

In zeitkritischen Fällen darf beim Zusammenspiel zwischen asynchronen und zyklischen Tasks keine Änderung des Laufzeitverhaltens von damit nicht im Zusammenhang stehenden Tasks auftreten.

Die Nichtbeachtung dieser Anweisungen kann Sachschäden zur Folge haben.

Um den Async-Mechanismus zu verwenden, können Sie

oeinen Funktionsbaustein implementieren, der die Schnittstelle IF_Asyncimplementiert (siehe auch Programmbeispiel) oder

ofolgende fünf Funktionsbausteine der PD_PacDriveLib ohne Zykluszeiterhöhung nutzen:

oFB_Brake

oFB_HomeTorque

oFB_HomeAbs

oFB_WriteDriveEncoder

oFB_Crank

Für die genannten POUs kann der AsyncMechanism verwendet werden. Die Zykluszeitüber­wachung muss nicht ausgeschaltet werden. Wenn Sie die Funktionsbausteine der PD_PacDriveLib verwenden möchten, ohne die Zykluszeit zu erhöhen, müssen Sie

oGc_udiNumOf AsyncTasks auf einen Wert ≠ 0 setzen,

oG_xEnableAsyncCalls auf TRUE setzen und

odie Methode Init() - gemäß dem dargestellten Programmbeispiel - aufrufen.

HINWEIS: In den zuvor genannten POUs wird keine Timeout-Überwachung für die Async-Jobs durchgeführt. Ein Timeout im Bezug auf die erfolgreiche Ausführung der POU-Funktion muss daher in der Anwendung ermittelt und implementiert werden. Für die Timeout-Bedingung können die Feedbacksignale q_etDiag und q_etDiagExt herangezogen werden.