一种顺序功能图的可视化实现方法

文档序号:6364924阅读:604来源:国知局
专利名称:一种顺序功能图的可视化实现方法
技术领域
本发明属于可视化编程领域,具体涉及顺序功能图的可视化实现方法。
背景技术
顺序功能图(SFC)是指用于设计实现某个顺序控制功能或者状态转换功能的图形程序,他将整个控制流程分割为一系列的控制步,并描述出成效的执行顺序和控制条件。 顺序功能图的核心组成部分为I) 一个状态转换变量,根据状态变量的值运行相应执行步页面功能;2)状态转换控制的规则,通过设计顺序执行控制页面来实现。顺序功能图的原理如图I所示,相关的术语有状态、事件、转换、动作,下面分别介绍。状态(State):对象在其生命周期中的一种状况,处于某个特定状态中的对象会满足某些条件,执行某些动作或者等待某些事件。事件(Event):在时间和空间上占有一定的位置,并且对于状态而言是有意义的事情,事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态,对于顺序功能图元件而言,事件通常指其它元件的输出变量值发生变位。转换(Transition):是两个状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并将在满足某个特定条件下进入第二个状态。动作(Action):指状态机可以执行一些原子操作,在顺序功能图中是运行一个执行步函数。顺序功能图在工业控制、电力系统领域都有应用,然而已有的顺序功能图实现方法采用I个switch-case的代码生成模式,需要在两个运行周期内完成状态切换和执行功能,无法满足对响应速度要求很高的实时控制应用。因此,本发明人针对现有的顺序功能图实现方法进行研究改进,本案由此产生。

发明内容
本发明的目的是提供一种顺序功能图的可视化实现方法,通过页面类型分类和概念规则定义,清晰地组织可视化程序;通过双switch-case的代码生成模式,实现一个周期内完成状态切换和执行,提高顺序功能图的运行效率。为了达成上述目的,本发明的解决方案是一种顺序功能图的可视化实现方法,包括如下两部分第一部分,设计双switch-case顺序功能图的代码生成模式,第一个switch结构更新状态变量的值,第二个switch结构根据新的状态变量,运行相应的控制执行函数,在同一个运行周期内完成状态切换和动作执行;第二部分,调用顺序功能图代码生成工具,进行规则检查,输出代码。在上述第一部分前,还包括对顺序功能图的可视化页面类型进行定义,将页面类
3型分为三类顺序执行控制页面、执行步页面和功能图子页面,顺序执行控制页面是用于设计顺序控制或状态转换的页面,它通过符号块的前后连接关系实现状态规则转换;执行步页面由各种功能块组成计算或逻辑功能,代码生成时将该页面的功能封装成一个函数,供顺序执行控制函数调用;当执行步的页面功能比较复杂时,通过若干功能图子页面进行分解,然后在执行步页面连接子页面的输入输出,实现复杂程序的层次化分解。上述顺序执行控制页面中用于顺序执行控制的编程符号块包括起始符号块、执行步块、无条件转移块、IF转移条件块、单IF_ELSE块、双IF_ELSE块和SWITCH_CASE块;其中,起始符号块用于自动形成一个状态机变量,该变量作为功能图中的成员变量,初始化为O ;执行步块代表一个执行步页面,对应一个状态,点击后进入相应的功能图设计页面;无条件转移块表示根据上一状态,直接跳转到另外一个状态;IF转移条件块根据某个变量值来决定是否转移或转移到哪一个状态;单IF_ELSE块根据判断变量的值决定执行哪条分支 ’双IF_ELSE块有三个输出点,需要指定两个条件判断变量;SWITCH_CASE块需要用户设定case的分支数和每个分支的CASE值。本发明实现了一种顺序功能图的可视化建模方法,将页面分为顺序功能页面、执行步页面、功能图子页面,通过层次模型管理可视化程序,并以双switch-case的代码模式提闻了顺序功能图的运行效率。


