User-Defined Data Types (UDT)在线手册中的例子,为什么有错误?
// UDT definition with a symbolic name
TYPE
MEASVALUES: STRUCT
BIPOL_1 : INT := 5;
BIPOL_2 : WORD := W#16#FFAA ;
BIPOL_3 : BYTE := B#16#F1 ;
BIPOL_4 : WORD := W#16#1919 ;
MEASURE : STRUCT
BIPOLAR_10V : REAL ;
UNIPOLAR_4_20MA : REAL ;
END_STRUCT;
END_STRUCT;
END_TYPE
//Use of the UDT in an FB
FUNCTION_BLOCK FB10
VAR
MEAS_RANGE : MEASVALUES;
END_VAR
BEGIN
// . . .
MEAS_RANGE.BIPOL_1 := -4 ;
MEAS_RANGE.MEASURE.UNIPOLAR_4_20MA := 2.7 ;
// . . .
END_FUNCTION_BLOCK
TYPE MEASVALUES不能通过编译,这是因为MEASVALUES是一个符号名,你必须首先在symbol table里面定义MEASVALUES是某个UDT,比如UDT1000才行
其实在scl中编译fc、fb的时候,如果采用符号名也有同样问题,需要提前定以好才行。