临时变量是临时存储在本地数据区的变量。只有在执行POU时,才使用定义的临时变量,而在执行POU后,不再使用临时变量的值。在主程序或中断程序中,局部变量表只包含TEMP变量。子程序的局部变量表中也有三个变量:输入变量、输出变量和输入输出变量。
在局部变量表中赋值时,只需要指定声明的局部变量的类型(TEMP、in、IN_OUT或OUT)和数据类型(参见SIMATIC和IEC1131-3数据类型),但不需要指定内存地址。程序编辑器自动为L存储区中的所有局部变量指定存储位置。起始地址为LO,每字节8位,可就地访问。字节、字和双字在本地内存中按字节顺序分配,如LBx、LWx或LDx。
当局部变量作为参数传递给子例程时,子例程的局部变量表中指定的数据类型必须与调用POU中的数据类型值匹配。比如在主程序OB1中调用子程序SBR0,使用全局符号INPUT1作为子程序的输入参数。在SBR0的局部变量表中,已经定义了一个名为FIRST的局部变量作为输入参数。OB1调用SBRO时,INPUT1的值传入FIRST,INPUT1和FIRST的数据类型必须匹配。
在程序中使用符号名时,程序编辑器首先检查关于POU的局部变量表,然后检查符号表/全局变量表。如果符号名称在两个地方都没有定义,程序编辑器会将其视为全局符号。程序编辑器指定一条绿色波浪下划线,并用双引号将名称括起来,例如“UndefinedLocalVar”(未定义的局部变量)。如果符号名稍后被赋值,程序编辑器将不会再次自动读取局部变量表并对其进行修改。为了将符号名用作局部变量,您必须手动删除程序代码中的引号,并在符号名前面插入#符号,例如,将其更改为#UndefinedLocalVar。
每个子程序***多可以调用16个输入/输出参数。如果超过16个,将返回一个错误。选择所需变量类型所在的行,并在名称字段中键入变量名,在数据类型字段中键入数据类型。在局部变量表中无需在变量名前加#号,程序代码中只在局部变量名前加#号。 局部变量名可以包含数字、字母、下划线(_)或扩展字符(ASCII128——255)。***个字符必须是字母或扩展字符,关键字不能用作符号名称。
本地变量表中的变量名下载存储在CPU内存中,使用较长的变量名会占用更多的存储空间。
- 下一篇:有关于西门子 S7-300 PLC的问题
- 上一篇:西门子S7-1200的产品新特性