李強
摘 ? 要:針對機電專業的學生學習西門子功能編程語言比較困難,功能編程語言經常用到子程序,從子程序的特點,運行方式,舉例應用完整技術介紹了子功能編程,寫程序時經常用到子程序,它是架構式的編程,學習西門子功能指令的重點和難點。本文研究分析了西門子編程語言《子程序的調用》,希望為廣大讀者提供參考。
關鍵詞:程序特點 ?運行方式 ?梯形圖
中圖分類號:TP39 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1674-098X(2019)02(a)-0148-02
1 ?子程序的特點
(1)子程序只有在主程序發出調用指令的時候才運行,運行完畢后,自動返回主程序,所以不用每個掃描周期都執行,這樣可以減少整個程序的運行時間,對于一些初始化的程序,寫在子程里比較合適。(2)S7-200 CPU可以寫64個子程序(0-63) CPU226XM還可以寫128個子程序(0-127)。(3)子程序可以嵌套使用(主程序中調用子程序,子程序再調用子程序),最大嵌套深度為8級,但是中斷程序里不能嵌套子程序。(4)子程序默認的名稱是SBR_n。(n子程序編號)也可以修改。
2 ?子程序的運行方式
(1)并列運行,一個程序中有多個子程序,之間沒有嵌套的關系,是并列的,只要調用的條件滿足,這個子程序就能被運行。(2)嵌套運行,主程序調用子程序,子程序還可以再調用子程序,這種方式叫做嵌套,最多可以嵌套8層,這種情況下,各個子程序的運行有先后之分。(3)在子程序中不能使用END(結束指令),每一個每一個子程序在編譯時編譯器自動在子程序的最后加入無條件返回指令,當用戶需要編程實現有條件返回時,可以在子程序使用有條件返回RET指令。(4)帶參數調用子程序。在調用子程序時可以帶參數調用。參數在子程序的局部變量表中定義。每一個參數需要定義一個符號名(最多為23個字符),選擇變量類型和數據類型。在參數條用子程序時可以向子程序交接16個參數或從子程序交接16個參數。(5)子程序的局部變量表中的變量類型區定義交接參數和臨時參數:IN、IN OUT、OUT和TEMP。
下面通過這個例子說明主程序怎樣調用子程序:
有兩個電動機,分別接在Q0.0和Q0.1上,I0.0控制電動機1(Q0.0)啟動,IO.1控制電動機1(Q0.0)停止;I0.2控制電動機2(QO.1)啟動,IO.3控制電動機2(Q0.1)停止。
解:第一步:要求用局部変量,子程序調用來完成。先建立變量,選擇子程序,默認的變量有IN,OUT等,定義“啟動”。選擇變量類型是位元件BOOL,它自動調用了變量L0.0,定義“停止”,同樣選擇位元件,它自動調用了變量L0.1,定義“電動機”,它用了IN和OUT,一個線圈和一個觸點,同樣選擇位元件,它自動調用了變量L0.2,主程序先接觸這個變量,然后再交給子程序,如狀態表1所示。
第二步:要求用局部変量,子程序調用來完成。分析:在子程序中建立局部変量,変量符號用“啟動”、“停止”、“電動機”命名。在子程序中寫出込些局部変量之同的控制邏輯關系,在主程序中凋用這些変量,如圖1所示。
第三步:主程序啟動SM0.0它就調用了子程序中L0.0,L0.1.L0.2啟動、停止、電動機三個之間的關系,IO.2接通。Q0.1電動機啟動有輸出并且自保持,Q0.1顯示“1”IO.3接通。Q0.1電動機停止,Q0.1顯示“0”如圖2所示。同樣主程序啟動SM0.0它就調用了子程序中L0.0,L0.1.L0.2啟動、停止、電動機三個之間的關系,IO.0接通,Q0.0電動機啟動有輸出并且自保持,Q0.1顯示“1”IO.1接通。Q0.1電動機停止,Q0.1顯示“0”如圖3所示。
參考文獻
[1] 廖常初.S7-200PLC基礎教程[M].北京:機械工業出版社,2009.
[2] 王兆宇,王洪權.西門子PLC電氣設計與編程自學寶典[M].北京:中國電力出版社,2015.
[3] 吳永平,奚茂龍.西門子PLC其他操作技術[M].北京:化學工業出版社,2017.