工控之家

 找回密码
加入工控之家

S7-200子程序两次调用不成功,错在哪里?

[复制链接]
发表于 2012-7-10 19:37:37 | 显示全部楼层
PLC中为子程序开辟了60个字节的可用存贮区域,但这60个字节是所有子程序共享的空间,并不是每个子程序独享。
也就是说,局部变量只保持一个扫描周期赋值的数据,要保证局部变量有效,必须保证每个扫描周期都有赋值,特别
是OUT类型变量,OUT类型变量如果前面有条件,则当条件为假时,输出的是无效值。而赋值之前对OUT类型变量的
读取也是无效的。
故此若这样写程序,只有一个子程序,有可能能工作,若存在其他子程序,也用到了局部变量,则程序就会
不正常。
类似的变量还有 AC0 AC1 AC2 AC3 AC4 .....
这类变量使用前一定要赋值,一段程序结束后该变量应该没用才对。
你也可以把输出变量和中间变量,用IN-OUT类型来定义,效果会大大改变。
给你个试验程序:
子程序一:定义AA OUT WORD
1+AA  >  AA
子程序二:
MOVW 100 > LW0
在主程序中分别 调用这两个子程序,你会发现,程序一的输出值,恒为101,而不是需要的每个扫描周期+1值(快速变化值)。


               
        [ 此帖被醉湮邃虞在2010-11-15 11:19重新编辑 ]
发表于 2012-7-11 00:11:12 | 显示全部楼层
10楼楼主,非常感谢您的答案 !
您需要登录后才可以回帖 登录 | 加入工控之家

本版积分规则

QQ|手机版|小黑屋|Archiver|工控之家 ( 鲁ICP备12015736号-1 )

GMT+8, 2024-5-19 16:30 , Processed in 0.054533 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表