多用户智能电表中的数据安全存储技术
多用户智能电表是以MCU为核心、以大规模电量采集模块而构成的一种电量数 据采集仪表,具有多用户电量采集、数据远程传输、用户供电控制、复费率电量计量等先进 功能,体积小,功能强,深受集中供电场所如高校学生宿舍、智能化小区等用户欢迎。为提高仪表使用的灵活性,存在一些可编程的参数,如仪表编号、计量户数、通讯速率、电表脉冲常数、复费率时段时间值、各户供电状态等,以及其计量的数据,即各用户的用电量。这些数据一旦受到干扰遭到破坏,不仅仪表不能正常工作,还将给用户 造成经济损失,引发经济纠纷,因此必须保证数据的可靠性、安全性、非易失性。如何保护 这些要求非易失性存储的关键数据不被破坏,确保数据的安全,对于多用户智能电表设计具 有非常重要的意义。
仪表工作原理:各用户的用电量,通过大规模电能计量集成电路(如BL0933、ADE7755等)将其转化为与电量成正比的脉冲量,经光电耦合电路后,由开关量输入接口被CPU采入内存中,CPU根据采集的脉冲量,对各用户的用电量进行累加,将其存入非易失存储器中,并由显示电路轮流显示出各户的用电量。通过远程通信接口电路(如RS485、CAN总线)实现测量数据的远程传输。
为提高仪表的可靠性,在数据采集电路和远程传输电路中都设计了光电隔离电路,设计了由X5045芯片构成的独立的看门狗电路,为实现参数和数据的非易失存储,仪表中采用了两种存储器,一种是X5045内部的512字节的非易失存储器;另一种是独立的直接与CPU接口的非易失存储器W24C16。两种存储器相互配合,配以软件措施,实现数据的非易失、高可靠存储。
影响数据安全的主要原因有以下几个方面:
(1)上电、掉电、电源跌落过程中,电源冲击对存储器芯片的影响;
(2)上电、掉电、电源跌落过程中,CPU不能可靠复位,导致程序跑飞改写数据;
(3)程序运行过程中受到各种干扰导致程序跑飞改写数据。
针对以上原因,硬件、软件设计应采取相应措施,确保数据存储的安全可靠。
2数据安全的硬件措施
(1)采用集成看门狗芯片X5045,将其复位输出端直接与系统各芯片的复位端 相连,在上电、掉电、电源跌落过程中,实现可靠复位;同时,当程序跑飞时,及时实现自动复位,减少数据被改写的可能性。
(2)采用多重存储媒体
对于非易失数据存储,系统设计时采用了二重媒体存储技术,一是采用X5045内带有SPI接口的512字节的非易失存储器;二是外扩了一种非易失存储器。将同一组数据,存放到两种存储器中,可大大减少抗扰破坏的概率。正常运行时,为提高数据读写速度,其运算都安排在CPU内部进行。
(3)正确选择非易失存储器
多用户电表中的数据,如用户用电量,按每户4字节计算(显示范围为:0.00~999 999.99),对16户电表(适用于一梯两户、7层居民住宅、一户一表、一路公用照明、一路备用),所需存储容量仅为64字节,因为总的存储容量并不多,所以以选串行接口存储器为宜;另外,系统对用户电量的读写不是很频繁,读写速度不要求很快,加以数据可靠性要求很高,系统中选择了X5045多功能芯片和I2C总线接口的E2PROM W24C16。
(4)正确设计接口电路
数据被改写的原因是随机干扰信号满足了芯片写时序的要求,执行了非法的写操作。如并行接口的存储器芯片的CS、WR同时为低电平时即可完成一次写操作,所以其抗扰性能要低于串行的E2PROM。对于W24C16芯片,要改写其内部的数据,除了写入数据时满足一定的时序外,芯片本身具有写保护引脚,其高电平有效时方可对其进行写操作。该写保护引脚一般不应直接接到电源上,应将其接到CPU的某一可编程引脚,由CPU来控制该引脚的电平信号,以防止外来的干扰。
3数据安全的软件措施
硬件措施只是有效提高数据安全性的一个方面,在程序执行过程中,系统受 到强烈干扰后,仍有跑飞改变数据的可能性,所以软件设计中应采取一定的措施,以正确识 别数据的有效性,对被破坏的数据采取一定的数据恢复措施,以尽可能地达到数据存储的完整性、有效性。
3.1数据备份
在系统设计中,采用两种方法实现数据备份操作:1)硬件设计中选用了X5045和W24C16两种独立的存储器,实现存储体的备份;2)在同一存储体中,对同一批数据存于不同的存储区域中,一般采用3重备份方案,这样,同一时刻数据在两种存储器中有6个备份。采用不同的存储器,并同时对采集数据进行多个备份,可以大大提高数据的抗干扰性能。
3.2备份数据的表决
存于存储器中的6份数据,CPU定期对其进行数据有效性检验,以观察是否受到干扰。一般通过表决的方式,认为其中有3份以上的数据相同,便认为相同的数据为有效数据,同时用其覆盖掉不相同的数据备份,以保证数据的有效性和完整性。
3.3数据校验
一般情况下,通过备份数据表决可解决大部分的数据受扰问题,但在有些情况下,也会出现 数据表决失败的情况。为此,还需对每一块备份数据进行校验,并将校验值存于校验数据区域中。对备份数据表决失败的情况,再对每一块备份数据进行校验,比较其校验值是否和原来的一致,若一致,则认为该备份数据有效,若不一致,则认为该备份数据已遭到破坏。校 验算法可采用和校验、CRC校验等。对校验数据值亦可采用备份存储的方法,以进一步提高数据存放的可靠性。
3.4写方式控制
程序中有写数据的要求,便存在数据被破坏的可能。为防止误写数据,程序设计中设置写请求口令变量,正常执行的程序欲执行一个写流程时,需先设置一个写请求口令变量,才可以调用写数据子程序。而在写数据子程序中,只有写请求口令变量值与该流程的标志值相同,方可进行写操作,写完成后将自动复位写请求口令变量。对不正确的写请求口令变量值,写子程序将对其不予理会并将其复位。
3.5回读写数据校验
对写入串行E2PROM中的数据,为防止在写数据过程中受到干扰造成误写,写完成后,再将刚写入的数据读出来,与要写的数据相比较,看两者是否一致,如一致,则说明数据已正确 写入存储器中,如不一致,则启动重写操作,直到数据写入正确为准。
3.6写入次数限制
串行E2PROM每个单元都有写入次数限制,要保证在仪表的使用期限内写入次数不超过厂家推荐的值,保证数据可靠性。仪表预计最大计量数据为999 999.99kWh,将用户计量电能值分成两部分进行存储,一部分为整数电量部分,最大数据为999 999,可满足写入次数限制;一部分为0.1 kWh存储单元,如写入次数被限制在10万次,则每计量10 000 kWh,则需要更换存储单元,程序根据整数电量满10 000 kWh时,便更换存储单元。对0.01 kWh计量,只有系统掉电时将其存入E2PROM中,正常运行时存储在单片机内部RAM中。X5045的存储 器分配如表1所示。
4结束语
多用户智能化电表属于计量仪表,其测量数据的正确性和可靠性都关系到供电方和用电方的切身经济利益。通过采取以上软、硬件措施,数据存放的可靠性得到很大提高。同时,要想全面提高系统的可靠性和安全性,还要对系统的整体设计、系统应用环境等进行综合考虑,采取电源滤波、仪表屏蔽、防雷等安全措施,才能取得最佳效果。
暂无评论