关于威纶通宏指令IF语句的两个表述问题 点击:9488 | 回复:16



时空——王者之师

    
  • 精华:2帖
  • 求助:234帖
  • 帖子:482帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2013-09-06 20:16:05
楼主

下面两个语句:

正确,可以正常使用的语句

macro_command main()

short a,b,c

GetData(a, "Local HMI", LW, 9022, 1)

GetData(c, "DELTA DVP", D, 4000, 1)

if a>=2016 then

if c==100 then

b=1982

else

b=0

end if

end if

SetData(b, "DELTA DVP", D, 280, 1)

SetData(b, "DELTA DVP", D, 11999, 1)

end macro_command

不能正常使用,但是编译没有错误的语句:

macro_command main()

short a,b,c

GetData(a, "Local HMI", LW, 9022, 1)

GetData(c, "DELTA DVP", D, 4000, 1)

if a>=2016 and c==100 then

b=1982

else

b=0

end if

SetData(b, "DELTA DVP", D, 280, 1)

SetData(b, "DELTA DVP", D, 11999, 1)

end macro_command

大家试试这两个宏指令,是否有差异,不能正常使用的为什么编译没有错误?



楼主最近还看过



时空——王者之师

  • 精华:2帖
  • 求助:234帖
  • 帖子:482帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2013-09-07 07:23:53
1楼

捧场的人都没有,郁闷?工控网,给我雄起来!

simonwu675

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 794回
  • 年度积分:0
  • 历史总积分:2856
  • 注册:2009年11月23日
发表于:2013-09-07 10:12:34
2楼

if a>=2016 and c==100 then

关于上面的and,建议你查下宏指令手册,可不可以用and

或是用&

芳季

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

应该是你没有搞清楚那个else是属于那个if的。

假如要属于外层的,怎么编。要属于内层的,怎么编。

时空——王者之师

  • 精华:2帖
  • 求助:234帖
  • 帖子:482帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2013-09-07 14:43:34
4楼

回复内容:

对: simonwu675 if a>=2016 and c==100 then关... 内容的回复!


威纶的宏指令手册上没有查到这个“与”表达语句。

zzhou0314

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 46回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2012年10月21日
发表于:2013-09-18 11:25:45
5楼

怎么不能正常使用呢?是什么现象?试试GetDataEX 和 SetDataEX

zzhou0314

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 46回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2012年10月21日
发表于:2013-09-18 11:30:19
6楼

if a>=2016 then

if c==100 then

 

a>=2016  并c不等于100时

b=0

if a>=2016 and c==100 then

a<2016  或者c不等于100时

b=0

runljz

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 159回
  • 年度积分:45
  • 历史总积分:4071
  • 注册:2009年7月13日
发表于:2013-09-22 14:11:42
7楼

第一个宏指令,不能正确显示是您有个小小的误区,您定义了是三个变量,a,c的值有固定的来源,而b的值只有在if判断通过后有值,建议您在宏指令中加一句话,如下,结果就会OK。

short a,b,c

b=0

GetData(a, "Local HMI", LW, 9022, 1)

GetData(c, "DELTA DVP", D, 4000, 1)

if a>=2016 then

if c==100 then

b=1982

else

b=0

end if

end if

SetData(b, "DELTA DVP", D, 280, 1)

SetData(b, "DELTA DVP", D, 11999, 1)


zbin06

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 15回
  • 年度积分:1
  • 历史总积分:43
  • 注册:2009年4月15日
发表于:2015-04-19 23:51:42
8楼

楼上的   回答   受教了

虚度浮生

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 80回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2015年11月22日
发表于:2016-02-15 20:26:49
9楼

受教了。

期待中。

期待中。

期待中。

zhhkoko

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 17回
  • 年度积分:100
  • 历史总积分:219
  • 注册:2016年2月20日
发表于:2016-02-20 14:52:27
10楼

学习来了

学习来了

学习来了

学习来了

学习来了

yaojun1971

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 121回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2019-02-11 19:04:57
11楼

感谢楼主分享,小白来来学习一下。谢谢啦!

left-handed

  • 精华:0帖
  • 求助:7帖
  • 帖子:48帖 | 749回
  • 年度积分:73
  • 历史总积分:1108
  • 注册:2006年4月12日
发表于:2019-06-28 16:49:32
12楼

queshishizegeyangzide

yang90921

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 166回
  • 年度积分:0
  • 历史总积分:80
  • 注册:2013年3月15日
发表于:2019-08-07 09:47:05
13楼

楼主威武啊好人平安哦

风飘零叶

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 13回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2015年8月19日
发表于:2019-12-04 19:51:23
14楼

还能这样写if(表达式)后边直接又是if(表达式)然后才是 执行语句 最后再来个end if  ?威纶通里没有与或非 ,但可以开头来两句if的吗?我是新手 我也试试看


风飘零叶

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 13回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2015年8月19日
发表于:2019-12-04 19:55:33
15楼

else if 中的else 是可以省略的吗?

wang1986heng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 35回
  • 年度积分:0
  • 历史总积分:1036
  • 注册:2014年9月27日
发表于:2020-02-20 15:24:27
16楼

感谢楼主的样例分享


热门招聘
相关主题

官方公众号

智造工程师