您现在的位置是:首页 > PLC技术 > PLC技术
SCL块中暂态局部数据
来源:艾特贸易2017-06-05
简介所有代码块具有暂态局部数据。在块中,用户可将该数据作为中间存储器。用户在 SCL 中使用暂态局部数据的方法与在标准编程语言的方法相同。 用户在块的声明部分的 VAR_TEMP 下声明暂
所有代码块具有暂态局部数据。在块中,用户可将该数据作为中间存储器。用户在SCL中使用暂态局部数据的方法与在标准编程语言的方法相同。
用户在块的声明部分的VAR_TEMP下声明暂态局部数据。所有的基本类型、复杂类型、用户数据类型以及POINTER和ANY数据类型都是允许的,对ANY数据类型有特殊规则(见下)。
在声明阶段,暂态局部数据不能预赋值,这是因为当赋值L栈时,编辑器为STRING变量在Options→Customize下保存输入到“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数值或地址。
点击排行
