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