一种基于XML的保护设备通用人机交互系统及方法与流程

文档序号:19942641发布日期:2020-02-14 23:22阅读:235来源:国知局
一种基于XML的保护设备通用人机交互系统及方法与流程

本发明属于电力二次设备设计领域,具体涉及一种基于xml的保护设备通用人机交互系统及方法。



背景技术:

在电力二次设备设计开发中,都存在人机交互过程。近年来随着智能电网的发展,不同电压等级的测量、保护设备要求逐渐标准化,同时对测量、保护装置展示和设置的信息要求越来越高。稳定、易于维护的人机交互系统对于提高二次设备的质量和整个电网的稳定运行有着较大的影响。

人机交互(hmi)处理流程在设备中通常会占用50%左右的代码开发量。传统的人机交互设计都是针对具体需求定制功能,采用的是将窗口数据结构和窗口调用关系定义在人机交互系统中,人机交互系统功能和界面程序耦合度很高,存在软件不具备通用性,每设计一款产品需要定制开发一套界面程序的问题。或者采用了配置文件,但是缺乏系统性,存在可读性和扩展性差的问题。这种产品设计方法,随着产品种类增多,界面维护工作越发困难。最终导致生成成本增加,生产效率低下。设计一种通用的、可灵活配置的人机交互系统,在电力二次设备开发中显得越来越重要。

国内虽有基于配置的界面研究,但多采用文本方式,没有统一格式规范。xml能方便有效地表示结构化数据,语法简练,易于阅读,它具有的层次化数据结构非常适用与描述hmi中各个组件的结构和包含关系。基于xml配置的界面显示在pc机上已经有了比较长足的发展,本发明结合xml特点,通过对保护和测控装置数据归类,抽象出若干显示控件模型。通过xml描述模型结构、菜单和显示窗口逻辑关系。实现hmi平台化,对于不同类型的保护装置,通过修改xml配置即可满足装置菜单和显示需求,极大程度较少代码开发调试工作量。



技术实现要素:

为解决现有技术中的不足,本发明提出一种基于xml的保护设备通用人机交互系统及方法,其中,一种基于xml的保护设备通用人机交互系统,包括:xml配置文件、模型解析器、逻辑解析器、事件驱动器、数据服务器和视图堆栈单元;

所述xml配置文件分别与模型解析器与逻辑解析器相连,所述逻辑解析器分别与事件驱动器、数据服务器及视图堆栈单元相连;

所述xml配置文件,包括:定义xml文件节点、xml文件节点实例化参数、xml文件节点层次关系和视图切换的逻辑关系;

所述xml文件节点,将一个界面控件定义为一个节点,一个节点包含多个属性;

所述属性,包括公共属性和私有属性;

所述公共属性,包括:属性编号和属性名称,其中,每个属性编号为人机交互系统中唯一,通过属性编号标志一个节点;

所述私有属性,根据不同保护设备的实际数据属性进行定义。

所述模型解析器,用来遍历xml配置文件所有xml文件节点,根据xml文件节点实例化参数,以xml文件节点为对象进行实例化,将实例化成功的模型实例保存到列表中;并且根据xml文件节点层次关系生成对应控件层次包含关系;

所述逻辑解析器,加载xml配置文件中的视图切换的逻辑关系,接收事件驱动器的信号和视图堆栈单元中当前视图状态,根据对应控件层次包含关系,从当实例化后模型中,生成请求信号,将该生成请求信号发送给数据服务器;

所述事件驱动器,接收显示屏上按键操作信号,将该按键操作信号转换成逻辑解析器能够识别的信号,并将该信号发送给逻辑解析器。

所述数据服务器,接收逻辑解析器发送的请求信号,获取该请求信号对应函数执行结果或者保存该请求信号对应数据,并且将数据执行结果给逻辑解析器;

所述数据服务器,建立请求信号和对应执行结果的函数映射关系。

所述视图堆栈单元,根据数据服务器返回给逻辑解析器的返回数据,得到视图切换和调用关系,根据该视图切换和调用关系,完成视图压栈和出栈操作,并记录视图层次信息。

