威纶通官方论坛

EB8000 V4.41

[复制链接]
发表于 2011-4-3 09:22:01 | 显示全部楼层 |阅读模式
新版EB8000 V4.41和V4.40都有同样的问题,就是在宏指令中使用变量作为元件地址时,GetData/SetData函数运算结果不正确。我试过下面的宏指令:

macro_command main()
short a,b,c
GetData(a,"Local HMI",LW,9200,1)
GetData(b,"Local HMI",LW,a,1)
GetData(c,"Local HMI",RW,a,1)
SetData(b,"Local HMI",LW,8000,1)
SetData(c,"Local HMI",LW,8010,1)

end macro_command
运行结果,LW8000不能正确显示LW0(INDEX0)的内容,同样LW8010也不能正确显示RW0(INDEX0)的内容。而这个宏指令在V4.34版本是可以正确显示的。
就V4.40的这个问题和苏州客服交流过,得到的建议是暂时不要用新版的软件!后来看到有V4.41出来,可是试验的结果仍然照旧。既然新版软件有问题就不应久拖不改,误导用户(本来我是很高兴新版本有了字符串指令,想要运用的)。
发表于 2011-4-8 10:22:04 | 显示全部楼层
您好:
你GetData(a,"Local HMI",LW,9200,1)
GetData(b,"Local HMI",LW,a,1)
其实没有必要用到宏指令,以后要用到索引的寄存器,你直接勾选相应数值元件的索引寄存器就可以了。
如有问题,欢迎拨打全国技术热线400-888-0872咨询。
发表于 2011-4-8 11:36:26 | 显示全部楼层
你好,很抱歉给你造成困扰
上述宏指令只要将变量名a改成aa就可以
因为a,b,c..f会被看成十六进制常数。
 楼主| 发表于 2011-4-8 12:48:12 | 显示全部楼层
回复 3# weinview


    再次试验的结果
楼上2位的意见不敢苟同。关于要不要用宏指令的问题,不是不知道可以用勾选索引寄存器而是在宏指令中要用到对索引寄存器的操作;3楼提出的将变量a改为aa以避免误读为16进制的A-F,听起来蛮有道理,可是实践的结果依然如故!再说这个宏指令在老版本中(V4.34以前)是可以正确执行的。希望威纶技术部门尽快解决此问题,以免用户困扰。
发表于 2011-4-8 14:04:38 | 显示全部楼层
你好:
你改成一下就OK,
macro_command main()
short index0,b,c
GetData(index0,"Local HMI",LW,9200,1)
GetData(b,"Local HMI",LW,index0,1)
GetData(c,"Local HMI",RW,index0,1)
SetData(b,"Local HMI",LW,8000,1)
SetData(c,"Local HMI",LW,8010,1)

end macro_command
 楼主| 发表于 2011-4-9 10:13:40 | 显示全部楼层
回复 5# weinview

呵呵,问题终于解决了,可是我弄不明白的是为什么4.34以前的版本就没有这个问题呢?再说在宏指令的说明里面也没有规定a-f不可以作为变量名呀?
发表于 2011-4-9 10:17:35 | 显示全部楼层
此项问题在V442版将会修正(预计在4/15日发布)

新的做法是当检查到a~f时会先判断是否是变量, 如果不是, 才会视为16进制的数字
 楼主| 发表于 2011-4-9 10:35:51 | 显示全部楼层
回复 7# Kevin Chen


    感谢你们的回复,论坛就要这样有问题立马解答,用户才有信心
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

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

GMT+8, 2024-5-17 17:43

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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