三菱ST語言教學(2)——數組的使用

上一篇文章介紹了ST基本指令的用法,和聲明基本數據類型的標籤,但標籤除了可以聲明單個的基本數據,還可以聲明多個數據構成的數組(array),也可以聲明結構體(struct)和功能塊(function block)。本文介紹數組的使用方法。

數組的建立

什麼是數組呢?就我個人理解,數組就是一組相同類型的數據構成的列表,它可以是一組開關量,可以是數字量,也可以是結構體,在標準的ST語言中也可以是一組功能塊(三菱不支持)。

下面聲明一個包含100個位(bit)變量的數組:

三菱ST語言教學(2)——數組的使用

聲明數組變量

點擊確定後數據類型顯示“bit(0..99)”。可以看到,與基本數據相比,建立數組只不過是在選擇數據類型時勾選數組對話框,並添加數量就可以了,確定後標籤BitList代表的就是容量為100的位數組。

數組的賦值

那數組如何使用呢?先舉個簡單的例子:

三菱ST語言教學(2)——數組的使用

圖中顯示的是對數組前10個變量直接進行賦值,可以看到想要操作數組中的某一個變量,只要在標籤BitList後面加上[x]就可以了,需要注意無論判斷還是賦值,x的值一定要在數組的範圍內,否則會引起PLC報錯。

常用方法

數組強大的地方在於,方括號內除了直接寫數值,還可以使用整形的數字變量,這個特性配合case或者for指令,只要幾行代碼就可以實現多個變量同時操作。例如:建立一個容量為1000的字(word)數組,第一個元素為0,後面每一個元素都比前一個大3:

三菱ST語言教學(2)——數組的使用

多變量按規則賦值

這段程序看起來很少,但是弄清楚工作的原理還是要稍微費點時間的,數字量ii由1數到999共999次(省略by就默認增量為1)。

當ii=1時,執行一次WordList[1]:=WordList[0]+3,WordList[0]並沒有進行操作默認值為0,WordList[1]=0+3=3;

當ii=2時,執行一次WordList[2]:=WordList[1]+3,WordList[2]=3+3=6;

。。。

。。。

當ii=999時,執行一次WordList[999]:=WordList[998]+3,WordList[999]=2994+3=2997;

仿真執行一次,監看數組WordList,驗證是否這個操作是否被正確的執行:

三菱ST語言教學(2)——數組的使用

仿真運行+監看變量

可以看到,結果跟前面分析的一直,僅用3行程序完成了1000個變量賦值的任務目標。

拓展

數組除了賦值還可以進行搜索判斷,我們可以在上面的基礎上加大一下難度:分析上面的數組,將值是5的倍數的數組號依次存入新數組NumbList,由NumbList[1]開始存,並將數量存入NumbList[0]。

三菱ST語言教學(2)——數組的使用

結果如圖,共有200個,分別是0,5,10,15...。

在原來的for循環後面增加了新的for循環,由0至999遍歷上面生成的整個WordList數組,使數組中的每一個元素與5做除餘(MOD為除餘指令,前面的變量除以後面的變量取餘數),將餘數放入一個臨時變量裡面,然後判斷這個這個餘數是否為0,為0則值是5的倍數,在1000次循環中,每次遇到餘數為0時,NumbList[0]的值自身加1,並將它作為數組NumbList的組號記錄當前判斷WordList的組號。兩個循環的外面增加了執行條件,目的是讓循環只執行一個週期,保證NumbList[0]的值是正確的。


分享到:


相關文章: