文章内容
智能流量检测系统高可靠性数据的保护方法
数据保护电路设计程序运行异常时累积流量数据的保护程序跑飞自动复位时序
2003年10月(1)
摘要 提出了一种由MAX813和93C46集成芯片构成的低成本、高可靠性智能流量检测系统数据自动保护方法。给出了看门狗、掉电后供电延时、电源故障实时监控和自动复位等功能的实现电路及相关程序。克服了来自电源等方面的干扰,提高了可靠性。该方法已在新开发的智能流量检测系统产品中得到实际应用。
关键词 流量检测 数据保护 电源监控 累积流量
0 引言
智能流量检测系统应用的工业现场环境一般都较恶劣,存在的各方面干扰常导致系统难以正常工作,其中,源于电源的干扰对系统的影响最大。目前国产系统虽采用了一些有效的软硬件抗干扰措施,如看门狗、光电隔离与屏蔽、滤波、软件陷阱等,在一定程度上提高了系统的抗干扰能力,但对应用现场突然断电或电网电压大范围波动时的数据保护问题仍未能得到很好解决,从而严重影响了系统工作的可靠性和环境适应能力。本文以智能流量检测系统累积流量数据保护为例,介绍一种具有低成本、高可靠性的流量检测系统数据保护方法。
该数据保护电路采用MAX813、三端集成稳压器7805和93C46等构成,如图1所示。
图1 检测系统数据保护电路
MAX813是具有电源监控电路的微处理芯片,它不仅能对电源电压实现监测,而且内部还具有看门狗定时电路,因此用于测控系统十分方便。它具有四个功能:①看门狗计时器功能,如果看门狗输入在1.6s内无变化,就会产生看门狗输出;②电压监测功能,掉电或电源监测电压低于1.25V时,产生掉电输出;③上电复位功能,系统上电时自动产生脉宽200ms的复位脉冲;④人工复位功能,当人工复位端输入低电平时,产生复位信号输出。其主要引脚定义为:
:手动复位端。当该端输入低电平保持14ms以上,MAX813就能产生复位信号。该复位信号脉宽为200ms。
PFI:电源故障输入端。当该端输入电压低于1.25V时,MAX813使电源故障输出端产生的信号由高电平变为低电平。
:电源故障输出端。电源正常时,保持高电平;电源电压变低或掉电时,输出由高电平变为低电平。
WDI:看门狗信号输入端。程序正常运行时,必须间隔1.6s之内使该端输入反向信号。若该端输入信号超过1.6s未改变方向,则产生看门狗输出。
RST:复位信号输出端。上电时,自动产生200ms的复位脉冲;手动复位端输入低电平时,该端也产生复位信号输出。
:看门狗信号输出端。正常工作时输出高电平;看门狗输出时,该端输出信号由高电平变为低电平。
93C46是比较常用的串行E2PROM芯片。它具有体积小、价廉、电路连接简单、不占用总线和数据线、掉电不丢失数据、可在线改写等优点,因此可广泛应用于智能测控系统中。其主要引脚定义为:
TEST(2,3脚):测试端,与VCC相连。
:片选信号,低电平有效。在相邻两条指令之间 必须至少保持250ns的低电平状态。
SK:时钟信号。所有操作码、地址码、数据位均在SK脉冲正跳沿输入或输出,SK信号可在传输数据的任一时刻暂停或继续。
DI:串行数据输入端。用于输入起始位、操作码、地址和数据。
DO:串行数据输出端。在读周期用于输出数据;在擦/写周期或片擦/片写周期,用于提供忙/闲状态;其余时间为高阻状态。
在图1所示的电路中,D2,D3,C1和R3构成了掉电后供电延时电路;R1,R2和MAX813构成了电源故障实时监控电路;MAX813和D1构成了自动复位电路;看门狗电路则由MAX813内部集成电路提供。
系统内部,累积流量数据被存储在两个空间:AT89C52内RAM区和93C46的存储区。AT89C52内RAM区用于存放瞬时累积流量数据,其数据每秒更新流量数据,其数据正常情况下每小时更新一次。
2 工作原理
系统供电及程序运行正常情况下,系统按图2所示的程序流程运行。系统在运行完执行程序后对AT89C52的P14端输出电平反向,以实现喂狗输出。该系统的执行程序运行时间小于1.6s,这样就保证了系统在程序运行正常时的情况下MAX813的看门狗不会产生输出,系统也不会复位。当系统电源供电正常但执行程序因干扰而跑飞或进入临时构成的循环嵌套时,系统不能按正常的程序流程运行。由图2所示的系统主程序流程可知,系统只有在初始化后和运行完执行程序后才产生喂狗输出。因此,系统在程序运行异常的情况下产生喂狗输出信号的概率几乎为零。这样,当程序运行异常时系统能在1.6s内及时地复位。复位后初始化,系统检测AT89C52内RAM区的程序运行标识字,查看系统复位是因看门狗输出还是因系统上电产生。当程序运行标识字显示系统因看门狗输出发生复位时,系统计算出复位后累积流量写入93C46累积流量存储区,使累积流量数据得到保护;反之,系统执行上电时的初始化操作,将程序运行标识字置为OAAH。
图2 系统主程序
上述系统工作过程的时序关系和程序流程分别如图3和图4所示。
a-RST端信号;b- 端信号;c-WDI端信号;
各信号曲线的上升沿和下降沿时间<40ns
图4 自动复位累积流量数据保护程序
图4中,部分初始化和其它程序之间的程序如下所示,由于篇幅所限下述程序中省略了相关的子程序。
……………………
YXBSZ DATA 3CH ;定义程序运行标识字
BUFFL DATA 44H ;定义数据缓冲区首地址
……………………
MOV A,YXBSZ ;读程序运行标识字到累加器A
CJNE A,#OAAH,TZBA ;判断程序运行标识字是否等于#OAAH
LCALL SJCMFX ;词用SJCMFX子程序,计算总累积流量和正(反)向累积流量,总累积流量放在BUFFL为首的4字节单元,正(反)向累积流量放在BUFFL+4为首的4字节单元,高位在前
LCALL R93CRD ;调用R93CRD子程序,写BUFFL和BUFFL+1中总累
;积流量数据到93C46的OEH地址
LCALL R93CRD ;调用R93CRD子程序,等待93C46就绪
MOV A,#BUFFL
ADD A,#2
MOV RO,A
MOV R3,#OFH
LCALL WR93C46 ;调用WR93C46子程序,写BUFFL+2和BUFFL+3
中总累积流量数据到93C46的OFH地址
MOV A,BUFFL ;将缓冲区正(反)向累积流量的首地址放入R7
ADD A,#4
MOV R7,A
MOV C,23H ;将正反向流量标识为读入C
JNC TZBAI ;判断流向是否为正方向
LCALL R93CRD ;调用R94CRD子程序,等待93C46就绪
MOV A,R7
MOV RO,A
MOV R3,#10H
LCALL WR93C46 ;调用WR93C46子程序,写BUFFL+4和BUFFL+5
中正
;向累积流量到93C46的10H地址
LCALL R93CRD ;调用R93CRD子程序,等待93C46就绪
MOV A,R7
ADD A,#2
MOV RO.A
MOV R3,#11H
LCALL WR93C46 ;调用WR93C46子程序,写BUFFL+6和BUFFL+7中正向累积流量到93C46的11H地址
SJMP TZBA2
TZBA1:LCALL R93CRD ;调用R93CRD子程序,等待93C46就绪
MOV A,R7
MOV RO,A
MOV R3,#12H
LCALL WR93C46 ;调用WR93C46子程序,写BUFFL+4和BUFFL+5中正向累积流量到93C46的12H地址
LCALL R93CRD ;调用R93CRD子程序,等待93C46就绪
MOV A,R7
ADD A,#2
MOV RO,A
MOV R3,#13H
LCALL WR93C46 ;调用WR93C46子程序,写BUFFL+6和BUFFL+7中反向累积流量到93C46的13H地址
SJMP TZBA2
TZBA:MOV YXBSZ,#OAAH ;将程序运行标识字置为#OAAH
TZBA2:……………………