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的时候,如果采用符号名也有同样问题,需要提前定以好才行。
提问者对于答案的评价:
谢谢,我之前把MEASVALUES改为UDT10,编译就不报错。不知道必须首先在symbol table里面定义。
那里面嵌套的MEASURE : STRUCT为什么就不需要提前定义了?
最佳答案作者回复:
局部变量,和全局变量的区别
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242287.html