您现在的位置是:首页 > PLC技术 > PLC技术

SCL块中暂态局部数据

来源:艾特贸易2017-06-05

简介所有代码块具有暂态局部数据。在块中,用户可将该数据作为中间存储器。用户在 SCL 中使用暂态局部数据的方法与在标准编程语言的方法相同。 用户在块的声明部分的 VAR_TEMP 下声明暂

所有代码块具有暂态局部数据。在块中,用户可将该数据作为中间存储器。用户在SCL中使用暂态局部数据的方法与在标准编程语言的方法相同。

用户在块的声明部分的VAR_TEMP下声明暂态局部数据。所有的基本类型、复杂类型、用户数据类型以及POINTERANY数据类型都是允许的,对ANY数据类型有特殊规则(见下)。

在声明阶段,暂态局部数据不能预赋值,这是因为当赋值L栈时,编辑器为STRING变量在OptionsCustomize下保存输入到“Compiler”选项卡的长度。

如果要给暂态局部数据预赋有意义的数值,必须首先写入这些数据。这同样用于输出参数中创建的(暂态)STRING变量。例如,在IEC功能情况下,当写入时,IEC功能检测已经输入的STRING变量长度信息的有效值。用户使用前,需在程序中通过给变量预赋值(任意值)来实现。

SCL中,可以用下表声明相同的数据类型变量:

VAR_TEMP

Value1, Value2, Value3  :  INT;

...

END_VAR

注意:在SCL中,暂态局部数据只用符号寻址。

ANY数据类型

ANY数据类型的暂态局部数据可以存储指令的地址、全局或块局部变量的地址:

any_var  :  =MW10;

any_var  :  =Setpoint;

any_var  :  =DB10.Field1;

用户也可以用NIL预赋值ANY数据类型的暂态局部变量,指针“到零”。

any_var  :  =NIL;

举例:各种数据记录根据标识符用SFC 20 BLKMOV复制到一个发送邮箱:

...

VAR_TEMP

Address  :  =ANY;

...

END_VAR

...

CASE Identifier OF

1  :  Address :  =  DataRecord1;

2  :  Address :  =  DataRecord2;

...

ELSE Address  :  =NIL;

END_CASE;

SFC_ERROR  :  =BLKMOV(

SRCBLK  :  = Address,

DSTBLK  :  =SendMailBox);

用户可以编辑ANY指针的单个元件,直接使用数据类型一览的帮助,例如DB数值或地址。