我想实现将一个数组里的每一个数与db1.b里的数进行比较,怎么在数组的索引里加入变量? 如果不能的话有什么别的方法可以实现吗?
问题补充:
回答中给出程序框架的朋友能不能再告诉我下 所要读取的数组的地址该怎么写?
图片说明:
最佳答案
这个问题我前两天刚好解决了。
第一、首先建立两个DB块,例如编号为80,81。然后在每个DB中创建变量,并在DB属性设置取消优化的块访问。这样你就能看到每个变量在块中的地址了;
第二、建立一个FC(SCL)功能块,书写代码;
通过SCL语言使用循环+比较+PEEK_WORD(提取区域字)指令就可以实现。
具体用法:
WHILE #执行次数<#比较字数 AND #结果=0 DO //书写循环程序
#"temp1 WORD":=PEEK_WORD(area:=16#84,//读取DB80中地址为 PEEK1读地址 的数据至
dbNumber:=80, // temp1 WORD
byteOffset:=#PEEK1读地址);
#"temp2 WORD":=PEEK_WORD(area:=16#84,//读取DB81中地址为 PEEK2读地址 的数据至
dbNumber:=81, // temp2 WORD
byteOffset:=#PEEK2读地址);
#PEEK1读地址:=#PEEK1读地址+2; //将DB80比对的地址转向下一个数据地址
#PEEK2读地址:=#PEEK2读地址+2; //将DB81比对的地址转向下一个数据地址
IF #"temp1 WORD"<>#"temp2 WORD" THEN //比较本次比较的两个数据
#结果:=1;
END_IF;
END_WHILE;
备注:如果想实现两个数组在同一个DB中,只需将DB号和偏移地址进行相应修改即可。
不知是否还有疑问点?
提问者对于答案的评价:
谢谢 问题已解决
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc189610.html