一、定時器
說到定時器,其實我們生活中就有很多它的應用,例如洗衣機的定時選擇,烤箱的定時旋鈕、空調的定時遙控、定時炸彈(這個還是算了)等。當然,還有電工朋友們比較熟悉的時間繼電器也算是一種定時器。而PLC的定時器是一種程式設計元件,其實它就相當於繼電控制系統中的時間繼電器。為了便於學習PLC的定時器,我們先來了解一下時間繼電器。
在繼電控制電路中,如果要用到時間控制,就必須要用到時間繼電器,其實我對時間繼電器不熟悉,因為我對繼電控制電路的接觸本來就不多,但是我說過,我是專門去學習了接觸器的,時間繼電器和接觸器有點類似,只不過接觸器不能進行時間控制罷了。
要驅動接觸器的常開、常閉觸點動作,就必須給接觸器的線圈通電,同樣的,在控制電路中,要使時間繼電器的各種觸點動作,也是需要驅動條件的,即線圈得電。這讓我想起了我平時在家打遊戲的時候,如果是其他人叫我吃飯,那我肯定是專注遊戲,紋絲不動的,但如果是老媽的獅子吼,還管什麼遊戲,小命要緊,這裡的老媽獅子吼就是驅動條件,而我去吃飯就是觸點動作,可以說非常形象了。根據變化的不同,時間繼電器有三種型別觸點:瞬時動作、通電延時、斷電延時。結合時間繼電器常開觸點動作時序圖,我們可以更為直觀的看出其觸點的動作過程,特別是“通電延時”和“斷電延時”。
通電延時,也就是線圈得電,但觸點延時動作,線圈失電,觸點馬上動作。這就像是我們上課,上課鈴響,大家磨磨蹭蹭的挪向教室,但下課鈴聲一響,大家就跟長跑運動員一樣瞬時就不見人影了。斷電延時,也就是線圈得電,觸點馬上動作,線圈失電,觸點延時動作。這也像是上課,如果說通電延時是上數學課,那斷電延時就是上體育課,上課鈴響,大家奔向操場放飛自我,但下課鈴響,大家像是七老八十一樣慢慢挪回教室。這時的上課鈴和下課鈴就像線圈的得電與失電,而學生的上課和下課就是觸點動作。
在PLC中,定時器作用其實和時間繼電器相差無幾,都是用於對時間的控制,特別是延時控制,且都需要驅動條件,但PLC的定時器只能進行瞬時動作和通電延時的控制,要實現斷電延時,就得透過程式編制。我在前面的文章說過,定時器是字(16位)元件,所以可以對時鐘脈衝計數並儲存數值,也因為它是16位元件,所以定時的時長是有範圍的。
三菱FX2N PLC的定時器分為通用型定時器和積算型定時器。通用型定時器又稱非積算定型時器或常規定時器,積算型定時器又稱斷電保持型定時器。接下來,我們一起看看它們兩者有什麼不同吧。
1、通用型定時器T0~T245
通用型定時器根據計數時鐘脈衝不同分為100ms定時器和10ms定時器。
從上圖我們也可以看出,定時器的時鐘脈衝是由它們的編號區分的,其中T0~T199為時鐘脈衝100ms的定時器,共200個;T200~T245為時鐘脈衝10ms的定時器,共46個。例如選用T20這個定時器,那就表示選用了時鐘脈衝為100ms的定時器,K20表示十進位制數的20,所以T20 K20就表示定時器的定時時間為20個脈衝,即20×100=2s。
因為PLC的定時器類似於繼電控制電路的時間繼電器,所以,在梯形圖中,我們把定時器作為線圈處理,如上圖所示,定時器的驅動元件為X1觸點,當X1觸點閉合,定時器T20(線圈)得電,經過定時時間2s後,定時器的常開觸點閉合。
定時器的脈衝數除了可以用十進位制數表示外,還可以用資料暫存器D的內容來表示。D就像是一個口袋,裡面裝著一個數(16位的二進位制數),這個數就是計數器的脈衝個數,例如T20 D0,D0裡存的數是H10,轉換為十進位制就是16,這時計數器T20的定時時間就為16×100=1.6s。
這裡要注意的是,當通用計數器的驅動訊號斷開,此時不管計數器的計時時間是否達到設定值,計數器都會復位,計時清零,直到再次被驅動,才開始重新計時。這也是通用型定時器和斷電保持型定時器的區別。
2、積算型定時器(斷電保持型定時器)T246~T255
顧名思義,斷電保持型定時器是指在定時過程中,當驅動訊號斷開,定時器雖然不能繼續計時,但能保持當前計時值,等驅動訊號再次恢復,定時器在原來的計時基礎上繼續計時,直到累積時間達到設定值,對應觸點開始動作。換句話說,就是斷電保持型定時器不會自動復位,所以我們想要它復位時,只能用RST指令進行強制復位。
積算型定時器按時鐘脈衝不同也可以分為兩種。顯然這個的數量比通用型的少很多,可能是它比較少用吧。
積算型定時器的工作原理圖如上圖所示,定時器T250的定時時間為60×100ms=6s,當驅動條件成立,也就是X1接通,定時器T250的線圈得電,開始計時,計到2s時X1斷開,雖然定時器的線圈失電,但它的計時依然保持在2s;直到X1再次接通,定時器在2s的基礎上繼續計時,計到6s後,定時器的常開觸點閉合。又因為定時器不會自動復位,所以,就是X1斷開,定時器的線圈失電,但它的計時保持在6s,常開觸點一直閉合,直到X2觸點閉合,RST指令強制復位定時器,定時器的常開觸點才會斷開。
總的來說就是,通用型定時器只需一個訊號就可以控制線圈和觸點的通斷。而積算型定時器必須要兩個訊號加上RST指令才能控制其線圈和觸點的通斷,真麻煩,怪不得比較少用。
定時器在梯形圖中非常常用,所以在課程中,李老師舉了好幾個典型的例項,為了節省大家的閱讀時間(並不是為了偷懶哦),我就抽其中一個例子吧。
每一個定時器的定時時間是有限制的,那麼,如果我們需要的定時時間超過定時器的最長定時時間,怎麼辦呢?簡單,一個不夠,兩個來湊。如下圖所示,一個定時器最多可以累計32767個時鐘脈衝,為了好看,我們就取3萬個吧,然後把幾個定時器進行接力。這時候,從X0閉合到線圈Y0得電,此間的定時時長就為30000×3×100ms=150min,也就是兩個半小時,這也太久了吧。
定時器的各種玩法,我在這就不一一解說啦,大家感興趣的,可以去看看李老師的課程,或者自己程式設計試試,反正是用軟體程式設計,也玩不壞。看清了定時器的真面目,我們繼續來“探索”計數器吧。
二、計數器
說到計數器,我本來想在淘寶上找一些計數器的圖片,然後發現,刷出來的是算盤哈哈,所以,算盤也算是一種計數器吧,我們日常生活中,需要用到計數器的例項好像不多,但在PLC中,計數器的使用也是非常頻繁的。
三菱FX2N PLC的內部計數器分為普通計數器和高速計數器兩類,課程只介紹了普通型的,所以我也只學了普通型,至於高速型的,可能以後在其他課程再學習了。
在繼電控制電路中,計數器作為一種儀表在電路中使用。其基本功能是對輸入開關量訊號進行計數。類似的,PLC中的計數器也是對內部程式設計元件(X、Y、M、S、T、C)的訊號進行計數,當然,這些訊號從接通到斷開的時長應長過PLC內部的掃描週期。
就普通計數器而言,PLC內部訊號計數器也有兩類:16位加計數器和32加/減位計數器。現在,我們就來一一欣賞它們。
1、16位加計數器
16位加計數器又叫16位增量計數器,類似於定時器,也分為通用型和斷電保持型,共200個。至於到底是通用型還是斷電保持型,和定時器一樣,也是透過計數器的編號來區分。而且計數器在梯形圖中也是作為線圈處理,總而言之,計數器和定時器的工作原理差不多,區別只不過是在於:定時器計一般的是時鐘脈衝訊號的個數,而計數器計的是程式設計元件通斷訊號(觸點脈衝訊號)的個數。
如上圖所示,C0計數器的設定值是K10,也就是說觸點X11通斷10次,計數器的觸點才會動作。類似於定時器,當PLC斷電,通用計數器會自動復位,但和定時器不同的是,定時器的驅動訊號斷開,定時器也會復位,但計數器前的觸點斷開,如上圖的X11,計時器會進行計數,而不是復位。
其實,16位加計數器和定時器的差別真的不大,所以,這裡也不再贅述啦。
2、32位加/減計數器
32位加/減計數器又稱雙向計數器,它可以從0開始增1計數到設定值,也可以設定值開始減1到0。和16位的一樣,32位加/減計數器也有通用型和斷電保持型兩類,不過個數比較少,可能也是因為它比較少用吧。
和定時器一樣,計數器的設定值除了可以用十進位制數K來表示外,也可以用資料暫存器D的內容來表示,不過這裡要注意的是,16位加計數器的設定值用一個D就可以寄存,而32位加/減計數器就需要兩個相鄰的D才行,如D0、D1,且D1為高位,D0為低位。因為D也是16位的,要寄存32位的數,也只能用兩個D。
既然32位加/減計數器可以雙向計數,那怎樣設定它的方向呢?這就要借用特殊輔助繼電器M8×××了。怎麼借用?別急,我們馬上看看到底是什麼回事。
如上圖所示,該梯形圖中用了計數器C200,所以特殊輔助繼電器就是M8200。也就是說,特殊輔助繼電器的編號要與計數器的編號一一對應,M8後面的編號要和C後面的編號相同。例如你用的計數器是C220,那麼對應的特殊輔助繼電器就是M8220,依次類推。
當M8200斷開(為OFF)時,C200作加法計數,當M8200接通(為ON)時,C200作減法計數。類似於開車,M8200就像是倒車擋,一旦掛倒擋,踩了油門,車子就後退,退出倒車擋,車子就恢復為前進。
另外,32位加/減計數器還有不同於16位加計數器的一點是:在16位計數器中,當計數值達到設定值後,觸點動作,就算此後訊號脈衝依然在增加,計數器的計數值仍然保持在設定值不變,觸點狀態也保持不變;而在32位加/減計數器中,當計數值達到設定值後,觸點動作,如果此後繼續有訊號脈衝輸入,計數器也會繼續計數,但觸點狀態保持不變。
那32位加/減計數器什麼時候觸點狀態才會再次變化呢?簡單,我們還是以上圖為例,訊號脈衝持續輸入,當計數器C200作加法計數達到設定值3後,其常開觸點閉合,計數器繼續計數3+1+1=5,常開觸點保持閉合,此時接通M8200改變計數器的計數方向,計數器開始從5-1-1=3,計數器再次回到設定值3,其常開觸點動作從而斷開,計數器繼續做減1計數,直到達到計數器的閾值或M8200斷開。
關於計數器的程式設計例項,李老師在課程中也列舉了幾個例子,可能是我腦子比較笨,我覺得這些例都好難理解啊,所以我還要多看幾遍,在這裡我就不班門弄斧了,以免被一些大神取笑。
那麼,這次的分享就到這裡,各位讀者,下次再會,告辭。