例子一:小明用10元買了20分和50分的郵票共35張,求這兩種郵票各買了多少張。
這是一個二元一次方程的求解,X+Y=35, 20X+50Y=1000,兩個未知數,兩個方程,就可以求出X,Y的值,當然如果算出來是負數,或者是小數,就是不符合實際情況的。但還是能很快算出來的。例子二:老師給小明100元,要他買100個作業本,大本子5元一個,中本子3元一個,小本子一元3個。100錢要剛好買一百個本子,每種本子的數量從0到100都可以。X+Y+Z=100,5X+3Y+Z/3=100,有兩個方程,但是未知數有三個,X,Y,Z都是整數,這個就不一定有解,也有可能有多個解。這種情況,我們也可以把X,Y, Z從0到100的所有組合算一遍,但是我們發現這種組合有上百萬鐘,如果人來計算的話要不眠不休幾個月才能算完。這種問題可以交給PLC來計算,PLC運算速度快,可以很快計算出來。建立一個函數塊FB35,在塊接口中添加輸入變量,輸出變量,靜態變量,臨時變量。
輸入參數數量:本子總數量,設為100金額:總金額,設為100輸出參數大本:大本子的數量,數據類型為整數中本:中本子的數量,數據類型為整數小本:小本子的數量,數據類型為整數數組超限:組合數量超過10則輸出報錯,需要增加更多數組元素保存靜態變量本子數量:二維數組,保存大本字,中本子,小本子的數量,一共可以保存十組,如果要保存更多,可以增大數組元素數量。組數:Zui終計數的組合數量臨時變量T大本數量:大本數量的循環次數T中本本數量:中本數量的循環次數T小本數量:小本數量的循環次數 用三個FOR循環計算三種本子的數量
首先把組數初始化為1,對大本數量,中本數量,小本數量從0到100進行循環,如果三種本子總數量等于100,總金額也等于100,且小本數量除3余數為0,則把結果存放的二維數組的前三個元素,下一組符合要求的結果存放到二位數組的下三個元素,組數超限則報錯。在主程序中調用FB35,在輸入,輸出接口添加變量。數量設為100,金額設為100,可以得出大本數量12,中本數量4,小本數量84。12+4+84=100,12*5+4*3+84/3=100計算無錯誤,這只是其中一種組合。
打開FB35函數塊的背景數據塊,查看靜態變量中的二維數組,可以看到大本數量,中本數量,小本數量符合要求的組合有4中,分別為(0,25,75),(4,18,78),(8,11,81),(12,4,84)
打開在線與診定可以看到PLC程序掃描時間達到了213ms,已經超過了循環周期監視時間150ms,因為PLC在一個周期內執行了一百多萬次的FOR循環語句,這個時候我們可以適當加大循環周期監視時間避免PLC報錯或者停機。