在用200SMART时遇到了这么个情况,在子程序中设置临时变量#temp,运行时发现该变量无法实现保持,用符号变量就可以,所以怀疑是不是我的子程序多了,扫描会有问题,哪位高手可以帮忙解答。PS:8个子程序,最多二级嵌套,程序都不大。
问题补充:
我没说准确,直接上图,L3.1(输出变量)无法保持,换成外部变量Q1.4就好了,这个是否由你们说的原因引起?
最佳答案
1、S7-200 SMART子程序:
、更好的组织程序结构,便于调试和阅读;
、子程序在执行到末尾时自动返回,不必加返回指令;
、子程序不能使用跳转语句跳入、跳出;
、S7-200 SMART CPU最多可以调用128个子程序;
、子程序可以嵌套调用,即子程序中再调用子程序,一共可以嵌套8层 ;
、子程序可以带参数调用,在子程序的局部变量表中设置参数的类型;
见:
西门子 S7-200 SMART 技术参考Version1.1(《S7-200 SMART PLUS》)
http://www.ad.siemens.com.cn/download/docMessage.aspx?id=6861
2、临时变量#temp,运行时发现该变量无法实现保持?
临时变量#temp是无法实现保持的。
有关临时变量#temp:
局部变量是分配给每个子程序的临时存贮区。
当子程序被调用时,系统分配局部变量区给子程序;子程序执行完成后,该局部变量区被释放。释放时其中存贮的值也同时丢失,不能再下一扫描周期再被子程序使用。
3、问题补充:
L是临时变量是无法保持的。全局变量Q可以保持。
提问者对于答案的评价:
答案很详细,谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc143157.html