CN111666177A - 一种气液两相流量计仪表数据存储方法 - Google Patents

一种气液两相流量计仪表数据存储方法 Download PDF

Info

Publication number
CN111666177A
CN111666177A CN202010375449.1A CN202010375449A CN111666177A CN 111666177 A CN111666177 A CN 111666177A CN 202010375449 A CN202010375449 A CN 202010375449A CN 111666177 A CN111666177 A CN 111666177A
Authority
CN
China
Prior art keywords
data
area
storage area
address
static
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010375449.1A
Other languages
English (en)
Other versions
CN111666177B (zh
Inventor
樊晨
桂捷
于志刚
杨仓海
张春涛
操红梅
程世东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Petrochina Co Ltd
Original Assignee
Petrochina Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Petrochina Co Ltd filed Critical Petrochina Co Ltd
Priority to CN202010375449.1A priority Critical patent/CN111666177B/zh
Publication of CN111666177A publication Critical patent/CN111666177A/zh
Application granted granted Critical
Publication of CN111666177B publication Critical patent/CN111666177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种气液两相流量计仪表数据存储方法,选用铁电存储芯片作为存储介质,将铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致,该存储介质具备擦写入速度高、写入无限次数、写入数据前无需擦除等特点,另外存储介质的各个物理存储单元只存在物理地址上的差异,读写难度全区间一致,本发明通过选用铁电存储器作为存储介质,保障了数据存储的快速性,避免了Nor/NAND Flash类型存储器件的擦写次数限制及速度限制,同时通过不同的数据管理区域有效管理各物理存储空间。

Description

一种气液两相流量计仪表数据存储方法
技术领域
本发明属于气田现场计量仪表技术领域,具体涉及一种气液两相流量计仪表数据存储方法,特别适合野外无人值守环境下的仪表数据保存。
背景技术
近年来,为了摸清气体生产动态,评价气井生产措施效果,需要对气井产气、产液进行动态实施监控,实现气液两相在线计量。
气液两相流量计在运行中一般需要涉及两类数据,静态参数数据和动态计量数据两类。静态参数数据一般包括仪表各种气液两相流量计运行数基础数据,如天然气组分、管径、压力传感器范围值、通信地址、通行波特率等;动态数据包括万年历时钟、当前压力、当前温度、瞬时气相流量、瞬时液相流量、累计气相流量、累计液相流量、昨日产气量、昨日产液量等。根据仪表功能需求,静态数据会涉及远程在线调整,动态数据需要在运行过程中定时快速保存。静态数据和动态数据操作都涉及存储器读写操作,但是二者又有不同,静态数据设置操作的频率远低于动态数据,但对数据有效性要求更高,即设置更新后的数据必须是保存完整的,否则会影响整个仪表的运行,动态数据更注重对过程的保存,要求能够体现一段时间内的数据变化过程。
气田井场多数地理位置地处偏远,供电不方便,实际中多采用太阳能或者风电互补供电形式。但由于维护、低温等问题,往往会出现仪表运行过程中的异常掉电的问题,当该异常掉电发生在数据读写期间时,会造成仪表数据错乱,这必然造成生产管理系统数据错乱,日常仪表维护成本增加。一般的嵌入式系统中往往采用专用的文件系统来实现存储管理,满足数据完整性及掉电保护,而在流量计中由于仪表处理器芯片资源有限,存储数据量小,要求快速无限次存储,可靠性高,处理方式简单等特点,因此成熟稳健系统通常不能直接移植,另外Nor/NAND Flash类型存储器件的擦写次数限制及速度限制,不适用于仪表数据储存,使用链表等数据结构比较复杂,难以推广应用。
发明内容
本发明的目的在于克服上述现有技术的不足,提供一种气液两相流量计仪表数据存储方法,克服了现有技术中1:仪表运行过程中异常掉电,当该异常掉电发生在数据读写期间时,会造成仪表数据错乱,造成生产管理系统数据错乱,日常仪表维护成本增加;2:由于仪表处理器芯片资源有限,存储数据量小,要求快速无限次存储,因此成熟稳健系统通常不能直接移植;3:Nor/NAND Flash类型存储器件的擦写次数限制及速度限制,不适用于仪表数据储存;4:使用链表等数据结构比较复杂,难以推广应用等问题。
为了解决技术问题,本发明的技术方案是:一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据区至少包括两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
优选的,所述步骤1)中存储管理区包括存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
优选的,所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段。
优选的,所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
优选的,所述步骤3)中静态数据区需要更改静态数据时,首先将静态数据主存储区的数据复制并写入到静态数据备份存储区,接着读取数据校验和正确后,将更改后的静态数据写入静态数据主存储区。
优选的,所述当更改静态数据的过程中发生异常掉电时,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
优选的,所述步骤4)中动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,每个动态数据块的数据结构一致,并且所占空间大小相等。
优选的,所述步骤4)中动态数据块包括动态数据、更新版本号以及动态数据的CRC数据校验和,更新版本号为定义一个动态数据块写入存储区的次数,一个更新版本号可以唯一标识一个动态数据块,通过查找最大值的更新版本号即可得知最近的写入动态数据块;版本号从0x00开始,最终版本号为0xffffffff,然后又回到0x00;每写入更新一次动态数据块,版本号在上次更新版本号上加1,0xffffffff的下一个版本号是0x00;动态数据块每次写入更新从上次更新位置下一个相邻动态数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据区能保存n组有效动态数据记录。
优选的,所述步骤4)具体为:获取动态数据区的存储区大小,从动态数据块1开始进行扫描,读取每个动态数据块的数据,并对该动态数据块内数据做CRC校验,然后与该动态数据块存储的CRC校验和进行比对是否正确,依次对多个动态数据块进行CRC校验,CRC校验和正确且动态数据块中更新版本号为最大值的动态数据块为最后一次正确存储的动态数据,取下一个动态数据块的地址作为当前待写入动态数据块地址,若是校验完所有动态数据块都不正确,则把第一个动态数据块作为待写入动态数据块地址。
优选的,所述当更新动态数据块的过程中发生异常掉电,则在气液两相流量计重新上电后,重新开始执行步骤4),即可排除异常数据。
相对于现有技术,本发明的优点在于:
(1)本发明选用铁电存储芯片作为存储介质,将铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致,该存储介质具备擦写入速度高、写入无限次数、写入数据前无需擦除等特点,另外存储介质的各个物理存储单元只存在物理地址上的差异,读写难度全区间一致,本发明通过选用铁电存储器作为存储介质,保障了数据存储的快速性,避免了Nor/NAND Flash类型存储器件的擦写次数限制及速度限制,同时通过不同的数据管理区域有效管理各物理存储空间;
(2)本发明的存储管理区包括存储区类型、存储区大小、存储区地址和数据校验和,静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,其中动态数据块包括动态数据、更新版本号以及动态数据的CRC数据校验和,本发明数据结构设计实现了轻量级设计,避免了使用链表等数据结构的复杂性,轻量级的设计使得程序结构简单,硬件资源小,能够方便的应用到资源有限的嵌入式仪表处理系统中,保障数据存储的快速性及有效性,易于推广应用;
(3)本发明存储介质和存储管理区的首地址一致,当气液两相流量计上电后,从存储介质的物理首地址即可读取存储管理区数据,存储管理区用来定位静态数据区和动态数据区的首地址,实现不同数据区的快速跳转,静态数据区存储采用了备份制的方法,将静态存储区又划分为两个区域,即静态数据主存储区和静态数据备份存储区,每次更改数据时,首先将静态数据主存储区的数据复制一份到静态数据备份存储区,复制完成后,再更改静态数据主存储区数据,一旦静态数据主存储区在读写中发生掉电或者意外读写失败,可以从静态数据备份存储区复制数据到静态数据主存储区,实现数据的完整性;动态数据区采用原子式块循环写入更新,即每次必须更新完一个动态数据块才算一次写入更新,动态数据块包含多个动态数据,动态数据块每次写入更新从上次更新位置下一个相邻数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据空间最多能保存n组有效动态数据记录,如果更新动态数据块的过程中异常掉电,在气液两相流量计重新上电后,重新跳转到动态数据区首地址,即可排除异常数据,保障数据存储的快速性及有效性。
附图说明
图1、本发明一种气液两相流量计仪表数据存储方法流程图;
图2、本发明一种气液两相流量计仪表数据存储方法的存储介质物理空间划分示意图;
图3、本发明一种气液两相流量计仪表数据存储方法的存储管理区存储示意图;
图4、本发明一种气液两相流量计仪表数据存储方法的静态数据区存储示意图;
图5、本发明一种气液两相流量计仪表数据存储方法的动态数据区存储示意图;
图6、本发明一种气液两相流量计仪表数据存储方法的动态数据块存储示意图。
具体实施方式
下面结合实施例描述本发明具体实施方式:
需要说明的是,本说明书示意的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
实施例1
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
实施例2
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
优选的,所述步骤1)中存储管理区包含存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
实施例3
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
优选的,所述步骤1)中存储管理区包含存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
优选的,所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段。
优选的,所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
实施例4
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
优选的,所述步骤1)中存储管理区包含存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
优选的,所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段。
优选的,所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
优选的,所述步骤3)中静态数据区需要更改静态数据时,首先将静态数据主存储区的数据复制并写入到静态数据备份存储区,接着读取数据校验和正确后,将更改后的静态数据写入静态数据主存储区。
优选的,所述当更改静态数据的过程中发生异常掉电时,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
实施例5
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
优选的,所述步骤1)中存储管理区包含存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
优选的,所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段。
优选的,所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
优选的,所述步骤3)中静态数据区需要更改静态数据时,首先将静态数据主存储区的数据复制并写入到静态数据备份存储区,接着读取数据校验和正确后,将更改后的静态数据写入静态数据主存储区。
优选的,所述当更改静态数据的过程中发生异常掉电时,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
优选的,所述步骤4)中动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,每个动态数据块的数据结构一致,并且所占空间大小相等。
优选的,所述步骤4)中动态数据块包括动态数据、更新版本号以及动态数据的CRC数据校验和,更新版本号为定义一个动态数据块写入存储区的次数,一个更新版本号可以唯一标识一个动态数据块,通过查找最大值的更新版本号即可得知最近的写入动态数据块;版本号从0x00开始,最终版本号为0xffffffff,然后又回到0x00;每写入更新一次动态数据块,版本号在上次更新版本号上加1,0xffffffff的下一个版本号是0x00;动态数据块每次写入更新从上次更新位置下一个相邻动态数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据存储区能保存n组有效动态数据记录。
实施例6
如图1所示,本发明公开了一种气液两相流量计仪表数据存储方法,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
如图2所示,铁电存储芯片的物理空间按照地址递增的顺序划分成存储管理区、静态数据区和动态数据区,其中存储管理区首地址对应物理空间首地址,动态数据区末地址对应物理空间末地址;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据存储区至少包含两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
如图3所示,优选的,所述步骤1)中存储管理区包含存储区类型、存储区大小、存储区地址和数据校验和(按照地址递增的顺序排列,其中存储区类型首地址对应存储管理区首地址,数据校验和末地址对应存储管理区末地址),其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
如图4所示,优选的,所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段,其中静态数据主存储区的存储区类型首地址对应静态数据区首地址,静态数据备份存储区的数据校验和末地址对应静态数据区末地址。
优选的,所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
优选的,所述步骤3)中静态数据区需要更改静态数据时,首先将静态数据主存储区的数据复制并写入到静态数据备份存储区,接着读取数据校验和正确后,将更改后的静态数据写入静态数据主存储区。
优选的,所述当更改静态数据的过程中发生异常掉电时,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
如图5所示,优选的,所述步骤4)中动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,每个动态数据块的数据结构一致,并且所占空间大小相等,按照地址递增的顺序排列,其中存储区类型的首地址对应动态数据区首地址,动态数据块n的末地址对应数据区末地址。
如图6所示,优选的,所述步骤4)中动态数据块包括更新版本号、动态数据、以及动态数据的CRC数据校验和(按照地址递增的顺序排列,其中更新版本号的首地址对应动态数据块1首地址,数据校验和的末地址对应动态数据块1末地址),更新版本号为定义一个动态数据块写入存储区的次数,一个更新版本号可以唯一标识一个动态数据块,通过查找最大值的更新版本号即可得知最近的写入动态数据块;版本号从0x00开始,最终版本号为0xffffffff,然后又回到0x00;每写入更新一次动态数据块,版本号在上次更新版本号上加1,0xffffffff的下一个版本号是0x00;动态数据块每次写入更新从上次更新位置下一个相邻动态数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据存储区能保存n组有效动态数据记录。
优选的,所述步骤4)具体为:获取动态数据存储区的存储区大小,从动态数据块1开始进行扫描,读取每个动态数据块的数据,并对该动态数据块内数据做CRC校验,然后与该动态数据块存储的CRC校验和进行比对是否正确,依次对多个动态数据块进行CRC校验,CRC校验和正确且动态数据块中更新版本号为最大值的动态数据块为最后一次正确存储的动态数据,取下一个动态数据块的地址作为当前待写入动态数据块地址,若是校验完所有动态数据块都不正确,则把第一个动态数据块作为待写入动态数据块地址。
优选的,所述当更新动态数据块的过程中发生异常掉电,则在气液两相流量计重新上电后,重新开始执行步骤4),即可排除异常数据。
实施例7
步骤1)选取铁电存储器FM24CL04B作为气液两相流量计的存储介质,该存储介质的物理存储空间为512x8bits,即4K存储空间,该案例中long型变量大小为4,char型变量大小为1。
定义三个数据存储结构,对应三个数据存储区。
(1)定义存储管理区为如下的数据结构如下所示:
typedef struct {
unsigned char uctype;
unsigned long ulsize;
unsigned long uladd0;
unsigned long uldd1;
unsigned long ulcrc;
}main_param;
uctype表示本存储区类型,此处为0x01,表示存储管理区。
ulsize表示存储区大小,单位为字节,其大小为所有该存储区数据所占字节长度。
uladd0表示静态数据区首地址;
uldd1表示动态数据区首地址。
ulcrc为存储管理区所有数据CRC校验和。
(2)定义静态数据主存储区数据结构如下所示:
typedef struct {
unsigned char ucype;
unsigned long ulsize;
unsigned long ulparam1;
unsigned long ulparam2;
unsigned long ulparamn;
unsigned long ulcrc;
}static_section_param;
uctype表本存储区类型,该处为0x02,表示静态数据区。
ulsize为该区域所有数据字节长度。
ucparam1,ulparam2,…,ulparamn用来存储静态数据,该静态数据为配置类参数数据,依次填入天然气组分,管径,压力传感器范围值,通信地址,通行波特率。
ulcrc用来存储该段数据字节CRC校验和。
(3)定义动态数据块数据结构如下所示:
typedef struct {
unsigned long ucversion;
unsigned long ulparam1;
unsigned long ulparam2;
unsigned long ulparamn;
unsigned long ulcrc;
}dynamic_block_param;
ucversion值表示更新动态数据块的版本号。
ucparam1,ulparam2,…,ulparamn用来存储动态数据。依次对应当前压力,当前差压,当前温度,瞬时气相流量,瞬时液相流量,累计气相流量,累计液相流量,昨日产气量,昨日产液量需要实施动态更新存储的数据。
ulcrc为动态块数据结构中其余数据的CRC校验和。
(4)动态数据区数据结构如下所示:
typedef struct {
unsigned char uctype;
unsigned long ulsize;
unsigned long ulcrc;
dynamic_block_param* dbparam;
}dynamic_section_param;
uctype表本存储区类型,值为0x03,表示该数据区为动态数据区。
ulsize为该区域所有数据字节长度。
ulcrc是uctype与ulsize 数据的CRC校验和;
dbparam为指向动态数据块的指针。
步骤2)存储管理区与存储介质的存储空间首地址一致,气液两相流量计上电后,从存储介质的物理首地址即可读取存储管理区数据,根据数据校验和判断数据有效性,判断为无效数据后,初始化存储管理数据区,此时存储区类型、存储区大小、存储区地址及校验和都将被初始化;存储管理区标志为0x01,数据长度为17字节,存储区地址0指向静态数据区首地址,此处为0x12,存储区地址1指向动态数据区首地址,为静态数据区末地址+1,然后对该数据结构取CRC校验和。
步骤3)根据存储管路区中的存储区地址0,跳转到静态存储区首地址,读取静态数据主存储区数据,静态数据主存储区的相应的存储区类型为0x02。本实施例中,静态数据有串口波特率,通信位,校验码,停止位,485通信地址,压力表量程、差压表量程,刷新周期,孔板大小等9个,依次存入数据1,数据2,…,数据9。因存储区类型+存储区大小+数据校验和总共占用字节数为7,所以静态存储区大小的真实值为所有静态数据的字节大小+7字节,为43字节,该数据区校验和为存储空间所有数据的CRC校验和;如果静态数据主存储区中存储的数据校验码与该空间数据的CRC运算得到的校验码不一致,则加载静态数据备份存储区数据,若是两个存储区数据校验码都不正确,则认为是静态数据未初始化,给出提示写入默认值。
气液两相流量计运行中配置参数属于静态数据,配置一次,运行中基本保持不变,这些数据要求数据一致性高,不能出错;系统正常运行时,如果需要更改静态数据,首先将静态数据主存储区数据复制并写入到静态数据备份存储区,然后读出验证校验和正确后,将更改后的静态数据写入静态数据主存储区。
当更新静态数据的过程中发生异常掉电,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
步骤4)根据储管路区中的存储区地址1,跳转到动态数据区首地址,获取动态数据区大小,从动态数据块1开始进行扫描,读取每个块的数据,并对该动态数据块内数据做CRC校验,然后和该动态数据块存储的CRC值进行比对,CRC校验和正确且动态数据块中更新版本号为最大值者为最后一次的正确存储的动态数据,取下一个动态数据块的地址作为当前待写入动态数据块地址,若是搜索完所有数据块,都不正确,则把第一个动态数据块作为当前待写入动态数据块地址。
动态数据区用来存放运行中动态发生变化且需要定时存储的数据,动态数据区采用原子式块循环写入更新,即每次必须更新完一个动态数据块才算一次写入更新,动态数据块包含多个动态数据,否则认为是异常写入。
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
如果更新动态数据块的过程中异常掉电,则在气液两相流量计重新上电后,重新开始执行步骤4),即可排除异常数据。
本发明选用铁电存储芯片作为存储介质,将铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致,该存储介质具备擦写入速度高、写入无限次数、写入数据前无需擦除等特点,另外存储介质的各个物理存储单元只存在物理地址上的差异,读写难度全区间一致,本发明通过选用铁电存储器作为存储介质,保障了数据存储的快速性,避免了Nor/NAND Flash类型存储器件的擦写次数限制及速度限制,同时通过不同的数据管理区域有效管理各物理存储空间;
本发明的存储管理区包括存储区类型、存储区大小、存储区地址和数据校验和,静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,其中动态数据块包括动态数据、更新版本号以及动态数据的CRC数据校验和,本发明数据结构设计实现了轻量级设计,避免了使用链表等数据结构的复杂性,轻量级的设计使得程序结构简单,硬件资源小,能够方便的应用到资源有限的嵌入式仪表处理系统中,保障数据存储的快速性及有效性,易于推广应用;
本发明存储介质和存储管理区的首地址一致,当气液两相流量计上电后,从存储介质的物理首地址即可读取存储管理区数据,存储管理区用来定位静态数据区和动态数据区的首地址,实现不同数据区的快速跳转,静态数据区存储采用了备份制的方法,将静态存储区又划分为两个区域,即静态数据主存储区和静态数据备份存储区,每次更改数据时,首先将静态数据主存储区的数据复制一份到静态数据备份存储区,复制完成后,再更改静态数据主存储区数据,一旦静态数据主存储区在读写中发生掉电或者意外读写失败,可以从静态数据备份存储区复制数据到静态数据主存储区,实现数据的完整性;动态数据区采用原子式块循环写入更新,即每次必须更新完一个动态数据块才算一次写入更新,动态数据块包含多个动态数据,动态数据块每次写入更新从上次更新位置下一个相邻数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据空间最多能保存n组有效动态数据记录,如果更新动态数据块的过程中异常掉电,在气液两相流量计重新上电后,重新跳转到动态数据区首地址,即可排除异常数据,保障数据存储的快速性及有效性。
上面对本发明优选实施方式作了详细说明,但是本发明不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
不脱离本发明的构思和范围可以做出许多其他改变和改型。应当理解,本发明不限于特定的实施方式,本发明的范围由所附权利要求限定。本实施例没有详细叙述的部件和结构属本行业的公知部件和常用结构或常用手段,这里不一一叙述。

