您的位置:控制工程论坛网论坛 » PLC与PAC » 在S7-200的子程序中使用局部变量类型 OUT 和 TEMP 时需要注意什么?

bubli

bubli   |   当前状态:在线

总积分:817  2024年可用积分:0

注册时间: 2008-06-22

最后登录时间: 2015-05-25

空间 发短消息加为好友

在S7-200的子程序中使用局部变量类型 OUT 和 TEMP 时需要注意什么?

bubli  发表于 2009/7/13 11:47:51      3785 查看 0 回复  [上一主题]  [下一主题]

手机阅读

说明:

S7-200有一类用作临时存储或传递形参的局部存储器。

局部存储器:

  • 给主程序分配64字节局部存储器
  • 给共8级的每一级子程序嵌套分配64字节局部存储器
  • 给中断服务程序分配64字节局部存储器

注意:

如果使用 LAD 或 FBD 编程,局部存储器的最后四个字节为 STEP 7 Micro/WIN 保留。

如果在 STEP 7 Micro/WIN 中的同一级嵌套里调用多个子程序,那么这些子程序使用相同的局部存储器。

当使用变量类型 OUT 和 TEMP 时,这些局部地址从相同嵌套级别的前一子程序取值。

预先定义的局部变量会生成正确的结果。如果不预先定义,相同嵌套级别的上一次被调用的子程序中的值会被保持。这样会导致问题,特别是在边沿信号检测时。

原因:

当子程序被调用时,局部数据类型 IN 和 TEMP 不被初始化和删除。

但是,局部数据类型 IN 和 IN_OUT 在子程序开始调用时被定义为分配的值或全局变量。

措施:

将局部输出变量定义为 "IN/OUT" ,而不是 "OUT" 或 "TEMP" 可以增加可靠性。在下一个循环选择全局变量做进一步测试。

为了评估这种行为,可以在开发程序时在每一嵌套级别的网络1中调用子程序。

通过检查程序功能,可以快速发现选错的变量类型。

1楼 0 0 回复