描述
优化块临时数据区中的变量在每次调用块时被用缺省值初始化(如,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 切换时,就会从从装载存储区提取初始值,这相当于一次复位。
获取更多评论