conkyzgw 发表于 2013-7-31 16:58:47

大量数据对比问题请教


如附件示,
要求:
点“比较”,运行宏指令,
如果RW0-19和RW40-59相同,
则LB0为1,否则LB1为1
我现在只作三个数对比的效果。
问:因所要对比的数据量比较大,是否有更好的方法,使程式更简单?比如用数据对比,整组而不是要逐个元件对比。
本程式详细宏指令如下:
macro_command main()
int a,b,c
bool on=true ,off=false
GetData(a, "Local HMI", RW, 0, 3)
GetData(b, "Local HMI", RW, 40, 3)
if a==b and a==b and a==b then
SetData(on, "Local HMI", LB, 0, 1)
else
SetData(on, "Local HMI", LB, 1, 1)
end if
DELAY(10000)
SetData(off,"Local HMI",LB ,0,1)
SetData(off,"Local HMI",LB , 1,1)
SetData(off,"Local HMI",LB, 10, 1)
end macro_command

芳季 发表于 2013-7-31 18:43:48

循环和间接寻址。方法是有的。
但是做完之后,到底是节省了编程时间,还是节省了程序空间,还是节省了数据空间,还是节省了执行时间。
还不如复制粘贴很多次,然后修改地址。
除非你的数据真很多。编制和调试一个两层循环加间接寻址的程序的时间可以少于复制粘贴修改地址的时间。那么就编吧。

conkyzgw 发表于 2013-8-6 23:05:19

就是数据很多,是否可以用循环和间接寻址方法各帮我改下来参考?

芳季 发表于 2013-8-7 23:16:45

宏里面的间接寻址,我还要学习学习。今天帮不了你。

cankoo 发表于 2013-9-8 20:59:00

for循环的效率最高

pcsms_ffRiPZIp 发表于 2021-7-3 18:49:24

太好了,谢谢

pcsms_8AJIdGo0 发表于 2021-8-4 10:13:54

用字符串比较行不行?
GetData(AA, "Local HMI", LW, , 0, 20)
GetData(BB, "Local HMI", LW, 40, 20)
result2=StringCompare(AA, BB)
页: [1]
查看完整版本: 大量数据对比问题请教