掌桥专利:专业的专利平台
掌桥专利
首页

一种轮机模拟器交互数据的自动映射方法

文献发布时间:2023-06-19 11:08:20



技术领域

本发明涉及轮机模拟器技术领域,尤其涉及一种轮机模拟器交互数据的自动映射方法。

背景技术

全任务轮机模拟器模拟了船舶的整个轮机系统,是一套主要应用于海船船员培训的装置。除了船员培训外,此模拟系统还可以用于船舶轮机系统的故障诊断、自主操纵、能量流分析等科研和仿真试验验证研究。轮机模拟器由软件和硬件构成,其核心为可模拟整个机舱的软件系统。

在轮机模拟器软件的研发工作中,其中一项是需要实现船舶机舱的数学模型与仿真系统的交互点关联。早期的轮机模拟器开发中,数学模型与仿真系统的交互点关联是直接耦合在一起的。在2015年,我们研发团队将轮机模拟器中的数学模型与仿真系统的交互点通过数据系统隔离,彼此与数据系统关联。其中,交互系统与数据系统的映射关系由轮机模拟器的开发人员在程序开发平台中全部手动编写完成。

在一切顺利的情况下,成熟的轮机模拟器研发人员完成一个交互点的所有工作需要约2分钟。一套全任务轮机模拟器约有2.2万个交互点,完成这些交互点的映射需要约733.3小时。假设10位开发人员每天工作8小时,则理论上10位开发人员完成这些工作约需要约9天时间。实际开发过程中,由于映射编号相似、交互类型多样化、工作专业性强等特点导致交互数据点遗漏、数据点重复、数据映射错误等问题,实际使用的开发时间及模拟器后期调试时间会更长,严重影响轮机模拟器的开发效率,并使得研发人员在实际的开发过程中产生工作枯燥、繁琐、容易疲惫的心里特征。

发明内容

本发明提供一种轮机模拟器交互数据的自动映射方法,以克服交互系统与数据系统的映射关系完全由开发人员手动编写完成的技术问题。

如图3所示,采用本发明能够通过计算机自动完成建立交互系统与数据系统的映射关系的工作,极大的节省了人力成本,提高了工作效率及映射正确率。如图4所示,使用本发明方法实现的自动映射程序耗时主要与交互系统个数相关,与交互点数几乎不相关。完成一个模拟器交互系统的程序执行时间约8s,人员操作时间约40s。一套具有约2.2万个交互点的全任务轮机模拟器可达160个交互系统,则完成这些交互系统需要约128分钟(2个小时)。实际上,由于本发明方法在程序实现过程中可将所有系统顺序执行,平均单个交互系统的人员操作时间进一步降低至20s。借助自动映射程序,轮机模拟器所有交互系统的映射工作可以独自一人完成。

本发明一种轮机模拟器交互数据的自动映射方法,包括:

建立数据系统文件数据字段声明标记、交互系统文件刷新代码标记及事件代码标记;将所述数据系统文件指定位置绑定所述交互系统文件;

建立交互系统的控件识别配置文件,并读取所述配置文件信息;

读取所述交互系统文件,根据所述配置文件信息解析出所述交互系统文件中的控件类型,并根据所述控件类型统计控件数量;

根据所述数据系统文件数据字段声明标记解析声明位置及数据字段信息,并结合所述控件类型、控件数量及所述配置文件信息,自动生成数据字段的声明代码;

根据标注声明代码的数据字段及所述配置文件信息,在所述交互系统文件的源码文件中自动生成控件名称属性代码和控件ID标识属性代码;

根据所述数据字段、配置文件信息、控件名称属性代码和控件ID标识属性代码,在所述交互系统文件刷新代码标记处自动生成刷新代码,在所述事件代码标记处自动生成事件代码,以建立所述数据系统与所述交互系统之间的映射关系。

