临时变量TEMP赋值问题

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    8019
  • 精华

    145
  • 被关注

    1333

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

临时变量TEMP赋值问题

5108

6

2018-05-04 08:02:19

临时变量TEMP赋值问题

   今天我快下班时,在“找答案”栏目中看到有这样的贴子。其疑问是关于300plc在编辑用户程序调用函数FC时的临时变量赋值问题。问题的链接:

http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=189930&cid=1029 

西门子无论是那一类型的plc,在调用子程序(带参数;不带参数)中的临时变量时,必须是先赋值,后使用,这个的调用临时变量最基本的原则。

   临时变量必须先赋值的真正含义是:当被调用函数FC结束后,这些临时变量运算结果值会释放掉不执行数据传递,而是作为一个随机数(根据运算中的结果),当再次调用子程序时,如果不事先赋值,那么这些随机数会进入另外一个子程序,从而进入新的运算,这样的运算结果一定会是错误的结果。函数的临时变量TEMP仅仅局限于该函数FC内部过程运算处理,而并不直接参与函数处理的数据传递,只是在调用时起作用。

那个网友在调用函数FC的临时变量时,这样做赋值,图示:


   从图示中明显可以看出,网友的编程含义是想先给临时变量#T_one = 1;#T_zero = 0赋值,然后再在下面的程序段中实现具体的控制运算(第一个疑问答案的正确的)。

   既然,临时变量只能在调用时才生效,那么,在过程运算处理时是否可以被修改状态?答案当然是肯定的,因为临时变量仅仅作用于中间数据过程处理,结果还需要具体的控制程序来确定,来做一个验证,按网友的程序基础验证,(带参数的函数FC,起、保、停控制)

创建一个项目,并创建带参数的函数FC1,图示:


在组织块OB1中多次调用FC1,图示:


使I0.0 = 1,Q0.0 = 1;使I0.3 = 1,Q0.0 = 1 / Q0.1 = 0;改变其它输入状态,FC1执行仍然正确。说明在OB1调用FC1程序段2时,临时变量TEMP的赋值有效,打开FC1,也可以看到运行过程,图示:


#T_one为1,#T_zero 为赋值有效0。FC1的虚线框是因为我没有在FC1最后没有写SET SAVE语句,写入后的FC1为实线框了,图示:


采用其它变量修改临时变量的状态?图示:重新修改FC1


由此可见,临时变量可以在过程控制中通过其它变量多次写入新值,以达到控制过程处理数据时的要求。

如果这些临时变量没有在调用前,不事先赋值呢?运行的结果大家试试,毕竟,这个验证程序相对理解的过程简单,容易理解深入。


临时变量TEMP赋值问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54043条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。