IecTaskCreate (FUN)

FUNCTION IecTaskCreate : RTS_IEC_HANDLE

Create a new IEC Task

IEC Tasks itself are used by the scheduler of the runtime. They don't essentially need a corresponding OS task or timer. They might be handled by the scheduler in a completely different way.

Note

Task_Info2.dwEventFunctionPointer:

Function pointer to the event check routine in case Task_Info2.KindOfTask = TaskEvent

FUNCTION CheckEvent : BOOL
VAR_INPUT
END_VAR

(* This function checks wether the event is triggered *)
(* by returning TRUE: raising edge, status, etc. *)

Task_Info2.dwTaskEntryFunctionPointer:

Function pointer to the task code

FUNCTION IecTaskCyclic : BOOL
VAR_INPUT
    parameter : IEC_CYCLE_STRUCT;
END_VAR
VAR
    udiState : UDINT;
    hTask : RTS_IEC_HANDLE;
END_VAR

(* ----- mandatory cyclic task frame code begin ----- *)
udiState := parameter.pApplication^.udiState;
hTask := parameter.hTaskHandle;
IF udiState = AS_STOP THEN
    RETURN;
END_IF
IF parameter.pTaskInfo^.bWatchdog THEN
    IecTaskEnableWatchdog(hTask);
END_IF
(* ------ mandatory cyclic task frame code end ------ *)
Error code:
  • ERR_OK: The new task was successfully created.

  • ERR_FAILED: There was an error in a subsystem (e.g. the scheduler could not allocate his task handle).

  • ERR_PARAMETER: Invalid application- or task info pointer

  • ERR_OUT_OF_LIMITS: Maximum number of Tasks reached (target specific)

  • ERR_NOMEMORY: Unable to allocate the memory, that is necessary for the task description

InOut:

Scope

Name

Type

Comment

Return

IecTaskCreate

RTS_IEC_HANDLE

Handle to newly created task

Input

pApp

POINTER TO APPLICATION

Pointer to application that contains the task

pTaskInfo

POINTER TO Task_Info2

Pointer to task information

pResult

POINTER TO RTS_IEC_RESULT

Pointer to error code