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