IF_AsyncManager - Init (Methode)
Typ |
Methode |
Verfügbar ab |
|
Versionen: |
Aktuelle Version |
Initialisierung den Async-Mechanismus und Erzeugung der asynchronen Tasks.
Es wird geprüft, ob Gc_udiNumOfAsyncTasks <> 0 ist und ob noch keine Initialisierung ausgeführt wurde. Dann werden abhängig vom Wert von Gc_udiNumOfAsyncTasks asynchrone Tasks angelegt.
Für asynchrone Tasks gelten folgende Bedingungen:
oAsynchrone Tasks laufen mit Priorität 31.
oZeitkritische Tasks dürfen nicht in asynchrone Tasks ausgelagert werden.
(Zur Programmoptimierung ist es sinnvoll, zeitkritische Tasks zu entlasten.)
HINWEIS: Die Methode Init muss in einem separaten Teil des Programms (Init-Schritt) ausgeführt werden, bevor der zeitkritische Teil des Programms verarbeitet wird. Bei jedem Aufruf von Init wird eine neue Task angelegt, solange die Anzahl der angelegten Tasks < Gc_udiNumOfAsyncTasks ist. Die Erstellung einer neuen Task benötigt in etwa 0,8 ms. Je mehr Tasks verwendet werden, umso häufiger muss die Init-Methode aufgerufen werden, bis q_xDone gemeldet wird. Legen Sie nur Tasks an, die Sie benötigen. Wenn möglich, arbeiten Sie mit nur einer einzelnen Task. Lagern Sie Init in einen separaten, zeitunkritischen Programmteil aus.
Die Methode Init() muss so lange aufgerufen werden, bis sie q_xDone=TRUE meldet. Abhängig von Gc_udiNumOfAsyncTasks dauert die erfolgreiche Ausführung unterschiedlich lange. Der Wert von q_xDone muss abgefragt werden, um zu erkennen, dass eine asynchrone Task korrekt ausgeführt wurde (siehe auch Start).
Erst nach dem erfolgreichen Aufruf können Jobs an den AsyncManager übergeben werden.
HINWEIS: Zur Diagnose von Init kann im Meldungslogger ausgewertet werden, ob durch den Aufruf von Init eine Zykluszeitüberschreitung auftritt. Beachten Sie bitte, dass kein Filter gesetzt wird, um die Ausgabe von Meldungen zu vermeiden.
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xBusy |
BOOL |
TRUE: Die POU wird derzeit ausgeführt. FALSE: Die POU wird derzeit nicht ausgeführt. |
q_xDone |
BOOL |
TRUE: Die POU wurde ausgeführt. FALSE: Die POU wurde noch nicht ausgeführt |
q_etDiag |
GD.ET_Diag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Alle Werte außer ET_Diag.Ok entsprechen einer Diagnosemeldung. |
q_etDiagExt |
ET_DiagExt |
POU-spezifischer, diagnosebezogener Ausgang. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
293 |
Namen für die asynchronen Tasks erzeugen |
|
OK |
294 |
Asynchrone Tasks erzeugen |
|
OK |
292 |
Init wurde bereits erfolgreich aufgerufen. |
|
OK |
296 |
Warten, bis asynchrone Tasks erzeugt wurden. |
|
InputParameterInvalid |
291 |
Ungültiger Wert von Gc_udiNumOfAsyncTasks. Gc_udiNumOfAsyncTasks muss <> 0 sein. |
|
UnexpectedProgramBehavior |
295 |
Erzeugen der asynchronen Task ist fehlgeschlagen. |
Enumerationsname: |
CreatingAsyncTaskNames |
Enumerationswert: |
293 |
Beschreibung: |
Namen für die asynchronen Tasks erzeugen |
Abhängig von der Anzahl der asynchronen Tasks werden dementsprechend verschiedene Tasknamen erzeugt.
Enumerationsname: |
CreatingAsyncTasks |
Enumerationswert: |
294 |
Beschreibung: |
Asynchrone Tasks erzeugen |
Es werden eine bis maximal zehn Tasks erzeugt.
Enumerationsname: |
CreatingAsyncTasksFailed |
Enumerationswert: |
295 |
Beschreibung: |
Erzeugen der asynchronen Task ist fehlgeschlagen. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es ist ein Fehler in der internen Verarbeitung aufgetreten. |
Bitte informieren Sie das Supportteam über diesen Fehler. |
Enumerationsname: |
InitAlreadySuccessfullyCalled |
Enumerationswert: |
292 |
Beschreibung: |
Init wurde bereits erfolgreich aufgerufen. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Methode Init() von IF_AsyncManager wurde bereits erfolgreich ausgeführt. |
Um eine erneute Initialisierung durchzuführen, muss die Steuerung neu gestartet werden. |
Enumerationsname: |
NumOfAsyncTasksRange |
Enumerationswert: |
291 |
Beschreibung: |
Ungültiger Wert von Gc_udiNumOfAsyncTasks. Gc_udiNumOfAsyncTasks muss <> 0 sein. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Gc_udiNumOfAsyncTasks hat noch den Default-Wert = 0. |
Weisen Sie Gc_udiNumOfAsyncTasks einen Wert > 0 und <= 10 zu. |
Enumerationsname: |
WaitUntilAsyncTasksCreated |
Enumerationswert: |
296 |
Beschreibung: |
Warten, bis asynchrone Tasks erzeugt wurden. |
Es wird darauf gewartet, dass alle asynchronen Tasks erzeugt wurden.