The library SysLibCallback.lib

This library provides the functions SysCallbackRegister and SysCallbackUnregister, which serve to activate defined callback functions for runtime events.

Both functions are of type BOOL and return TRUE as soon as the required callback function successfully has been registered resp. de-registered.

The execution is synchronous.

Prototype of the callback function

The prototype of the callback function must look as follows:

FUNCTION Callback : DWORD

VAR_INPUT

dwEvent:DWORD; // Event

dwFilter:DWORD; // Filter

dwOwner:DWORD; // Source

END_VAR

Note

Attention for RISC and Motorola 68K target systems: The name of the callback function must start with “callback”!

The library functions SysCallbackRegister and SysCallbackUnregister each use the following parameters when calling the callback function which should be registered or de-registered:

Input-Variable Data Type Description
iPOUIndex INT POU Index of the callback function which should be (de)registered. The index must be accquired before with the aid of the operator INDEXOF(<function name>).
Event RTS_EVENT The runtime event, for which the callback function is called, is defined by a value of the enumeration RTS_EVENT, which also is contained in the library (see below).

The enumeration RTS_EVENT is defined as follows:

TYPE RTS_EVENT :

(

EVENT_ALL,

(* General events *)

EVENT_START,

EVENT_STOP,

EVENT_BEFORE_RESET,

EVENT_AFTER_RESET,

EVENT_SHUTDOWN,

(* Exceptions generated by runtime *)

EVENT_EXCPT_CYCLETIME_OVERFLOW, (* Cycle time overflow *)

EVENT_EXCPT_WATCHDOG, (* Software watchdog OF IEC-task expired *)

EVENT_EXCPT_HARDWARE_WATCHDOG, (* Hardware watchdog expired. Global software error *)

EVENT_EXCPT_FIELDBUS, (* Fieldbus error occurred *)

EVENT_EXCPT_IOUPDATE, (* IO-update error *)

(* Exceptions generated BY system *)

EVENT_EXCPT_ILLEGAL_INSTRUCTION, (* Illegal instruction *)

EVENT_EXCPT_ACCESS_VIOLATION, (* Access violation *)

EVENT_EXCPT_PRIV_INSTRUCTION, (* Privileged instruction *)

EVENT_EXCPT_IN_PAGE_ERROR, (* Page fault *)

EVENT_EXCPT_STACK_OVERFLOW, (* Stack overflow *)

EVENT_EXCPT_MISALIGNMENT, (* Datatype misalignment *)

EVENT_EXCPT_ARRAYBOUNDS, (* ARRAY bounds exceeded *)

EVENT_EXCPT_DIVIDEBYZERO, (* Division BY zero *)

EVENT_EXCPT_OVERFLOW, (* Overflow *)

EVENT_EXCPT_NONCONTINUABLE, (* Non continuable *)

EVENT_EXCPT_NO_FPU_AVAILABLE, (* FPU: No FPU available *)

EVENT_EXCPT_FPU_ERROR, (* FPU: Unspecified error *)

EVENT_EXCPT_FPU_DENORMAL_OPERAND, (* FPU: Denormal operand *)

EVENT_EXCPT_FPU_DIVIDEBYZERO, (* FPU: Division BY zero *)

EVENT_EXCPT_FPU_INVALID_OPERATION, (* FPU: Invalid operation *)

EVENT_EXCPT_FPU_OVERFLOW, (* FPU: Overflow *)

EVENT_EXCPT_FPU_STACK_CHECK, (* FPU: Stack check *)

(* IO events *)

EVENT_AFTER_READING_INPUTS,

EVENT_BEFORE_WRITING_OUTPUTS,

(* Miscellaneous events *)

EVENT_TIMER, (* Schedule tick (timer interrupt) *)

EVENT_DEBUG_LOOP, (* Debug loop at breakpoint *)

(* Online services *)

EVENT_ONLINE_SERVICES_BEGIN := 500,

EVENT_LOGIN,

EVENT_CUSTOM_SERVICES,

(* Interrupts *)

EVENT_INT_0:=1000,

EVENT_INT_1,

EVENT_INT_2,

EVENT_INT_3,

EVENT_INT_4,

EVENT_INT_5,

EVENT_INT_6,

EVENT_INT_7,

EVENT_INT_8,

EVENT_INT_9,

EVENT_INT_10,

EVENT_INT_11,

EVENT_INT_12,

EVENT_INT_13,

EVENT_INT_14,

EVENT_INT_15,

EVENT_INT_255:=1255,

EVENT_MAX

);

END_TYPE