S7-200和200SMART的子程序最多16個輸入、輸出參數。使用間接尋址可以顯著減少輸入、輸出參數的個數,不再受上述的限制。 下面舉一個簡單的例子。 子程序“異或運算”對V存儲器中連續的若干個字節作異或運算,下面給出了子程序的局部變量和STL程序。 子程序中的BTI指令用于將數據類型為字節的輸入參數“字節數B”轉換為數據類型為整數的臨時變量“字節數I”,用來做FOR指令的當前循環計數器。 輸入參數“地址指針”是需要異或運算的數據區的起始地址。子程序中的“*#地址指針”是輸入參數“地址指針”指定的地址中變量的值。在循環程序執行的過程中,該指針中的地址值是動態變化的。 下圖是主程序中調用“異或運算”子程序的程序。調用時指定的“地址指針”的值&VB10是源地址的初始值,即數據字節從VB10開始存放;需要異或運算的數據的字節數為4,異或運算的結果存放在VB14中。 實際上該子程序的輸入、輸出參數還可以進一步地簡化:將保存運算結果的字節放在地址指針所指的地址區的第一個字節,需要異或運算的字節數放在第2個字節,需要運算的數據從第3個字節存放。這樣就只需要一個輸入參數了,當然程序要做相應的改動。但是程序的輸入、輸出接口沒有第一個方案直觀。 |
電工學習網 ( )
GMT+8, 2021-12-6 20:49