你没有实际去调试的,光理论搞了,如果你实际去做了,会发现系统不会报错的。 正在编译程序块... 主程序 (OB1) SBR_0 (SBR0) SBR_1 (SBR1) INT_0 (INT0) 块大小 = 81(字节),0 个错误 正在编译数据块... 块大小 = 0(字节),0 个错误 正在编译系统块... 已编译的块有 0 个错误, 0 个警告 总错误数目:0 ** 程序中的每个POU都有自己的局部变量表,配备64个字节的L内存。这些局部变量表允许您定义具有范围限制的变量:局部变量只在建立该变量的POU中才有效。相反,在每个POU中均有效的全局符号只能在符号表/全局变量表中定义。每个子程序调用的输入/输出参数的最大限制是16,如果您尝试下载的程序超过此一限制,会返回一则错误信息。在局部变量表中赋值时,您指定说明类型(TEMP、IN、IN_OUT或OUT)和数据类型(请参阅SIMATIC和IEC 1131-3数据类型),但不指定内存地址;程序编辑器自动在L内存区中为所有的局部变量指定内存位置。 上面都很罗嗦,一句话:跟中国人的名字差不多。可以有很多一样的名字,但是姓不一样就不会重复。这是允许的。不信,你点程序的【全部编译】按钮看一下结果。 有2种解释:一种就是程序调用1个子程序,结束后,自动释放占用的L,调用另外的再分配 另一种解释;POU变量符号表(名字)+SBRn(姓)来进行区分 |