為了給用戶建立購(gòu)水檔案,便于用戶購(gòu)水統(tǒng)計(jì)和水量匯總及水司階梯水價(jià)的控制,避免交易中的糾紛;建立水表操作日志和反饋信息,在水表控制系統(tǒng)工作過(guò)程中,控制系統(tǒng)把水表加水、倒閥、數(shù)據(jù)更改、磁攻擊等的操作寫(xiě)入日志文件,一旦發(fā)生事故,控制系統(tǒng)利用日志文件和反饋文件來(lái)進(jìn)行系統(tǒng)故障恢復(fù),便于水表管理和維護(hù),保證表具準(zhǔn)確可靠運(yùn)行,因此水表控制系統(tǒng)和MIS管理系統(tǒng)中的實(shí)時(shí)時(shí)鐘不容忽視。
實(shí)時(shí)時(shí)鐘(RTC)又被分為硬時(shí)鐘(硬件法)、軟時(shí)鐘(軟件法)。所謂硬時(shí)鐘,即采用實(shí)時(shí)時(shí)鐘芯片,它不需要單片機(jī)的干預(yù)就能產(chǎn)生時(shí)、分、秒;年、月、日等日歷數(shù)據(jù),并自動(dòng)修正閏年。而另一類由單片機(jī)利用內(nèi)部或外部定時(shí)中斷,通過(guò)程序計(jì)算出實(shí)時(shí)時(shí)間,被稱為軟時(shí)鐘。
2預(yù)付費(fèi)智能卡水表RTC運(yùn)行環(huán)境
The running condition of RTC in advance intelligent card water meter
2.1早期預(yù)付費(fèi)智能卡水表的RTC
The RTC of early advance intelligent card water meter
在早期的智能卡水表中使用的PHILIPS公司推出的PCF856是一種多功能時(shí)鐘芯片。該芯片使用閉比較復(fù)雜,在一定程度上增加了硬件電路的體積,另外在硬件電路上還必須另外為PCF8563提供合適的晶振,并且要確保晶振的質(zhì)量以防晶振停振,從而也提高了成本。該實(shí)時(shí)時(shí)鐘是通過(guò)讀取和寫(xiě)入PCF8563時(shí)鐘芯片來(lái)得知當(dāng)前時(shí)間或?qū)r(shí)鐘的調(diào)整。而讀取和寫(xiě)入的操作是通過(guò)I2C總線實(shí)現(xiàn)的,在單片機(jī)與之通信時(shí)可能會(huì)受到外部干擾,其中軟件實(shí)現(xiàn)上又牽扯到I2C總線的時(shí)序問(wèn)題(發(fā)送I2C總線起始條件、終止條件、發(fā)送數(shù)據(jù)和接受數(shù)據(jù)、返回標(biāo)志)等大量的程序,在軟件實(shí)現(xiàn)上也比較復(fù)雜。
然而經(jīng)過(guò)大量分析,在保證功耗基本不增加、性能穩(wěn)定的情況下,利用智能卡水表的控制系統(tǒng)的MPC MSP430系列單片機(jī)本身具有的功能就能實(shí)現(xiàn),并且在軟件實(shí)現(xiàn)上也比較簡(jiǎn)單,從而可以利用軟時(shí)鐘代替原來(lái)的硬時(shí)鐘。
2.2預(yù)付費(fèi)智能卡水表的控制系統(tǒng)[1]
The Control System of advance intelligent card water meter
預(yù)付費(fèi)智能卡水表的控制系統(tǒng)主要采用了TI公司的MSP430F413型單片機(jī)。MSP430系列單片機(jī)是一種超低功耗的混合信號(hào)控制器,其中包括一系列器件,它們針對(duì)不同的應(yīng)用而由各種不同的模塊組成。這些微控制器被設(shè)計(jì)為可用電池工作,而且可以有很長(zhǎng)使用時(shí)間的應(yīng)用,平時(shí)可將MPU置于省電模式,以中斷方式喚醒。靈活的時(shí)鐘源可以使器件達(dá)到最低的功率消耗,數(shù)字控制的振蕩器(DCO),可使器件從低功耗方式迅速喚醒,在至少6us的時(shí)間內(nèi)激活到活躍的工作方式。其控制系統(tǒng)包括8個(gè)模塊,實(shí)時(shí)時(shí)鐘模塊就是其中重要的一個(gè)。實(shí)時(shí)時(shí)鐘必須遵循低功耗的原則。
3定時(shí)器的選擇
The choice of Timer
3.1 MSP430 系列單片機(jī) CLK的產(chǎn)生[2]。
The produce of CLK in MSP430 SCM
CLK的產(chǎn)生是一個(gè)易被誤解的地方?;煜闹饕蛟谟谝粋€(gè)穩(wěn)定的系統(tǒng)時(shí)鐘是怎樣產(chǎn)生的?所有的MSP430單片機(jī)都包含數(shù)控RC振蕩器和一個(gè)32768HZ LFXT1低頻振蕩器。集成在基礎(chǔ)時(shí)鐘模塊中的數(shù)控DCO振蕩器是一個(gè)RC振蕩器, RC型振蕩器最典型的是用于MPUCLK,即MCLK。使用低頻振蕩器產(chǎn)生輔助時(shí)鐘ACLK,以提供穩(wěn)定的系統(tǒng)時(shí)基和低功耗的備用工作狀態(tài),ACLK可作為其定時(shí)器穩(wěn)定的時(shí)鐘源,送到硬件定時(shí)器如(Timer_A、Basic Timer1等),再選擇分頻系數(shù),使進(jìn)入計(jì)數(shù)器的頻率降低。這樣可以使執(zhí)行實(shí)時(shí)時(shí)鐘中斷程序的頻率降低,可降低功耗。
RTC的實(shí)現(xiàn)原理是定時(shí)器被設(shè)定為連續(xù)計(jì)數(shù)并且在定時(shí)到時(shí)產(chǎn)生中斷。由于定時(shí)器用ACLK作為它的時(shí)鐘源,ACLK運(yùn)行的晶振頻率是32768HZ,則定時(shí)器計(jì)數(shù)到32767然后從0重新啟動(dòng),并且每達(dá)到32767就會(huì)產(chǎn)生一個(gè)中斷,然后MPU 執(zhí)行這個(gè)中斷程序。RTC關(guān)鍵是實(shí)現(xiàn)1S的定時(shí)中斷,1S定時(shí)到,由中斷喚醒。在中斷前MPU處于休眠狀態(tài)即處于進(jìn)入低功耗省電模式或執(zhí)行其他功能的中斷程序。
3.2最佳定時(shí)器選擇
The choice of optimal Timer
在MSP430系列單片機(jī)主要包括WDT、Basic Timer1、Timer_A等定時(shí)器。
看門狗定時(shí)器(WTD)其實(shí)質(zhì)也是一個(gè)定時(shí)器,它的主要功能是當(dāng)程序發(fā)生故障時(shí)能使控制系統(tǒng)重新啟動(dòng)。如果超過(guò)WDT所定時(shí)的時(shí)間,則發(fā)生系統(tǒng)復(fù)位。如果系統(tǒng)不需要看門狗功能,也可將它做定時(shí)器用,當(dāng)?shù)竭_(dá)WDT所規(guī)定的時(shí)間時(shí)就產(chǎn)生中斷,因此也可以利用WDT來(lái)實(shí)現(xiàn)RTC功能,但是一般在程序?qū)崿F(xiàn)上保留其看門狗功能。
TIMER_A也具有定時(shí)中斷功能,中斷可由計(jì)數(shù)器溢出引起,但其主要用捕獲比較功能、PWM控制和實(shí)現(xiàn)串行通訊。
經(jīng)多次實(shí)驗(yàn)證明采用5PPM的32768HZ晶振,利用MSP430內(nèi)部的Basic Timer1定時(shí)中斷效果很好。
3.3 Basic Timer1介紹
introduction of Basic Timer1
基本定時(shí)器(Basic Timer1)是MSP430F413單片機(jī)中的模塊,工作的目的是支持軟件和通常向其他外圍模塊提供低頻控制信號(hào)。它的軟件功能受到晶振穩(wěn)定性控制的實(shí)例之一就是實(shí)時(shí)時(shí)鐘RTC。Basic Timer1可以是兩個(gè)8位定時(shí)器也可是一個(gè)16位定時(shí)器。它有兩個(gè)計(jì)數(shù)單元(BTCNT1和BTCNT2)和一個(gè)控制單元(BTCTL),通過(guò)控制器BTCTL的設(shè)置,可以方便的使用Basic Timer1。
3.4 Basic Timer1 CLK的設(shè)定[3]
The Design of Basic Timer1 CLK
實(shí)時(shí)時(shí)鐘RTC的時(shí)鐘源可用較準(zhǔn)確的ACLK供給。ACLK 是LFXT1CLK信號(hào)經(jīng)1、2、4、8分頻后得到的。
控制寄存器的信息決定了Basic Timer1 的運(yùn)行。由各位的值選擇頻率源、中斷頻率Basic Timer1控制寄存器的位定義為:
BTCTL(040h)
SSEL |
HOLD |
DIV |
FRFQ1 |
FRFQ0 |
IP2 |
IP1 |
IP0 |
其中1、位0~2:最低3位IP2~IP0決定中斷時(shí)間間隔,即中斷標(biāo)志BTIFG置位間隔時(shí)間。
SSEL |
DIV |
CLK2 |
0 0 1 1 |
0 1 0 1 |
ACLK ACLK/256 MCLK MCLK/256 |
2、位3~4是為Flcd選擇頻率信號(hào)
3、位6,HOLD位停止計(jì)數(shù)器的工作
HOULD位置位,BTCNT2停止工作
HOLD位和 DIV位置位,BTCNT1停止工作
4、SSEL和DIV位選擇BTCNT2的輸入頻率CLK2。
由于需要定時(shí)1S的中斷,所以Basic Timer1的輸入頻率的選擇很關(guān)鍵,它直接決定中斷頻率。Basic Timer1 計(jì)數(shù)器BTCNT2對(duì)輸入時(shí)鐘頻率分頻。輸入時(shí)鐘源可選自MCLK、ACLK或ACLK/256,由SSEL和DIV兩位選擇。BTCNT2的輸出是為了產(chǎn)生中斷,使中斷標(biāo)志置位。IP0、IP1、IP2此3位決定中斷間隔時(shí)間,即中斷標(biāo)志BTIFG置位的間隔時(shí)間。中斷周期可以由BTCTL中的IP0~IP2位中選擇8個(gè)觸發(fā)器輸出之一。
首先設(shè)定Basic Timer1 的輸入頻率:由于BTCNT1的輸出是提供給LCD的,所以應(yīng)選擇BTCNT2進(jìn)行計(jì)時(shí)。由于定時(shí)1S,故CLK2的頻率應(yīng), Fclk2=ACLK/256=32768/256=128HZ 其中斷頻率設(shè)置為:
F=Fclk2/128=128/128=1HZ ;T=1/F=1s
所以設(shè)定Basic Timer1為:
圖3 中斷子程序流程圖
The flow chart of interruption subprogram
4軟時(shí)鐘計(jì)時(shí)的RTC
The RTC of soft clock
采用5PPM的32768HZ晶振和MCU內(nèi)部的電容,從使用效果來(lái)看是很理想的。在LMP3下,用Basic Timer1作1S中斷,其他外圍電路關(guān)斷,沒(méi)用的引腳作處理。IO輸入狀態(tài),一般功耗為2ua。電機(jī)運(yùn)行時(shí),功耗就大了(主要電機(jī)的功耗大),但它工作時(shí)間短,頻率低。MSP430F413典型的電流消耗在活動(dòng)模式是3mA,1MHZ和3.65V條件下。典型的電流消耗在低功耗模式3為6uA在3.65V條件下。
時(shí)鐘的計(jì)時(shí)準(zhǔn)確度如果僅僅依靠采用的石英晶體固有頻率來(lái)保證,那末,無(wú)論是硬時(shí)鐘還是軟時(shí)鐘都難以達(dá)到標(biāo)準(zhǔn)的要求,只有采取軟件補(bǔ)償才能有效解決.為了保證時(shí)鐘的準(zhǔn)確度,在出廠前都進(jìn)行晶振電路的頻率校正(通常較難做好,特別在批量生產(chǎn)時(shí)).當(dāng)采用32768HZ晶振時(shí),32768振蕩周期為1秒(1/215)。頻率校正方法是調(diào)節(jié)晶振電路的負(fù)載電容。目前,時(shí)間開(kāi)關(guān)時(shí)基普遍采用石英晶體,因此,日計(jì)時(shí)誤差是由時(shí)鐘電路的晶體決定。晶體的誤差特性常用ppm來(lái)表示,1ppm即為百萬(wàn)分之一(10-6)。
如:晶體的誤差為20ppm ,那么:
時(shí)鐘的日計(jì)時(shí)誤差 = 60×60×24×20×10-6 =1.728(秒/日)。
其溫度系數(shù)隨不同的晶體而具有不同的溫度曲線。
32768Hz的晶體溫度特性曲線是頂點(diǎn)在25℃處的開(kāi)口向下的拋物線。
音叉型晶體投入工作的第一年頻漂在±5ppm左右。
供電電源由5V變?yōu)椋姵兀?~3.6V時(shí),將變化1~2ppm。
晶體出現(xiàn)的問(wèn)題是:日計(jì)時(shí)誤差偏大;常溫及低溫下的停振。
在預(yù)付費(fèi)智能卡表中,軟時(shí)鐘主要是用以寫(xiě)日志和更改日志時(shí)便于統(tǒng)計(jì),所以對(duì)此實(shí)時(shí)時(shí)鐘的要求不是特別嚴(yán)格,可以允許其有一定誤差,存在一定的日計(jì)時(shí)誤差,從使用效果來(lái)看是很理想的,沒(méi)有必要使用電容調(diào)整頻率, 也不必通過(guò)軟件加以補(bǔ)償。
圖3為RTC中斷子程序流程圖,并規(guī)定該計(jì)時(shí)系統(tǒng)在每月某一時(shí)刻(如每月一號(hào))進(jìn)行倒閥報(bào)警(進(jìn)行開(kāi)關(guān)閥門一次,防止長(zhǎng)時(shí)間不用水閥門結(jié)垢),閥門控制在預(yù)付費(fèi)水表中至關(guān)重要,每月定時(shí)倒閥確保了水表正常情況下閥門開(kāi)關(guān)的靈活性。
5結(jié)論
conclusion
該方案已應(yīng)用于由山東省自動(dòng)化所開(kāi)發(fā)的CPU卡預(yù)付費(fèi)水表中,運(yùn)行準(zhǔn)確可靠,由于RTC的可操作性給智能卡水表的運(yùn)行、管理和維護(hù)帶來(lái)了便利。同時(shí)執(zhí)行RTC的MSP430代替了專門的RTC設(shè)備使MSP430單片機(jī)的資源得到了充分的利用,從而降低了成本更有利于產(chǎn)品的推廣。
本文作者創(chuàng)新點(diǎn)是使用了軟件的形式,實(shí)現(xiàn)了預(yù)付費(fèi)智能卡水表的控制系統(tǒng)及定時(shí)系統(tǒng)。