scl 用户定义数据User-Defined Data Types (UDT)错误

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

图片说明:

scl 用户定义数据User-Defined Data Types (UDT)错误   

最佳答案

TYPE MEASVALUES不能通过编译,这是因为MEASVALUES是一个符号名,你必须首先在symbol table里面定义MEASVALUES是某个UDT,比如UDT1000才行

其实在scl中编译fc、fb的时候,如果采用符号名也有同样问题,需要提前定以好才行。

提问者对于答案的评价:
谢谢,我之前把MEASVALUES改为UDT10,编译就不报错。不知道必须首先在symbol table里面定义。
那里面嵌套的MEASURE : STRUCT为什么就不需要提前定义了?

最佳答案作者回复:
局部变量,和全局变量的区别

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午9:51
下一篇 2018年12月1日 下午9:52

相关推荐