进一步地,所述建立数据系统文件数据字段声明标记、交互系统文件刷新代码标记及事件代码标记;将所述数据系统文件指定位置绑定所述交互系统文件,包括:所述数据系统文件为:只包含字段,不包含方法、属性、事件及委托的数据类的文件;所述数据字段声明标记的结构为:#region系统缩写起始编号-结束编号文件名;所述交互系统文件包括:布局源码文件、代码源码文件;所述刷新代码标记,采用刷新函数部分声明字符串,所述刷新函数部分声明字符串为:@"void Refresh()";所述事件代码标记为:#region事件;所述将所述数据系统文件指定位置绑定所述交互系统文件,包括:将所述数据字段声明标记的结构中的文件名指定为交互系统不含扩展名的交互系统文件名字符串。

进一步地,所述读取所述交互系统文件,根据所述配置文件信息解析出所述交互系统文件中的控件类型,并根据所述控件类型统计控件数量,包括:所述读取所述交互系统文件,包括:将扩展名为.xaml的布局源码文件作为文本文件进行单行读取,形成文本字符串供解析;所述根据所述配置文件信息解析出所述交互系统文件中的控件类型,包括:将所述布局源码文件中读取的单行文本通过正则表达式提取控件类型名称,所述通过正则表达式提取控件类型名称的正则表达式为:<.*?:(.*?)\s,通过第一分组获得所述控件类型名称。

进一步地,所述根据所述数据系统文件数据字段声明标记解析声明位置及数据字段信息,并结合所述控件类型、控件数量及所述配置文件信息,自动生成数据字段的声明代码,包括:所述解析声明位置,采用正则表达式匹配的方法,匹配上的字符串所在行位置为声明位置,所述正则表达式为:@"#region\w+?\s.{1,5}-.{1,5}\s.*";所述解析数据字段信息,是根据所述数据字段声明标记获取数据全局ID起始标号、所述交互系统文件、系统缩写信息;所述数据全局ID为五位数字,范围段为00000-65535;所述交互系统需映射的所述全局ID具有不同的、范围不重叠范围段。

进一步地,所述根据标注声明代码的数据字段及所述配置文件信息,在所述交互系统文件的源码文件中自动生成控件名称属性代码和控件ID标识属性代码,包括:自动生成控件名称属性代码,包括:以正则表达式*x:Name=\".*?\"*"匹配控件名称的方式删除原有名称,以控件类型名称及编号的结构生成所述控件名称属性代码;自动生成ID标识属性代码,包括:以正则表达式"*VariableID=\".*?\"*"匹配控件属性ID的方式删除原有ID,并设置所述ID标识属性代码。

进一步地,所述在所述交互系统文件刷新代码标记处自动生成刷新代码,在所述事件代码标记处自动生成事件代码,包括:自动生成刷新代码,包括:统一使用“控件名称.控件属性=mdi.BG.SM.SDGNET.数据字段”的结构;其中,控件名称为交互系统的布局源码文件中生成的控件名称属性值,控件属性为交互属性,字段为数据类中声明的数据字段,字段的五位全局标识与控件的ID标识属性的属性值一致;自动生成事件代码,包括:通过case辨识控件名称实现同类控件的交互处理,交互处理的数据结构采用mdi.BG.SM.SDGNET.字段=控件名称.控件属性;其中,字段为数据类中声明的字段,控件名称为交互系统布局源码文件中生成的控件属性名称,控件属性为交互属性。

进一步地,所述配置文件为XML文档;所述XML文档具有三级结构,根节点下为Control元素,所述Control元素具有名称属性及变量填充属性;所述Control元素包含至少一个Property子元素,所述Property元素具有名称属性、类型属性、事件名称属性、刷新标识属性;所述Control元素的名称为控件库的控件名称;所述Property元素的名称为控件库的控件的属性和事件名称。

本发明首先通过程序从仿真交互系统的工程源码文件中统计交互点的类型和数量;其次,根据控件识别配置文件,在统一数据类中生成声明字段并写入数据系统中,在仿真交互系统的代码文件中写入刷新代码和事件代码,在仿真交互系统的控件布局文件中生成控件名称及标识ID。从而实现了通过计算机自动完成建立交互系统与数据系统的映射关系的工作,极大的节省了人力成本,提高了工作效率及映射正确率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的方法流程图;

图2为本发明的技术方案框图;

图3为本发明与现有技术的对比图;

图4为采用本发明方法实现的自动映射程序;

