CN102622259B - 一种用于可视化编程的功能块函数建模方法 - Google Patents
一种用于可视化编程的功能块函数建模方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000000007 visual effect Effects 0.000 title claims abstract description 16
- 230000006870 function Effects 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 11
- 239000000284 extract Substances 0.000 claims abstract description 8
- 238000004458 analytical method Methods 0.000 description 3
- 125000003580 L-valyl group Chemical group [H]N([H])[C@]([H])(C(=O)[*])C(C([H])([H])[H])(C([H])([H])[H])[H] 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000010336 energy treatment Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
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所述的一种用于可视化编程的功能块函数建模方法,其特征在于:所述第三部分中,还提供了表达式预处理解析器,支持数学库函数、字符串库函数运算预处理,根据运算结果形成分支代码。
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)
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)
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)
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 |
-
2012
- 2012-02-17 CN CN201210036681.8A patent/CN102622259B/zh not_active Expired - Fee Related
Patent Citations (2)
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 |