在STEP 7 (TIA 博途)中,如何初始化S7-1500 的优化存储区?

文章来源:互联网 发布时间:2014-04-29
分享到
优化块临时数据区中的变量在每次调用块时被用缺省值初始化(如,INT 的缺省值是 0)。下列内容不会被初始化

描述

优化块临时数据区中的变量在每次调用块时被用缺省值初始化(如,INT 的缺省值是 0)。下列内容不会被初始化:

● 声明为数组的变量。

● 非优化块中声明的变量。

在STEP 7 (TIA 博途)中, 对西门子S7-1500 的优化存储区中的结构体可以用用户自定义的值进行初始化。

如果要把定义的值加载到结构体中的独立元素,只能先初始化临时结构体,再分配给静态结构体。在SCL中使用FOR循环可以在运行时用很少的代码初始化大量区域(数组结构)。

图. 01 是一个DB块结构中有两个DB变量的示例。第二个DB变量的PLC数据类型使用的是 "Array [1..10] of motor data type".

图. 01

使用 "MOVE" 指令(复制值) 可以完整的初始化结构体 InOut 变量 "Motor". 在下面的例子中,临时变量"tmp_Motor" 的内容传到了 InOut 变量 "Motor". 在 LAD/FBD 中, 位信号通过slice访问复制到了状态字(图. 02).

图. 02

临时变量和InOut变量必须具有相同的数据类型或相同的结构体数据类型。图. 03 说明了在SLC中编程实现完整初始化 InOut 变量 "Motor" 和单个元素的位到位访问。

图. 03

下面的例子说明初始化DB变量 "Motor field". 在SCL中使用 FOR 指令,循环程序重复执行只要运行变量 "tmp_Counter" 在指定的范围内。由于PLC数据类型是 "Array [1..10] of motor data type", 程序循环必须执行10次("1 TO 10 DO") 来初始化结构体变量中的所有数组元素。

图. 04

注意

在 UDT中,可以通过声明定义初始值,这样基于UDT的每一个变量都有其初始值。只有对运行中的设备做程序复位时才需要初始化结构体变量。当 STOP/RUN 切换时,就会从从装载存储区提取初始值,这相当于一次复位。

收藏
赞一下
0