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

文档序号:6359491阅读:314来源:国知局
专利名称:一种用于可视化编程的功能块函数建模方法
技术领域
本发明属于可视化编程领域,为应用人员提供可视化编辑符号的建模编辑方法,具体涉及功能块函数的建模处理。
背景技术
可视化编程是ー种面向对象的 图形化软件开发方法,为了实现应用功能,用各种的编程符号搭建程序模型和配置数据流,用原理图表示程序语言,并形成目标文件。进行可视化编程前,需制作一套功能函数库用于图形编程,为此需定义ー套功能块的建模方法和规则,方便应用人员掌握,并提供工具进行数据定义和图形编辑。已有的一些建模方法,有的參考IEC61131标准,采用结构化文本描述,形成代码解释执行,而嵌入式装置程序需要高效率的代码,并且代码空间有限,基于IEC61131的建模方法很难解决高效代码性能和有限代码空间的竞争矛盾。ABB的Hidraw工具采用和具体CPU结合的自定义输出流的建模方法,部分输出的是汇编代码,代码体受制于输出流和目标编译器的格式,跨平台移植方面有所欠缺。基于上述分析,本发明人针对现有建模方法的不足之处进行深入研究,本案由此产生。

发明内容
本发明的目的,在于提供一种用于可视化编程的功能块函数建模方法,其适用于可视化编程,将功能块函数分为若干段,用C语言编写其中的代码段,结合条件预处理器,使功能函数适合多种CPU运行,形成性能高效的目标代码,成员变量定义灵活、易于移植、直观易懂,方便用户开发维护。本发明为解决以上技术问题,所采用的技术方案是一种用于可视化编程的功能块函数建模方法,包括如下三部分第一部分,将功能块函数的文本段定义为7个关键字段描述信息、包含的头文件内容、參数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;第二部分,分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形參,形成图形的输入点;当函数有返回值时,默认将其作为第I个输出点;解析成员变量定义语句,形成输出变量表并输出;第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。上述第二部分中,还解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的形參和变量声明语句,形成输入、输出变量表,自动形成默认的图形数据。上述第三部分中,还提供了表达式预处理解析器,支持#if-#elseif-#else表达式运算和数学库函数、字符串库函数运算预处理,根据运算结果形成分支代码。
采用上述方案后,本发明具有以下有益效果(I)将功能块定义分为7个文本段,并采用C语言描述功能块的数据和行为,直观易于理解,提高了功能块函数的开发效率,基于C语言的函数体适用于多种CPU,功能块函数具有高度重用价值;(2)采用XML格式存储功能块信息,方便扩展。功能块可灵活定义成员变量和输出点,增强了可视化图形程序的数据交互能力;(3)开发的预处理解 析器,可支持常量和数学、字符库函数的运算,能有选择地输出代码,提高了代码运行效率。此外,本发明已经用于电カ系统交直流嵌入式装置的可视化编程,显著提高了开发效率,降低了开发成本,取得较好经济效益。
具体实施例方式以下将对本发明的技术方案进行详细说明。本发明提供一种用于可视化编程的功能块函数建模方法,包括以下三部分内容第一部分,对功能块函数的文本段进行定义;为了提高编辑效率,提供功能块文本定义编辑框,自动列出7个关键字段,分别是描述信息、包含的头文件内容、參数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义。通过将功能块属性和代码分为七部分定义,代码相关的内容采用C语言描述,格式灵活,能跨平台运行。在列出7个关键字段后,用户可在相应的关键字后面填写描述信息、參数信息和代码文本,以ー个滤波器函数为例,在编辑过程中,通过词法识别后对关键字进行加亮显
/Jn o滤波器函数的文本段定义如下//description
ー阶RCLINK LP滤波器;
"include
#mclude <math.h>
"parameter
'p—risetime type=i min=〇 default=〇.〇'
'p—outinit type=f default=〇.〇'
//variable
float ret;float pow2_fact;
//new
pow2_fact = 1.0/powf(2,p risetime);
//init
ret = p—outinit;
"func
void Rcfilt(float sample—in, float const time)
{
ret = ret + (sample—in — ret) * const—time * pow2_fact;
}在代码定义中,支持条件预编译语句,能处理分析四则运算和C库函数,増加了条件预编译的处理范围,选择性输出分支代码,节省代码空间并提高了运行效率;支持如下功能I)解析#if-#endif、#if-#else-#endif> #if-#elif-#else-#endif 条件编译语句;
2)#if的条件判断语句可以是常量表达式和标准的C库函数相关的表达式;3)支持运算符+、_、*、/、%、<、>、< =、> =、= =、! =、++、一、一元-、一元
+、&&、11、&、I、 、、0 ;第二部分,分析文本段,识别相应内容,形成变量表和默认图形,并用XML格式存储;分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形參,形成图形的输入点;当函数有返回值时,默认将其作为第I个输出点;解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的形參和变量声明语句,形成输入、输出变量表,自动形成默认的图形数据。通过定义成员变量段,可灵活定义扩展输出变量,并且这些成员变量具有完整的声明周期,本周期任务运行后,能够存储,给下一周期任务运算使用;在分析文本段内容并形成功能块函数图形时,通过词法分析,可以自动识别出变量名和变量类型,形成候选输出列表供用户选择,从而实现功能函数输出点的灵活定制。功能块的建模信息包括描述信息、输入变量、输出变量、參数、include信息、变量声明语句、构造代码、初始化代码和函数体代码。采用如下格式定义存储结构
<FuncBlock Name="">
<descripti〇n/>
<include/>
<interface/>
<variable/>
<new />
<init/>
<func/>
<graphic/>
</FuncBlock>第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码;具体来说,引入并扩充条件预编译语句,定义#if、#elif、#else、#endif关键字;条件语句包含參数设置值的加减乘除四则运算,并扩充支持C库函数;开发了 C预处理解析器,能计算含C库函数的表达式。标准预处理器的#if语句只支持常量运算,不支持C库函数。本发明开发的预处理器扩展了功能,支持strcmp、atoi、atol、abs、cos、sin等29个C库函数,避免了采用if-else语句在运行过程中进行条件判断,有效的提高了自动生成代码的执行效率,并节省了代码空间。在功能块函数建模过程中,功能块的变量定义、在构造过程中运行的代码、初始化代码、函数实体都通过C语言描述,可读性强,直观简单,易于理解。基于C语言的函数适用于不同CPU的编译器和运行环境,具有较好的通用性。例如某个功能块在初始化阶段运行的代码,是根据时间单位的设置情況,决定变量的初始值。其示例如下
#if( strcmp(p _time _unit,"USEC") == 0 )
{
time—intel = (int)p—time—val / 10;
}
#elif ( strcmp(p—time—unit,nMSECn) == 0 )
{
time—intel = (int)p—time—val * 10 0;
}当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语句动态判断,減少了代码量,并提高了运行效率。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
权利要求
1.一种用于可视化编程的功能块函数建模方法,其特征在于包括如下三部分第一部分,将功能块函数的文本段定义为7个关键字段描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;第二部分,分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第I个输出点;解析成员变量定义语句,形成输出变量表并输出;第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。
2.如权利要求I所述的一种用于可视化编程的功能块函数建模方法,其特征在于所述第二部分中,还解析成员变量定义语句,形成输出变量表并输出为XML格式存储,并分析函数的形参和变量声明语句,形成输入、输出变量表,自动形成默认的图形数据。
3.如权利要求I所述的一种用于可视化编程的功能块函数建模方法,其特征在于所述第三部分中,还提供了表达式预处理解析器,支持#if-#elseif-#else表达式运算和数学库函数、字符串库函数运算预处理,根据运算结果形成分支代码。
全文摘要
本发明公开一种用于可视化编程的功能块函数建模方法,第一部分,将功能块函数的文本段定义为7个关键字段描述信息、包含的头文件内容、参数信息、成员变量、构造代码段、初始化代码段和函数体代码段,其中,头文件包含信息和变量定义;第二部分,分析功能块定义文本,提取出关键字对应的分段内容;提取函数的输入形参,形成图形的输入点;当函数有返回值时,默认将其作为第1个输出点;解析成员变量定义语句,形成输出变量表并输出;第三部分,在代码生成阶段处理扩充的条件编译语句,输出条件对应的分支代码。此方法成员变量定义灵活、易于移植、直观易懂,方便用户开发维护。
文档编号G06F9/45GK102622259SQ20121003668
公开日2012年8月1日 申请日期2012年2月17日 优先权日2012年2月17日
发明者冯亚东, 刘克金, 周强, 张磊, 徐东方, 王国栋, 邱大为, 陈宏君 申请人:南京南瑞继保工程技术有限公司, 南京南瑞继保电气有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1