IF_AsyncManager - Init (Methode)

Übersicht

Typ

Methode

Verfügbar ab

 

Versionen:

Aktuelle Version

Aufgabe

Initialisierung den Async-Mechanismus und Erzeugung der asynchronen Tasks.

Beschreibung

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_udiNumO­fAsyncTasks 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.

Schnittstelle

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

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

CreatingAsyncTaskNames

293

Namen für die asynchronen Tasks erzeugen

OK

CreatingAsyncTasks

294

Asynchrone Tasks erzeugen

OK

InitAlreadySuccessfullyCalled

292

Init wurde bereits erfolgreich aufgerufen.

OK

WaitUntilAsyncTasksCreated

296

Warten, bis asynchrone Tasks erzeugt wurden.

InputParameterInvalid

NumOfAsyncTasksRange

291

Ungültiger Wert von Gc_udiNumOfAsyncTasks. Gc_udiNumOfAsyncTasks muss <> 0 sein.

UnexpectedProgramBehavior

CreatingAsyncTasksFailed

295

Erzeugen der asynchronen Task ist fehlgeschlagen.

CreatingAsyncTaskNames

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.

CreatingAsyncTasks

Enumerationsname:

CreatingAsyncTasks

Enumerationswert:

294

Beschreibung:

Asynchrone Tasks erzeugen

Es werden eine bis maximal zehn Tasks erzeugt.

CreatingAsyncTasksFailed

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.

InitAlreadySuccessfullyCalled

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.

NumOfAsyncTasksRange

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.

WaitUntilAsyncTasksCreated

Enumerationsname:

WaitUntilAsyncTasksCreated

Enumerationswert:

296

Beschreibung:

Warten, bis asynchrone Tasks erzeugt wurden.

Es wird darauf gewartet, dass alle asynchronen Tasks erzeugt wurden.