- 三菱FX3系列PLC功能指令應(yīng)用全解
- 李金城編著
- 1423字
- 2024-01-19 15:51:40
2.1.3 子程序
1.子程序及其調(diào)用
什么是子程序?子程序是相對于主程序而言的獨立的程序段,子程序完成的是各自獨立的程序功能。它和中斷服務(wù)程序一樣,存放在副程序區(qū)。因此,PLC掃描時,執(zhí)行子程序是有條件地的。僅當(dāng)條件成立時,PLC才由主程序區(qū)轉(zhuǎn)移到副程序區(qū)去執(zhí)行相應(yīng)的子程序段,這個過程一般稱為子程序調(diào)用或呼叫子程序。
那么在什么情況下會用到子程序呢?有兩種情況使編寫子程序成為必要。一是在一些用戶程序中,有一些程序功能會在程序中反復(fù)執(zhí)行,如某些標(biāo)定變換程序、報警程序、通信程序中的校驗碼程序等。這時,可將這些程序段編寫成子程序,在需要時對其進(jìn)行調(diào)用,避免了在主程序中反復(fù)重寫這些程序段。這樣可使主程序簡單清晰,程序容量減少,掃描時間也相應(yīng)縮短。另一種情況是當(dāng)系統(tǒng)規(guī)模很大且控制要求復(fù)雜時,如果將全部控制任務(wù)放在主程序中,主程序?qū)浅?fù)雜,既難以調(diào)試,也難以閱讀。這時,使用子程序可以將程序分成容易管理的小塊,使程序結(jié)構(gòu)簡單,易于閱讀、調(diào)試、查錯和維護(hù)。三菱FX系列PLC的功能指令實際上就是一個個子程序,在梯形圖中應(yīng)用功能指令時,實質(zhì)上就是調(diào)用相應(yīng)的子程序完成功能指令的操作功能。
在上文講解程序流程時,曾經(jīng)講到當(dāng)程序執(zhí)行由主程序轉(zhuǎn)移到子程序時,會在主程序區(qū)保存斷點,斷點保存是由PLC自動完成的。子程序調(diào)用指令必須指出程序轉(zhuǎn)移地址,且當(dāng)PLC執(zhí)行相應(yīng)的子程序段后還必須返回到主程序區(qū),因此,子程序里必須要有返回指令。所以,子程序的結(jié)構(gòu)應(yīng)如圖2-5所示。子程序入口標(biāo)志因PLC不同而不同,但子程序調(diào)用指令和子程序返回指令在子程序調(diào)用時應(yīng)成對出現(xiàn),所有品牌的PLC都必須遵循這一原則。

圖2-5 子程序的結(jié)構(gòu)
一般來說,子程序調(diào)用都是有驅(qū)動條件的,僅當(dāng)驅(qū)動條件成立時才調(diào)用子程序。如果想無條件調(diào)用子程序,可以使用特殊繼電器來驅(qū)動子程序調(diào)用指令,例如,用三菱FX的M8000的常開觸點作為驅(qū)動條件。
子程序可以在主程序中調(diào)用,也可以在中斷服務(wù)程序中調(diào)用,還可以在其他子程序中調(diào)用,其調(diào)用執(zhí)行過程都是相同的。
2.子程序嵌套
子程序嵌套是指在子程序中應(yīng)用子程序調(diào)用指令去調(diào)用其他子程序。這時,其調(diào)用過程和主程序調(diào)用子程序一樣。圖2-6所示為三次調(diào)用子程序的程序掃描執(zhí)行過程。

圖2-6 三次調(diào)用子程序的程序掃描執(zhí)行過程
PLC對子程序嵌套應(yīng)用的層次是有限制的,也就是在子程序內(nèi)對子程調(diào)用指令的使用次數(shù)是有限制的。三菱FX系列PLC最多只能使用4次子程序調(diào)用指令,其主程序最多有5層嵌套,西門子S-200 PLC最多為8層嵌套。
3.子程序編寫
子程序是按照所完成的獨立功能來編寫的,但它完成后必須把相關(guān)控制數(shù)據(jù)通過軟元件傳送給主程序,而子程序本身也在使用軟元件。由于三菱FX系列PLC的軟元件是所有程序共享的,所以這就存在著一個軟元件沖突問題(主要體現(xiàn)在數(shù)據(jù)寄存器D的地址沖突),當(dāng)主程序和子程序都使用某一地址的D寄存器時,如果它的含義在主程序和子程序中不同,就會出現(xiàn)混亂。因此,當(dāng)程序復(fù)雜,子程序較多時,必須對所用軟元件進(jìn)行統(tǒng)一分配,以避免發(fā)生混亂。同時,相同功能的子程序在不同控制系統(tǒng)中移植時,必須要檢查子程序與新的主程序軟元件有無地址沖突,如果有,則必須對子程序軟元件進(jìn)行修改或?qū)χ鞒绦蜍浽M(jìn)行修改。
子程序在調(diào)用時,其中各軟元件的狀態(tài)受程序執(zhí)行的控制,但當(dāng)調(diào)用結(jié)束時,其軟元件則保持最后一次調(diào)用時的狀態(tài)不變。如果這些軟元件狀態(tài)沒有受到其他程序的控制,就會長期保持不變,哪怕是驅(qū)動條件發(fā)生了改變,軟元件的狀態(tài)也不會改變。
關(guān)于子程序編寫的進(jìn)一步說明將在子程序調(diào)用指令中講解。
- 工業(yè)設(shè)備安裝技術(shù)
- Creo 6.0曲面設(shè)計實例精解
- 凝聚心靈的力量:國網(wǎng)天津市電力公司員工幫助計劃(EAP)紀(jì)實系列·成長篇
- 工業(yè)互聯(lián)網(wǎng)標(biāo)識解析技術(shù)及應(yīng)用
- 鋼桶包裝用戶手冊
- 現(xiàn)代工程設(shè)計制圖(第5版)
- 設(shè)計之道:工業(yè)產(chǎn)品設(shè)計與手繪表達(dá)(第2版)
- 工業(yè)產(chǎn)品設(shè)計手繪與實踐自學(xué)教程(第2版)
- 《中國制造2025》重點領(lǐng)域技術(shù)創(chuàng)新綠皮書:技術(shù)路線圖(2017)
- 復(fù)雜基體元素指標(biāo)分析工作頁
- 工程圖學(xué)
- 產(chǎn)品設(shè)計可裝配性技術(shù)
- 中央空調(diào)運行管理實務(wù)
- 美國納米技術(shù)創(chuàng)新進(jìn)展
- 工程制圖