威纶通官方论坛

setdata问题

[复制链接]
发表于 2012-12-29 11:27:41 | 显示全部楼层 |阅读模式
大家好,我如下指令
macro_command main()
int a,b,c
bool on =true,off=false
GetData(a, "Local HMI", LW,0, 1)    //从LW0数值输入元件获取数据
if a==1 then  
b=11    //如果LW0数值为1,则b为11
else
b=12     //如果LW0数值为1,则b为12
end if
SetData(b, "Local HMI", LW, 1, 1)//数值b传送到数值显示元件LW1
end macro_command

问:运行第一次,LW0输入1后,LW1显示11,但之后随便改LW0数值后,数值都是11而不会变,是否“SetData”这个只要赋值一次后,须重启触摸屏才可再更改数了呢?
发表于 2012-12-29 13:10:21 | 显示全部楼层
本帖最后由 syl-510129 于 2012-12-29 13:13 编辑

回复 1# conkyzgw


    可以启用LW0的“通知”功能,即“输入后ON”,如LB0。然后在“PLC控制”中设置“执行宏指令”的触发方式为“当为ON时即执行”,再在宏指令末尾加上一条关闭LB0的指令即可。
macro_command main()
int a,b,c
bool on =true,off=false
GetData(a, "Local HMI", LW,0, 1)    //从LW0数值输入元件获取数据
if a==1 then  
b=11    //如果LW0数值为1,则b为11
else
b=12     //如果LW0数值不为1,则b为12
end if
SetData(b, "Local HMI", LW, 1, 1)//数值b传送到数值显示元件LW1
SetData(off, "Local HMI", LB,0, 1)
end macro_command
 楼主| 发表于 2012-12-29 15:28:34 | 显示全部楼层
谢谢!但还是有点问题,我在LW0那里输入1,确认。LW1显示11。再次LW0输入2,确认,LW1显示12。这样正常。但,当我再次在LW0那里输入1时,LW1那里还是显示12没变,会是什么问题呢?
发表于 2012-12-30 10:28:10 | 显示全部楼层
本帖最后由 syl-510129 于 2012-12-30 10:31 编辑

回复 3# conkyzgw


    问题出在你声明变量a,B,C为INT(整形,32位)所以LW1是不可以用的,改为LW2就可以了。或者将INT改为SHORT
 楼主| 发表于 2012-12-30 12:24:19 | 显示全部楼层
回复 4# syl-510129
好了,谢谢!
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

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

GMT+8, 2024-4-30 02:26

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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