对“还是物体移动的问题” 的解释!

已锁定

自动人生

  • 帖子

    70
  • 精华

    0
  • 被关注

    1

论坛等级:游民

注册时间:2005-04-24

普通 普通 如何晋级?

对“还是物体移动的问题” 的解释!

611

2

2006-09-20 11:57:26

Batman1983 兄弟发表的帖子:
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=5&a_id=271266&s_id=0&num=6#anch
文章程序如下:
#include "apdefap.h"

long_main()

{

#define Tag1 "小车上行"

int i=100;//小车初始X坐标

if(GetTagBit(Tag1))

{while(i<200)

{

i=i+10;

return i;}

}

}
我经过试验的程序如下:
int x1;

if(GetTagBit("tag1"))
{
x1=GetTagWord("tag2");
x1=x1+2;
SetTagWord("tag2",x1);
if(x1>=300){x1=0;SetTagWord("tag2",x1);}
return x1;
}
解释如下:
我在项目中定义了两个变量:tag1 Binary Tag,tag2 Unsigned 16-bit value
tag1 用来做条件判断
tag2 用来存储中间数值
Batman1983 兄弟的问题是物体只能移动一次,这说明程序是执行了,但不是程序只运行一次,所以楼下的兄弟解释看触发器的设置。
我做了试验以后分析不是触发器的原因:
程序每次都执行了,只不过“int i”变量是内部变量,每次程序进来都重新赋初值,然后加一次,物体移动一次!因为“int i”是内部变量不能存储上次的值,所以必须把当前的“int i”值放到某个变量中去,所以:SetTagWord("tag2",x1);这个语句必须的。而且在判断是否超值的时候这个语句也要重新写一遍,对变量的重新赋值=0。
结论:在C中建立的变量是内部变量,只是存储当前执行程序时的值,程序执行完毕释放变量。
对“还是物体移动的问题” 的解释! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32569条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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