CASE udtExample.iState OF 0: (* Init *) IF xStart = TRUE THEN (* AsynCom_AXL function block *) (* Module number *) udtExample.udtAsynCom_PN.dwNodeID := DWORD#16#12; (* AXL_PDI_R_W function block *) (* Reset of function block *) udtExample.udtAXL_PDI_R_W.xReset := FALSE; (* Read out of diagnostic data *) udtExample.udtAXL_PDI_R_W.xDiag := FALSE; (* PDI object *) udtExample.udtAXL_PDI_R_W.wIndex := WORD#16#0000; (* PDI sub object *) udtExample.udtAXL_PDI_R_W.wSubIndex := WORD#16#0000; (* Activation of function block *) udtExample.udtAXL_PDI_R_W.xActivate := TRUE; udtExample.iState := 10; END_IF; 10: (* Waiting for xReady *) IF udtExample.udtAXL_PDI_R_W.xReady = TRUE THEN (* Start reading out electronic reading plate *) udtExample.udtAXL_PDI_R_W.xAddLabel := TRUE; udtExample.iState := 32000; ELSIF udtExample.udtAXL_PDI_R_W.xError = TRUE THEN udtExample.iState := 9000; END_IF; 9000: (* Error handling *) (* Insert your error handling here *) (* Diagnostic data is read out (PDI object 0018) *) udtExample.udtAXL_PDI_R_W.xDiag := TRUE; IF xStart = FALSE THEN udtExample.iState := 32000; END_IF; 32000: (* Example is finished *) (* Deactivation of function blocks *) udtExample.udtAsynCom_PN.dwNodeID := WORD#16#00; udtExample.udtAXL_PDI_R_W.xReset := FALSE; udtExample.udtAXL_PDI_R_W.xDiag := FALSE; udtExample.udtAXL_PDI_R_W.wIndex := WORD#16#0000; udtExample.udtAXL_PDI_R_W.wSubIndex := WORD#16#0000; udtExample.udtAXL_PDI_R_W.xActivate := FALSE; udtExample.udtAXL_PDI_R_W.xAddLabel := FALSE; IF xStart = FALSE THEN udtExample.iState := 0; END_IF; END_CASE; iState := udtExample.iState;