西门子1200 在子程序结束后,临时变量的数据没有清空? 点击:2448 | 回复:6



jiming

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:12帖 | 44回
  • 年度积分:0
  • 历史总积分:208
  • 注册:2010年4月02日
发表于:2011-11-12 22:21:06
楼主

小弟最近做的项目是用西门子1200,新东西遇到很多新问题。

编了个功能FC ,在FC之前有个触点M10做为触发,M10有效,开始调用FC功能,也就是调用子程序吧,FC里面的变量该怎么工作就怎么工作,可是当M10在某一时刻掉电后,我的理解就是停止调用FC,那FC里定义的临时变量TEMP应该全部释放空间,当M10再次闭合,再次调用FC时,原来定义的TEMP变量应该全部为0啊,怎么保持上次调用结束时的当前值?

FC具体的程序,是利用定时器和ADD做一个递增的函数,中间变量定义为TEMP1,我做过测试,M10断电时,TEMP1当前值假设为2764.8,当M10再次通电后,发现TEMP1的初始值还是2764.8,从上次执行的结果处接着递增,当时,我就不解了,这是怎么回事?临时变量不是在子程序停止调用后释放空间,全部清空的吗?怎么还?

没办法,只能请教各位前辈了




t_linchun

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 26回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2011年10月13日
发表于:2011-11-18 13:14:37
1楼
200型也有同样的问题,咨询西门子的客服,回答是尽量不用临时变量。

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2012-01-13 09:10:02
2楼

在临时变量没有明确的含义之前请不要使用

而且临时变量在进入和退出子程序时的值是不会清0 的,在使用前需要你自己给他一个明确的数值

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-01-13 09:29:12
3楼

引用 wingwf2000 的回复内容:在临时变量没有明确的含义之前请不要使用而且临时变量在进入和退出子程序时的值是不会清0 的,在使用前需要你自己给他一个明确的数值



这位说的很对, 也就是 零时变量 TEMP  是随机值的,  所以你每次调用不希望保留原来的 值,  就做初始化即可!

 

S7-1200  又没有内存管理功能!

wenbaolv

  • 精华:0帖
  • 求助:19帖
  • 帖子:88帖 | 1461回
  • 年度积分:91
  • 历史总积分:4554
  • 注册:2011年7月10日
发表于:2012-01-13 09:41:26
4楼
初始化可以     在完成之后复位一下可行?

竹子

  • 精华:0帖
  • 求助:9帖
  • 帖子:19帖 | 606回
  • 年度积分:0
  • 历史总积分:2154
  • 注册:2009年11月26日
发表于:2012-01-13 10:04:17
5楼
把PLC的临时变量存储区清零,后重启。

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2012-01-13 10:08:57
6楼
临时变量的数据在子程序结束之后会变成不确定的值,所以在此调用之前,请重新赋初值。

热门招聘
相关主题

官方公众号

智造工程师