Claims (10)

1.一种气液两相流量计仪表数据存储方法,其特征在于,包括以下步骤:
步骤1)选择铁电存储芯片作为存储介质,其中铁电存储芯片的物理空间划分成存储管理区、静态数据区和动态数据区,每个区对应不同的地址空间,存储管理区、静态数据区和动态数据区的地址空间依次从低到高,其中存储介质和存储管理区的首地址一致;
步骤2)当气液两相流量计上电后,从存储介质的首地址即可读取存储管理区数据,然后根据CRC校验判断数据有效性,如果判断为有效数据,就从存储管理区跳转至静态数据区首地址,如果判断为无效数据,则初始化存储管理区,然后跳转至静态数据区首地址;
步骤3)静态数据区包括静态数据主存储区和静态数据备份存储区,当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址;如果判断为无效数据,则加载静态数据备份存储区数据,然后进行CRC校验,如果判断为有效数据,则跳转至动态数据区首地址,如果判断为无效数据,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致;
步骤4)动态数据区至少包括两个及以上数量的动态数据块,当跳转至动态数据区首地址,搜索有效更新版本号最大值的动态数据块,获取该动态数据块地址,取下一个动态数据块的地址作为当前待写入动态数据块地址;
步骤5)系统正常运行状态时,如果需要写入动态数据,则根据当前待写入动态数据块地址定位写入,然后将当前待写入动态数据块地址指向下一个动态数据块首地址,动态数据块的写入次序为动态数据块1、动态数据块2、...、动态数据块n,依次类推,待写完动态数据块n后,待写入动态数据块地址折回到动态数块1首地址继续写入,完成动态数据的存储。
2.根据权利要求1所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤1)中存储管理区包括存储区类型、存储区大小、存储区地址和数据校验和,其中存储管理区的存储区类型为0x01,静态数据区的存储区类型为0x02,动态数据区的存储区类型为0x03;存储区大小的单位为字节,其大小计算为存储管理区所有数据所占空间;存储区地址包括存储区地址0和存储区地址1,存储区地址0存放静态数据区首地址,存储区地址1存放动态数据区首地址;数据校验和存放存储管理区数据的CRC校验和。
3.根据权利要求1所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤3)中静态数据区包括静态数据主存储区和静态数据备份存储区,其中静态数据主存储区和静态数据备份存储区大小一致并均包括存储区类型、存储区大小、数据1、数据2、...、数据n、数据校验和,且静态数据主存储区位于低地址段,静态数据备份存储区位于高地址段。
4.根据权利要求3所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤3)具体为:当跳转至静态数据区首地址后,首先读取静态数据主存储区数据,然后进行CRC校验,如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址;如果静态数据主存储区中存储的数据校验和与CRC校验得到的校验和不一致,则加载静态数据备份存储区数据,然后进行CRC校验,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和一致,则跳转至动态数据区首地址,如果静态数据备份存储区中存储的数据校验和与CRC校验得到的校验和不一致,则同时给静态数据主存储区和静态数据备份存储区写入默认值,使数据结构完全一致。
5.根据权利要求4所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤3)中静态数据区需要更改静态数据时,首先将静态数据主存储区的数据复制并写入到静态数据备份存储区,接着读取数据校验和正确后,将更改后的静态数据写入静态数据主存储区。
6.根据权利要求5所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述当更改静态数据的过程中发生异常掉电时,则静态数据主存储区或者静态数据备份存储区必然有一个数据无效,当气液两相流量计重新上电后,检测静态数据主存储区和静态数据备份存储区的数据有效性,用有效的静态数据替换掉无效数据。
7.根据权利要求1所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤4)中动态数据区包括存储区类型、存储区大小、存储区校验和、动态数据块1、动态数据块2、...、动态数据块n,每个动态数据块的数据结构一致,并且所占空间大小相等。
8.根据权利要求7所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤4)中动态数据块包括动态数据、更新版本号以及动态数据的CRC数据校验和,更新版本号为定义一个动态数据块写入存储区的次数,一个更新版本号可以唯一标识一个动态数据块,通过查找最大值的更新版本号即可得知最近的写入动态数据块;版本号从0x00开始,最终版本号为0xffffffff,然后又回到0x00;每写入更新一次动态数据块,版本号在上次更新版本号上加1,0xffffffff的下一个版本号是0x00;动态数据块每次写入更新从上次更新位置下一个相邻动态数据块开始,不覆盖上次数据,当更新完动态数据块n后,下次更新数据写入位置为动态数据块1,依次循环使用,这样动态数据区能保存n组有效动态数据记录。
9.根据权利要求8所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述步骤4)具体为:获取动态数据区的存储区大小,从动态数据块1开始进行扫描,读取每个动态数据块的数据,并对该动态数据块内数据做CRC校验,然后与该动态数据块存储的CRC校验和进行比对是否正确,依次对多个动态数据块进行CRC校验,CRC校验和正确且动态数据块中更新版本号为最大值的动态数据块为最后一次正确存储的动态数据,取下一个动态数据块的地址作为当前待写入动态数据块地址,若是校验完所有动态数据块都不正确,则把第一个动态数据块作为待写入动态数据块地址。
10.根据权利要求1所述的一种气液两相流量计仪表数据存储方法,其特征在于:所述当更新动态数据块的过程中发生异常掉电,则在气液两相流量计重新上电后,重新开始执行步骤4),即可排除异常数据。
CN202010375449.1A 2020-05-07 2020-05-07 一种气液两相流量计仪表数据存储方法 Active CN111666177B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010375449.1A CN111666177B (zh) 2020-05-07 2020-05-07 一种气液两相流量计仪表数据存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010375449.1A CN111666177B (zh) 2020-05-07 2020-05-07 一种气液两相流量计仪表数据存储方法

