威纶通官方论坛

大量数据对比问题请教

[复制链接]
发表于 2013-7-31 16:58:47 | 显示全部楼层 |阅读模式

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-7-31 18:43:48 | 显示全部楼层
循环和间接寻址。方法是有的。
但是做完之后,到底是节省了编程时间,还是节省了程序空间,还是节省了数据空间,还是节省了执行时间。
还不如复制粘贴很多次,然后修改地址。
除非你的数据真很多。编制和调试一个两层循环加间接寻址的程序的时间可以少于复制粘贴修改地址的时间。那么就编吧。
 楼主| 发表于 2013-8-6 23:05:19 | 显示全部楼层
就是数据很多,是否可以用循环和间接寻址方法各帮我改下来参考?
发表于 2013-8-7 23:16:45 | 显示全部楼层
宏里面的间接寻址,我还要学习学习。今天帮不了你。
发表于 2013-9-8 20:59:00 | 显示全部楼层
for循环的效率最高
发表于 2021-7-3 18:49:24 | 显示全部楼层
太好了,谢谢
发表于 2021-8-4 10:13:54 | 显示全部楼层
用字符串比较行不行?
GetData(AA[0], "Local HMI", LW, , 0, 20)
GetData(BB[0], "Local HMI", LW, 40, 20)  
result2=StringCompare(AA[0], BB[0])
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

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

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

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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