CN102622259B - 一种用于可视化编程的功能块函数建模方法 - Google Patents

一种用于可视化编程的功能块函数建模方法 Download PDF

Info

Publication number
CN102622259B
CN102622259B CN201210036681.8A CN201210036681A CN102622259B CN 102622259 B CN102622259 B CN 102622259B CN 201210036681 A CN201210036681 A CN 201210036681A CN 102622259 B CN102622259 B CN 102622259B
Authority
CN
China
Prior art keywords
function
variable
code
definition
functional block
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.)
Expired - Fee Related
Application number
CN201210036681.8A
Other languages
English (en)
Other versions
CN102622259A (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.)
NR Electric Co Ltd
NR Engineering Co Ltd
Original Assignee
NR Electric Co Ltd
NR Engineering 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 NR Electric Co Ltd, NR Engineering Co Ltd filed Critical NR Electric Co Ltd
Priority to CN201210036681.8A priority Critical patent/CN102622259B/zh
Publication of CN102622259A publication Critical patent/CN102622259A/zh
Application granted granted Critical
Publication of CN102622259B publication Critical patent/CN102622259B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种用于可视化编程的功能块函数建模方法,第一部分,将功能块函数的文本段定义为7个关键字段:描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;第二部分,分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第1个输出点;解析成员变量定义语句,形成输出变量表并输出;第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。此方法成员变量定义灵活、易于移植、直观易懂,方便用户开发维护。

Description

一种用于可视化编程的功能块函数建模方法
技术领域
本发明属于可视化编程领域,为应用人员提供可视化编辑符号的建模编辑方法,具体涉及功能块函数的建模处理。
背景技术
可视化编程是一种面向对象的图形化软件开发方法,为了实现应用功能,用各种的编程符号搭建程序模型和配置数据流,用原理图表示程序语言,并形成目标文件。进行可视化编程前,需制作一套功能函数库用于图形编程,为此需定义一套功能块的建模方法和规则,方便应用人员掌握,并提供工具进行数据定义和图形编辑。已有的一些建模方法,有的参考IEC61131标准,采用结构化文本描述,形成代码解释执行,而嵌入式装置程序需要高效率的代码,并且代码空间有限,基于IEC61131的建模方法很难解决高效代码性能和有限代码空间的竞争矛盾。ABB的Hidraw工具采用和具体CPU结合的自定义输出流的建模方法,部分输出的是汇编代码,代码体受制于输出流和目标编译器的格式,跨平台移植方面有所欠缺。
基于上述分析,本发明人针对现有建模方法的不足之处进行深入研究,本案由此产生。
发明内容
本发明的目的,在于提供一种用于可视化编程的功能块函数建模方法,其适用于可视化编程,将功能块函数分为若干段,用C语言编写其中的代码段,结合条件预处理器,使功能函数适合多种CPU运行,形成性能高效的目标代码,成员变量定义灵活、易于移植、直观易懂,方便用户开发维护。
本发明为解决以上技术问题,所采用的技术方案是:
一种用于可视化编程的功能块函数建模方法,包括如下三部分:
第一部分,将功能块函数的文本段定义为7个关键字段:描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;
第二部分,分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第1个输出点;解析成员变量定义语句,形成输出变量表并输出;
第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。
上述第二部分中,还解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的形参和变量声明语句,形成输入、输出变量表,自动形成默认的图形数据。
上述第三部分中,还提供了表达式预处理解析器,支持#if-#elseif-#else表达式运算和数学库函数、字符串库函数运算预处理,根据运算结果形成分支代码。
采用上述方案后,本发明具有以下有益效果:
(1)将功能块定义分为7个文本段,并采用C语言描述功能块的数据和行为,直观易于理解,提高了功能块函数的开发效率,基于C语言的函数体适用于多种CPU,功能块函数具有高度重用价值;
(2)采用XML格式存储功能块信息,方便扩展。功能块可灵活定义成员变量和输出点,增强了可视化图形程序的数据交互能力;
(3)开发的预处理解析器,可支持常量和数学、字符库函数的运算,能有选择地输出代码,提高了代码运行效率。
此外,本发明已经用于电力系统交直流嵌入式装置的可视化编程,显著提高了开发效率,降低了开发成本,取得较好经济效益。
具体实施方式
以下将对本发明的技术方案进行详细说明。
本发明提供一种用于可视化编程的功能块函数建模方法,包括以下三部分内容:
第一部分,对功能块函数的文本段进行定义;
为了提高编辑效率,提供功能块文本定义编辑框,自动列出7个关键字段,分别是:描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义。通过将功能块属性和代码分为七部分定义,代码相关的内容采用C语言描述,格式灵活,能跨平台运行。
在列出7个关键字段后,用户可在相应的关键字后面填写描述信息、参数信息和代码文本,以一个滤波器函数为例,在编辑过程中,通过词法识别后对关键字进行加亮显示。
滤波器函数的文本段定义如下:
在代码定义中,支持条件预编译语句,能处理分析四则运算和C库函数,增加了条件预编译的处理范围,选择性输出分支代码,节省代码空间并提高了运行效率;
支持如下功能:
1)解析#if-#endif、#if-#else-#endif、#if-#elif-#else-#endif条件编译语句;
2)#if的条件判断语句可以是常量表达式和标准的C库函数相关的表达式;
3)支持运算符:+、-、*、/、%、<、>、<=、>=、==、!=、++、一、一元-、一元+、&&、||、&、|、~、^、();
第二部分,分析文本段,识别相应内容,形成变量表和默认图形,并用XML格式存储;
分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第1个输出点;解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的形参和变量声明语句,形成输入、输出变量表,自动形成默认的图形数据。
通过定义成员变量段,可灵活定义扩展输出变量,并且这些成员变量具有完整的声明周期,本周期任务运行后,能够存储,给下一周期任务运算使用;在分析文本段内容并形成功能块函数图形时,通过词法分析,可以自动识别出变量名和变量类型,形成候选输出列表供用户选择,从而实现功能函数输出点的灵活定制。
功能块的建模信息包括描述信息、输入变量、输出变量、参数、include信息、变量声明语句、构造代码、初始化代码和函数体代码。
采用如下格式定义存储结构:
第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码;
具体来说,引入并扩充条件预编译语句,定义#if、#elif、#else、#endif关键字;条件语句包含参数设置值的加减乘除四则运算,并扩充支持C库函数;开发了C预处理解析器,能计算含C库函数的表达式。
标准预处理器的#if语句只支持常量运算,不支持C库函数。本发明开发的预处理器扩展了功能,支持strcmp、atoi、atol、abs、cos、sin等29个C库函数,避免了采用if-else语句在运行过程中进行条件判断,有效的提高了自动生成代码的执行效率,并节省了代码空间。
在功能块函数建模过程中,功能块的变量定义、在构造过程中运行的代码、初始化代码、函数实体都通过C语言描述,可读性强,直观简单,易于理解。基于C语言的函数适用于不同CPU的编译器和运行环境,具有较好的通用性。
例如某个功能块在初始化阶段运行的代码,是根据时间单位的设置情况,决定变量的初始值。其示例如下:
当p_time_unit的设置值为USEC时,只形成如下代码:
time_intel=(Uint32)p_time_val/10;
当p_time_unit的设置值为MSEC时,只形成如下代码:
time_intel=(Uint32)p_time_val*100;
通过解析计算条件表达式,判断条件为真的分支,输出该分支的代码,由于增加支持解析C库函数,扩展了#if语句的功能,避免了运行过程中通过if-else语句动态判断,减少了代码量,并提高了运行效率。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (2)

