为了给用户建立购水档案,便于用户购水统计和水量汇总及水司阶梯水价的控制,避免交易中的纠纷;建立水表操作日志和反馈信息,在水表控制系统工作过程中,控制系统把水表加水、倒阀、数据更改、磁攻击等的操作写入日志文件,一旦发生事故,控制系统利用日志文件和反馈文件来进行系统故障恢复,便于水表管理和维护,保证表具准确可靠运行,因此水表控制系统和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单片机的资源得到了充分的利用,从而降低了成本更有利于产品的推广。
本文作者创新点是使用了软件的形式,实现了预付费智能卡水表的控制系统及定时系统。