图5为仿真实验中交互的控件的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本实施例提供了一种轮机模拟器交互数据的自动映射方法,包括:

101、建立数据系统文件数据字段声明标记、交互系统文件刷新代码标记及事件代码标记;将数据系统文件指定位置绑定交互系统文件;

具体而言,建立数据系统文件数据字段声明标记、交互系统文件刷新代码标记及事件代码标记,用于源码生成位置指示;数据系统文件指定位置绑定交互系统文件,将数据系统与交互系统之间建立连接;如图2所示,在轮机模拟器数据映射框架设计上,沿袭分离型轮机模拟器的框架设计:即仿真数学模型与仿真交互系统的所有映射数据点统一放入一个数据中心,仿真交互系统与仿真数学模型通过数据中心连接。在只包含字段,不包含方法、属性、事件及委托的数据类的文件中采用“#region系统缩写起始编号-结束编号文件名”的结构标记数据字段的声明位置;将所述“#region系统缩写起始编号-结束编号文件名”中的文件名指定为交互系统不含扩展名的交互系统文件名字符串,建立数据系统文件与交互系统文件的连接。交互系统文件包括:布局源码文件、代码源码文件;在代码源码文件中采用刷新函数部分声明字符串,即:@"void Refresh()"作为刷新源代码写入位置的标记。在代码源码文件中采用“#region事件”作为事件源代码写入位置的标记。

102、建立交互系统的控件识别配置文件,并读取配置文件信息;

具体而言,交互控件识别配置文件为XML文档,用于存储控件交互信息。XML文档具有三级结构。根节点下为Control元素,Control元素具有名称属性及变量填充属性。Control元素包含至少一个Property子元素,Property元素具有名称属性、类型属性、事件名称属性、刷新标识属性。Control元素的名称为团队自主开发的DMSControls控件库的控件名称。Property元素的名称为团队自主开发的DMSControls控件库的控件的属性和事件名称。根据交互系统布局源码文件确定所需用到的Control元素及Property元素。此文档建立完后,可重复使用。

103、读取交互系统文件,根据配置文件信息解析出交互系统文件中的控件类型,并根据控件类型统计控件数量;

具体而言,交互系统源码文件为Visual Studio平台的工程文件,其中布局源码文件为扩展名为.xaml的工程文件,其中代码源码文件为扩展名为.xaml.cs的工程文件。将布局源码文件作为文本文件单行读取,获取单行代码文本字符串,然后采用“<.*?:(.*?)\s”的正则表达式,通过第一分组解析出布局源码文件中控件的控件类型名称。最后将获取的控件名称与配置文件中的控件名称匹配。当读取到的是新的控件类型名称时,从配置文件中获得完整的控件交互信息,该控件类型数量计数为1。当解析得到的是相同的控件类型名称时,该控件类型数量计数增加1。从而实现控件类型及控件数量等信息的统计。

104、根据数据系统文件数据字段声明标记解析声明位置及数据字段信息,并结合控件类型、控件数量及配置文件信息,自动生成数据字段的声明代码;

具体而言,数据系统中指定位置的数据字段声明标记,为数据类中的伪代码标识,具有“#region系统缩写起始编号-结束编号文件名”的结构。通过程序以文本类型单行读取数据类文件,使用正则表达式@"#region\w+?\s.{1,5}-.{1,5}\s.*"对“#region系统缩写起始编号-结束编号文件名”的标记结构进行解析,解析出数据声明位置、数据全局ID起始标号、交互数据文件名、系统缩写信息。通过解析出的文件名与交互系统的文件名匹配。匹配成功后,在匹配位置,根据解析信息、配置文件信息、交互系统控件类型及控件数量等统计信息,采用高级语言格式,以文本形式自动生成数据字段的声明代码,字段结构为“字母[全局ID]_系统缩写_控件名称[控件编号]”,全局ID为五位数字,范围段为00000-65535,交互系统需映射的所述全局ID具有不同的范围段,所述范围段不重叠,由标记中的起始编号和结束编号规定。

105、根据标注声明代码的数据字段及配置文件信息,在交互系统文件的源码文件中自动生成控件名称属性代码和控件ID标识属性代码;