1.一种用于可视化编程的功能块函数建模方法,其特征在于包括如下三部分:
第一部分,将功能块函数的文本段定义为7个关键字段:描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;
第二部分,分析功能块函数的文本段,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第1个输出点;解析成员变量定义语句,形成输出变量表并输出;
所述第二部分中,还解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的输入形参和变量定义语句,形成输入、输出变量表,自动形成默认的图形数据;
第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。
2.如权利要求1所述的一种用于可视化编程的功能块函数建模方法,其特征在于:所述第三部分中,还提供了表达式预处理解析器,支持数学库函数、字符串库函数运算预处理,根据运算结果形成分支代码。
CN201210036681.8A 2012-02-17 2012-02-17 一种用于可视化编程的功能块函数建模方法 Expired - Fee Related CN102622259B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210036681.8A CN102622259B (zh) 2012-02-17 2012-02-17 一种用于可视化编程的功能块函数建模方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210036681.8A CN102622259B (zh) 2012-02-17 2012-02-17 一种用于可视化编程的功能块函数建模方法

Publications (2)

Publication Number Publication Date
CN102622259A CN102622259A (zh) 2012-08-01
CN102622259B true CN102622259B (zh) 2015-08-12

Family

ID=46562189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210036681.8A Expired - Fee Related CN102622259B (zh) 2012-02-17 2012-02-17 一种用于可视化编程的功能块函数建模方法

Country Status (1)

