HMI宏命令IF条件呼叫子宏 点击:804 | 回复:7



kiqiqi

    
  • 精华:0帖
  • 求助:6帖
  • 帖子:14帖 | 42回
  • 年度积分:51
  • 历史总积分:131
  • 注册:2014年10月16日
发表于:2017-02-01 13:52:55
楼主

各位师兄,小弟最近在CLOCK宏内做一个 根据当前页面呼叫不同子宏的命令。

如:在页面1,呼叫子宏1;

    在页面2,呼叫子宏2;等等

现:设寄存器 $1为状态区的画面编号寄存器 ;运用IF……THEN CALL (var)执行命令;

 IF $1 == 1 THEN CALL 1

 ENDIF 

IF $1 == 2 THEN CALL 2

 ENDIF 

……


end

此命令离线模拟时报错。


重新 再用IF嵌套  去写:

IF $1 == 1 THEN CALL 1

ELSEIF  $1 == 2 THEN CALL 2

……

ENDIF

END

离线模拟前编译时还是报错!



请问是我语法使用上有错误,还是呼叫子宏不支持嵌套。谢谢各位师兄了!!顺祝大家新年好!



楼主最近还看过



jsyljb

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 1289回
  • 年度积分:0
  • 历史总积分:5847
  • 注册:2011年4月24日
发表于:2017-02-02 11:47:15
1楼

从语法上看,应该木有问题!应该是你的“子宏”未写,导致“编译报错”。建议添加两个“子宏”,再试试。

kiqiqi

  • 精华:0帖
  • 求助:6帖
  • 帖子:14帖 | 42回
  • 年度积分:51
  • 历史总积分:131
  • 注册:2014年10月16日
发表于:2017-02-03 19:59:31
2楼

师兄,我查过程序了,是有两个子宏的。而且我删了其中一组IF函数。只留一组在CLOCK宏里是可以运行的。

zyg_gang

  • 精华:3帖
  • 求助:1帖
  • 帖子:12帖 | 143回
  • 年度积分:0
  • 历史总积分:1352
  • 注册:2009年1月10日
发表于:2017-02-11 22:28:50
3楼

我觉得是嵌套语法上的问题。

    应该是:IF.....

              IF.....

             ........

              ENDIF

            ENDIF

说错了,请批评。

kiqiqi

  • 精华:0帖
  • 求助:6帖
  • 帖子:14帖 | 42回
  • 年度积分:51
  • 历史总积分:131
  • 注册:2014年10月16日
发表于:2017-02-23 22:38:06
4楼

我想实现的是多种选择,两个IF之间不想产生嵌套关系。所以写完一个就用ENDIF隔离一下。如果用您说的

           IF.....

              IF.....

             ........

              ENDIF

            ENDIF

会不会比较繁琐?等我有空,重写一下试试看。谢谢!

fxpass

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 104回
  • 年度积分:0
  • 历史总积分:101
  • 注册:2003年8月14日
发表于:2017-11-25 15:18:56
5楼

解决了吗,我也头痛

3721_85

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 44回
  • 年度积分:0
  • 历史总积分:97
  • 注册:2004年6月05日
发表于:2017-11-25 19:50:28
6楼

if()

{

}

else

{

}

endif


小镇2018

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 142回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2018年4月24日
发表于:2018-05-28 10:04:58
7楼

楼主,您好!请问有什么解决的好方法呢?


热门招聘
相关主题

官方公众号

智造工程师