求助:S7-200子程序编写 点击:1872 | 回复:11



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-10-12 00:15:00
楼主
在用S7-200 STEP7 Micro WIN 4.0SP5编写程序时出现一个问题.

因为需要编写2个子程序,这2个子程序都是需要在主程序里多次引用的,即给于不同的几个输入,得到不同的几个输出。

2个子程序都较大,L存储区不够用,只能定义16个输入输出变量,所以我都使用了大量绝对地址,如V200.0、M20.0之类的。但是在主程序中引用子程序时,2次引用输出结果同时改变,而且发生错误。
请教高手相助.



知秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 738回
  • 年度积分:0
  • 历史总积分:4952
  • 注册:2004年1月04日
发表于:2007-10-12 11:44:00
1楼
查看你用的绝对地址逻辑上是否正确,上次调用会不会影响到本次调用!

草样年华

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2007年10月12日
发表于:2007-10-12 12:46:00
2楼
学习。楼上的可否说的详细点。如果上次调用影响到了本次调用,怎么解决呢。有什么指令呢.

草样年华

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2007年10月12日
发表于:2007-10-12 12:51:00
3楼
学习

知秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 738回
  • 年度积分:0
  • 历史总积分:4952
  • 注册:2004年1月04日
发表于:2007-10-12 13:03:00
4楼
如果使用临时变量,我们两次调用同一个子程序时采用参数传递的方式,两次传递不同的参数执行同一个逻辑。如果使用全局变量而其状态没有在第二次调用之前复位,就可能会影响到第二次执行的结果。

工控学徒

  • 精华:5帖
  • 求助:0帖
  • 帖子:218帖 | 1663回
  • 年度积分:0
  • 历史总积分:9769
  • 注册:2002年12月13日
发表于:2007-10-12 13:30:00
5楼
如果你两个子程序所使用的变量不同的话,我认为造成这种结果和你使用的变量是L还是V无关,我猜你可能使能调用子程序的方法不对才会造成这种结果。你最好把有关这个子程序的程序贴出来,让大家更好分析。

草样年华

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2007年10月12日
发表于:2007-10-12 19:01:00
6楼
这里不能发图片的啊.知秋和zhyo可否加我QQ讨论下.谢谢了!
我的QQ 25675713

才起步

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 75回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2007年10月07日
发表于:2007-10-12 20:10:00
7楼
学习

草样年华

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2007年10月12日
发表于:2007-10-14 10:21:00
8楼
 知秋:  引用   加为好友   发送留言   2007-10-12 13:03:00 
    如果使用临时变量,我们两次调用同一个子程序时采用参数传递的方式,两次传递不同的参数执行同一个逻辑。如果使用全局变量而其状态没有在第二次调用之前复位,就可能会影响到第二次执行的结果。 
 
要是使用了全局变量,怎样使子程序第二次执行前复位但也不影响到第一次的调用呢.

yzmazuh

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 16回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2002年7月05日
发表于:2009-05-02 06:17:32
9楼
子程序应该尽可能少的应用全局变量,否则失去意义,你可以做成不带参数的子程序.

blockke

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 27回
  • 年度积分:65
  • 历史总积分:682
  • 注册:2007年9月18日
发表于:2009-05-02 23:23:17
10楼

最好的方法,分解你的子程序,把一个子程序分解成2个或更多,这样就不怕临时变量不够用了。

九灭重生

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 175回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年4月04日
发表于:2009-05-05 14:38:29
11楼

第一多写几个子程序,然后分别调用,第二分解子程序


热门招聘
相关主题

官方公众号

智造工程师