CN107480045A - 一种电能表软件的检错纠错与轨迹跟踪方法 - Google Patents
一种电能表软件的检错纠错与轨迹跟踪方法 Download PDFInfo
- Publication number
- CN107480045A CN107480045A CN201710541354.0A CN201710541354A CN107480045A CN 107480045 A CN107480045 A CN 107480045A CN 201710541354 A CN201710541354 A CN 201710541354A CN 107480045 A CN107480045 A CN 107480045A
- Authority
- CN
- China
- Prior art keywords
- data
- electric energy
- energy meter
- head
- software
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种电能表软件的检错纠错与轨迹跟踪方法,1、为数据结构体增加CS校验字节进行CS校验;2、为数据结构体增加固定值的首尾特征字字节进行首尾特征字校验;3、判断数据缓冲区是否溢出;4、判断数据堆栈空间是否小于预先设定的预警值;5、对操作函数的重要入口参数进行合法性检查,若不满足操作函数执行要求则输出非法信息;6、设计电能表软件运行轨迹输出函数,将电能表软件运行轨迹信息以及运行状态信息输出到电脑端,方便地查看当前软件运行状况。本发明将各类检错纠错机制集合起来,并将查找出的问题统一通过轨迹函数输出到电脑端,快速定位问题位置并反馈给开发人员进行修改,把电能表的软件问题降到最低。
Description
技术领域
本发明属于电能表技术领域,具体涉及一种电能表软件的检错纠错与轨迹跟踪方法。
背景技术
随着国家电网公司智能电能表系列标准的正式实施,电能表的功能明显增多,电能表软件代码量达到十万行之多,软件调试及问题排查工作非常艰巨。尽管有供应商内部进行的产品***测试和国家电网计量中心进行的全性能测试,但很多问题隐藏深、重现频率小,比如变量被异常改写、缓冲区或堆栈溢出、软件异常复位……等,无法确认所有的隐藏错误,加之国家电网禁止对现场运行的电能表软件升级,造成了部分错误无法在出厂前消除,影响了现场的使用。
发明内容
为解决上述技术问题,本发明提出了一种电能表软件的检错纠错与轨迹跟踪方法,在编码阶段规避软件问题,同时一旦发生错误能够很快对错误定位跟踪。
本发明所采用的技术方案如下:
一种电能表软件的检错纠错与轨迹跟踪方法,包括以下步骤:
步骤1、为电能表软件所定义的数据结构体增加CS校验字节,存储或读取变量时先根据CS校验字节进行CS校验;
进行CS校验的具体步骤如下:
1.1、写数据时,先计算得到数据结构体变量的CS校验字节,CS校验字节=数据结构体中除CS校验字节之外的其他变量的数据值之和,然后将计算得到的CS校验字节与数据一起写入存储区;
1.2、读数据时,执行以下步骤:
1.2.1、将数据结构体中除CS校验字节之外的其他变量字节的数据值进行累加得到CS1,然后将CS1与该数据结构体存储的CS校验字节进行比较,判定二者是否相等,若是则读取并使用数据、读数据结束,若否则转1.2.2;
1.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
1.2.3、读取备份区数据,并转步骤1.2.1。
通过对电能表软件中的数据结构体增加CS校验字节,可根据校验结果判断数据结构体的数据是否遭到破坏,确认数据被破坏后可以通过读取备份的结构体数据解决该问题,保证了数据的正确性,对于要保证电能表正确运行的电能表参数而言该方式至关重要。
步骤2、为电能表软件所定义的数据结构体增加固定值的首尾特征字字节,存储或读取变量时先根据首尾特征字字节进行首尾特征字校验;
进行首尾特征字校验的具体步骤如下:
2.1、写数据时执行以下步骤:
2.1.1、判断要写入的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则将数据和首尾特征字同时进行存储、写数据结束,若否则转下一步;
2.1.2、重置默认值并输出调试信息,存储默认数据;
2.2、读数据时执行以下步骤:
2.2.1、判断要读取的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则读取并使用数据、读数据结束,若否则转下一步;
2.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
2.2.3、读取备份区数据,并转步骤2.2.1。
通过对电能表软件中的数据结构体增加首尾特征字字节,可根据首尾特征字的值是否被改变判断结构体数据是否受到破坏,确认数据被破坏后可以通过读取备份结构体数据方式解决该问题,该方式对于电能表的正确运行同样至关重要。
步骤3、在使用电能表软件所定义的数据缓冲区之前先判断数据缓冲区是否溢出,若是则输出溢出信息,若否则正常使用数据缓冲区。
因数据缓冲区一旦溢出,电能表内对缓冲区的所有操作均为错误操作,该方式可以及时提醒开发人员进行缓冲区调整,停止电能表软件的错误运行。
步骤4、在使用电能表软件所定义的数据堆栈空间之前先判断数据堆栈空间是否小于预先设定的预警值,若是则输出数据堆栈空间报警信息,若否则正常使用数据堆栈空间。
因数据堆栈空间一旦超过预警值,就很有可能在运行过程发生数据堆栈溢出,造成电能表软件死机,该方式可以及时提醒开发人员注意数据堆栈空间的剩余大小,及时更改数据堆栈空间避免溢出。
步骤5、对电能表软件所定义的操作函数的重要入口参数进行合法性检查,若不满足操作函数执行要求则输出非法信息。
一旦不合法数据传入而无判断,就会造成函数的不正确执行或返回错误结果,该方式可确保函数入口参数的合法性,确保函数的正确执行。
步骤6、设计电能表软件运行轨迹输出函数,在软件的关键运行处执行运行轨迹输出函数,将电能表软件运行轨迹信息以及运行状态信息输出到电脑端,根据运行轨迹输出函数的输出信息方便地查看当前软件的运行状况。
通过查看电能表软件运行过程中的轨迹信息,可以掌控电能表软件的实时运行状况,可以查看电能表是否有错误的逻辑关系,可以快速定位发生错误的位置,该方式对于调试电能表软件、排查问题起到了非常重要的作用。
本发明产生的有益效果:目前电能表的软件中虽然也有各类检错纠错机制,但存在的普遍问题是各类机制均是独立运行,只能在软件调试过程中呈现问题,正常运行过程中一旦出现软件问题,就无法告知错误位置。本发明将各类检错纠错机制集合起来,并将各类机制查找出的问题统一通过轨迹运行函数输出到电脑端,进而快速定位问题位置并反馈给开发人员进行修改,把电能表的软件问题降到最低。
附图说明
图1、读数据时进行CS校验的流程图;
图2、读数据时进行首尾特征字校验的流程图;
图3、判断数据缓冲区是否溢出的流程图;
图4、判断数据堆栈空间是否小于预先设定的预警值的流程图。
具体实施方式
下面结合附图,具体说明本发明的实施方式。
一种电能表软件的检错纠错与轨迹跟踪方法,包括以下步骤:
步骤1、为电能表软件所定义的数据结构体增加CS校验字节,存储或读取变量时先根据CS校验字节进行CS校验;
为数据结构体增加CS校验字节的程序代码如下:
校验和判定函数CHECK_STRUCT_SUM(),校验和设置函数SET_STRUCT_SUM();
进行CS校验的具体步骤如下:
1.1、写数据时,先计算得到数据结构体变量的CS校验字节,CS校验字节=数据结构体中除CS校验字节之外的其他变量的数据值之和,然后将计算得到的CS校验字节与数据一起写入存储区;
1.2、读数据时,如图1所示,执行以下步骤:
1.2.1、将数据结构体中除CS校验字节之外的其他变量字节的数据值进行累加得到CS1,然后将CS1与该数据结构体存储的CS校验字节进行比较,判定二者是否相等,若是则读取并使用数据、读数据结束,若否则转1.2.2;
1.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
1.2.3、读取备份区数据,并转步骤1.2.1。
步骤2、为电能表软件所定义的数据结构体增加固定值(比如0x55)的首尾特征字字节,存储或读取变量时先根据首尾特征字字节进行首尾特征字校验;
为数据结构体增加固定值的首尾特征字字节的程序代码如下:
进行首尾特征字校验的具体步骤如下:
2.1、写数据时执行以下步骤:
2.1.1、判断要写入的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则将数据和首尾特征字同时进行存储、写数据结束,若否则转下一步;
2.1.2、重置默认值并输出调试信息,存储默认数据;
2.2、读数据时,如图2所示,执行以下步骤:
2.2.1、判断要读取的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则读取并使用数据、读数据结束,若否则转下一步;
2.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
2.2.3、读取备份区数据,并转步骤2.2.1。
步骤3、在使用电能表软件所定义的数据缓冲区之前先判断数据缓冲区是否溢出,若是则输出溢出信息,若否则正常使用数据缓冲区,具体步骤如图3所示。
步骤4、在使用电能表软件所定义的数据堆栈空间之前先判断数据堆栈空间是否小于预先设定的预警值,若是则输出数据堆栈空间报警信息,若否则正常使用数据堆栈空间,具体步骤如图4所示。
步骤5、对电能表软件所定义的操作函数的重要入口参数进行合法性检查,若不满足操作函数执行要求则输出非法信息。
步骤6、设计电能表软件运行轨迹输出函数,在软件的关键运行处执行运行轨迹输出函数,将电能表软件运行轨迹信息以及运行状态信息输出到电脑端,根据运行轨迹输出函数的输出信息方便地查看当前软件的运行状况。
定义运行轨迹输出函数的程序代码如下:
Debug_Print(char*format,...),输出函数所在行、当前变量值、上级调用函数等信息。
Claims (3)
1.一种电能表软件的检错纠错与轨迹跟踪方法,其特征在于,包括以下步骤:
步骤1、为电能表软件所定义的数据结构体增加CS校验字节,存储或读取变量时先根据CS校验字节进行CS校验;
步骤2、为电能表软件所定义的数据结构体增加固定值的首尾特征字字节,存储或读取变量时先根据首尾特征字字节进行首尾特征字校验;
步骤3、在使用电能表软件所定义的数据缓冲区之前先判断数据缓冲区是否溢出,若是则输出溢出信息,若否则正常使用数据缓冲区;
步骤4、在使用电能表软件所定义的数据堆栈空间之前先判断数据堆栈空间是否小于预先设定的预警值,若是则输出数据堆栈空间报警信息,若否则正常使用数据堆栈空间;
步骤5、对电能表软件所定义的操作函数的重要入口参数进行合法性检查,若不满足操作函数执行要求则输出非法信息;
步骤6、设计电能表软件运行轨迹输出函数,在软件的关键运行处执行运行轨迹输出函数,将电能表软件运行轨迹信息以及运行状态信息输出到电脑端,根据运行轨迹输出函数的输出信息方便地查看当前软件的运行状况。
2.根据权利要求1所述的一种电能表软件的检错纠错与轨迹跟踪方法,其特征在于,步骤1中所述的进行CS校验的具体步骤如下:
1.1、写数据时,先计算得到数据结构体变量的CS校验字节值,CS校验字节值=数据结构体中除CS校验字节之外的其他变量的数据值之和,然后将计算得到的CS校验字节值与数据一起写入存储区;
1.2、读数据时,执行以下步骤:
1.2.1、将数据结构体中除CS校验字节之外的其他变量字节的数据值进行累加得到CS1,然后将CS1与该数据结构体存储的CS校验字节进行比较,判定二者是否相等,若是则读取并使用数据、读数据结束,若否则转1.2.2;
1.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
1.2.3、读取备份区数据,并转步骤1.2.1。
3.根据权利要求1所述的一种电能表软件的检错纠错与轨迹跟踪方法,其特征在于,步骤2中所述的进行首尾特征字校验的具体步骤如下:
2.1、写数据时执行以下步骤:
2.1.1、判断要写入的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则将数据和首尾特征字同时进行存储、写数据结束,若否则转下一步;
2.1.2、重置默认值并输出调试信息,存储默认数据;
2.2、读数据时执行以下步骤:
2.2.1、判断要读取的变量的首尾特征字与数据结构体中预先设定的固定值的首尾特征字是否一致,若是则读取并使用数据、读数据结束,若否则转2.2.2;
2.2.2、判断备份区的数据是否均读完,若是则重置默认值并输出调试信息、读数据结束,若否则转下一步;
2.2.3、读取备份区数据,并转步骤2.2.1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710541354.0A CN107480045A (zh) | 2017-07-05 | 2017-07-05 | 一种电能表软件的检错纠错与轨迹跟踪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710541354.0A CN107480045A (zh) | 2017-07-05 | 2017-07-05 | 一种电能表软件的检错纠错与轨迹跟踪方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107480045A true CN107480045A (zh) | 2017-12-15 |
Family
ID=60596390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710541354.0A Pending CN107480045A (zh) | 2017-07-05 | 2017-07-05 | 一种电能表软件的检错纠错与轨迹跟踪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107480045A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683861A (zh) * | 2018-12-10 | 2019-04-26 | 积成电子股份有限公司 | 一种电能表的轻型协作式操作***及其实现方法 |
CN110674050A (zh) * | 2019-10-08 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 内存越界检测方法、装置、电子设备及计算机存储介质 |
CN112614331A (zh) * | 2020-12-14 | 2021-04-06 | 杭州海兴电力科技股份有限公司 | 抄读电能表事件的方法与电能表抄读事件*** |
CN115080648A (zh) * | 2022-06-27 | 2022-09-20 | 厦门市美亚柏科信息股份有限公司 | 一种用于海图机轨迹数据的获取方法和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877793A (zh) * | 2009-06-01 | 2010-11-03 | 杭州海康威视软件有限公司 | 数据传输方法、检错方法、***和装置 |
CN102937944A (zh) * | 2012-10-16 | 2013-02-20 | 北京交控科技有限公司 | 一种基于Arcnet串口服务器 |
CN103607258A (zh) * | 2013-11-18 | 2014-02-26 | 深圳市道通科技有限公司 | 汽车电脑诊断设备中主从设备的通信方法、装置及*** |
CN106126367A (zh) * | 2016-06-28 | 2016-11-16 | 湖北锐世数字医学影像科技有限公司 | 一种文件的自校验方法及*** |
-
2017
- 2017-07-05 CN CN201710541354.0A patent/CN107480045A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877793A (zh) * | 2009-06-01 | 2010-11-03 | 杭州海康威视软件有限公司 | 数据传输方法、检错方法、***和装置 |
CN102937944A (zh) * | 2012-10-16 | 2013-02-20 | 北京交控科技有限公司 | 一种基于Arcnet串口服务器 |
CN103607258A (zh) * | 2013-11-18 | 2014-02-26 | 深圳市道通科技有限公司 | 汽车电脑诊断设备中主从设备的通信方法、装置及*** |
CN106126367A (zh) * | 2016-06-28 | 2016-11-16 | 湖北锐世数字医学影像科技有限公司 | 一种文件的自校验方法及*** |
Non-Patent Citations (3)
Title |
---|
吴朔媚 等: "《计算机网络安全技术研究》", 31 March 2017, 东北师范大学出版社 * |
张勇 等: "《嵌入式实时操作***μC/OS-Ⅲ应用技术——基于ARM Cortex-M3 LPC1788》", 30 April 2013, 北京航空航天大学出版社 * |
陈敏: "《OPNET物联网仿真》", 30 April 2015, 华中科技大学出版社 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683861A (zh) * | 2018-12-10 | 2019-04-26 | 积成电子股份有限公司 | 一种电能表的轻型协作式操作***及其实现方法 |
CN110674050A (zh) * | 2019-10-08 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 内存越界检测方法、装置、电子设备及计算机存储介质 |
CN110674050B (zh) * | 2019-10-08 | 2022-04-19 | 腾讯科技(深圳)有限公司 | 内存越界检测方法、装置、电子设备及计算机存储介质 |
CN112614331A (zh) * | 2020-12-14 | 2021-04-06 | 杭州海兴电力科技股份有限公司 | 抄读电能表事件的方法与电能表抄读事件*** |
CN115080648A (zh) * | 2022-06-27 | 2022-09-20 | 厦门市美亚柏科信息股份有限公司 | 一种用于海图机轨迹数据的获取方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480045A (zh) | 一种电能表软件的检错纠错与轨迹跟踪方法 | |
CN108710551B (zh) | 基于sparc处理器单粒子翻转故障注入的测试方法及*** | |
US7320114B1 (en) | Method and system for verification of soft error handling with application to CMT processors | |
CN100419695C (zh) | 将进程删除错误引向应用程序 | |
EP2770507B1 (en) | Memory circuits, method for accessing a memory and method for repairing a memory | |
CN102301427A (zh) | 分析来自具有有限耐久性和/或保持性的存储器设备的监视数据信息 | |
CN106776095A (zh) | Ssd固态硬盘数据可靠性智能检测方法及检测装置 | |
CN108446189A (zh) | 一种星载嵌入式软件容错启动***及方法 | |
CN101334754A (zh) | 基于故障注入的嵌入式***测评方法 | |
CN103984630A (zh) | 一种基于at697处理器的单粒子翻转故障处理方法 | |
CN105320579B (zh) | 面向sparc v8处理器的自修复双冗余流水线及容错方法 | |
WO2022037022A1 (zh) | 一种在线并行处理的软错误实时检错与恢复方法及*** | |
CN103778030A (zh) | 日志子***写入方法、错误追踪方法及处理器 | |
CN109933340A (zh) | 一种航天器eeprom基于页模式的在轨写入和自检方法 | |
CN110489285B (zh) | 一种固态硬盘的异常分支测试方法和*** | |
CN100501686C (zh) | 在差错处理程序执行期间处理差错的方法、处理器及*** | |
US6539338B1 (en) | Self-diagnostic testing of a network interface adapter | |
CN113342571A (zh) | 一种应用于嵌入式***的eeprom数据掉电不丢失方法 | |
CN106815153A (zh) | 一种安全存储方法、装置和*** | |
CN104597807A (zh) | 一种星载综合电子cpu翻转加固***及方法 | |
CN114974388B (zh) | 一种高速ddr存储器单粒子错误评估***及方法 | |
Lee et al. | Evaluation of error detection coverage and fault-tolerance of digital plant protection system in nuclear power plants | |
CN109885342A (zh) | 一种执法记录仪的***程序修复方法 | |
CN112542208B (zh) | Sd nand测试方法、装置、存储介质和终端 | |
CN203882621U (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171215 |