关于 S7200重复调用子程序的问题 1 子程序中不能有沿指令。
2子程序中变量不能使用TEMP 和Q 只能用IN_OUT 用IN
变量外面使用常数,IN_out不能输入常数。
3 子程序中不能用定时器和计数器
以下的网上官方的说明:
如果使用 LAD 或 FBD 编程,局部存储器的最后四个字节为 STEP 7 Micro/WIN 保留。
如果在 STEP 7 Micro/WIN 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。
当使用变量类型 OUT 和 TEMP 时,这些局部地址从相同嵌套级别的前一子程序取值。
预先定义的局部变量会生成正确的结果。如果不预先定义,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。
原因:
当子程序被调用时,局部数据类型 IN 和 TEMP 不被初始化和删除。
但是,局部数据类型 IN 和 IN_OUT
在子程序开始调用时被定义为分配的值或全局变量。
措施:
将局部输出变量定义为 'IN/OUT' ,而不是 'OUT' 或 'TEMP' 可以增加可靠性。在下一个循环选择全局变量做进一步测试。
为了评估这种行为,可以在开发程序时在每一
2子程序中变量不能使用TEMP
3
以下的网上官方的说明:
如果使用 LAD 或 FBD 编程,局部存储器的最后四个字节为 STEP 7 Micro/WIN 保留。
如果在 STEP 7 Micro/WIN 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。
当使用变量类型 OUT 和 TEMP 时,这些局部地址从相同嵌套级别的前一子程序取值。
预先定义的局部变量会生成正确的结果。如果不预先定义,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。
原因:
当子程序被调用时,局部数据类型 IN 和 TEMP 不被初始化和删除。
但是,局部数据类型 IN
措施:
将局部输出变量定义为 'IN/OUT' ,而不是 'OUT' 或 'TEMP' 可以增加可靠性。在下一个循环选择全局变量做进一步测试。
为了评估这种行为,可以在开发程序时在每一