所述压栈出栈操作,具体定义为:当逻辑解析器收到执行结果为退出信号时,退出当前视图并出栈,当逻辑解析器收到执行结果为视图切换信号时,新视图进行压栈操作;

所述xml文件节点实例化参数,包括:节点名称、属性编号,节点位置、节点大小、当前视图、属性名称;

所述xml文件节点层次关系,包括:window节点;

所述window节点包括:title子节点、view子节点及status子节点;

所述window节点及其子节点定义整个视图的显示界面;

所述view子节点定义主显示区;

所述title子节点定义标题栏;

所述status子节点定义显示状态数据;

每一个window节点必须定义view子节点,其它子节点为可选配置;

所述模型解析器实例化过程,具体为:模型解析器定义xml文件节点实例化参数对应的结构体,实例化过程就是读取xml文件节点名称和所有属性值,然后赋值给结构体。

所述xml文件节点,具有唯一指定的节点名称,不能重名。

一种基于xml的保护设备通用人机交互方法,步骤如下:

步骤1:基于xml的保护设备通用人机交互系统初始化:在模型解析器中,遍历xml配置文件所有xml文件节点,根据xml文件节点实例化参数,以xml文件节点为对象进行实例化,将实例化成功的模型实例保存到列表中;并且根据xml文件节点层次关系生成对应控件层次包含关系;

步骤2:当按键被触发后,事件驱动器接收按键操作信号,将该按键操作信号转换成逻辑解析器能够识别的信号,并将该信号发送给逻辑解析器;

步骤3:逻辑解析器,加载xml配置文件中的视图切换的逻辑关系,接收事件驱动器的信号和视图堆栈单元中当前视图状态,根据对应控件层次包含关系,从实例化后模型中,生成请求信号,并且该将该请求信号发送给数据服务器;

步骤4:数据服务器,接收逻辑解析器发送的请求信号,获取该请求信号对应函数执行结果或者保存该请求信号对应数据,并且将返回数据结果给逻辑解析器;

步骤5:逻辑解析器收到数据服务器返回数据,根据返回数据,找到数据显示视图,并显示在显示屏上,同时逻辑解析通知视图堆栈单元;

步骤6:视图堆栈单元,根据数据服务器返回给逻辑解析器的返回数据,得到视图切换和调用关系,根据该视图切换和调用关系,完成视图压栈和出栈操作并记录视图层次信息;

步骤7:若按键为返回键时,事件驱动器通知视图堆栈单元,删除最上层视图,并显示次顶层视图。

本申请所达到的有益效果:

本发明基于xml对电力二次保护设备界面常用控件进行抽象描述,使用xml描述xml配置文件节点的层次关系、视图跳转关系,支持节点名称定义;实现了菜单结构灵活配置,菜单结构与程序处理解耦,相互独立。多种型号设备可以使用同一版程序,降低程序维护难度、减少维护数量。修改一个问题,使用同一版软件设备只需要更新程序即可,不需要其他维护措施。

附图说明

图1为本发明实施例的一种基于xml的保护设备通用人机交互系统框图;

图2为本发明实施例的button文件节点定义示意图;

图3为本发明实施例的window层次关系;

图4为本发明实施例的对话框示例;

图5为本发明实施例的视图切换逻辑;

图6为本发明实施例的树状菜单;

图7为本发明实施例的显示分区。

具体实施方式

下面结合附图对本申请作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。

本发明提出一种基于xml的保护设备通用人机交互系统及方法,其中,一种基于xml的保护设备通用人机交互系统,如图1所示,包括:xml配置文件、模型解析器、逻辑解析器、事件驱动器、数据服务器和视图堆栈单元;

所述xml配置文件分别与模型解析器与逻辑解析器相连,所述逻辑解析器分别与事件驱动器、数据服务器及视图堆栈单元相连;

所述xml配置文件,包括:定义xml文件节点、xml文件节点实例化参数、xml文件节点层次关系和视图切换的逻辑关系;

