1876年,英國(guó)外科醫(yī)生索加取得一項(xiàng)定時(shí)裝置的專利,用來(lái)控制煤氣街燈的開(kāi)關(guān)。它利用機(jī)械鐘帶動(dòng)開(kāi)關(guān)來(lái)控制煤氣閥門。起初每周上一次發(fā)條,1918年使用電鐘計(jì)時(shí)后,就不用上發(fā)條了。隨著生活水平的提高,定時(shí)器的用途也越來(lái)越廣泛。比如對(duì)開(kāi)水機(jī)、熱水器的定時(shí)控制,現(xiàn)在有了大功率定時(shí)器,定時(shí)開(kāi)機(jī)、定時(shí)關(guān)機(jī),實(shí)現(xiàn)節(jié)能、安全、健康的使用。人類最早使用的定時(shí)工具是沙漏或水漏,但在鐘表誕生發(fā)展成熟之后,人們開(kāi)始嘗試使用這種全新的計(jì)時(shí)工具來(lái)改進(jìn)定時(shí)器,達(dá)到準(zhǔn)確控制時(shí)間的目的。定時(shí)器確實(shí)是一項(xiàng)了不起的發(fā)明,使相當(dāng)多需要人控制時(shí)間的工作變得簡(jiǎn)單了許多。人們甚至將定時(shí)器用在了軍事方面,制成了定時(shí)炸彈,定時(shí)雷管?,F(xiàn)在的不少家用電器都安裝了定時(shí)器來(lái)控制開(kāi)關(guān)或工作時(shí)間。
定時(shí)器的種類
1、 接通延時(shí)型定時(shí)器:接通延時(shí)型定時(shí)器是各種PLC中最常見(jiàn)最基本的定時(shí)器,這種定時(shí)器在 SIEMENS的PLC中,稱為SD型定時(shí)器。
2、 斷開(kāi)延時(shí)型定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON時(shí)無(wú)延時(shí)作用,只有在輸入條件00000為OFF時(shí)產(chǎn)生延時(shí)作用。在SIEMENS的PLC中,稱為SF型定時(shí)器。
3、保持型接通延時(shí)定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON后,即產(chǎn)生鎖存功能,即使輸入條件00000又變?yōu)镺FF,仍視輸入條件為ON,當(dāng)定時(shí)器的當(dāng)前值等于設(shè)定值時(shí),定時(shí)器動(dòng)作,這種定時(shí)器在SIEMENS的PLC中,稱為SS型定時(shí)器。
4、脈沖型定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON后,定時(shí)器即時(shí)動(dòng)作,但經(jīng)過(guò)定時(shí)器所設(shè)定的時(shí)間后,即使輸入條件00000仍為ON,定時(shí)器卻變?yōu)镺FF狀態(tài)。即這種定時(shí)器ON狀態(tài)的維持時(shí)間是由設(shè)定值決定的。如果00000為ON的時(shí)續(xù)時(shí)間小于定時(shí)器的設(shè)定值,定時(shí)器的ON狀態(tài)維持時(shí)間為輸入條件00000為ON的持續(xù)時(shí)間。這種定時(shí)器在SIEMENS的PLC中,稱為SP型定時(shí)器。
5、擴(kuò)張型脈沖定時(shí)器:這種定時(shí)器與脈沖型定時(shí)器的區(qū)別是,只要輸入條件00000出現(xiàn)了ON狀態(tài),不管其持續(xù)時(shí)間多長(zhǎng),均可使定時(shí)器為ON的維持的時(shí)間與定時(shí)器的設(shè)定值一致。這種定時(shí)器在SIEMENS的PLC中,稱為SE型定時(shí)器。
定時(shí)器按結(jié)構(gòu)可分為機(jī)械式、電動(dòng)式和電子式:
1、機(jī)械式定時(shí)器 以發(fā)條為原動(dòng)力,用擒縱調(diào)速器控制走時(shí)精度,通過(guò)齒輪傳動(dòng)和凸輪,按時(shí)間控制機(jī)構(gòu)預(yù)置的時(shí)段操縱執(zhí)行機(jī)構(gòu)動(dòng)作。計(jì)時(shí)精度要求不高的定時(shí)器(如風(fēng)扇定時(shí)器、洗衣機(jī)定時(shí)器、廚房用定時(shí)器、照相暗房用定時(shí)器、電視機(jī)控制用定時(shí)器、電燈開(kāi)關(guān)定時(shí)器),一般采用無(wú)固有振動(dòng)周期的調(diào)速器。這些定時(shí)器都是在手動(dòng)上發(fā)條的同時(shí)預(yù)置時(shí)限,定時(shí)精度不高,但結(jié)構(gòu)簡(jiǎn)單,使用方便。計(jì)時(shí)精度要求高、定時(shí)范圍在3~12小時(shí)的定時(shí)器,一般采用擺輪游絲調(diào)速器。
2、電動(dòng)式定時(shí)器 用交流同步電動(dòng)機(jī)或石英步進(jìn)電機(jī)驅(qū)動(dòng),通過(guò)齒輪傳動(dòng)和凸輪簧片觸點(diǎn)機(jī)構(gòu),按預(yù)置的時(shí)段或時(shí)刻控制執(zhí)行機(jī)構(gòu)。其中短時(shí)段控制的電動(dòng)式定時(shí)器可用于程序控制式洗衣機(jī)、洗碗機(jī)、微波爐、烘箱及時(shí)間繼電器等;長(zhǎng)時(shí)段電動(dòng)式定時(shí)器是一種24小時(shí)或7天程序控制的開(kāi)關(guān)裝置,可預(yù)置開(kāi)關(guān)動(dòng)作多次,最短時(shí)間控制間隔一般為15分鐘,可用于用戶用電情況監(jiān)控、照明控制、實(shí)驗(yàn)室裝置控制、空調(diào)器控制和自動(dòng)生產(chǎn)線上某些設(shè)備的定時(shí)控制等。
3、電子式定時(shí)器 利用石英振蕩器或民用交流電的標(biāo)準(zhǔn)頻率,經(jīng)過(guò)分頻計(jì)數(shù)組成時(shí)間累加器或數(shù)字鐘,按照預(yù)置的時(shí)間編碼輸出控制信號(hào)。這種定時(shí)器走時(shí)精確,時(shí)間設(shè)定沒(méi)有誤差,定時(shí)精度高,控制程序多。其中長(zhǎng)時(shí)段定時(shí)器最小控制時(shí)段一般為1分鐘,配上微處理器后能精確地編制一年的時(shí)間程序,組成多路可編程序的定時(shí)器。電子式定時(shí)器在工業(yè)自動(dòng)化控制系統(tǒng)中應(yīng)用廣泛,它也是節(jié)約能源管理中一種有效的技術(shù)措施。電子定時(shí)器類的電子定時(shí)開(kāi)關(guān)鐘,可用于按高、平、低峰用電收取不同電費(fèi)制度的場(chǎng)合,它將一天內(nèi)的用電高峰、平峰、低谷時(shí)間在定時(shí)開(kāi)關(guān)中設(shè)定,并分別接通3種電表進(jìn)行計(jì)費(fèi)。電子式定時(shí)器在科學(xué)實(shí)驗(yàn)中和在微波爐、電飯鍋、洗衣機(jī)等電器中也有使用
定時(shí)器的工作原理
定時(shí)器根據(jù)其輸入條件導(dǎo)致完成動(dòng)作的不同可分為接通延時(shí)型定時(shí)器、斷開(kāi)延時(shí)型定時(shí)器、保持型接通延時(shí)定時(shí)器、脈沖型定時(shí)器和擴(kuò)張型脈沖定時(shí)器五種。其中,接通延時(shí)型定時(shí)器也稱為SD型定時(shí)器,是PLC(可編程邏輯控制器)中最基本的一種;斷開(kāi)延時(shí)型定時(shí)器也稱為SF型定時(shí)器,當(dāng)其輸入條件為OFF即斷開(kāi)時(shí)才會(huì)起到延時(shí)作用;保持型接通延時(shí)定時(shí)器也稱為SS型定時(shí)器,當(dāng)輸入條件為ON即接通時(shí)起到鎖存功能,若輸入條件由ON變?yōu)镺FF時(shí),仍認(rèn)為輸入條件為ON起到保持作用;脈沖型定時(shí)器也稱為SP型定時(shí)器,當(dāng)輸入條件為ON時(shí)立刻發(fā)生動(dòng)作,但動(dòng)作屬于脈沖型,僅能維持定時(shí)器的設(shè)定時(shí)間,若設(shè)定時(shí)間過(guò)后,即使輸入條件為ON,定時(shí)器也處于OFF狀態(tài),若設(shè)定時(shí)間內(nèi),輸入條件變?yōu)镺FF,則動(dòng)作停止;擴(kuò)張型脈沖定時(shí)器也稱為SE型定時(shí)器,其與脈沖型定時(shí)器相類似,不同之處僅在于輸入條件為ON時(shí),即使在設(shè)定時(shí)間內(nèi)條件變?yōu)镺FF,動(dòng)作仍不停止,擴(kuò)張到設(shè)定時(shí)間為止。
接下來(lái)我們以PLC中的定時(shí)器為例來(lái)說(shuō)明定時(shí)器的結(jié)構(gòu),并在下一部分中解釋其工作原理。PLC中的定時(shí)器根據(jù)累積的時(shí)鐘脈沖來(lái)完成計(jì)時(shí)的功能,其主要由一個(gè)存儲(chǔ)器、一個(gè)設(shè)定值寄存器和一個(gè)當(dāng)前值寄存器構(gòu)成,其中,設(shè)定值寄存器用于存儲(chǔ)設(shè)定時(shí)間值,當(dāng)前值寄存器用于存儲(chǔ)當(dāng)前時(shí)間值。
當(dāng)定時(shí)器輸入條件滿足計(jì)時(shí)要求時(shí)開(kāi)始計(jì)時(shí),設(shè)定值寄存器存儲(chǔ)設(shè)定時(shí)間值不變,當(dāng)前值寄存器存儲(chǔ)當(dāng)前時(shí)間值隨時(shí)間發(fā)生變化,一旦當(dāng)前時(shí)間值增加到與設(shè)定時(shí)間值相同,定時(shí)器發(fā)生動(dòng)作,常開(kāi)觸點(diǎn)接通而常閉觸電斷開(kāi),并通過(guò)程序作用于被控制對(duì)象,以達(dá)到控制時(shí)間的目的。
定時(shí)器的電路圖
定時(shí)器的管理模塊
定時(shí)器是通信協(xié)議正常運(yùn)行的基本要素之一,主要用于各種定時(shí)和幀重傳的任務(wù)。通信協(xié)議在單片機(jī)系統(tǒng)上實(shí)現(xiàn)所使用的定時(shí)器,定時(shí)精度要求不高,但數(shù)量要求比較大。由于硬件資源有限,不可能為每一個(gè)單獨(dú)任務(wù)分配一個(gè)硬件定時(shí)器,只能通過(guò)單個(gè)硬件定時(shí)器模擬多個(gè)軟件定時(shí)器的方法,來(lái)滿足協(xié)議中的定時(shí)應(yīng)用需要。
用一定的數(shù)據(jù)結(jié)構(gòu)將這些軟件定時(shí)器組織起來(lái),并提供統(tǒng)一的調(diào)用接口,稱為“定時(shí)器管理”。目前定時(shí)器管理主要有2種實(shí)現(xiàn)方法:
①靜態(tài)數(shù)組法。將定時(shí)器節(jié)點(diǎn)存儲(chǔ)在數(shù)組中。優(yōu)點(diǎn)是邏輯簡(jiǎn)單,占用ROM較少。但這種方案有明顯的缺點(diǎn):當(dāng)硬件定時(shí)器中斷發(fā)生時(shí),要對(duì)所有定時(shí)器節(jié)點(diǎn)進(jìn)行減法操作,時(shí)間開(kāi)銷很大,且時(shí)延不確定(與定時(shí)器數(shù)目相關(guān))。
②delta鏈表法。按照定時(shí)器的定時(shí)值升序排列,形成鏈表。后一個(gè)定時(shí)器的定時(shí)值是前面所有定時(shí)器的值加上本節(jié)點(diǎn)的值。這樣,在每次的時(shí)鐘中斷處理中,只需對(duì)第1個(gè)定時(shí)器節(jié)點(diǎn)進(jìn)行減法操作,大大減少了時(shí)間開(kāi)銷。但是,該方案邏輯復(fù)雜,ROM用量大,需要頻繁分配回收內(nèi)存,容易形成內(nèi)存碎片。
1 定時(shí)器管理模塊的設(shè)計(jì)
定時(shí)器管理模塊的設(shè)計(jì)基于靜態(tài)數(shù)組法。使用一個(gè)定時(shí)器節(jié)點(diǎn)數(shù)組來(lái)保存所有的定時(shí)請(qǐng)求,數(shù)組的每一項(xiàng)代表一個(gè)可用的定時(shí)器節(jié)點(diǎn)。每一個(gè)定時(shí)器節(jié)點(diǎn)都有一個(gè)狀態(tài)項(xiàng),表示該定時(shí)器正處于空閑、使用或溢出狀態(tài)。定時(shí)器的定時(shí)值和定時(shí)器超時(shí)后要發(fā)送的消息也存儲(chǔ)在定時(shí)器節(jié)點(diǎn)中,從而實(shí)現(xiàn)用一個(gè)硬件定時(shí)器為用戶提供多個(gè)軟件定時(shí)器。
為了解決中斷處理時(shí)間開(kāi)銷大的問(wèn)題,在模塊中引入一個(gè)輔助定時(shí)器,輔助定時(shí)器的值總是等于所有定時(shí)器節(jié)點(diǎn)中的最小定時(shí)值。在硬件定時(shí)器中斷處理中,僅對(duì)輔助定時(shí)器進(jìn)行減法操作,從而大大縮短了中斷處理的時(shí)間。設(shè)計(jì)原理如圖1所示。
2定時(shí)器管理模塊的實(shí)現(xiàn)
2.1數(shù)據(jù)結(jié)構(gòu)和函數(shù)接口
定時(shí)器管理模塊使用的相關(guān)數(shù)據(jù)結(jié)構(gòu)定義如下:
字段state保存了定時(shí)器節(jié)點(diǎn)的狀態(tài),可能取值為空閑(T_FREE)、使用(T_INUSE)或溢出(T_OVERFLOW)。
字段count保存了定時(shí)器節(jié)點(diǎn)的定時(shí)值,最大取值為65 535。如果設(shè)置硬件定時(shí)器中斷為10 ms,則軟件定時(shí)器最大定時(shí)約為655 s,可以滿足大多數(shù)應(yīng)用需要。
字段msg指向定時(shí)器的用戶消息。在啟動(dòng)定時(shí)器時(shí),指向消息的指針被保存在此字段。當(dāng)定時(shí)時(shí)間結(jié)束后,中斷處理函數(shù)會(huì)自動(dòng)發(fā)出這個(gè)消息以通知用戶任務(wù)。
由于數(shù)組的下標(biāo)是唯一的,可作為識(shí)別節(jié)點(diǎn)的唯一ID號(hào)。下文中提到的節(jié)點(diǎn)ID號(hào)均表示節(jié)點(diǎn)在數(shù)組中的下標(biāo)。
MAX_TIMER_NUM表示系統(tǒng)允許的最大定時(shí)器數(shù),其值取決于具體應(yīng)用需要。
本模塊提供的關(guān)鍵接口函數(shù)如下:
2.2定時(shí)器的初始化
使用定時(shí)器管理模塊前,需要進(jìn)行定時(shí)器的初始化。主要是初始化定時(shí)器節(jié)點(diǎn)數(shù)組,將每一個(gè)定時(shí)器節(jié)點(diǎn)設(shè)置為空閑狀態(tài),同時(shí)將輔助定時(shí)器置零,輔助ID指向0xFF(表示空)。
2.3定時(shí)器的啟動(dòng)
啟動(dòng)一個(gè)定時(shí)器,主要是將節(jié)點(diǎn)數(shù)組中一個(gè)空閑狀態(tài)的節(jié)點(diǎn)置為使用狀態(tài)。如果這個(gè)新啟用的定時(shí)器,是所有定時(shí)器中定時(shí)值最小的,還要更新輔助定時(shí)器。函數(shù)以指向定時(shí)器消息的指針和定時(shí)值為參數(shù),啟動(dòng)定時(shí)器流程如圖2所示。成功啟動(dòng)定時(shí)器后,返回該定時(shí)器節(jié)點(diǎn)的ID號(hào)。
2.4定時(shí)器的刪除
在目標(biāo)定時(shí)器到期之前,由于某種原因用戶可能會(huì)要求取消定時(shí)器。如重發(fā)定時(shí)器,用戶在發(fā)送數(shù)據(jù)幀后啟動(dòng)該定時(shí)器,并等待對(duì)方返回響應(yīng)幀。如果在定時(shí)時(shí)間結(jié)束時(shí)沒(méi)有收到響應(yīng)幀,用戶就需要重發(fā)原數(shù)據(jù)幀;如果在定時(shí)時(shí)間結(jié)束之前收到響應(yīng)幀,用戶就需要馬上取消該定時(shí)器,然后進(jìn)行下一次通信過(guò)程。
刪除定時(shí)器函數(shù)以定時(shí)器節(jié)點(diǎn)ID號(hào)作為輸入?yún)?shù),將定時(shí)器節(jié)點(diǎn)設(shè)為空閑狀態(tài),并根據(jù)需要更新輔助定時(shí)器,流程如圖3所示。
2.5定時(shí)器的驅(qū)動(dòng)
軟件定時(shí)器的驅(qū)動(dòng)由硬件定時(shí)器提供。在硬件定時(shí)器中斷中,首先將輔助定時(shí)器的值減1。如果輔助定時(shí)器值為0,則表示定時(shí)值最小的定時(shí)器已經(jīng)超時(shí),應(yīng)將對(duì)應(yīng)的消息發(fā)送給用戶任務(wù),將節(jié)點(diǎn)置為空閑狀態(tài),并重新計(jì)算其他節(jié)點(diǎn)的定時(shí)值,同時(shí)查找定時(shí)值最小的節(jié)點(diǎn),更新輔助定時(shí)器。
定時(shí)器的基本操作
F2810/F2812器件上有3個(gè)Q9位CPU定時(shí)器(TIMERO/1/2)。只有定時(shí)器1和2預(yù)留給實(shí)時(shí)操作系統(tǒng)DSP/BIOS使用,只有定時(shí)器0可以在就用程序中使用,定時(shí)器的功能如圖1所示。
圖1 定時(shí)器功能框圖
若處理器采用30 MHz的外部時(shí)鐘,經(jīng)過(guò)鎖相環(huán)10/2倍頻后,系統(tǒng)的時(shí)鐘工作在150 MHz。圖中的定時(shí)器選擇SYSCLKOUT作為定時(shí)器時(shí)鐘,工作頻率也是150 MHz。一旦定時(shí)器被使能(TCR-Bit 4=0),定時(shí)器時(shí)鐘經(jīng)過(guò)預(yù)定標(biāo)計(jì)數(shù)器(PSCH:PSC)遞減計(jì)數(shù),預(yù)定標(biāo)計(jì)數(shù)器產(chǎn)生下溢后向定時(shí)器的32位計(jì)數(shù)器(TIMH:TIM)借位p最后定時(shí)器計(jì)數(shù)器產(chǎn)生溢出使定時(shí)器向CPU發(fā)送中斷。定時(shí)器中斷結(jié)構(gòu)如圖2所示。
每次預(yù)定標(biāo)計(jì)數(shù)器產(chǎn)生溢出后使用分頻寄存器(TDDRH:TDDR)中的值重新裝載。同樣,32位周期寄存器(PRDH[_]PRD)為32位計(jì)數(shù)器提供重新裝載值。
圖2 定時(shí)器中斷結(jié)構(gòu)
定時(shí)器的比較操作
每個(gè)通用定時(shí)器都有一個(gè)比較寄存器TxCMPR和一個(gè)PWM輸出引腳TxPWM。通用定時(shí)器計(jì)數(shù)器的值一直與相關(guān)的比較寄存器的值比較,當(dāng)定時(shí)器計(jì)數(shù)器的值與比較寄存器的值相等時(shí),就產(chǎn)生比較匹配。可通過(guò)TxCON[l]位使能比較操作,產(chǎn)生比較匹配后將會(huì)有下列操作(如圖所示)。
●匹配1個(gè)時(shí)鐘周期后,定時(shí)器的比較中斷標(biāo)志位置位。
●匹配1個(gè)CPU時(shí)鐘周期后,根據(jù)寄存器GPTCONA/B相應(yīng)位的配置情況,PWM的輸出將產(chǎn)生跳變。
●如果比較中斷標(biāo)志位已通過(guò)設(shè)置寄存器GPTCONA/B中的相應(yīng)位啟動(dòng)A/D轉(zhuǎn)換器,則比較中斷位置位的同時(shí)產(chǎn)生A/D轉(zhuǎn)換啟動(dòng)信號(hào)。
●如果比較中斷未被屏蔽,將產(chǎn)生一個(gè)外設(shè)申斷申請(qǐng)。
通用定時(shí)器比較操作功能框圖
各大手機(jī)應(yīng)用商城搜索“拍明芯城”
下載客戶端,隨時(shí)隨地買賣元器件!