登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:威纶通宏这个FOR遍历数组怎么写FOR循环

点击:3513 回复:5

定义了两个数组
short a[16]
short b[15]
然后给每个数组里的变量getdata
然后判断每个变量是不是不等于0
if (a[0]|a[1]|a[2]|a[3]|........................................b[0]|b[1]|b[2]|b[3]|...................................)<>0 then
setsata...........
要是数组长,变量多,那像上面这样好繁琐
想用for循环来做,该怎么写?
22-05-20 13:48
用变量做数组,用 fot   to指令循环做比较
22-05-20 14:58
给你参考一下
附件 微信截图_20220520172006.jpg
22-05-20 17:21
谢谢版主,但是参考了下,主题还是没办法解决~
22-07-30 17:10

引用 flyfox1047 在 2022/7/30 17:10:52 发言【内容省略】

macro_command main()
short a[16],b[15],n,m
bool d=0
GetData(a[0], "XINJE XC Series", D, 100, 16)
GetData(b[0], "XINJE XC Series", D, 200, 15)
for n=0 to 15
if a[n]<>0  then
d=1
end if
next
for m=0 to 14
if b[m]<>0  then
d=1
end if
next
SetData(d, "XINJE XC Series", M, 10, 1)
end macro_command
附件 微信截图_20220731135805.jpg
22-07-31 13:58
感谢YXBK 版主!非常非常感谢!
一开始我是这样写的
附件 00.jpg
我想要a0~a30 这些数组中有一个为1 ,就设LW152 为Z, 否侧设LW150为Y ,而实际是现在这个宏运行后同时将LW152设为Z,和LW150设为Y了,
我想可能是:假如a0为1,其它为0时, for第一遍时,将LW152设为Z了,但它没退出循环,继续for下一个,就又将LW150设为Y了,后面改了下,加了break中断循环
附件 Quicker_20230823_163052.jpg
可这样还是不行,我这样测试,a0为ON时,是正常的,只改了LW152的值,可我把a0改成OFF,a1改为ON,再测,结果LW152与LW150的值都改了
后面我看了版主的代码,受了启发,改成这样,就可以了
附件 Quicker_20230823_184943.jpg
附件 Quicker_20230823_185112.jpg
不知道一开始的代码问题出在哪,加break也不行
最后修改:2023/8/23 18:53:08
23-08-23 18:52

工控新闻

更多新闻资讯