当前位置: 主页 > PLC控制

数组的索引可以用一个变量吗?

我想实现将一个数组里每一个数与db1.b里的数进行比较,怎么在数组的索引里加入变量?如果不能的话有什么别的方法可以实现吗?

问题补充:
回答中给出程序框架的朋友能不能再告诉我下所要读取的数组的地址该怎么写?

图片说明:

3cb52b7263145dede9a3693ae286e5fb数组的索引可以用一个变量吗?

最佳答案

这个问题我前两天刚好解决了。
第一、首先建立两个DB块,例如编号为80,81。然后在每个DB中创建变量,并在DB属性设置取消优化的块访问。这样你就能看到每个变量在块中的地址了;
第二、建立一个FCscl)功能块,书写代码;

通过SCL语言使用循环+比较+PEEK_WORD(提取区域字)指令就可以实现。
具体用法:
WHILE#执行次数<#比较字数AND#结果=0DO//书写循环程序
#"temp1WORD":=PEEK_WORD(area:=16#84,//读取DB80中地址为PEEK1读地址的数据至
dbNumber:=80,//temp1WORD
byteOffset:=#PEEK1读地址);
#"temp2WORD":=PEEK_WORD(area:=16#84,//读取DB81中地址为PEEK2读地址的数据至
dbNumber:=81,//temp2WORD
byteOffset:=#PEEK2读地址);
#PEEK1读地址:=#PEEK1读地址+2;//将DB80比对的地址转向下一个数据地址
#PEEK2读地址:=#PEEK2读地址+2;//将DB81比对的地址转向下一个数据地址
IF#"temp1WORD"<>#"temp2WORD"THEN//比较本次比较的两个数据
#结果:=1;
END_IF;

END_WHILE;
备注:如果想实现两个数组在同一个DB中,只需将DB号和偏移地址进行相应修改即可。

不知是否还有疑问点?

提问者对于答案的评价:
谢谢问题已解决

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号