威纶通官方论坛

求助,宏指令中 if X==Y Then 后面不执行

[复制链接]
发表于 2012-7-14 01:05:49 | 显示全部楼层 |阅读模式
macro_command main()
int cnt1
int set1
int lW11


GetData(cnt1, "PI8600 MODBUS RTU", 6x, 8#566, 1)   //读Cnt1,或直接设置
GetData(set1, "PI8600 MODBUS RTU", 6x, 8#567, 1)   //读set1,或直接设置

SetData(cnt1, "Local HMI", LW, 101, 1)// 送cnt1显示
SetData(set1, "Local HMI", LW, 102, 1)// 送cnt1显示



if cnt1==set1 then
    lw11=0   
    SetData(lW11, "Local HMI", LW, 11, 1)//送显,看程序是否执行
   
    else
   
    lw11=lw11+1
    SetData(lW11, "Local HMI", LW, 11, 1)//送显,看程序是否执行
   
    end if

//现在出现的问题是,当cnt1与set1都为0时,有执行 if cnt1==set1 then 后面的指令,即LW11=0
//当设置set1为大于cnt1数值时,程序正常运行,LW11正常加1;
//当设置set1与cnt1相等时,没有执行if cnt1==set1 then 后面的指令,LW11还在加1;


end macro_command
发表于 2012-7-16 18:31:21 | 显示全部楼层
数据类型应为短整型
发表于 2012-7-20 10:58:46 | 显示全部楼层

这个跟数据类型有关吗?明显的程序问题,程序思路不对
发表于 2012-7-20 17:54:26 | 显示全部楼层
lw11=lw11+1
    SetData(lW11, "Local HMI", LW, 11, 1)//送显,看程序是否执行
不需要递加的话,改为
lw11=1
    SetData(lW11, "Local HMI", LW, 11, 1)//送显,看程序是否执行
或者在程序之前先清零处理。
发表于 2012-8-10 21:35:08 | 显示全部楼层
int cnt1
int set1
int lW11
改成
short cnt1
short set1
short lW11
发表于 2013-7-29 22:30:11 | 显示全部楼层
本帖最后由 芳季 于 2013-7-29 22:32 编辑

我觉得这个跟数据类型没有关系吧。
问一下楼主,你所说的 “还在加一”是什么意思?
是后续的执行仍然每次加一,还是后续的执行停留在最后一次加一的状态?
还有,不知道大小写有没有关系。不太了解。
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-11-22 01:00

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表