软件虚拟仿真方法、装置和电子设备与流程

    专利2022-07-08  152


    本发明涉及计算机技术领域,具体而言,涉及一种软件虚拟仿真方法、装置和电子设备。



    背景技术:

    plc组态软件编写的应用程序一般是从所控制的硬件主板输入端口(input)读取输入,然后,进行逻辑处理,再将输出送至输出端口(output)。

    在开发时首先需要确定所使用的plc硬件。在组态软件编写的应用程序代码中,声明变量时会明确指定所使用的端口地址。在应用程序开发时,由于代码对端口资源的使用是确定的,因此,仿真时也是基于相应的plc硬件实现的。

    为了实现同样功能的应用程序,在使用不同plc硬件端口资源时,就需要进行代码修改,仿真也是基于相应硬件io资源的。

    针对如何提升仿真的效率和可扩展性,目前尚未提出有效的解决方案。



    技术实现要素:

    本发明实施例提供了一种软件虚拟仿真方法、装置和电子设备,以提升仿真效率和仿真程序的可扩展性。

    一方面,提供了一种软件虚拟仿真方法,包括:

    响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    对映射后的仿真端口所关联的仿真实体进行程序仿真。

    在一个实施方式中,在对映射后的仿真端口所关联的仿真实体进行程序仿真之后,还包括:

    接收对逻辑端口与仿真端口的映射关系的调整请求;

    根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;

    根据修改后的映射关系,进行程序仿真。

    在一个实施方式中,上述方法还包括:

    获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;

    将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;

    获取用户输入的逻辑端口与仿真端口的关联关系;

    根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;

    将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    在一个实施方式中,所述仿真实体包括以下至少之一:软件对象、硬件对象、网络实体。

    另一方面,提供了一种软件虚拟仿真装置,包括:

    第一获取模块,用于响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    第一映射模块,用于根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    第一仿真模块,用于对映射后的仿真端口所关联的仿真实体进行程序仿真。

    在一个实施方式中,上述软件虚拟仿真装置还包括:

    接收模块,用于在对映射后的仿真端口所关联的仿真实体进行程序仿真之后,接收对逻辑端口与仿真端口的映射关系的调整请求;

    修改模块,用于根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;

    第二仿真模块,用于根据修改后的映射关系,进行程序仿真。

    在一个实施方式中,上述软件虚拟仿真装置还包括:

    第二获取模块,用于获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;

    生成模块,用于将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;

    第三获取模块,用于获取用户输入的逻辑端口与仿真端口的关联关系;

    第二映射模块,用于根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;

    存储模块,用于将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    又一方面,提供了一种空调,包括:上述的软件虚拟仿真装置。

    又一方面,提供了一种网络设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

    又一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。

    在上述实施例中,设置逻辑端口,并建立逻辑端口与仿真端口之间的映射关系,在仿真代码中使用逻辑端口,在进行仿真的时候仅需要进行逻辑端口与仿真端口的映射,就可以将仿真代码中的逻辑端口映射到仿真实体的仿真端口中,从而可以实现对仿真实体的程序仿真。通过上述方案解决了现有的在对不同实体进行仿真的时候,需要分别写仿真代码,从而导致仿真效率低下的问题,在本方案中仅需要修改映射关系就可以实现一份代码对多个仿真实体进行仿真的效果,有效提升了仿真效率。

    附图说明

    构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

    图1是根据本发明实施例的软件虚拟仿真方法的方法流程图;

    图2是根据本发明实施例的仿真系统的架构图;

    图3是根据本发明实施例的软件虚拟仿真装置的结构框图。

    具体实施方式

    为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。

    针对现有的为了实现同样功能的应用程序,在使用不同plc硬件端口资源时,就需要进行代码修改而导致的仿真效率低下的技术问题。

    在本例中,提供了一种软件虚拟仿真方法,如图1所示,可以包括:

    步骤101:响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    步骤102:根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    步骤103:对映射后的仿真端口所关联的仿真实体进行程序仿真。

    在上例中,设置逻辑端口,并建立逻辑端口与仿真端口之间的映射关系,在仿真代码中使用逻辑端口,在进行仿真的时候仅需要进行逻辑端口与仿真端口的映射,就可以将仿真代码中的逻辑端口映射到仿真实体的仿真端口中,从而可以实现对仿真实体的程序仿真。通过上述方案解决了现有的在对不同实体进行仿真的时候,需要分别写仿真代码,从而导致仿真效率低下的问题,在本方案中仅需要修改映射关系就可以实现一份代码对多个仿真实体进行仿真的效果,有效提升了仿真效率。

    因为设置了逻辑端口和仿真端口之间的映射关系,在需要进行不同实体的相同功能的仿真的时候,只需要修改逻辑端口和仿真端口的映射关系就可以实现对不同实体的相同功能的仿真,而不需要对仿真代码进行修改。具体的,可以接收对逻辑端口与仿真端口的映射关系的调整请求;根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;根据修改后的映射关系,进行程序仿真。

    进一步的,上述逻辑端口和仿真端口之间的映射关系,可以是以映射表的形式存储的。具体的,获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;获取用户输入的逻辑端口与仿真端口的关联关系;根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    上述的仿真实体可以包括但不限于以下至少之一:软件对象、硬件对象、网络实体。

    下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

    在本例中,将io端口虚拟化为逻辑端口,在代码中使用逻辑端口资源,而非使用实际端口资源,然后,将逻辑端口映射至多种仿真硬件配置。即,不需要修改已有代码中的io端口资源的使用,只需要进行多种仿真虚拟硬件资源配置的映射,就可以实现同时仿真虚拟多种运行环境。

    具体的,可以将被控plc硬件的端口资源虚拟化为逻辑端口,在代码中使用逻辑端口资源。

    例如:假想一个虚拟的plc的硬件,具有虚拟的i0.0资源,直接变量使用vi0.0,通过映射绑定至具体的物理硬件a的ai0.0或bi1.0。在实现的时候,可以同时存在这些不同的硬件配置关系,在仿真时加载各自的映射配置关系就可以切换不同的硬件仿真。

    这样就不需要修改直接变量的声明,只用在需要时能映射某个物理硬件即可运行在特定的硬件上。这样针对在开发程序时,目标硬件规格和参数尚不知道的情况,或者是后期规格和参数需要修改的情况下,或者是后期硬件损坏需要替换的情况,都可以通过重新映射的方式,简单方便地进行替换,从而使得验证仿真程序功能是正常可用的。

    假设vi0.0原本是映射至ai0.0的,后来重新映射至bi1.0,针对其他变量也都采用类似的操作,这样在仿真a硬件后,再切换至硬件b仿真,就可以很简单地切换,只需要一份应用程序,两份映射关系就可以实现。

    即,通过逻辑端口和仿真虚拟端口资源进行映射,可以去除应用程序与特定plc仿真之间的绑定依赖,实现不同虚拟硬件的运行仿真功能,只需要通过映射即可选用。通过逻辑端口至虚拟端口的映射,虚拟仿真实体可以是纯软件的,也可以是模拟硬件的,或者各种目标硬件的,甚至是一个网络组成的实体,可以方便的扩展各种仿真功能库,实现知识的复用。

    在本例中提供了一种仿真系统,如图2所示,可以包括如下执行模块:

    逻辑端口资源管理模块m1,用于管理逻辑端口资源,实现增删改查,逻辑端口资源配置表的读/存。

    仿真端口资源管理模块m2,用于管理被控plc的仿真端口资源,实现增删改查,物理端口配置表的读/存。

    映射管理模块m3,用于管理逻辑端口和仿真端口之间的映射关系,实现增删改查,映射表的读/存。

    仿真虚拟实体定义模块m4,用于定义虚拟仿真实体的资源配置和行为。

    仿真虚拟实体管理模块m5,用于加载仿真虚拟实体,管理其生命周期。

    仿真映射运行调度模块m6,用于实现逻辑端口与不同虚拟仿真实体的仿真端口之间的动态功能和数据的交互和调度等。

    在本例中,涉及逻辑端口,即,抽象的io端口资源,供应用程序的代码使用;仿真端口,即,虚拟仿真实体所提供的io端口;端口映射,即,配置逻辑端口和仿真端口之间的对应关系;仿真虚拟实体,即,模拟被虚拟实体的功能和特性,即模拟不同厂家型号的plc硬件。

    在实现的时候,可以包括:

    1)开发者定义逻辑端口资源:

    方式一:开发者可以明确地统一定义逻辑端口资源,例如,可以适用excel导入或者通过组态软件的ui导入。方式二:开发者在代码中使用时自由定义逻辑端口资源,由组态软件收集。开发者导入或者定义的逻辑端口资源集合形成逻辑端口资源配置表。在代码中使用逻辑端口进行变量定义,例如:在st代码中定义变量时使用逻辑端口。

    2)组态软件提供逻辑端口与仿真端口之间的映射功能和相ui,开发者可以在这里进行二者之间的映射,包括增删改查等,映射的结果保存为仿真io端口映射表。

    3)定义各种虚拟仿真实体的功能和特性:

    硬件资源配置(例如:io端口数量、地址、技术参数等),cpu资源(例如:核数,是否可以多核并行)、通信功能等,以实现仿真应用程序代码的执行行为。逻辑端口通过仿真端口与仿真实体进行交互。组态软件提供相应的定义ui界面,虚拟仿真实体封装成库,以插件的形式由组态软件加载,便于扩展。

    4)仿真映射运行调度层:

    实现逻辑端口与不同虚拟仿真实体的仿真端口之间的动态功能和数据的交互。例如:io端口的读写、数据的收发、仿真实体的启停,不同仿真实体的切换或并行调度。

    即,在上例中,对软件的仿真是基于软件中虚拟化资源,由软及硬,通过重映射来仿真不同plc硬件上的应用程序执行情况。首先,是对应用程序开发软件中使用资源进行虚拟化,再将其映射至具体的plc硬件资源,以仿真应用程序在不同目标硬件上的行为。

    通过上述方案,可以达到提升仿真的效果、效率,提升开发效率的目的,且无需特定的plc硬件配置,无需更改代码,可同时仿真多种硬件配置。在应用的时候,只需要实现不同硬件配置的虚拟运行逻辑,通过端口重映射,就可方便增加新的仿真虚拟运行硬件配置。

    基于同一发明构思,本发明实施例中还提供了一种软件虚拟仿真装置,如下面的实施例所述。由于软件虚拟仿真装置解决问题的原理与软件虚拟仿真方法相似,因此软件虚拟仿真装置的实施可以参见软件虚拟仿真方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本发明实施例的软件虚拟仿真装置的一种结构框图,如图3所示,可以包括:第一获取模块301、第一映射模块302和第一仿真模块303,下面对该结构进行说明。

    第一获取模块301,用于响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    第一映射模块302,用于根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    第一仿真模块303,用于对映射后的仿真端口所关联的仿真实体进行程序仿真。

    在一个实施方式中,上述软件虚拟仿真装置还可以包括:接收模块,用于在对映射后的仿真端口所关联的仿真实体进行程序仿真之后,接收对逻辑端口与仿真端口的映射关系的调整请求;修改模块,用于根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;第二仿真模块,用于根据修改后的映射关系,进行程序仿真。

    在一个实施方式中,上述软件虚拟仿真装置还可以包括:第二获取模块,用于获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;生成模块,用于将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;第三获取模块,用于获取用户输入的逻辑端口与仿真端口的关联关系;第二映射模块,用于根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;存储模块,用于将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    在一个实施方式中,上述仿真实体可以包括但不限于以下至少之一:软件对象、硬件对象、网络实体。

    在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。

    在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。

    从以上的描述中,可以看出,本发明实施例实现了如下技术效果:设置逻辑端口,并建立逻辑端口与仿真端口之间的映射关系,在仿真代码中使用逻辑端口,在进行仿真的时候仅需要进行逻辑端口与仿真端口的映射,就可以将仿真代码中的逻辑端口映射到仿真实体的仿真端口中,从而可以实现对仿真实体的程序仿真。通过上述方案解决了现有的在对不同实体进行仿真的时候,需要分别写仿真代码,从而导致仿真效率低下的问题,在本方案中仅需要修改映射关系就可以实现一份代码对多个仿真实体进行仿真的效果,有效提升了仿真效率。

    尽管本申请内容中提到不同的具体实施例,但是,本申请并不局限于必须是行业标准或实施例所描述的情况等,某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、处理、输出、判断方式等的实施例,仍然可以属于本申请的可选实施方案范围之内。

    虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。

    上述实施例阐明的装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

    本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

    本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

    通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

    本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

    虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的实施方式包括这些变形和变化而不脱离本申请。


    技术特征:

    1.一种软件虚拟仿真方法,其特征在于,包括:

    响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    对映射后的仿真端口所关联的仿真实体进行程序仿真。

    2.根据权利要求1所述的方法,其特征在于,在对映射后的仿真端口所关联的仿真实体进行程序仿真之后,还包括:

    接收对逻辑端口与仿真端口的映射关系的调整请求;

    根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;

    根据修改后的映射关系,进行程序仿真。

    3.根据权利要求1所述的方法,其特征在于,还包括:

    获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;

    将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;

    获取用户输入的逻辑端口与仿真端口的关联关系;

    根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;

    将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    4.根据权利要求1所述的方法,其特征在于,所述仿真实体包括以下至少之一:软件对象、硬件对象、网络实体。

    5.一种软件虚拟仿真装置,其特征在于,包括:

    第一获取模块,用于响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;

    第一映射模块,用于根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;

    第一仿真模块,用于对映射后的仿真端口所关联的仿真实体进行程序仿真。

    6.根据权利要求5所述的装置,其特征在于,还包括:

    接收模块,用于在对映射后的仿真端口所关联的仿真实体进行程序仿真之后,接收对逻辑端口与仿真端口的映射关系的调整请求;

    修改模块,用于根据所述调整请求,修改逻辑端口与仿真端口之间的映射关系;

    第二仿真模块,用于根据修改后的映射关系,进行程序仿真。

    7.根据权利要求5所述的装置,其特征在于,还包括:

    第二获取模块,用于获取导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表;

    生成模块,用于将导入的逻辑端口资源列表或接收在代码开发过程中自定义的逻辑端口资源列表作为逻辑端口资源配置表;

    第三获取模块,用于获取用户输入的逻辑端口与仿真端口的关联关系;

    第二映射模块,用于根据所述逻辑端口资源配置表和所述关联关系,进行映射,得到所述逻辑端口与仿真端口的映射关系;

    存储模块,用于将逻辑端口与仿真端口的映射关系以映射表的形式存储。

    8.一种电子设备,包括:权利要求5至7中任一项所述的软件虚拟仿真装置。

    9.一种网络设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。

    10.一种非易失性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述方法的步骤。

    技术总结
    本发明提供了一种软件虚拟仿真方法、装置和电子设备,其中,该方法包括:响应于对目标仿真程序的仿真请求,获取逻辑端口与仿真端口的映射关系;根据预先建立的逻辑端口与仿真端口的映射关系,将所述目标仿真程序中的逻辑端口映射到仿真端口中;对映射后的仿真端口所关联的仿真实体进行程序仿真。通过上述方案解决了现有的在对不同实体进行仿真的时候,需要分别写仿真代码,从而导致仿真效率低下的问题,在本方案中仅需要修改映射关系就可以实现一份代码对多个仿真实体进行仿真的效果,有效提升了仿真效率。

    技术研发人员:王灵军;夏元仕;李杰;刘鑫
    受保护的技术使用者:珠海格力电器股份有限公司
    技术研发日:2020.11.25
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22469.html

    最新回复(0)