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