step7-micro/win在程序編輯器窗口里為每個pou提供一個獨立的頁。主程序總是第1頁,后面是子程序或中斷程序。因為各個程序在編輯器窗口里被分開,編譯時在程序結束的地方自動加入無條件結束指令或無條件返回指令,用戶程序只能使用條件結束和條件返回指令。
通常將具有特定功能且多次使用的程序段作為子程序。子程序可以多次被調(diào)用,也可以嵌套(最多8層),還可以遞歸調(diào)用(自己調(diào)用自己)。子程序有子程序調(diào)用和子程序返回兩大類指令,子程序返回又分條件返回和無條件返回。子程序調(diào)用指令用在主程序或其他調(diào)用子程序的程序中,子程序的無條件返回指令在子程序的最后網(wǎng)絡段。梯形圖指令系統(tǒng)能夠自動生成子程序的無條件返回指令,用戶無需輸入。
子程序的調(diào)用是有條件的,未調(diào)用它時不會執(zhí)行子程序中的指令,因此使用子程序可以減少掃描時間,同時可使整個程序功能清晰,易于查錯和維護,還能減少存儲空間。為了移植子程序,應避免使用全局符號和變量,例如v存儲區(qū)中的絕對地址。
在編程軟件的程序數(shù)據(jù)窗口的下方有主程序(obi)、子程序(sub0)、中斷服務程序(int0)
的標簽,點擊子程序標簽即可進入sub0子程序顯示區(qū)。也可以通過指令樹的項目進入子程序sub0顯示區(qū)。添加一個子程序時,可以用編輯菜單的插入項增加一個子程序,子程序編號n從0開始自動向上生成。用鼠標右鍵點擊指令樹中的子程序或中斷程序的圖標,在彈出的菜單中選擇“重新命名”,可以修改它們的名稱。
子程序可能有要傳遞的參數(shù)(變量和數(shù)據(jù)),這時可以在子程序調(diào)用指令中包含相應參數(shù),它可以在子程序與調(diào)用程序之間傳送。參數(shù)(變量和數(shù)據(jù))必須有符號名(最多8個字符)、變量和數(shù)據(jù)類型等內(nèi)容。子程序最多可傳遞16個參數(shù)。傳遞的參數(shù)在子程序局部變量表中定義。局部變量表中的變量有in、out、in/out和temp等四種類型。
●in類型:將指定位置的參數(shù)傳入子程序。參數(shù)的尋址方式可以是直接尋址(如vb10)、間接尋址(如*acl)或立即數(shù)(如1234)。也可以將數(shù)據(jù)的地址值傳入子程序(&vb100)。
●out類型:是子程序的結果值(數(shù)據(jù)),它被返回給調(diào)用它的pou。常數(shù)和地址值不允許作為輸出參數(shù)。
●in/out類型:將指定位置的參數(shù)傳到子程序,從子程序來的結果值被返回到同樣的地址。常數(shù)和地址值不允許作為輸出參數(shù)。
●temp類型:局部存儲器只能用作子程序內(nèi)部的暫時存儲器,不能用來傳遞參數(shù)。
局部變量表的數(shù)據(jù)類型可以是能流、布爾(位)、字節(jié)、字、雙字、整數(shù)、雙整數(shù)和實數(shù)型。能流是指僅允許對位輸入操作的布爾能流(布爾型),梯形圖表達形式為用觸點(位輸入)將電源母線和指令盒連接起來。
在局部變量表輸入變量名稱、變量類型、數(shù)據(jù)類型等參數(shù)以后,雙擊指令樹中的子程序(或選擇點擊方框快捷按鈕,在彈出的菜單中選擇子程序項),在梯形圖顯示區(qū)顯示出帶參數(shù)的子程序調(diào)用指令盒。
局部變量表變量類型的修改方法是,用光標選中變量類型區(qū),點擊鼠標右鍵得到一個下拉菜單,選擇插入項,彈出一個下拉子菜單,點擊選中的類型,在變量類型區(qū)光標所在處即可得到選中的類型。
給予程序傳遞參數(shù)時,它們放在子程序的局部存儲器(l)中,局部變量表最左列是每個被傳遞參數(shù)的局部存儲器地址。
子程序調(diào)用時,輸入?yún)?shù)被拷貝到局部存儲器。子程序完成時,從局部存儲器拷貝輸出參數(shù)到指定的輸出參數(shù)地址。