PLC与扫码枪通讯完成PLC数据队列的操作

描述

例如:有一个扫码枪,扫码完成后的数据要求存入数组中,而后由其它指令来进行取数据,每次只能取走一个数据,而且要先存的先取走,并且随时可以再存入

plc

1:新建一个FB块,SCL语言写,接口接口如下:

plc

2:程序正文:

REGION 存数据

IF #启动填充 = TRUE AND #INDEX <#count THEN //#启动填充按钮为真时,

#INDEX := #INDEX + 1; //索引加1,索引的初始化值为0,

IF #INDEX <= #count THEN //索引小于等于存入的数组的最大长度

#数据数组[#INDEX] := #填充数据;//把填充的数据存入数组

END_IF;

END_IF;

#启动填充 := FALSE;//#启动填充按钮复位

END_REGION

REGION 取数据

IF #启动取出 = TRUE AND #INDEX >= 1 THEN //#启动取出按钮为真时,

#取出数据 := #数据数组[1]; //把数组的第一个元素取出

FOR #i := 1 TO #count - 1 DO //把数组内的数据向前移动一个位置

#数据数组[#i] := #数据数组[#i + 1];

END_FOR;

#数据数组[#INDEX] := -9999; // 把数组的最后一个元素给-9999,表示说明被取走一个

#INDEX := #INDEX - 1; //取走数据,把索引减1

END_IF;

#启动取出 := FALSE; //#启动取出按钮复位

END_REGION

3:开始写入数据

plc

4:一共存入10个数据

plc

5:开始取数据

plc

6:取完后的数据地址写入-9999,表示数据已被取走

plc

可以写入数据长度为10个,如果想要更长的数组,把count改为更长即可

审核编辑 :李倩

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分