Publications (2)

Publication Number Publication Date
CN111666177A true CN111666177A (zh) 2020-09-15
CN111666177B CN111666177B (zh) 2023-06-30

Family

ID=72382628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010375449.1A Active CN111666177B (zh) 2020-05-07 2020-05-07 一种气液两相流量计仪表数据存储方法

Country Status (1)

Country Link
CN (1) CN111666177B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965657A (zh) * 2021-02-04 2021-06-15 上海创远仪器技术股份有限公司 实现针对矢量网络分析仪器测量状态进行存储处理的方法、装置、处理器及其存储介质
CN117312043A (zh) * 2023-09-28 2023-12-29 杭州长川科技股份有限公司 校准参数读取、校准参数写入方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202611A (ja) * 1995-01-24 1996-08-09 Brother Ind Ltd メモリ管理方法及び装置
CN1661569A (zh) * 2004-02-24 2005-08-31 鸿富锦精密工业(深圳)有限公司 延长铁电存储器使用寿命的数据结构设计系统及方法
CN102207905A (zh) * 2010-03-30 2011-10-05 群联电子股份有限公司 系统恢复方法、存储媒体控制器及存储系统
CN102713941A (zh) * 2010-02-10 2012-10-03 华为终端有限公司 Sd卡的分区处理方法及装置、sd卡、终端设备
CN102866956A (zh) * 2012-09-14 2013-01-09 上海宝存信息科技有限公司 基于固态存储介质的数据实时跟踪存储系统及方法
US20160147651A1 (en) * 2014-11-21 2016-05-26 Sandisk Enterprise Ip Llc Data Integrity Enhancement to Protect Against Returning Old Versions of Data
CN105723462A (zh) * 2013-11-11 2016-06-29 高通股份有限公司 存储在nand存储器设备中的数据的防故障刷新
CN107506308A (zh) * 2017-06-30 2017-12-22 杭州旗捷科技有限公司 一种芯片改写设备的数据存储方法、电子设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202611A (ja) * 1995-01-24 1996-08-09 Brother Ind Ltd メモリ管理方法及び装置
CN1661569A (zh) * 2004-02-24 2005-08-31 鸿富锦精密工业(深圳)有限公司 延长铁电存储器使用寿命的数据结构设计系统及方法
CN102713941A (zh) * 2010-02-10 2012-10-03 华为终端有限公司 Sd卡的分区处理方法及装置、sd卡、终端设备
CN102207905A (zh) * 2010-03-30 2011-10-05 群联电子股份有限公司 系统恢复方法、存储媒体控制器及存储系统
CN102866956A (zh) * 2012-09-14 2013-01-09 上海宝存信息科技有限公司 基于固态存储介质的数据实时跟踪存储系统及方法
CN105723462A (zh) * 2013-11-11 2016-06-29 高通股份有限公司 存储在nand存储器设备中的数据的防故障刷新
US20160147651A1 (en) * 2014-11-21 2016-05-26 Sandisk Enterprise Ip Llc Data Integrity Enhancement to Protect Against Returning Old Versions of Data
CN107506308A (zh) * 2017-06-30 2017-12-22 杭州旗捷科技有限公司 一种芯片改写设备的数据存储方法、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965657A (zh) * 2021-02-04 2021-06-15 上海创远仪器技术股份有限公司 实现针对矢量网络分析仪器测量状态进行存储处理的方法、装置、处理器及其存储介质
CN117312043A (zh) * 2023-09-28 2023-12-29 杭州长川科技股份有限公司 校准参数读取、校准参数写入方法及装置

