(* Reading out the electronic rating plate of AXL F DI8/1 DO8/1 1 H (2701916) module *) F_TRIG_Start( CLK := xStart ); IF ( F_TRIG_Start.Q ) THEN iState := 0; END_IF; CASE iState OF 0: (* Reset state *) (* AsynCom_AXL function block *) udtExample.udtAsynCom_PN.dwNodeID := DWORD#16#00; (* AXL_PDI_R_W function block *) udtExample.udtAXL_PDI_R_W.xActivate := FALSE; udtExample.udtAXL_PDI_R_W.xReset := FALSE; udtExample.udtAXL_PDI_R_W.xDiag := FALSE; udtExample.udtAXL_PDI_R_W.xAddLabel := FALSE; udtExample.udtAXL_PDI_R_W.wIndex := WORD#16#0000; udtExample.udtAXL_PDI_R_W.wSubIndex := WORD#16#0000; udtExample.udtAXL_PDI_R_W.xRead := FALSE; udtExample.udtAXL_PDI_R_W.xWrite := FALSE; udtExample.udtAXL_PDI_R_W.iLength := INT#0; IF ( xStart ) THEN iState := 100; END_IF; 100: (* Init *) (* AsynCom_AXL function block *) udtExample.udtAsynCom_PN.dwNodeID := dwNodeID; (* AXL_PDI_R_W function block *) 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; iState := 200; 200: (* Activate *) (* AXL_PDI_R_W function block *) udtExample.udtAXL_PDI_R_W.xActivate := TRUE; IF ( udtExample.udtAXL_PDI_R_W.xReady = TRUE AND udtExample.udtAXL_PDI_R_W.xError = FALSE AND udtExample.udtAXL_PDI_R_W.wDiagCode = WORD#16#8000 AND udtExample.udtAXL_PDI_R_W.dwAddDiagCode = DWORD#16#0000 ) THEN (* Start reading out electronic reading plate *) udtExample.udtAXL_PDI_R_W.xAddLabel := TRUE; iState := 32000; END_IF; 32000: (* END *) (* Waiting for xDiag *) IF ( xDiag = TRUE ) THEN udtExample.udtAXL_PDI_R_W.xAddLabel := FALSE; (* Start reading out diagnostics *) udtExample.udtAXL_PDI_R_W.xDiag := TRUE; ELSE udtExample.udtAXL_PDI_R_W.xDiag := FALSE; END_IF; END_CASE;