XMLGetElementAsync (FB)

FUNCTION_BLOCK XMLGetElementAsync EXTENDS CBM.ETrig

Reads a xml element from file asynchronously, i.e. distributed on several cycles. This function block should be used to get elements of large xml files. To read from file set sFileName to file path and paDataArray = 0. To read from data array set sFileName = ‘’ and paDataArray to data pointer.

InOut:

Scope

Name

Type

Initial

Comment

Inherited from

Input

xExecute

BOOL

Rising edge: Action starts
Falling edge: Resets outputs
If a falling edge occurs before the function block has completed its action, the outputs operate in the usual manner and are only reset if either the action is completed or in the event of an error. In this case, the corresponding output values (xDone, xError) are present at the outputs for exactly one cycle.

ETrig

Output

xDone

BOOL

TRUE: Action successfully completed

ETrig

xBusy

BOOL

TRUE: Function block active

ETrig

xError

BOOL

TRUE: Error occurred, function block aborts action
FALSE: No error

ETrig

Input

sFileName

STRING(255)

Path to a file

udiStartPosition

UDINT

Start position in file to read elements. Use XMLElement.udiPosition´

readMode

READ_MODE

Read mode

paElements

POINTER TO XMLElement

Pointer to the result set

udiMaxElements

UDINT

Maximum size of paElements

xTruncateValues

BOOL

FALSE

true: All values that exceed the maximum value size will be truncated

paDataArray

POINTER TO BYTE

0

Pointer to XML data array, if 0 read from file (sFileName)

udiDataArraySize

UDINT

0

Size of paDataArray

Output

eError

ERROR

Error code if xError is true

eLastError

ERROR

The last error

udiCountElements

UDINT

Number of elemnents in paElements#

udiNextReadPos

UDINT

Position in file (in bytes) of the next xml element, 0 if last element

eEncoding

Encoding

Encoding of the xml file