求助:WINCC变量读入 点击:1348 | 回复:10



还你漂漂拳

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 25回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2006年2月17日
发表于:2006-07-24 10:49:00
楼主
各位WINCC高手:小弟初学WINCC,遇到了一难题:需要在[b]一[/b]个输入输出域中,当A为1时显示C(MPI)变量,当A为0时显示D变量,这功能用在属性的变量中用C语言实现怎么做!!!!急!急!我在这谢谢了!



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-07-24 11:09:00
1楼
根据你读入的变量类型来调用GETTAGXXX函数,根据函数调用结果来实现显示。

还你漂漂拳

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 25回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2006年2月17日
发表于:2006-07-25 08:44:00
2楼
不好意思,楼上的兄弟,我是C语言的菜鸟一只,我知道用gettagfloat来读我目前用的变量,但是此函数需要个返回值,他返回什么样的值呢?军长,拉兄弟一把吧,能否写以下,发到我的邮箱里:iamzcheng@163.com,拜谢了

夏天来了

  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 202回
  • 年度积分:0
  • 历史总积分:282
  • 注册:2003年7月29日
发表于:2006-07-25 08:55:00
3楼
没必要动不动就用脚本来做,而且还占用系统资源。建两个I/O域分别连接C和D变量,在它们的显示属性中用动态对话框连接A进行显示设置,然后把两个I/O域重叠不就行了吗。

还你漂漂拳

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 25回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2006年2月17日
发表于:2006-07-25 10:25:00
4楼
哥哥,我这个东西比较特殊,我这样和你说吧:大选控制,我用了两调节模块,所以在自动时会有这样的情况,但还有手动的情况,所以你指导的方法,我试验了好几天,都没什么效果!哥哥,赐教吧!

夏天来了

  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 202回
  • 年度积分:0
  • 历史总积分:282
  • 注册:2003年7月29日
发表于:2006-07-25 17:46:00
5楼
那就按照yuanle说的方法,用GETTAGXXX函数加条件判断来实现。

还你漂漂拳

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 25回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2006年2月17日
发表于:2006-07-26 11:00:00
6楼
夏天来了:我知道啊!可我写不好,他好象需要返回值,拜托了!发个到iamzcheng@163.com了,我会好好学习的,老师!

FUCK TOO

  • 精华:0帖
  • 求助:0帖
  • 帖子:42帖 | 177回
  • 年度积分:4
  • 历史总积分:837
  • 注册:2005年12月11日
发表于:2007-04-23 14:47:00
7楼
建立一个内部变量IN,把这个变量和i/o域对象连起来
Float a=C;
Float b=D;
if(GetTag(A))
SetTagFloat(IN,a);
else 
SetTagFloat(IN,b);
大概就是这样,试一下吧

xingchsss

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 69回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2003年7月09日
发表于:2007-04-28 08:57:00
8楼
用间接寻址的方法可以做

supman

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 444回
  • 年度积分:0
  • 历史总积分:525
  • 注册:2006年11月16日
发表于:2007-05-07 16:25:00
9楼
学习中

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2007-08-09 16:38:00
10楼
float a,b,c;
b=GetTagFloat("ai103"); //Return-Type: float 
a=GetTagFloat("AI101"); //Return-Type: float 
 if(GetTagBit("BOOL1"))
SetTagFloat("ai100",a);
if(!GetTagFloat("BOOL1"))
SetTagFloat("ai100",b); //Return-Type: BOOL 
c=GetTagFloat("ai100"); //Return-Type: float 
return(c);
注:a为显示的第一个变量,b为第二个,也就是现场测量的值;c是你在画面中I/O显示的量(BOOL1为真,显示a值,假b值);BOOL1是条件判断,就是你说的A。
我试过了,可能比较笨,但能用,直接复制即可用。

热门招聘
相关主题

官方公众号

智造工程师