具体而言,控件名称为控件类名+2位数字编码结构。使用程序单行读取布局源码文件,使用“"*x:Name=\".*?\"*"”的正则表达式为匹配控件名称,然后删除此名称,以控件类名+2位数字编码的结构生成新的控件名称。控件ID标识与数据系统中数据字段中的全局ID标识对应,即数据字段中的五位数字。控件ID标识使用“"*VariableID=\".*?\"*"”的正则表达式匹配VariableID属性,然后删除原有值,并使用数据类申明的对应数据字段的全局唯一ID赋值。

106、根据数据字段、配置文件信息、控件名称属性代码和控件ID标识属性代码,在交互系统文件刷新代码标记处自动生成刷新代码,在事件代码标记处自动生成事件代码,以建立数据系统与所述交互系统之间的映射关系。

具体而言,自动生成刷新代码,统一使用“控件名称.控件属性=mdi.BG.SM.SDGNET.数据字段”的结构。其中控件名称为交互系统布局源码文件中生成的控件属性名称,控件属性为交互属性,字段为数据类中声明的字段。字段的五位全局标识与此控件的ID标识属性的属性值一致。

自动生成事件代码,同一类型的控件统一使用switch case判断语句处理,辨识控件名称,对应的处理程序统一为“mdi.BG.SM.SDGNET.数据字段=mdi.BG.InvokeDataF(全局ID,控件名称.控件属性)”的结构。

仿真实验:

采用本发明在燃油驳运系统中进行仿真实验。仿真交互系统在VisualStudio设计完毕后,如图5所示,需要交互的控件包括:阀件(LineValve类),数值标签(ValueLabel类),液位柱(GlassMeter类),泵(GearPump类)。

在交互控件配置XML文件中,描述交互控件信息,此信息可重复利用,配置XML文件中的配置信息可多于待映射系统的交互控件类型。此例中交互控件配置如下:

将交互控件配置XML文件中的配置信息读入自动映射程序中。每个控件配置信息作为一个类型处理,至少包含的属性应能记录控件数量信息,控件起始标识ID,控件交互属性,控件索引位置,交互控件事件名称。

在自动映射程序中,读入仿真交互系统的模拟图文件,使用“@"<.*?:(.*?)\s"”的正则表达式,并根据读入的配置信息提取模拟图文件中每一行代码的交互控件名称,统计控件信息及数量。

在数据中心采用“#region FTS 13501-14000FOTransfer.xaml”标记交互字段声明位置。自动映射程序通过此字段获取需要映射的仿真交互系统模拟图文件,定位交互字段申明位置,确定交互字段的唯一标识编码段等信息。使用“字母[五位数字]_系统缩写_控件名称[控件编号]”的结构申明字段。

在仿真交互系统的模拟图的XAML文件中,使用“"*VariableID=\".*?\"*"”的正则表达式匹配仿真交互系统中交互控件的全局唯一标识ID,使用在数据中心申明的全局唯一标识为控件标识赋值,使得交互控件的全局唯一标识与数据中心形成映射关系。使用“"*x:Name=\".*?\"*"”的正则表达式为仿真交互系统的交互控件命名。

读取仿真交互系统的模拟图的CS文件,根据“@"void Refresh()"”识别状态轮询更新函数,统一使用“控件名称.控件属性=mdi.BG.SM.SDGNET.数据字段”的结构将状态映射代码写入其中。根据读取文本匹配“#region事件”,定位事件代码位置,统一使用switchcase判断语句辨识控件名称,对应的处理程序按照统一的“mdi.BG.SM.SDGNET.数据字段=mdi.BG.InvokeDataF(全局ID,控件名称.控件属性)”结构写入。完成映射。

整体有益效果:

一是可以提高效率,显著地提高轮机模拟器中仿真数学模型与仿真交互系统映射数据点的编写速度;

二是可以保证极高的映射正确率;

三是可以减轻人工成本,减轻轮机模拟器研发人员在实际的开发过程中产生的工作枯燥、繁琐、容易疲惫的心里情绪。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 一种轮机模拟器交互数据的自动映射方法
  • 一种基于实时数据驱动的料箱自动化映射交互方法
技术分类

06120112811396