例如:有一個掃碼槍,掃碼完成后的數(shù)據(jù)要求存入數(shù)組中,而后由其它指令來進行取數(shù)據(jù),每次只能取走一個數(shù)據(jù),而且要先存的先取走,并且隨時可以再存入
1:新建一個FB塊,SCL語言寫,接口接口如下:
2:程序正文:
REGION 存數(shù)據(jù)
IF #啟動填充 = TRUE AND #INDEX <#count THEN //#啟動填充按鈕為真時,
#INDEX := #INDEX + 1; //索引加1,索引的初始化值為0,
IF #INDEX <= #count THEN //索引小于等于存入的數(shù)組的最大長度
#數(shù)據(jù)數(shù)組[#INDEX] := #填充數(shù)據(jù);//把填充的數(shù)據(jù)存入數(shù)組
END_IF;
END_IF;
#啟動填充 := FALSE;//#啟動填充按鈕復位
END_REGION
REGION 取數(shù)據(jù)
IF #啟動取出 = TRUE AND #INDEX >= 1 THEN //#啟動取出按鈕為真時,
#取出數(shù)據(jù) := #數(shù)據(jù)數(shù)組[1]; //把數(shù)組的第一個元素取出
FOR #i := 1 TO #count - 1 DO //把數(shù)組內的數(shù)據(jù)向前移動一個位置
#數(shù)據(jù)數(shù)組[#i] := #數(shù)據(jù)數(shù)組[#i + 1];
END_FOR;
#數(shù)據(jù)數(shù)組[#INDEX] := -9999; // 把數(shù)組的最后一個元素給-9999,表示說明被取走一個
#INDEX := #INDEX - 1; //取走數(shù)據(jù),把索引減1
END_IF;
#啟動取出 := FALSE; //#啟動取出按鈕復位
END_REGION
3:開始寫入數(shù)據(jù)
4:一共存入10個數(shù)據(jù)
5:開始取數(shù)據(jù)
6:取完后的數(shù)據(jù)地址寫入-9999,表示數(shù)據(jù)已被取走
可以寫入數(shù)據(jù)長度為10個,如果想要更長的數(shù)組,把count改為更長即可
審核編輯 :李倩
-
plc
+關注
關注
5012文章
13304瀏覽量
463591 -
通訊
+關注
關注
9文章
904瀏覽量
34924
原文標題:SCL語言編程:PLC與掃碼槍通訊完成PLC數(shù)據(jù)隊列的操作
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術圈】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論