所述xml文件节点,将一个界面控件定义为一个节点,一个节点包含多个属性;

所述属性,包括公共属性和私有属性;

所述公共属性,包括:属性编号和属性名称,其中,每个属性编号为人机交互系统中全局唯一,通过属性编号标志一个节点;

如图2所示,以button文件节点为例,如何对显示元素进行抽象是本方法的关键技术之一。本发明将一个人机交互的控件定义为一个节点,一个节点包含多个属性;根据性质不同,属性分为公共属性和私有属性。下面以常用的按钮为例进行说明。如图2所示,为一个状态显示视图,视图主元素为一个按钮。按钮坐标以左上角为原点,为(x,y)。宽度with,高度hight。为了在模型实例化后区分不同实例,加入唯一标志id,同时加入name属性用于编辑按钮显示名称。

总结如表1所示:

表1:button组件属性

由于各个控件作用不同,各个控件需要定义特有的属性,如按钮控件定义的row、column属性,标志按钮在视图中的行列信息。

对应按钮模型完整的xml文件描述如下所示:

<buttonid="button_show_anag"row="0"column="0"name="模拟量"x="20"y="20"width="100"height="20">

<requestreceiver="view_anag"request="show_anag"/>

</button>

节点名称和属性命名规则

1)节点名称,如:button等为模型名称。系统通过节点名判断模型类型,生成模型实例。不同模型不可重名。

2)属性名称,如:id、name等为节点属性。系统通过属性生成实例数据。同一节点不能有同名属性。

3)属性值,id属性全局唯一,不能重复。系统通过id标志唯一模型实例。

模型解析器通过解析xml配置文件,生成实例,实例结构体为:

widget结构体定义了组件的通用属性成员,对于其他特殊组件,需要扩展属性时,只需要在此基础上追加即可。

所述私有属性,根据不同保护设备的实际数据属性进行定义。

所述模型解析器,用来遍历xml配置文件所有xml文件节点,根据xml文件节点实例化参数,以xml文件节点为对象进行实例化,将实例化成功的模型实例保存到列表中;并且根据xml文件节点层次关系生成对应控件层次包含关系;

所述逻辑解析器,加载xml配置文件中的视图切换的逻辑关系,接收事件驱动器的信号和视图堆栈单元中当前视图状态,从当前视图句柄中,提取出动作指令,并且该动作指令发送给数据服务器;

所述事件驱动器,接收显示屏上按键操作信号,将该按键操作信号转换成逻辑解析器能够识别的信号,并将该信号发送给逻辑解析器,逻辑解析器根据当前视图状态产生数据请求信号,该请求信号由数据服务器定义。

所述数据服务器,接收逻辑解析器发送的请求信号,获取该请求信号对应执行结果或者保存该请求信号对应数据,并且返回执行结果给逻辑解析器;

所述数据服务器,建立请求信号和对应执行结果的函数映射关系。

所述视图堆栈单元,根据数据服务器返回给逻辑解析器的执行结果,得到视图切换和调用关,根据该视图切换和调用关系,完成视图压栈和出栈操作,并记录视图层次信息。例如:request节点中定义了receiver属性,receiver值为显示视图的id号。数据返回后,程序将调用receiver指定视图显示数据。

所述压栈出栈操作,具体定义为:当逻辑解析器收到执行结果为退出信号时,退出当前视图并出栈,当逻辑解析器收到执行结果为视图切换信号时,新视图进行压栈操作;

所述xml文件节点实例化参数,包括:节点名称、属性编号,节点位置、节点大小、当前视图、属性名称;

所述xml文件节点层次关系,如图3所示,包括:window节点;

所述window节点包括:title子节点、view子节点及status子节点;

所述window节点及其子节点定义整个视图的显示界面;

所述view子节点定义主显示区;

所述title子节点定义标题栏;

所述status子节点定义显示状态数据;

每一个window节点必须定义view子节点,其它子节点为可选配置;