Also Published As

Publication number Publication date
CN111666177B (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN111666177B (zh) 一种气液两相流量计仪表数据存储方法
CN102096685B (zh) 分布式数据同步到数据仓库的方法及装置
US7707480B2 (en) System employing data verification operations of differing computational costs
US9292434B2 (en) Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device
US20080042871A1 (en) Meter Device
CN103744694A (zh) 基于Nand闪存的动态分区搜索装置及其方法
CN109155146A (zh) 一体式封装后修复装置
CN106407050A (zh) 一种数据存储方法
CN102024502B (zh) 闪存器件测试方法、装置及板卡和网络设备
CN1983265A (zh) 具有倒置层次结构的文件系统
WO2014147735A1 (ja) 記憶装置および記憶装置制御方法
US11355213B2 (en) Apparatus and method for verifying reliability of data read from memory device through clock modulation, and memory system including the same
CN102163155A (zh) 存储设备的升级方法及升级控制装置
TW201525687A (zh) 檔案系統的日誌子系統寫入方法、錯誤追蹤方法及處理器
CN110442473A (zh) 一种非易失性数据存储方法、装置、电子设备及介质
CN101488369B (zh) Bch码控制器接口电路
Balsamo et al. Exploring ARM mbed support for transient computing in energy harvesting IoT systems
US8788800B2 (en) OS processing method, system and non-transitory computer readable storage medium thereof
CN105117237A (zh) 基于Flash的程序分层存储、运行以及升级的方法和装置
Gong et al. DRAM scaling error evaluation model using various retention time
US8321626B2 (en) Management of configuration data using persistent memories requiring block-wise erase before rewriting
JP2022136962A (ja) ホスト装置とストレージ装置間の時間同期化方法及びそのシステム
CN101187879B (zh) 电子系统及其数据处理方法
CN116521210B (zh) 一种物联网水表固件差量升级的方法
CN105788647A (zh) 一种非易失存储器的纠错方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant