for循环10000次花多长时间_我的三菱FX PLC学习之子程序调用与循环
一、子程序調用(CALL、SRET)
所謂子程序,顧名思義,它是程序的孩子,啊呸,它是區別于主程序而存在的獨立程序段,只能呆在副程序區的可憐瓜娃子。就像我之前說的,你媽媽叫你打醬油,有蘋果就順便買幾個,這里的打醬油是主程序,買蘋果是子程序。醬油是必須要打的,但蘋果買不買取決于你CALL不CALL,如果你想把買蘋果的錢拿去買辣條,此時買蘋果這個子程序就不會被驅動(CALL),不過,你媽媽會不會賞你一個鞋餅就另說了。調用子程序和條件跳轉一樣,都是PLC的瞬移特異功能,但CJ主要是在主程序區蹦跶,怎么跳轉,都逃不過主程序區這五指山,但調用子程序就不一樣了,它一跳就直接跳到副程序區去了,就跟孫猴子的筋斗云似的。
那么,這個筋斗云怎么用呢?我們接著往下看。
1、子程序調用指令CALL、SRET
要想在PLC梯形圖中跳出主程序這個牢籠,召喚子程序,就必須要用到子程序調用指令CALL,而且還要捎帶上CALL的媳婦SRET。和CJ不一樣的是,子程序調用指令CALL必須要和子程序返回指令SRET成對使用。但又和CJ指令一樣,CALL的適用軟元件也是分支指針P0~P127,且P63不能用于CALL。
所以,在編程時要注意分支指針P的使用,同一標號的P不能同時被CJ指令和CALL指令共用,例如CALL P5中的P5就不能用于CJ P5。
從編程手冊中可以看到,CALL指令僅用于16位,且具有連續執行型和脈沖執行型兩種。連續執行型和脈沖執行型的區別于CJ差不多,在此不再贅述。SRET指令和FEND指令一樣無驅動條件,僅用于子程序的返回。在子程序中,執行到子程序返回指令SRET時,立即返回到主程序調用指令的下一行繼續往下執行。如上圖所示,當驅動條件X0接通(X0=ON),執行CALL P5,程序跳轉到副程序區中子程序的入口地址P5處往下執行,執行到SRET指令時,立即返回到主程序區CALL P5的下一行繼續往下執行。所以,我們在使用CALL指令時,千萬不要忘了它的媳婦SRET指令哦,所謂“寧拆十座廟 ,不毀一樁婚”,可不要做了那棒打鴛鴦的壞人。2、子程序嵌套
子程序嵌套,是指子程序中再應用子程序調用指令去調用其他子程序,所謂“三十六計計中計”,一環扣一環,一套嵌一套。當然,這個再次調用的過程類同于主程序調用子程序的過程。如上圖所示就是2層嵌套的程序流程圖,當驅動條件X0接通,調用子程序1,在執行子程序1的過程中,驅動條件X1接通,調用子程序2,執行完子程序2后,返回到子程序1中調用指令CALL P6的下一行繼續執行完子程序1,直到執行到子程序1的返回指令后返回到主程序中調用指令CALL P5的下一行繼續往下執行。這就好比你打醬油,途中去買蘋果,買蘋果的途中看到辣條忍不住,然后跑去買辣條,賣完辣條再去買蘋果,最后才去買醬油,最后回家。這里打醬油是主程序,買蘋果是子程序1,買辣條是子程序2。在三菱PLC2N中,調用子程序的嵌套層數,對主程序而言最多有5層,顯然,對子程序而言就要少一層,就是4層。如上圖的子程序嵌套流程圖,子程序2中還可以有3,3中有4,4中有5,5中就不能有6了。3、子程序的軟元件使用按理來說,主程序和子程序的軟元件是通用的,也就是說,三菱PLC2N中的軟元件,可以用于主程序,也可用于子程序,但有一個比較特殊,那就是定時器。所有定時器均可用于主程序,但子程序要用定時器的話,就沒這么簡單了,它只能是T192~T199、T246~T249這10個。另外,在子程序調用過程中被驅動的軟元件,其狀態在子程序調用結束后,會保持在最后一次調用時候的狀態不變。哪怕這些軟元件的驅動條件在子程序調用結束后發生了改變,軟元件的狀態也不會發生改變。4、子程序應用什么時候才會用到子程序呢?顯然,子程序是區別于主程序的獨立程序段,這里的獨立,其實就很明顯的突出的子程序的作用,那就是把功能模塊化,不同的子程序互相獨立,各自有著不同的功能,為主程序提供不同的服務。所以,當系統規模很大、控制要求復雜時,可以把程序分為一塊一塊的子程序,使程序簡化;另外,當某個功能需要多次執行時,也可以編成子程序,需要時直接調用,清晰方便,是主程序簡單化。子程序調用的實際應用,在這里我就不舉例了,因為這和主程序區別也不大,只不過是功能模塊化而言。打敗了子程序調用后,我們乘勝追擊,繼續進攻PLC的FOR循環吧!二、循環
PLC的循環也是程序流程轉移的一種,對應的指令為FOR、NEXT。和子程序調用指令一樣,循環指令FOR和NEXT也是成對出現的,但不同的是,FOR指令和NEXT指令都沒有驅動條件。在子程序調用指令CALL、SRET中,CALL指令是需要驅動條件的,條件跳轉指令CJ 也需驅動條件。從編程手冊中,我們可以看到,FOR指令僅用于16位,且只有連續執行型。這是顯然的,因為它沒有驅動條件,哪來的脈沖執行型?所謂FOR循環,指的是重復,在程序中,PLC掃描到FOR-NEXT指令時,對FOR-NEXT指令之間的程序重復執行n次。
如下圖所示,程序掃描到FOR K5時,在FOR K5與NEXT指令之間的程序2重復執行5次,然后再退出循環繼續往下執行。
雖然FOR指令的適用軟元件有很多,但最常用的是常數K,也就是用常數K指定程序重復執行的次數。循環指令的應用相對簡單,但有幾點還是需要我們注意的。1、循環嵌套從上文中我們知道了子程序可以嵌套,同樣的,循環指令也可以嵌套,而且最多也是5層。如下圖所示為5層循環嵌套,如下圖所示。如上圖所示,若這5層循環中,每層循環的次數均為10,顯然,所有循環全部執行完時,第五層循環被執行了100000次,第4層執行了10000次,依次類推,第1層被執行了10次。這就跟剝洋蔥似的,“一層一層剝開我的心~”咳咳,抱歉,一不小心就唱起來了,回歸正題。所以,我們在應用循環嵌套時,一定要注意所嵌循環的次數,因為循環次數過多會造成程序運算時間過長,使PLC的響應變慢,甚至超時。另外,循環是可以并立嵌套的,如下圖所示。此時兩個并立的循環為一層,也就是說,下圖為2層的循環嵌套。2、循環指令使用循環指令使用在使用時要注意以下幾點:(1)循環指令FOR必須要和NEXT指令成對使用,缺一不可,同生共死;(2)FOR指令和NEXT指令的順序不能顛倒;(3)FOR指令和NEXT指令必須同時存在同一程序區,FOR指令在主程序區,對應NEXT指令也必須在主程序區,不能寫在副程序區。關于循環指令的實際應用,這里我也不列舉了,因為我累了。但我們知道了它的作用,能看懂程序也就可以了。那么,這次的學習分享就到這里啦,共勉!注:本文章內容都是基于三菱FX PLC所寫選自《三菱FX系列PLC功能指令詳解》第二章第9、11課時(技成培訓原創,作者:楊思慧,未經授權不得轉載,違者必究!)
如何學習三菱FX PLC條件轉移??
楊老師文章更新啦!三菱FX PLC學習之尋址方式
三菱FX PLC學習之功能指令格式解讀
我的三菱FX PLC入門之自動小車控制程序
三菱FX PLC入門之定時器和計數器
三菱FX PLC入門之常用基本編程環節
你的分享、點贊、在看我都喜歡總結
以上是生活随笔為你收集整理的for循环10000次花多长时间_我的三菱FX PLC学习之子程序调用与循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java控制层创建websocket_用
- 下一篇: 单链表插入元素 注释 c语言,数据结构之