从图3中可以看出xml文件格式可以很好的表达出个控件包含关系,直观易懂。模型解析器分析节点结构,在生成组件实例后,同时生成组件的结构关系。

所述模型解析器实例化过程,具体为:模型解析器定义xml文件节点实例化参数对应的结构体,实例化过程就是读取xml文件节点名称和所有属性值,然后赋值给结构体成。

所述xml文件节点,具有唯一指定的名字,不能重名。

支持控件参数名定义和参数自解析,如图4所示。

参数自解析:

这个示例定义了一个对话框,实现从对话框中获取一个名为set_cpu的参数,由argname=”set_cpu”定义。参数输入形式为combobox组合框,组合框中有两个可选项,cpu1和cpu2,通过面板“上”“下”键选择,逻辑解析器会记录当前选中项的索引值。选择好数值后,按“确认”。逻辑解析器会解析对话框,搜索combobox中argname属性,如果找到,会继续判断当前option索引,并且取出对应的id数据。然后将数据传输给数据服务器进行处理。

以查看模拟量菜单为例,当存在多个cpu时,加入cpu选择对话框。

说明:

getargsbyid为逻辑解析器方法,dialog_select_cpu为对话框dialog的id属性值。逻辑解析器解析request节点,查找req_args属性,如果成功,则调用getargsbyid方法,参数为dialog_select_cpu,获取到set_cpu的值。

以查看模拟量为例进行说明。如图5视图切换逻辑所示,通过界面按键触发,查看数据,返回按键菜单整个交互过程分7步骤完成。

<buttonid="button_show_anag"row="0"column="0"name="模拟量"x="20"y="20"width="100"height="20">

<requestreceiver="view_anag"request="show_anag"/>

</button>

此示例仅配置一个菜单入口,基于xml的保护设备通用人机交互系统可以显示为树状菜单,如图6所示。

一种基于xml的保护设备通用人机交互方法,步骤如下:

步骤1:基于xml的保护设备通用人机交互系统初始化:在模型解析器中,遍历xml配置文件所有xml文件节点,根据xml文件节点实例化参数,以xml文件节点为对象进行实例化,将实例化成功的模型实例保存到列表中;并且根据xml文件节点层次关系生成对应控件层次包含关系;

步骤2:当按键被触发后,事件驱动器接收按键操作信号,将该按键操作信号转换成逻辑解析器能够识别的信号,并将该信号发送给逻辑解析器;

步骤3:逻辑解析器,加载xml配置文件中的视图切换的逻辑关系,接收事件驱动器的信号和视图堆栈单元中当前视图状态,根据对应控件层次包含关系,从实例化后模型中,生成请求信号,并且将生成请求信号发送给数据服务器;具体为:事件驱动器根据结构体widget成员node,解析出request向节点中request属性,向数据服务器发送数据请求,请求类型为request属性值,如:show_anag。

步骤4:数据服务器,接收逻辑解析器发送的请求信号,获取该请求信号对应执行结果或者保存该请求信号对应数据,并且将返回数据给逻辑解析器;具体为:数据服务器收到请求后,根据show_anag找到对应处理函数响应请求,并且返回对应数据。

步骤5:逻辑解析器收到数据服务器返回数据,根据返回数据,找到数据显示视图,并显示在显示屏上,同时逻辑解析通知视图堆栈单元;具体为:(3)

逻辑解析器收到数据服务器返回数据后,先根据根据响应show_anag找到数据显示视图,示例中为request向节点中view属性值view_anag,然后根据格式在lcd显示屏上显示数据,如图7所示。

步骤6:视图堆栈单元,根据数据服务器返回给逻辑解析器的返回数据,得到视图切换和调用关系,根据该视图切换和调用关系,完成视图压栈和出栈操作并记录视图层次信息;

步骤7:若按键为返回键时,事件驱动器通知视图堆栈单元,删除最上层视图,并显示次顶层视图。

通过如上步,对各种常用界面控件进行抽象,如表2所示:

表2常用控件列表

本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1