(* Test whether the keyword XXXX may be used as an identifier for: * FUNCTION_BLOCK declaration * * The XXXX names in the following code are merely a placeholder. * They will be replaced by several identifiers before actual testing * of the compiler. *) (* The identifiers that will replace the XXXX * must be placed on a line starting with # * All identifiers preceded by # are ignored! * The identifier list must be placed inside an IEC 61131-3 comment. *) (* #IL_operators ANDN CAL CALC CALCN CD CLK CU IN JMP JMPC JMPCN LD LDN ORN #IL_operators PT PV R R1 RET RETC RETCN S S1 ST STN XORN NOTE: R and S are identical to IL operators!! #SFC_qualifiers D DS L N P #R #S SD SL #Task_initialisers PRIORITY SINGLE INTERVAL *) (* The FUNCTION BLOCK declaration *) function_block XXXX var_input a_1, b_1: int; end_var var_output c_1, d_1: int; end_var c_1 := 10 + b_1; end_function_block (* Calling of the function block from within ST code *) function_block foo var e_1, f_1 : int; fb : XXXX; end_var fb(10, 20); fb (10, 20, e_1, f_1); fb (a_1 := 10, b_1:=20, c_1=>e_1, d_1=>f_1); fb(a_1 := 10, b_1:=20, c_1=>e_1, d_1=>f_1); fb (c_1=>e_1, a_1:=20, d_1=>f_1); f_1 := fb.c_1; fb.a_1 := e_1; end_function_block (* Calling of the function block from within IL code *) function_block bar var e_1, f_1 : int; fb : XXXX; end_var CAL fb LD fb.a_1 ST fb.b_1 CAL fb (10) CAL fb(30, 20, e_1, f_1) CAL fb ( a_1 := 10, c_1 => f_1 ) CAL fb( a_1 := 10, c_1 => f_1 ) end_function_block (* Checking whether the use of XXXX will confuse any other * normal and correct IL or ST code. *) {#include "basic_code.test" } (* CONFIGURATION ...... using these XXXX identifiers within a configuration especially a task initialisation, as Priority, single and interval may clash here. (they shouldn't, but if the parser has an error, they will....) END_CONFIGURATION *)