Country Link
CN (1) CN102622259B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102879303B (zh) * 2012-09-17 2014-09-24 中国石油天然气股份有限公司 孔隙介质内油气组分扩散性能实验装置及方法
CN103870262B (zh) * 2012-12-14 2017-06-06 北汽福田汽车股份有限公司 一种基于shell脚本的变量自动生成方法及装置
CN103823666B (zh) * 2013-11-05 2017-02-01 国电南瑞科技股份有限公司 一种智能变电站设备可视化编程方法
CN103838937B (zh) * 2014-03-27 2017-01-04 北京国电通网络技术有限公司 一种能耗仿真建模系统
CN104461619B (zh) * 2014-11-26 2017-10-27 卡斯柯信号有限公司 一种嵌入式软件功能可配置方法
CN106200541B (zh) * 2015-05-08 2020-04-14 杭州电子科技大学 一种将功能块图转换为aov结构的方法
CN104866319B (zh) * 2015-06-04 2018-05-01 南京国电南自城乡电网自动化工程有限公司 基于邻接矩阵的逻辑图执行顺序和反馈解耦的方法
CN106250155B (zh) * 2016-08-02 2019-05-24 快创科技(大连)有限公司 具有记忆功能和检测判断功能的可视化编程系统
CN106251018A (zh) * 2016-08-02 2016-12-21 大连文森特软件科技有限公司 一种基于基尼系数分配规则的电网可视化编程系统
CN107491478A (zh) * 2017-07-03 2017-12-19 广东南方数码科技股份有限公司 基于直观流程图的数据处理方法、电子设备及存储介质
CN109976747B (zh) * 2019-02-01 2022-05-13 杭州电子科技大学 一种模块级代码结构的可视化开发实现系统
CN109976750A (zh) * 2019-03-28 2019-07-05 深圳市创联时代科技有限公司 一种基于嵌入式开发系统的组件源码配置和组件裁剪方法
CN113157265A (zh) * 2021-03-12 2021-07-23 杭州未名信科科技有限公司 一种用于可视化编程的数据处理方法及装置、介质、设备
CN112965712A (zh) * 2021-03-15 2021-06-15 杭州未名信科科技有限公司 用于可视化编程的图形块的构建方法及装置、介质、设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1763774A (zh) * 2005-11-11 2006-04-26 杭州电子科技大学 一种流程工业可视化生产工艺流程描述的建模方法
CN101464799A (zh) * 2009-01-16 2009-06-24 天津大学 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250541B2 (en) * 2007-09-20 2012-08-21 The Boeing Company Reversible object code compiler for mathematical models

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1763774A (zh) * 2005-11-11 2006-04-26 杭州电子科技大学 一种流程工业可视化生产工艺流程描述的建模方法
CN101464799A (zh) * 2009-01-16 2009-06-24 天津大学 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法

Also Published As

Publication number Publication date
CN102622259A (zh) 2012-08-01

Similar Documents

Publication Publication Date Title
CN102622259B (zh) 一种用于可视化编程的功能块函数建模方法
Yue et al. The role of green innovation and tourism towards carbon neutrality in Thailand: Evidence from bootstrap ADRL approach
Juergens et al. Clonedetective-a workbench for clone detection research
US9043766B2 (en) Language translation using preprocessor macros
CN105446725B (zh) 用于模型驱动开发的方法和系统
CN102646035A (zh) 基于api接口和脚本定义相结合的可视化代码生成方法
CN104375942A (zh) 一种面向二进制的混合模糊测试方法
CN103677763A (zh) 一种图形化编程的源文件存储及解析方法
CN102289362A (zh) 分段符号执行装置及其工作方法
CN109828796A (zh) 一种基于微内核架构的插件调用方法及装置
KR20080106796A (ko) 자바 변환 가속 장치 및 방법
Fauth Beyond tool-specific machine descriptions
Su et al. Code synthesis for dataflow-based embedded software design
Dobesova Using the physics of notation to analyse modelbuilder diagrams
CN105843659B (zh) 一种嵌入式c编译器的实现方法及系统
CN105117227B (zh) 自动生成代码的方法及装置
CN103294470A (zh) 内嵌自然语言的编程语言系统
CN105653344A (zh) 一种图形化编程系统的编译器的方法
Balasubramanian et al. Designing RISC-V Instruction Set Extensions for Artificial Neural Networks: An LLVM Compiler-Driven Perspective
Chapman et al. Dragon: an open64-based interactive program analysis tool for large applications
JPWO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
CN113010177A (zh) 软件定义的仪器和信息采集方法、计算机、存储介质
JP2005284577A (ja) コンパイラ
Mallasi Towards minimizing space-time conflicts between site activities using simple generic algorithm the best execution strategy
CN101887500A (zh) 基于标签的程序控制流深度混淆方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150812