下面结合附图对本发明的具体实施方式
作进一步详细的说明。
图I是顺序功能图的原理图2是顺序功能图的页面例图3是对应的等效状态机转换图4是执行步页面对应的可视化程序示例图5是顺序执行控制页面的可视化程序示例图6是各符号块的图形原型图。
具体实施方式
本发明提供一种顺序功能图的可视化实现方法,包括如下三个部分
第一部分,对顺序功能图的可视化页面类型进行定义,具体是将页面类型分为三类顺序执行控制页面、执行步页面和功能图子页面,配合图2所示,下面分别介绍。
首先,在图2中总共有3个if条件跳转块,则状态机有3个状态(O、I、2)。初始化
时状态值为O。当varO为true时,跳转到第I个状态,当varO为false时,跳转到第2个状态。当varl为true时跳转到第2个状态。当var2为true时跳转到第I个状态。当状态值为I时,运行runPagel,当状态值为2时,运行runPage2。图3表示了图2中顺序执行功能的状态机转换过程。顺序执行控制页面的规则定义如下I)将顺序执行控制页面的功能封装成的一个任务函数,在每个任务周期里执行此任务函数,该函数决定状态跳转的规则;2)该页面允许存在的符号有起始符号块、执行步块、转移条件块、连接线、输入块、输出块、和跨页面连接符号(指存在多页的情形);3)该页面的连接线表示执行顺序和状态切换跳转规则;4)该页面符号的输出连接点只能连接一条连接线,表示只跳转到一个状态,输入连接点可以连接多条连接线,表示可以由不同的其它状态转移到本状态;5)执行步的后继符号一般为转移块(条件转移和无条件转移),若存在多个执行步顺序串联在一起,则这些执行步视为一个状态;6)只能有一个起始符号块,并且至少有一个执行步和条件转移块;7)转移块的后继必须是执行步,IF块和无条件转移块必须有后继符号块。用于顺序执行控制的编程符号块包括起始符号块、执行步块、无条件转移块、IF 转移条件块、单IF_ELSE块、双IF_ELSE块和SWITCH_CASE块,分别介绍如下I)起始符号块在顺序执行控制页面中,起始符号块用于自动形成一个状态机变量,该变量作为功能图中的成员变量,初始化为O。其图形原型如图6(a)所示。2)执行步块代表一个执行步页面,对应一个状态,点击可以进入相应的功能图设计页面。执行步块表示运行该执行步页面的功能函数。其图形原型如图6(b)所示。3)无条件转移块表示根据上一状态,直接跳转到另外一个状态。其代码原型为dp- > state = new—state ;其图形原型如图6(c)所示。4) IF转移条件块根据某个变量值来决定是否转移或转移到哪一个状态。判断变量可以是程序设计页面中的输入变量、输出变量、成员变量。IF块需要指定判断变量名。其代码原型为if (dp- > var){dp- > state = statex ;}其图形原型如图6(d)所示。5)单IF_ELSE块根据判断变量的值决定执行哪条分支。单IF_ELSE对应的代码
原型为
if ( dp->var )
dp->state = statel;
else
dp->state = state2;
其图型原型如图6(e)所示。6)双IF_ELSE块有三个输出点,需要指定两个条件判断变量。其代码原型为
if ( dp->varI )
dp->state = statel;
else
{
if ( dp->var2 )
dp->state = state2;
else
dp->state = state3;其图形原型如图6(f)所示。7) SWITCH_CASE块需要用户设定case的分支数,和每个分支的CASE值。对应的
代码原型为switch ( dp->var)
case value—O:
dp->state = statex; break; case value—I:
dp->state = statey; break; default: break;
}其图形根据分支数动态生成如图6(g)所示。一个执行步页面内的计算逻辑符号组成一个执行函数,供顺序执行控制页面调用。当一个执行步页面功能复杂时,可以通过功能图子页面进行分解,在功能图子页面设计子模块,在父页面进行输入输出连线。其规则如下I)可以包含输入块、输出块、参数块、常量块、功能图子块、页面链接符号、连接线、 功能函数块等符号;2)该页面设计的功能相对独立、清晰,允许各功能图页面之间通过页面连接符号进行数据流交换;3)功能图子页面内不再包含功能图子块符号,只支持一层嵌套关系;第二部分,设计双switch-case顺序功能图的代码生成模式。定义状态机变量state,在第I个switch_case语句中,执行各个分支对应条件转移块,在条件转移块中根据跳转判断变量是否为true,设置状态机的状态值。在第2 个switch-case语句中,跳转到当前状态,执行对应的页面任务函数。顺序执行页面的双 switch-case的代码原型如下void sfcControlFunc(SFC* dp)
{
//状态切换
switch ( dp->state )
{
case O:
//执行O分支对应的条件转移块,进行状态切换 break ; case η:
//执行η分支对应的条件转移块,进行状态切换 break ; default :
dp->state =0; //重新复位 break ;
}
//执行动作
switch ( dp->state )
{
case O:
//运行状态O对应的执行步块 break; case η:
//运行状态η对应的执行步块 break; default: break;
}
}其中,第I个switch-case语句,根据当前状态机的值,决定运行哪个条件转移块逻辑语句,如果某个条件成立,则进入新的状态。在第2个switch-case语句中,根据新状态的值,决定运行对应的执行步函数,从而实现了在一个运行周期内实现状态切换和动作响应。在可视化编程工具中创建顺序功能图元件,并新建页面,可新建顺序执行控制页面和若干执行步页面、功能图子页面。在执行步页面中进行计算和逻辑组态,形成若干执行步页面的可视化程序,如图5所示。然后在顺序执行控制页面选择条件跳转符号和执行步, 搭建顺序功能状态跳转和执行逻辑,如图6所示。第三部分,调用顺序功能图代码生成工具,进行规则检查,输出代码。
权利要求
1.一种顺序功能图的可视化实现方法,其特征在于包括如下两部分第一部分,设计双switch-case顺序功能图的代码生成模式,第一个switch结构更新状态变量的值,第二个switch结构根据新的状态变量,运行相应的控制执行函数,在同一个运行周期内完成状态切换和动作执行;第二部分,调用顺序功能图代码生成工具,进行规则检查,输出代码。
2.如权利要求I所述的一种顺序功能图的可视化实现方法,其特征在于在所述第一部分前,还包括对顺序功能图的可视化页面类型进行定义,将页面类型分为三类顺序执行控制页面、执行步页面和功能图子页面,顺序执行控制页面是用于设计顺序控制或状态转换的页面,它通过符号块的前后连接关系实现状态规则转换;执行步页面由各种功能块组成计算或逻辑功能,代码生成时将该页面的功能封装成一个函数,供顺序执行控制函数调用;当执行步的页面功能比较复杂时,通过若干功能图子页面进行分解,然后在执行步页面连接子页面的输入输出,实现复杂程序的层次化分解。
3.如权利要求2所述的一种顺序功能图的可视化实现方法,其特征在于所述顺序执行控制页面中用于顺序执行控制的编程符号块包括起始符号块、执行步块、无条件转移块、 IF转移条件块、单IF_ELSE块、双IF_ELSE块和SWITCH_CASE块;其中,起始符号块用于自动形成一个状态机变量,该变量作为功能图中的成员变量,初始化为O ;执行步块代表一个执行步页面,对应一个状态,点击后进入相应的功能图设计页面;无条件转移块表示根据上一状态,直接跳转到另外一个状态;IF转移条件块根据某个变量值来决定是否转移或转移到哪一个状态;单IF_ELSE块根据判断变量的值决定执行哪条分支;双IF_ELSE块有三个输出点,需要指定两个条件判断变量;SWITCH_CASE块需要用户设定case的分支数和每个分支的CASE值。
全文摘要
本发明公开一种顺序功能图的可视化实现方法,包括如下两部分第一部分,设计双switch-case顺序功能图的代码生成模式,第一个switch结构更新状态变量的值,第二个switch结构根据新的状态变量,运行相应的控制执行函数,在同一个运行周期内完成状态切换和动作执行;第二部分,调用顺序功能图代码生成工具,进行规则检查,输出代码。此种方法通过页面类型分类和概念规则定义,清晰地组织可视化程序;通过双switch-case的代码生成模式,实现一个周期内完成状态切换和执行,提高顺序功能图的运行效率。
文档编号G06F9/44GK102609269SQ20121003691
公开日2012年7月25日 申请日期2012年2月17日 优先权日2012年2月17日
发明者冯亚东, 刘克金, 周强, 周磊, 李秋华, 熊蕙, 赵天恩, 陈宏君 申请人:南京南瑞继保工程技术有限公司, 南京南瑞继保电气有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1