1. 程式人生 > 其它 >西門子PLC子程式功能解讀

西門子PLC子程式功能解讀

  STEP7-Micro/Win在程式編輯器視窗中為每個POU提供單獨的頁面。主程式總是第1頁,後面是子程式或中斷程式。由於每個程式在編輯器視窗中是分開的,所以編譯時會在程式末尾自動新增無條件結束指令或無條件返回指令,使用者程式只能使用條件結束指令和條件返回指令。

  通常,具有特定功能和多種用途的程式段被視為子程式。子程式可以多次呼叫、巢狀(最多8層)或遞迴呼叫(自己呼叫)。有兩種指令:子程式呼叫和子程式返回。子程式返回分為條件返回和無條件返回。子程式呼叫指令用於主程式或其他呼叫子程式的程式,子程式的無條件返回指令在子程式的最後一個網段。梯形圖指令系統可以自動生成子程式的無條件返回指令,無需使用者輸入。

  子程式的呼叫是有條件的,不呼叫時子程式中的指令不會被執行,因此使用子程式可以減少掃描時間,使整個程式功能清晰,易於檢查和維護,減少儲存空間。為了移植子程式,應避免使用全域性符號和變數,如V儲存區的絕對地址。

  程式設計軟體的程式資料視窗下方有主程式(OBI)、子程式(SUB0)和中斷服務程式(INT0)的選項卡。單擊子程式選項卡進入SUB0子程式顯示區。也可以通過指令樹的專案進入子程式SUB0顯示區。新增子程式時,可以用編輯選單中的插入項新增子程式,子程式號N會從0向上自動生成。右鍵單擊指令樹中子程式或中斷程式的圖示,在彈出選單中選擇重新命名,修改它們的名稱。

  子程式可以有要傳遞的引數(變數和資料),然後相應的引數可以包含在子程式呼叫指令中,可以在子程式和呼叫程式之間傳遞。引數(變數和資料)必須有符號名(最多8個字元)、變數和資料型別等。一個子程式最多可以傳遞16個引數。傳遞的引數在子程式區域性變量表中定義。區域性變量表中有四種類型的變數:輸入、輸出、輸入/輸出和溫度。

  ●輸入型別:將指定位置的引數傳入子程式。引數的定址方式可以是直接定址(如VB10)、間接定址(如*ACl)或立即數(如1234)。您也可以將資料的地址值傳遞給子程式(&VB100)。

  ●OUT型別:是子程式的結果值(資料),返回給呼叫它的POU。常量和地址值不允許作為輸出引數。

  ●IN/OUT型別:指定位置的引數傳遞給子程式,子程式的結果值返回到同一地址。常量和地址值不允許作為輸出引數。

  ●TEMP型別:本地記憶體只能作為子程式內部的臨時記憶體,不能用來傳遞引數。

  區域性變量表的資料型別可以是能量流、布林(位)、位元組、字、雙字、整數、雙整數、實數。能量流是指只允許位輸入操作的布林能量流(布林型)。梯形圖表示為用觸點(位輸入)連線電源匯流排和命令盒。

  在區域性變量表中輸入變數名、變數型別、資料型別等引數後,雙擊指令樹中的子程式(或單擊框快捷按鈕,在彈出選單中選擇子程式項),帶引數的子程式呼叫指令框將顯示在梯形圖顯示區。

  區域性變量表中變數型別的修改方法是用游標選中變數型別區域,點選滑鼠右鍵得到下拉選單,選擇插入項,彈出下拉子選單。單擊選定型別,在游標所在的變數型別區域中獲取選定型別。

  給定程式傳遞引數時,放在子程式的區域性記憶體(L)中,區域性變量表最左邊一列是每個傳遞引數的區域性記憶體地址。

  當子程式被呼叫時,輸入引數被複制到本地儲存器。子程式完成後,輸出引數從本地儲存器複製到指定的輸出引數地址。

  以上屬於基礎內容,不明白的朋友可以去看一套plc視訊教程,更容易理解。