CN109857384A - 一种热工指标在线计算的编码方法 - Google Patents
一种热工指标在线计算的编码方法 Download PDFInfo
- Publication number
- CN109857384A CN109857384A CN201811387909.1A CN201811387909A CN109857384A CN 109857384 A CN109857384 A CN 109857384A CN 201811387909 A CN201811387909 A CN 201811387909A CN 109857384 A CN109857384 A CN 109857384A
- Authority
- CN
- China
- Prior art keywords
- function
- data table
- output data
- data
- index
- 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
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种热工指标在线计算的编码方法,包括:在Excel中建立输入数据表和输出数据表,在输出数据表中完成指标公式的输入和计算;建立自定义函数库,包括数据封装类、全局数组及其封装类等;逐条读取输出数据表中计算公式,将其中的单元格引用、函数调用等字符串转换成等价的C++代码串,最终形成C++代码文件。本发明可用于热工及相关领域在线监测系统开发,可有效降低人为错误,简化程序的更新维护工作,提高指标建模的便捷性和灵活性。
Description
技术领域
本发明属于热工系统在线监测技术领域,尤其涉及一种热工指标在线计算的编码方法。
背景技术
在热工及相关领域中,采集实时运行数据进行指标在线计算常用于监测设备和系统的性能,为此工程技术人员需编写热工指标在线计算流程。由于热工指标体系普遍存在耦合性,且层级关系复杂,技术人员需编写的程序编码极易出错,加之同类系统测点布置存在差异,程序修改、升级相当不便,代码可移植性较差。
现有的解决方案是采用模型组态方式来简化编程工作,但开发组态程序本身就存在较大难度,且在模型更新、参数调整、接口适配等方面也缺乏足够的灵活性。
发明内容
为解决上述技术问题,本发明提供一种热工指标在线计算的编码方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
本发明采用如下技术方案:
在一些可选的实施例中,提供一种热工指标在线计算的编码方法,包括:
建立输入数据表和输出数据表;
建立目标语言的函数库,以及两个全局数组及其封装类,所述函数库包括:数据封装类及系统函数;
逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件;
编译转换后的源代码文件,获得可执行程序。
在一些可选的实施例中,所述建立输入数据表和输出数据表的过程包括:在Excel中生成两张表格,分别为输入数据表及输出数据表;将指标计算数据分配至所述输入数据表,将指标计算的数据引用和计算公式分配至所述输出数据表;在Excel表格中进行指标计算,验证公式输入的正确性。
在一些可选的实施例中,在Excel中生成的两张表格中设置的字段序列包括:序号、点名称、点描述、数据类型、单位、值、上限值及下限值;所述输入数据表中的值字段分配的是热工过程典型数据或测试数据,所述输出数据表中的值字段分配的是以等号开始的指标计算公式或其它单元格引用;所述输入数据表及所述输出数据表中的上限值字段及下限值字段用于判断输入值或计算值是否有效;所述输入数据表及所述输出数据表中的数据类型字段用于确定存取数据时的数据形式。
在一些可选的实施例中,所述数据封装类对指标计算中的浮点类型和整数类型进行封装,用来完成数据的算术、逻辑、赋值运算、数据超限及非数判断。
在一些可选的实施例中,所述两个全局数组分别保存指标计算数据和指标计算结果,所述两个全局数组的封装类中设置操作数组元素的读数据函数、写数据函数及互斥锁。
在一些可选的实施例中,所述系统函数,用于对所述输出数据表中指标计算所涉及的自定义VBA宏函数、Excel表格函数、VBA系统函数进行目标语言形式的封装。
在一些可选的实施例中,所述目标语言为C++语言。
在一些可选的实施例中,所述逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件的过程包括:构建函数定义样式的子串,函数名按表索引、行列索引组合来选取;查找所述输出数据表中的计算公式中调用函数的子串,将函数名换成调用目标函数样式的子串,函数参数不变;查找所述输出数据表中的计算公式中单元格引用字符子串,并转换成所述读数据函数的形式;构建调用所述写数据函数样式的字符串,将公式计算结果写入相应的全局数组中;将转换后的代码写入代码文件,形成目标语言源代码文件,按C++类文件格式,代码文件包括一个头文件和一个源程序文件。
在一些可选的实施例中,所述逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件的过程还包括:构建接口函数,接口函数用于调用全部公式转换后的函数,调用一次所述接口函数,即对所有指标计算一次。
本发明所带来的有益效果:
1、将热工指标在线计算程序的维护、修改工作,归结到离线的Excel表格的维护和修改,简化了建模过程,提高了建模的便捷性和灵活性,同时也降低了出错概率;
2、热工指标在线计算程序的代码均由转换程序自动生成,不需要编程,且转换程序逻辑多是字符串替换,实现较容易,解决了代码维护问题;
3、热工指标在线计算的函数库可以独立开发,降低了程序模块的耦合性,有利于提高程序和系统的健壮性。
附图说明
图1是本发明一种热工指标在线计算的编码方法的流程示意图;
图2是本发明原理图;
图3是本发明指标计算公式转换到C++代码的流程。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。
如图1至3所示,在一些说明性的实施例中,提供一种热工指标在线计算的编码方法,包括:
101:在Excel中生成两张表格,命名为input和output,分别为输入数据表及输出数据表。输入数据表用于管理指标计算输入的数据;输出数据表用于管理指标计算公式和计算结果,以及与数据相关的属性。
在Excel中生成的两张表格中设置的字段序列包括:序号、点名称、点描述、数据类型、单位、值、上限值及下限值,即两张表格中设置8个字段形成表头,每张表格字段个数、顺序一致,以便于操作。
输入数据表中的值字段分配的是热工过程典型数据或测试数据,输出数据表中的值字段分配的是以等号开始的指标计算公式或其它单元格引用。
输入数据表及输出数据表中的上限值字段及下限值字段用于判断输入值或计算值是否有效,即在上限值字段和下限值字段存放同行值字段数据的有效范围。
输入数据表及输出数据表中的数据类型字段用于确定存取数据时的数据形式。
这些字段的意义均涉及本发明中的代码转换过程。
102:依据字段属性意义,将指标计算数据分配至输入数据表,将指标计算的数据引用和计算公式分配至输出数据表。
指标计算数据是指,指标建模所需的数据、热工过程典型数据或测试数据。
103:在Excel表格中进行指标计算,验证公式输入的正确性。
104:建立目标语言的函数库,以及可共享的两个全局数组及其封装类。
目标语言为C++语言。
步骤104具体包括:
S41:设置C++数据封装类。数据封装类对指标计算中的浮点类型和整数类型进行封装,因为热工指标计算主要是浮点数计算,涉及整数数据很少,为简单设计的复杂性,统一将数据类型分为浮点数和整数,浮点数统一存储为双精度浮点数,整数统一存储为32位有符号整数。数据封装类用来完成数据的算术、逻辑、赋值运算、数据超限及非数判断,数据封装类中通过C++运算符重载技术,可使得多类型数据存取形式统一、可混合运算,同时能够对数据超限、非数等情况进行判断。数据封装类的代码具有通用性,仅需要编写一次。
S42:建立全局数组A1和A2,分别保存指标计算数据和指标计算结果,即分别对应输入数据表和输出数据表的值字段。设置全局数组的目的是存放指标在线计算的输入数据和计算结果,即对应input和output中的值字段内容。
由于指标计算数据和计算结果都需要读写操作,而且存在多个线程并发操作,需要设置读写锁,为此设置一个C++类来对其进行封装。两个全局数组的封装类中设置操作数组元素的读数据函数、写数据函数及互斥锁,确保数据读写的均为原子操作。
S43:设置读数据函数F1和写数据函数F2,函数原型如下:
读数据函数F1:参数为数组索引、行索引,返回值为读到的数据;
写数据函数F2:参数为数组索引、行索引和待写入的数据,无返回值;
参数中,表索引用来标明读取的数组类别,行索引即为数组下标参数中。
S44:设置系统函数,用于对输出数据表中指标计算所涉及的自定义VBA宏函数、Excel表格函数、VBA系统函数进行目标语言形式的封装,这些函数相对独立,修改、补充也相对便捷。
105:逐条读取输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件。将输出数据表中的计算公式中的单元格引用字符串、调用函数字符串以及公式的计算结果转换成调用如步骤104中的库函数样式的字符串,最终,将计算公式逐条转换成一个完整的函数形式,并写入到代码文件中。
总体上,每一条公式转换成一个无参数、无返回值的C++函数,这些函数也是用C++类封装的,步骤105包括如下步骤:
S51:构建函数定义样式的子串,函数名按表索引、行列索引组合来选取,函数无参数、无返回值。
S52:查找输出数据表中的计算公式中调用函数的子串,将函数名换成调用步骤104中S44所述的C++函数样式的子串,即将函数名换成步骤104中的库函数,函数参数不变,如果函数与库函数同名则不置换,如果函数库中无此函数,则提示错误。
S53:查找输出数据表中的计算公式中单元格引用字符子串,并转换成步骤104中的S43中的所述读数据函数F1的形式。
S54:构建调用步骤104中的S43中的所述写数据函数F2样式的字符串,将公式计算结果写入相应的全局数组中
S55:构建接口函数,即在输出的代码中额外增加一个接口函数,接口函数用于调用全部公式转换后的函数,调用一次所述接口函数,即对所有指标计算一次。
S56:将转换后的代码写入代码文件,形成目标语言源代码文件,按C++类文件格式,代码文件包括一个头文件和一个源程序文件
106:编译转换后的源代码文件,获得可执行程序,即将步骤105的源代码文件与步骤104中的库函数联合编译即可获得可执行程序。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
Claims (9)
1.一种热工指标在线计算的编码方法,其特征在于,包括:
建立输入数据表和输出数据表;
建立目标语言的函数库,以及两个全局数组及其封装类,所述函数库包括:数据封装类及系统函数;
逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件;
编译转换后的源代码文件,获得可执行程序。
2.根据权利要求1所述的一种热工指标在线计算的编码方法,其特征在于,所述建立输入数据表和输出数据表的过程包括:
在Excel中生成两张表格,分别为输入数据表及输出数据表;
将指标计算数据分配至所述输入数据表,将指标计算的数据引用和计算公式分配至所述输出数据表;
在Excel表格中进行指标计算,验证公式输入的正确性。
3.根据权利要求2所述的一种热工指标在线计算的编码方法,其特征在于,在Excel中生成的两张表格中设置的字段序列包括:序号、点名称、点描述、数据类型、单位、值、上限值及下限值;
所述输入数据表中的值字段分配的是热工过程典型数据或测试数据,所述输出数据表中的值字段分配的是以等号开始的指标计算公式或其它单元格引用;
所述输入数据表及所述输出数据表中的上限值字段及下限值字段用于判断输入值或计算值是否有效;
所述输入数据表及所述输出数据表中的数据类型字段用于确定存取数据时的数据形式。
4.根据权利要求1或3所述的一种热工指标在线计算的编码方法,其特征在于,所述数据封装类对指标计算中的浮点类型和整数类型进行封装,用来完成数据的算术、逻辑、赋值运算、数据超限及非数判断。
5.根据权利要求4所述的一种热工指标在线计算的编码方法,其特征在于,所述两个全局数组分别保存指标计算数据和指标计算结果,所述两个全局数组的封装类中设置操作数组元素的读数据函数、写数据函数及互斥锁。
6.根据权利要求5所述的一种热工指标在线计算的编码方法,其特征在于,所述系统函数,用于对所述输出数据表中指标计算所涉及的自定义VBA宏函数、Excel表格函数、VBA系统函数进行目标语言形式的封装。
7.根据权利要求6所述的一种热工指标在线计算的编码方法,其特征在于,所述目标语言为C++语言。
8.根据权利要求7所述的一种热工指标在线计算的编码方法,其特征在于,所述逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件的过程包括:
构建函数定义样式的子串,函数名按表索引、行列索引组合来选取;
查找所述输出数据表中的计算公式中调用函数的子串,将函数名换成调用目标函数样式的子串,函数参数不变;
查找所述输出数据表中的计算公式中单元格引用字符子串,并转换成所述读数据函数的形式;
构建调用所述写数据函数样式的字符串,将公式计算结果写入相应的全局数组中;
将转换后的代码写入代码文件,形成目标语言源代码文件,按C++类文件格式,代码文件包括一个头文件和一个源程序文件。
9.根据权利要求8所述的一种热工指标在线计算的编码方法,其特征在于,所述逐条读取所述输出数据表中的计算公式,并转换成目标语言的函数,形成目标语言源代码文件的过程还包括:
构建接口函数,接口函数用于调用全部公式转换后的函数,调用一次所述接口函数,即对所有指标计算一次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811387909.1A CN109857384A (zh) | 2018-11-21 | 2018-11-21 | 一种热工指标在线计算的编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811387909.1A CN109857384A (zh) | 2018-11-21 | 2018-11-21 | 一种热工指标在线计算的编码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109857384A true CN109857384A (zh) | 2019-06-07 |
Family
ID=66890174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811387909.1A Pending CN109857384A (zh) | 2018-11-21 | 2018-11-21 | 一种热工指标在线计算的编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857384A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009223843A (ja) * | 2008-03-19 | 2009-10-01 | Nomura Research Institute Ltd | コンピュータプログラムのソースコード自動生成装置及び方法 |
US20120254724A1 (en) * | 2011-03-28 | 2012-10-04 | Kabushiki Kaisha Toshiba | Encoder compiler, computer readable medium, and communication device |
CN102939585A (zh) * | 2010-06-15 | 2013-02-20 | 微软公司 | 根据电子表格创建文本函数 |
CN104965788A (zh) * | 2015-07-03 | 2015-10-07 | 电子科技大学 | 一种代码静态检测方法 |
CN106874244A (zh) * | 2017-01-03 | 2017-06-20 | 宁波大红鹰学院 | 一种基于工作序列的文档自动生成模型的构建方法 |
-
2018
- 2018-11-21 CN CN201811387909.1A patent/CN109857384A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009223843A (ja) * | 2008-03-19 | 2009-10-01 | Nomura Research Institute Ltd | コンピュータプログラムのソースコード自動生成装置及び方法 |
CN102939585A (zh) * | 2010-06-15 | 2013-02-20 | 微软公司 | 根据电子表格创建文本函数 |
US20120254724A1 (en) * | 2011-03-28 | 2012-10-04 | Kabushiki Kaisha Toshiba | Encoder compiler, computer readable medium, and communication device |
CN104965788A (zh) * | 2015-07-03 | 2015-10-07 | 电子科技大学 | 一种代码静态检测方法 |
CN106874244A (zh) * | 2017-01-03 | 2017-06-20 | 宁波大红鹰学院 | 一种基于工作序列的文档自动生成模型的构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Garcés et al. | Managing model adaptation by precise detection of metamodel changes | |
Csertán et al. | VIATRA-visual automated transformations for formal verification and validation of UML models | |
US11836641B2 (en) | Machine learning-based prediction of metrics at early-stage circuit design | |
CN104391692B (zh) | 用于读写psd‑bpa数据文件的面向对象编程方法 | |
CN103262081A (zh) | 用于驱动从架构优化到物理设计闭合的设计收敛的基于集成数据模型的框架 | |
CN101894058B (zh) | 针对自动测试系统的测试覆盖性自动分析方法及其装置 | |
CN104360859A (zh) | 一种可视化的服务开发方法和系统 | |
CN102597961A (zh) | 用于调试存储器一致性模型的系统和方法 | |
CN104091092A (zh) | 大规模电力系统小干扰稳定性的特征值分析系统 | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
CN106775905A (zh) | 基于fpga的高级综合实现拟牛顿算法加速的方法 | |
US8108199B2 (en) | Phase events in a simulation model of a digital system | |
CN111143038B (zh) | Risc-v架构微处理器内核信息模型建模及生成方法 | |
CN109582294A (zh) | 一种内嵌式机器学习系统的软件体系结构设计方法 | |
KR101503620B1 (ko) | 지능형 아키텍처 생성기 | |
Cunha et al. | Extension and implementation of classsheet models | |
US11022634B1 (en) | Rail block context generation for block-level rail voltage drop analysis | |
Bunker et al. | Formal hardware specification languages for protocol compliance verification | |
CN111176658B (zh) | 基于元对象机制的AADL到Simulink模型自动转换方法 | |
CN109857384A (zh) | 一种热工指标在线计算的编码方法 | |
CN111125996A (zh) | 一种伪随机激励生成器的基于双向约束树指令集实现方法 | |
Margaria et al. | Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change: 6th International Symposium, ISoLA 2014, Imperial, Corfu, Greece, October 8-11, 2014, Proceedings, Part I | |
US11636244B1 (en) | Performance tuning of a hardware description language simulator | |
Safieddine et al. | Verification at RTL using separation of design concerns | |
CN101923466B (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 |
Application publication date: 20190607 |
|
RJ01 | Rejection of invention patent application after publication |