关于s7-200子程序的一个奇怪问题!!! 点击:1593 | 回复:19



ikkoku

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:40帖 | 187回
  • 年度积分:0
  • 历史总积分:371
  • 注册:2006年4月07日
发表于:2007-07-11 11:05:00
楼主
昨天在编写一个程序时出现了奇怪问题!!

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

而且两个子程序都较大,L存储区不够用,所以我都使用了大量绝对地址,如vd1500、vw500之类的。

但是奇怪的事情出现了!!其中一个子程序完全正常,主程序里两次引用,输入不同的时候得到不同的结果,

而另外一个子程序不正常,主程序里也是两次引用,但输出结果同步改变、而且混乱错误!!



ikkoku

  • 精华:0帖
  • 求助:1帖
  • 帖子:40帖 | 187回
  • 年度积分:0
  • 历史总积分:371
  • 注册:2006年4月07日
发表于:2007-07-11 11:06:00
1楼
补充,第2个子程序在仅一次引用的时候,也是正常的!

ZHANGCL

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 108回
  • 年度积分:0
  • 历史总积分:988
  • 注册:2001年12月29日
发表于:2007-07-11 11:11:00
2楼
这个一点也不奇怪,有的寄存器还保留着原来的数据,需要查一下在引用子程序时还有哪些寄存器需要初始化。

zjxuefeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 122回
  • 年度积分:0
  • 历史总积分:190
  • 注册:2005年11月04日
发表于:2007-07-11 12:09:00
3楼
很可能是第2个子程序里有逻辑错误。在子程序开始前没有对相应的数据复位。仔细看看第二个子程序的计算过程,检查 程序计算所涉及的存储区对下一次子程序运行所调用的数据影响。

XIAO菜

  • 精华:8帖
  • 求助:0帖
  • 帖子:75帖 | 1108回
  • 年度积分:0
  • 历史总积分:1610
  • 注册:2002年7月18日
发表于:2007-07-14 16:38:00
4楼
西门子S7200不支持一个子程序多重引用(关键是里面的数据会引起冲突)。最好在多写一边,但是两个程序段里面不能有相同的数据位号,负责和你上面说的现象一样

求知工控

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 113回
  • 年度积分:0
  • 历史总积分:226
  • 注册:2007年7月13日
发表于:2007-07-14 19:38:00
5楼
赞同ZHANGCL的说法

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2007-07-14 22:40:00
6楼
 西门子S7200不支持一个子程序多重引用??? 有点怀疑

ikkoku

  • 精华:0帖
  • 求助:1帖
  • 帖子:40帖 | 187回
  • 年度积分:0
  • 历史总积分:371
  • 注册:2006年4月07日
发表于:2007-07-16 21:30:00
7楼
问题已经解决,确实是寄存器的问题。

子程序是可以多次调用的,我这个程序里的两个子程序,最终都是24次调用,一切正常,程序扫描时间最大44ms。

就这样程序还达到了6k,而224的程序存储空间只有8k,不用子程序无法想象啊

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-07-16 23:42:00
8楼
看来还是众人划桨,船才跑得快。

金粟兰看法

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 479回
  • 年度积分:0
  • 历史总积分:975
  • 注册:2006年8月23日
发表于:2007-07-17 09:52:00
9楼
一个很好的经验。顶!!!!

ShowFine

  • 精华:1帖
  • 求助:1帖
  • 帖子:57帖 | 753回
  • 年度积分:0
  • 历史总积分:1671
  • 注册:2003年10月29日
发表于:2007-07-17 10:02:00
10楼
楼主应该庆幸没有用三菱的PLC啊!吼吼...... 搞不懂,为什么那么多人喜欢用三菱的,吼吼

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2007-07-17 10:34:00
11楼
SIEMENS的太贵了.

ShowFine

  • 精华:1帖
  • 求助:1帖
  • 帖子:57帖 | 753回
  • 年度积分:0
  • 历史总积分:1671
  • 注册:2003年10月29日
发表于:2007-07-17 11:32:00
12楼
S7-200CN很贵吗? 不觉得啊! 什么东西都想省那么百把块钱的话就不要做了.

zengjunxian

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 126回
  • 年度积分:0
  • 历史总积分:217
  • 注册:2006年11月17日
发表于:2007-07-17 11:36:00
13楼
下面引用由XIAO菜在 2007-7-14 16:38:00 发表的内容:
  西门子S7200不支持一个子程序多重引用(关键是里面的数据会引起冲突)。最好在多写一边,但是两个程序段里…
--------------------------------------------------------------------------------------------
赞同!!

aaron jh

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 71回
  • 年度积分:0
  • 历史总积分:169
  • 注册:2005年9月03日
发表于:2007-07-19 14:41:00
14楼
学习了!

有缘随缘

  • 精华:0帖
  • 求助:0帖
  • 帖子:57帖 | 530回
  • 年度积分:0
  • 历史总积分:915
  • 注册:2006年9月01日
发表于:2007-07-19 16:30:00
15楼
学习过了

jeffy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2004年12月28日
发表于:2009-07-15 11:32:04
16楼
我的问题是:西门子子程序里的管脚不能超过13个?变量过多如何处理?

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-07-15 14:12:39
17楼
变量过多很简单:    用变量块的起始地址做参数

zljcool

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 25回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2009年6月23日
发表于:2009-07-15 16:54:13
18楼

出现数据重复就爱出这毛病,还有就是双线圈!

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-07-16 12:16:07
19楼

变量太多可以用间接寻址吗。

例如:PID指令你看都有多少个变量。但是在指令当中就这么一个TAB参数。你想。那里会发生局部变量不够用的?


热门招聘
相关主题

官方公众号

智造工程师