首页> 中国专利> 用于设计分布式异构计算和控制系统的方法和系统

用于设计分布式异构计算和控制系统的方法和系统

摘要

计算机实现的方法设计分布式异构计算和控制系统,所述分布式异构计算和控制系统包括应用程序和硬件环境,以及在硬件环境中配置应用程序。该方法通过在计算机节点中与交互式显示器相关联地执行的设计软件指令来实现,以利用计算机进程建立交互式环境。计算机进程在交互式环境中提供对功能模块集和原语模块集的访问。计算机进程在交互式环境接收对功能模块和原语模块中所需的模块的选择,并以将分布式计算和控制系统表征为设备集的示意图的方式对所选择的模块进行排序。计算机进程可解析示意图以产生子示意图集,每个子示意图对应于分布式计算和控制系统中的设备集中的不同设备。计算机进程可将子示意图集传送到设备集,并配置每个设备以通过在设备内运行的相应控制程序来执行子示意图。

著录项

  • 公开/公告号CN112292664A

    专利类型发明专利

  • 公开/公告日2021-01-29

    原文格式PDF

  • 申请/专利权人 普莱赛恩技术有限公司;

    申请/专利号CN201980037005.2

  • 发明设计人 王安舟;

    申请日2019-06-05

  • 分类号G06F8/34(20060101);G06F8/61(20060101);G06F9/50(20060101);

  • 代理机构11204 北京英赛嘉华知识产权代理有限责任公司;

  • 代理人王达佐;王艳春

  • 地址 美国马萨诸塞州

  • 入库时间 2023-06-19 09:41:38

说明书

相关申请的交叉引用

本专利申请要求2018年6月6日提交的美国临时专利申请62/681,397和2018年10月4日提交的美国临时专利申请62/741,326的权益。这些申请中的每一个在此通过引用整体并入本文。

技术领域

本发明涉及针对分布式异构计算系统设计应用程序的方法。

背景技术

具有硬件和软件组件的计算和控制系统的概念在本领域中是已知的。计算和控制系统用于提供对装置、设备和计算机进程的协调控制。它还提供对由系统内的这种装置、设备和计算机进程收集的数据的数据处理能力。如果系统中存在多个设备并且在这些设备之间存在一些协调,则认为计算和控制系统是分布式的。这些设备通常分别设置,并通过通信网络相互通信。如果计算和控制系统中存在多个设备,并且这些设备中的至少一个具有与其它设备中的至少一个不同的硬件配置、软件配置、操作系统、编程方法、开发工具等,则计算和控制系统是异构的。

示例性分布式异构计算和控制系统是物联网(IoT)系统,其中通常存在至少一个服务器计算机和多个边缘设备。至少一个服务器计算机通常具有强大的硬件资源,而每个边缘设备通常具有受限的硬件资源。边缘设备也可以在硬件资源、软件配置、操作系统、编程方法等方面彼此不同。

由于系统的分布式和异构性,为这种分布式异构计算和控制系统设计应用程序是困难的。传统的编程方法通常不适于分布式异构系统,因为它们产生将要在单个设备上运行的应用程序。也就是说,传统的编程方法不支持产生在具有不同硬件配置、软件配置,操作系统等的多个设备上运行的应用程序。

例如,开发团队可能需要实现用于以下分布式异构系统的应用程序。系统的第一边缘设备具有温度传感器,其附接到工业机器的主体,并且第一边缘设备周期性地从传感器读取温度。如果温度超过阈值,则第一边缘设备向服务器计算机发送警报消息。第二边缘设备通过串行端口与工业机器通信,并且可以从工业机器的内部寄存器读取或向工业机器的内部寄存器写入。第二边缘设备周期性地读取工业机器的内部状态寄存器。如果状态变得异常,则第二边缘设备向服务器计算机发送警报消息。第三边缘装置连接到摄像机,摄像机可以拍摄工业机器周围区域的照片或视频。如果服务器计算机从第一边缘设备或第二边缘设备接收到警报消息,则服务器计算机请求第三边缘设备拍摄照片。服务器计算机向客户端设备发送警报消息和照片。操作员检查警报消息和客户端设备上的照片,并且如果操作员确定情况是紧急情况,则操作员向第二边缘设备发送命令以关闭工业机器。

为了在传统应用中实现上述示例,需要实现至少五个单独的应用程序:用于第一边缘设备的一个程序;用于第二边缘设备的一个程序,用于第三边缘设备的一个程序,以及用于服务器计算机的两个程序。用于服务器计算机的第一程序可以处理来自第一,第二和第三边缘设备的数据,并且用于服务器计算机的第二程序可以是用于客户端设备的web应用。在使用传统编程方法的不同设备上实现该示例应用程序是复杂且不一致的过程。

例如,当在分布式异构系统的不同设备上执行的应用程序彼此通信时,应用程序需要非常小心的数据格式兼容性。在上述示例中,第一边缘设备的程序中的温度可以被表示为浮点数,并且通常需要被转换为要通过通信接口发送的字符(char)。然后,在接收温度的服务器计算机上执行的应用程序必须将字符转换回浮点数。当涉及多个分布式应用程序时,这种转换过程非常容易出错。此外,不同的设备可以使用不同的网络接口,例如以太网、WiFi、蜂窝、Zigbee等。因此,每个设备可能需要安装一个或多个网络设备驱动程序并使用一个或多个通信数据格式。在不同设备上执行的应用程序也可能需要实现不同的应用程序,并根据网络接口在不同的通信数据格式之间转换传输的数据。

在不同设备上执行的应用程序也可以用不同的编程语言来实现。在上述示例中,第一边缘设备可以执行在Python中实现的应用程序,第二边缘设备可以执行在Lua中实现的应用程序,第三边缘设备可以执行在C++中实现的应用程序,并且服务器计算机可以执行在Javascript中实现的应用程序。不同的编程语言优化了不同的性能参数,这使得使用这些不同的编程语言的实现非常复杂。此外,在不同设备上执行的不同应用程序被远程更新。例如,应用程序通常在可由开发团队访问的一个或多个计算机中开发,然后将所开发的程序以原始格式或以编译格式推送到相应的设备。在不同设备中存在的应用程序越多,更新过程越复杂。

由于这些挑战,为分布式异构系统实现应用程序是一个复杂、繁琐且容易出错的过程。通常需要多个开发工具、多个开发过程以及具有不同技能集的多个开发者来实现这些应用程序,这使得实现分布式异构系统成为昂贵且耗时的过程。

发明内容

根据本发明的一个实施例,计算机实现的方法设计分布式异构计算和控制系统,所述分布式异构计算和控制系统包括应用程序和硬件环境,并且在硬件环境中配置应用程序。该方法通过在计算机节点中与交互式显示器相关联地执行的设计软件指令来实现,以利用计算机进程建立交互式环境。计算机进程包括由计算机节点在交互式环境中提供对功能模块集和原语模块集的访问,其中上述模块中的任何一个可以由用户以图形形式选择。计算机进程还包括由计算机节点在交互式环境中接收对功能模块和原语模块中所需的模块的选择,并且以将分布式计算和控制系统表征为设备集的示意图的方式对所选择的模块进行排序。计算机进程还包括由计算机节点解析示意图以产生子示意图集,每个子示意图对应于分布式计算和控制系统中的设备集中的不同设备。计算机进程还包括由计算机节点向设备集发送子示意图集,以便根据示意图来表征每个设备。计算机进程还包括由计算机节点配置每个设备以通过在设备内运行的相应控制程序来执行子示意图。

可选地,计算机节点是独立的计算机。可替换地或附加地,计算机节点由网络环境中的客户端服务器组合来实现。可替换地或附加地,计算机进程包括由计算机节点通过网表来表征示意图,以及由计算机节点将示意图存储为网表。可替换地或附加地,计算机进程还包括由计算机节点通过检索和处理存储的网表来在交互式环境中呈现示意图的视图。可替换地或附加地,交互式环境包括设计画布的图形组件、库管理器的图形组件和菜单的图形组件,其中任何图形组件都可以由用户以图形方式选择。可替换地或附加地,计算机进程还包括由计算机节点在设计画布中显示从包括示意图、相应网表及其组合的组中选择出的成员。

可替换地或附加地,计算机进程还包括由计算机节点将唯一设备标识符(ID)分配给设备集中的每个设备。可替换地或附加地,计算机进程还包括由计算机节点将设备名称分配给设备集中的至少一个设备,其中设备名称可以由用户以图形方式来标注。

可替换地或附加地,接收对所述功能模块和所述原语模块中的期望的模块的选择使得创建对应于所述期望的模块的模块实例,并且以将所述分布式计算和控制系统表征为所述示意图的方式来对所述模块实例进行排序。可替换地或附加地,对所述模块实例进行排序包括:对于彼此通信的一对模块实例,配置所述一对模块实例之间的虚拟线以指示这种通信。可替换地或附加地,计算机进程还包括以下步骤:在所述计算机节点接收到将给定模块的图形表示拖放到所述交互式环境的所述设计画布中所显示的所述示意图的视图的输入之后,使得在所述示意图中创建并排序所述给定模块的模块实例。

可替换地或附加地,计算机进程还包括由所述计算机节点使用从包括以下项的组中以图形方式选择的组件来表征给定模块的模块实例:(i)属性表中的至少一个属性,(ii)图形表示,(iii)至少一个示意图,(iv)至少一个设备相关块,以及(iv)它们的组合。可替换地或附加地,所述属性表包含用于表征包括类型和版本的所述至少一个示意图的属性。可替换地或附加地,当所述给定模块是原语模块时,所述属性表包含与所述给定模块相关联的每个设备相关块的属性,其中,每个设备相关块的所述属性包括设备类型列表和版本。可替换地或附加地,所述属性表包含从包括以下项的组选择的、用于所述模块实例的用户可选择属性:(i)实例名称,(ii)用于实例化所述给定模块的实例类型,(iii)在其中执行所述模块实例的特定设备,(iv)至少一个实例参数,以及(v)它们的组合。可替换地或附加地,所述特定设备的至少一个属性被根据所述模块实例创建的每个子模块实例继承。

可替换地或附加地,计算机进程还包括由所述计算机节点将设备相关块与给定原语模块的模块实例相关联,其中计算机进程包括以下各项。计算机进程包括在用于所述模块实例的属性表中,定位与所述模块实例对应的设备属性,其中,所述设备属性针对所述设备集中的一个设备指定设备标识符ID。计算机进程还包括将所述设备ID映射到设备类型,并在所述给定模块的所述属性表中定位与所述设备类型相关联的所述设备相关块。计算机进程还包括在用于所述模块实例的属性表中,使用分配给所述设备相关块的名称自动更新与所述模块实例相对应的类型属性。可选地,通过用户选择所述类型属性来覆盖所述类型属性的自动更新。

可替换地或附加地,计算机进程还包括由计算机节点在交互式环境中显示:树形图,其包括表征所述示意图的模块实例的分层结构;以及正确选择的设备相关块的图形表示,其位于所述树形图下方并链接到所述树形图中的相应原语模块实例。可替换地或附加地,将所述子示意图集发送到所述设备集包括,对于具有原语模块实例的每个子示意图,将设备相关块发送到对应于所述子示意图的不同设备。可替换地或附加地,所述示意图具有组件,包括模块实例,并且所述计算机进程还包括:由所述计算机节点基于以下项的组合将不同的地址分配给所述示意图的给定组件:(i)设备的设备ID,(ii)定义要在所述示意图内按顺序遍历以到达所述给定组件的每个组件的名称的路径,以及(iii)所述给定组件的名称。可替换地或附加地,所述示意图具有组件,包括模块实例,并且所述计算机进程还包括:由所述计算机节点基于以下项的组合向给定模块实例分配不同的地址:(i)设备的设备ID,以及(ii)所述给定模块实例的ID;以及由所述计算机节点向不是模块实例的给定组件分配由以下项的组合定义的唯一地址:(i)设备的设备ID,(ii)包括所述给定组件的模块实例的ID,以及(iii)所述给定组件的名称。

可替换地或附加地,解析示意图包括如下。对于所述设备集中的每个设备,计算机进程还包括创建用于所述设备的子示意图。对于所述示意图的每个模块实例,计算机处理还包括将所述模块实例复制成子示意图,其中所述子示意图的设备对应于所述模块实例的设备ID。计算机进程还包括处理连接所述示意图中的第一模块实例和第二模块实例的虚拟线,其包括如下内容。计算机进程还包括当所述第一模块实例和所述第二模块实例都在给定的子示意图中时,在所述给定的子示意图中保留所述虚拟线。计算机进程还包括当所述虚拟线将(i)第一子示意图中的所述第一模块实例的输出引脚连接到(ii)第二子示意图中的所述第二模块实例的输入引脚时,在所述第一子示意图和所述第二子示意图之间创建通信连接。

可替换地或附加地,创建通信连接包括如下。计算机进程还包括在所述第一子示意图上添加第一通信模块实例,并在所述第一模块实例的输出引脚与所述第一通信模块实例的输入引脚之间添加虚拟线。计算机进程还包括向所述第二子示意图添加第二通信模块实例,并在所述第二通信模块实例的输出引脚与所述第二模块实例的输入引脚之间添加虚拟线。计算机进程还包括将所述第一通信模块实例中包括的目的地址设置为所述第二模块实例的输入引脚的地址。计算机进程还包括将包括在所述第二通信模块中的接收地址设置为所述第二模块实例的输入引脚的地址。可替换地或附加地,计算机进程还包括由所述计算机节点基于以下项的组合将不同的地址分配给所述目的地址和所述接收地址中的每一个:(i)设备的设备ID,(ii)定义要在所述示意图内按顺序遍历以到达目标引脚的每个组件的名称的路径,以及(iii)目标引脚的名称。可替换地或附加地,计算机进程还包括由所述计算机节点基于以下项的组合向所述目的地址和所述接收地址中的每一个分配不同的地址:(i)设备的设备ID,(ii)包括目标引脚的模块实例的ID,以及(iii)目标引脚的名称。可替换地或附加地,通信模块与多个功能示意图相关联,其中每个功能示意图实现不同的通信协议,并且其中交互式环境被配置用于(i)单独改变用于给定的通信模块实例的通信模块实例类型的用户选择和(ii)全局改变用于每个通信模块实例的通信模块实例类型的用户选择。

可替换地或附加地,计算机进程还包括由所述计算机节点建立中央通信代理,所述中央通信代理利用发布预订通信协议在第一通信模块实例和第二通信模块实例之间进行通信。所述发布预订通信协议被配置为接收通过所述中央通信代理预订第二通信模块实例的请求,其中所述请求包括指定所述第二通信模块实例的接收地址,以及所述接收地址为连接到所述第二通信模块的模块实例的输入引脚的地址。所述发布预订通信协议还被配置成将数据分组从第一通信模块实例传输到所述中央通信代理,其中所述数据分组包含从由包含以下项的组选择出的数据:数据有效载荷、目的地址、源地址及其组合,并且其中所述源地址是连接到所述第一通信模块实例的模块实例的输出引脚的地址,并且所述目的地址是预期的目的模块实例的输入引脚的地址。当所述数据分组中的所述目的地址与所述第二通信模块实例的所述接收地址匹配时,所述发布预订通信协议还被配置成使得所述中央通信代理将所述数据分组转发到所述第二通信模块实例。

可替换地或附加地,配置子示意图,所述子示意图被配置为使得包括发送路径和接收路径的通信模块实例在所述子示意图的多个模块实例之间共享,并且所述计算机进程还包括由所述计算机节点向所述设备集中的设备中的通信模块实例发送具有包括所述设备的标识符的目的地址的给定数据分组。所述通信模块实例被配置为通过所述接收路径接收具有包括所述设备的标识符的目的地址的任何数据分组,包括所述给定数据分组。所述通信模块实例还被配置为分析所述给定数据分组中的所述目的地址,并将所述给定数据分组转发到具有与所述目的地址对应的接收地址的子示意图的模块实例。

可替换地或附加地,计算机进程还包括由所述计算机节点使所述设备集中的设备执行加载到所述设备上的新示意图,其中,所述设备预加载有控制程序和初始化示意图,所述初始化示意图具有连接到系统模块实例的通信模块实例,其中所述通信模块实例的接收地址被设置为接收其中所述目的地址包括所述设备和所述系统模块的标识符的任何数据分组,如下。计算机进程还包括由所述计算机节点向所述设备发送数据分组,所述数据分组具有包含新的子示意图的数据有效载荷和包括所述设备和所述系统模块的标识符的目的地址,其中所述目的地址使得所述系统模块实例(i)接收所述数据分组,(ii)在所述设备上加载所述新的子示意图,以及(iii)请求所述控制程序执行所述新的子示意图。

可替换地或附加地,计算机进程还包括由所述计算机节点使设备执行示意图,并且其中所述设备被配置为预加载控制程序和初始化示意图。当所述设备上电时,所述设备还被配置为使得由所述控制程序执行所述初始化示意图。所述设备还被配置为使用所述初始示意图接收和加载新的子示意图。所述设备还被配置为接收重新加载命令,所述重新加载命令使得由所述控制程序执行所述新的子示意图。可替换地或附加地,对于子示意图中的每个原语模块实例,在所述设备中执行与所述原语模块实例相关联的设备相关块,其中,所述设备相关块由所述控制程序使用相关联的原语模块实例的类型模块实例属性来加载。

可替换地或附加地,计算机进程还包括由所述计算机节点执行将子示意图转换为二进制代码的编译器;以及由所述计算机节点向与所述示意图对应的低能力设备发送用于在所述设备上执行的所述二进制代码。可替换地或附加地,计算机进程还包括以下。计算机进程还包括由所述计算机节点在交互式环境中接收对可视化模块实例的选择,以进一步将所述分布式计算和控制系统表征为所述示意图。计算机进程还包括由所述计算机节点将所述示意图中的所述可视化模块实例的设备属性设置为表示仿真环境的值。计算机进程还包括由所述计算机节点解析所述示意图,以产生所述子示意图集,包括产生用于虚拟设备的子示意图。计算机进程还包括由所述计算机节点通过所述虚拟设备在所述仿真环境中执行所述子示意图。可替换地或附加地,所述可视化模块实例的所述设备属性被设置为至少一个设备的ID,并且所述计算机进程还包括使所述可视化模块被发送到所述至少一个设备以供执行。

可替换地或附加地,计算机过程还包括如下。计算机进程还包括由所述计算机节点在所述交互式环境中接收对模拟菜单选项的选择。对于所述示意图中的每个模块实例,计算机进程还包括由所述计算机节点将所述模块实例的设备属性设置为指示所述模块实例在仿真环境中执行的值。对于示意图中的每个模块实例,计算机进程还包括,当默认行为示意图与所述模块实例相关联时,将所述模块实例的类型属性设置为指示所述默认行为示意图的组件名称。计算机进程还包括解析所述示意图以仅产生用于虚拟装置的一个子示意图。计算机进程还包括由所述计算机节点通过所述虚拟设备在仿真环境中执行所述子示意图的每个模块实例。可替换地或附加地,用户能将模块实例的类型属性选择为与所述默认行为示意图的组件名称不同的值。

附图说明

通过参考以下参考附图的详细描述,将更容易理解实施例的上述特征,其中:

图1是根据本发明实施例的分布式异构计算和控制系统的框图,其中设计用于所述系统的应用程序。

图2是说明现有技术中设计用于分布式异构计算和控制系统的应用程序的方法的流程图。

图3是示出根据本发明实施例的设计用于分布式异构计算和控制系统的方法的流程图。

图4是用于执行根据本发明实施例的设计软件的系统的框图。

图5是根据本发明实施例的用于设计用于分布式异构计算和控制系统的应用程序的图形用户界面。

图6示出了根据本发明实施例的图5的图形用户界面中的示意性相应网表的显示。

图7是根据本发明实施例的模块组件的框图。

图8是根据本发明实施例的定义模块属性的属性表的框图。

图9是说明根据本发明实施例在不同类型的设备中执行示意图的框图。

图10是根据本发明实施例的定义模块属性的另一个属性表的框图。

图11是示出根据本发明实施例的兼容设备中的设备相关块的执行的框图。

图12是根据本发明实施例的模块的图形表示的框图。

图13是根据本发明实施例的示意框图。

图14是表示根据本发明实施例的定义模块实例的属性的属性表的图形用户界面。

图15是表示根据本发明实施例的示意图的分层结构的树形图。

图16是示出根据本发明实施例的利用示意图来设计用于分布式异构计算和控制系统的应用的方法35的流程图。

图17是根据本发明实施例从图13的示意图解析的子示意图的框图。

图18是示出根据本发明实施例的将示意图解析成子示意图的方法的流程图。

图19是示出根据本发明实施例的用于寻址示意图的组件的逻辑流程的框图。

图20是示出根据本发明实施例的当将示意图解析成子示意图时使用的寻址方法的框图。

图21是根据本发明实施例的通信模块的组件的框图。

图22是示出根据本发明实施例的使用发布/预订协议传送数据的方法的流程图。

图23是示出根据本发明实施例的替换模块实例之间的虚拟线的逻辑流程的框图。

图24是示出根据本发明实施例的更新用于在设备中执行的子示意图的方法的流程图。

图25是根据本发明实施例的初始化示意图的框图。

图26是示出根据本发明实施例的实例化的系统模块的框图。

图27是示出根据本发明实施例的在设备中执行控制程序的方法的流程图。

图28是示出根据本发明实施例的为低能力设备提供可执行代码的方法的流程图。

图29是根据本发明实施例的包括为分布式异构系统提供可视化数据的模块实例的示意图的框图。

图30是根据本发明实施例的用于执行数据可视化的子示意图的框图。

图31是示出根据本发明实施例的通过虚拟设备更新用于在仿真环境中执行的示意图的方法的流程图。

具体实施方式

定义:如本说明书和所附权利要求书中所使用的,除非上下文另外要求,否则以下术语应具有所指示的含义:

“集”包括至少一个构件。

如果系统包括在物理上不同位置中的多个节点,且该系统通过网络彼此通信,则该系统是“分布式的”。

如果系统中的一个或多个设备由于硬件配置或软件配置的不同而需要不同的应用程序代码,则系统是“异构的”。

“应用程序”是设备或系统需要完成的任务或任务集。

“应用程序代码”块是为软件应用程序编写的、在一个或多个设备中运行的软件程序代码块。

“设备”是硬件项目的实例,并且不仅包括硬件配置,还包括与硬件相关联的任何软件环境。

“真实设备”是物理上不同的设备。

“虚拟设备”是在操作上不同的设备。

“通信网络”或“网络”是用于将分布式设备连接在一起的介质。它可以是因特网、或诸如工业以太网之类的特殊网络协议、或多个网络协议的组合。它可以是有线的、无线的、或有线和无线的组合。

“服务器”是用于运行软件程序的计算机。它可以是本地的,也可以是云中的。

“数据库”是存储和电子访问的数据的有组织的集合。

“客户端设备”是人用来与软件程序交互的设备。它可以是计算机或移动设备,例如智能电话。

“边缘计算机”或“边缘设备”是具有多个I/O连接端子的计算机或微控制器设备,并且用于连接到各种传感器、开关、音频/视频设备、装置或测量设备,并且可以与这些设备单向或双向通信。

“开发者”是为系统设计应用程序的人。

“设计软件”是使得用户能够设计和管理系统的应用程序的软件程序。在本发明中,“设计软件”是指用于设计分布式异构计算和控制系统的应用的软件程序实施例。

“用户”是使用设计软件来设计或管理系统的应用程序的人。

“示意图”是特定功能的虚拟化图形表示,并且与硬件环境和软件配置无关。虚拟化可以是分层的。

“功能示意图”是被配置成执行特定应用功能的示意图,并且与硬件环境和软件配置无关。

“行为示意图”是被配置为对“功能示意图”建模的示意图,诸如简化模型或统计模型。

“系统示意图”是表示整个分布式异构计算和控制系统的应用的设计软件中实现的示意图。系统示意图是分层的,并且包括所有分层结构中的所有元素。

“子示意图”是从系统示意图解析的示意图,以表示特定的真实或虚拟设备在分布式异构计算和控制系统中的应用。附加模块和其它元件可以被添加到子示意图中以完成或增强功能。

“网表”是示意图的文本表示。网表及其相应的示意图在功能上是等同的。

“模块”或“设计模块”是包含一个或多个以下组件的结构:属性表,符号,功能示意图,行为示意图和"设备相关"块。

“模块符号”是模块的块形状表示。它用于示意图中。

“模块实例”是模块在示意图中的实例化。它在示意图中作为模块符号出现,并且它被实例化为相应模块的示意组件或设备相关块组件。示意图可以包含来自同一模块的多个模块实例。

“设备相关”块是为设备编写的应用代码块,其中代码的结构和内容取决于从由设备的硬件环境、代码的软件环境以及它们的组合组成的组中选择的成员的配置,并且对于不同类型的设备通常是不同的。

“功能模块实例”或“功能模块”是实例化为功能示意图的模块实例。

“行为模块实例”或“行为模块”是实例化为行为示意图的模块实例。

“原语模块实例”或“原语模块”或“原语”是实例化为设备相关块的模块实例。

模块的“引脚”表示模块的输入、输出或双向端口。它是可以连接外部信号的地方。模块可以具有多个引脚,这些引脚通常在示意图和符号中被画成小正方形或其它形状。

“虚拟线”表示两个模块之间的连接。它指示数据从第一模块的输出引脚流入第二模块的输入引脚。虚拟线也可以是多段连接多个模块。

示意图的“元件”是指示意图内的任何单独的实体。这可以包括属性、引脚、实例符号、虚拟线、参数等。

示意图中的元件的“地址”是该元件的唯一标识符。

“设备类型”是物理或虚拟设备类型的标识符。每个“设备相关的”块与一个或多个设备类型相联系,以指示兼容性。

“设备ID”或“设备_id”是系统中设备的唯一标识符。

“模块ID”或“module_id”是用于示意图内的模块实例的唯一标识符。模块实例的“模块ID”不需要与模块实例的“地址”相同。

“解析”是从系统示意图中提取子示意图的过程。在该过程中,可以将附加的模块和其它元件添加到子示意图中。

“通信模块”或“通信模块”是这样的模块,其主要功能是通过网络将数据从其输入引脚发送到远程目的地,或者通过网络从远程目的地接收数据,并将该数据传送到其输出引脚。注意,通信模块也可以单独实现为发送模块和接收模块。

“通信代理”是管理网络上的多个设备之间的双向通信的软件程序。每个设备都向通信代理预订一个或多个消息主题。每个设备可以向通信代理发送数据有效载荷加上消息主题,并且通信代理将数据有效载荷转发到预订所述消息主题的设备。

“初始示意图”是预加载到设备中并由控制程序执行的示意图。其功能包括但不限于子示意更新和系统命令执行。

“系统模块”是其功能包括但不限于子示意图更新和系统命令执行的模块。

“控制程序”是在能够加载和执行子示意图和初始示意图的设备中运行的软件程序。对于不同的设备或甚至相同的设备,可以存在控制程序的不同实现。

“编译器”是将程序代码转换为要在预期设备上执行的机器代码或低级代码的软件程序。

“图表”是在其输入引脚上生成数据图的模块。数据可以沿示意窗口或在不同的窗口中绘制。该图可以被选择为时间序列图、直方图、饼图等。

“探针”是打印到达其输入引脚的数据的模块。数据可以被打印在示意窗口内、另一个窗口中、或者被打印到文件中。

“计算机进程”是在使用计算机硬件(例如处理器,现场可编程门阵列或其它电子组合逻辑,或类似设备)的计算机中所描述的功能的性能,其可以在软件、或固件、或其组合的控制下操作,或者在任何前述的控制之外操作。所述功能的全部或部分可以由有源或无源电子元件执行,例如晶体管或电阻器。在使用术语“计算机进程”时,我们不必要求可调度实体,或计算机程序或其一部分的操作,尽管在一些实施例中,计算机进程可以由这样的可调度实体,或计算机程序或其一部分的操作来实现。此外,除非上下文另有要求,否则可以使用多于一个处理器或多于一个(单处理器或多处理器)计算机来实现“晋程。

本发明的实施例提供了一种用于设计在分布式异构系统中执行的应用程序的系统和方法。在这些实施例中,用户不需要关心系统的分布式或异构特性。相反,用户可以实现限定要在分布式异构系统中执行的应用程序的系统示意图,并且系统示意图被解析成在分布式异构系统的相应设备中执行的子示意图。这使得用户能够实现用于系统的应用程序,其中集中于设备之间的数据处理和数据流,这是实现这种应用程序关键,而不是集中于复杂的问题,例如通信、数据转换、远程更新等。

图1是根据本发明实施例的分布式异构计算和控制系统10的框图,其中设计用于所述系统的应用程序。系统10包括通过通信网络14通信地联接到客户端设备17的集中式服务器16、边缘计算机11、12、13和数据库15。设备11、12、13、15、16、17中的每一个可以是物理设备或虚拟设备,并且设备11、12、13、15、16、17中的一些或全部可以是异构的(具有变化的设备类型、设备应用等)。通信网络14可以配置有一种或多种类型的网络设备和一种或多种网络协议。在一个示例实施例中,系统10是配置有所有相同设备类型的设备的专用情况分布式计算和控制系统。

在一些实施例中,作为分布式系统,系统10执行跨集中式服务器16,客户端设备17,边缘计算机11、12、13和数据库15实现的应用,并且需要这些设备之间的协调。例如,系统10可以执行用于监视需要设备11、12、13、15、16、17之间的协调的工业机器的应用。为了执行该应用,在每个边缘计算机11、12、13中实现应用代码,以从工业机器的不同传感器获取读数,并且当读数高于该传感器的阈值时向集中式服务器16发送警报。在边缘计算机11、12、13中实现的应用代码可以从数据库15访问传感器的阈值。应用程序代码也在集中式服务器16中实现,以接收和协调来自每个边缘计算机11、12、13的警报,并确定工业机器的错误状况。集中式服务器16的应用程序代码还向客户端设备17发送错误状况,并且在客户端设备17上实现的应用程序代码接收并向工业机器的操作员呈现错误状况。

作为异构系统,边缘计算机11、12、13中的每一个可以具有不同的硬件配置、软件配置、操作系统、编程方法、开发工具等。例如,边缘计算机1 11可以是低容量微控制器(MCU),并且边缘计算机2 12可以是运行Linux操作系统的单板计算机。对于另一个示例,边缘计算机2和边缘计算机3 13可以具有相同的硬件配置,但边缘计算机2 12可以用C编程语言实现应用,而边缘计算机3 13可以用Python编程语言实现应用。通常,系统10的设备11、12、13、15、16、17之间的硬件配置、软件配置等的差异要求在设计要跨设备11、12、13、15、16、17实现的应用时使用不同的编程语言、软件开发工具等,这导致应用中的、用于在不同设备上执行相同应用功能的不同代码结构。如本领域普通技术人员所知,通常,不能以单个编程语言或软件开发工具来设计异构系统。

在本发明的实施例中,用户通过定义应用程序功能的系统示意图来设计要跨系统10的设备11、12、13、15、16、17实现的应用程序,所述应用程序功能被解析成用于设备11、12、13、15、16、17中的每一个的子示意图。在一些实施例中,通过为相应设备实现的控制程序在相应设备11、12、13、15、16、17中加载和执行每个子示意图。在其它实施例中,将每个子示意图编译成在相应设备中加载和执行的二进制代码。

图2是示出现有技术中设计用于分布式异构计算和控制系统的应用的方法20的流程图。在方法20的第一进程21中,开发者通过实现多个单独的应用程序代码程序来设计应用程序,其中每个应用程序代码程序对应于系统中的特定设备类型、特定设备应用程序等。应用程序代码程序的实现通常需要不同的编程语言、开发工具和开发框架,这使得设计复杂且具有挑战性。由于存在多个应用程序代码程序,在第二进程22中,开发者必须实现每个应用程序代码程序以协调系统中不同设备所使用的通信协议和数据通信格式,这是容易出错的进程。在第三进程23中,开发者将应用程序代码程序存储在单独的文件或存储库中。在第四进程24中,开发者实现单独的程序更新过程,以将每个应用程序代码程序分发到系统中的一个或多个设备,所述系统具有与应用程序代码程序相对应的设备类型、设备应用程序等。

图3是示出根据本发明实施例的设计用于分布式异构计算和控制系统的应用的方法30的流程图。在方法30的第一进程31中,用户通过在设计软件中实现系统示意图来设计应用程序,所述系统示意图是用于跨分布式异构计算和控制系统执行的应用程序的示意图。用户可以通过被配置为与设计软件通信的用户接口来实现系统示意图。系统示意图的使用消除了通过多个编程语言、开发工具和开发框架来实现单独的应用程序代码程序以设计应用程序。

在第二进程32中,用户在设计软件中跨分布式异构计算和控制系统部署系统示意图。系统示意图被部署为子示意图集,使得每个子示意图对应于该组设备中的一个或多个设备,且系统示意图被发送到这些设备。在第三进程33中,设计软件通过所部署的子示意图来处理通信协议、数据通信格式和硬件相关性。在第四进程34中,设计软件管理设备中的子示意图在分布式异构计算和控制系统上的分布和同步。

图4是根据本发明实施例的用于执行设计软件的系统40的框图。系统40也被称为计算机节点。图4的系统40是网络环境中的客户端-服务器组合,其包括通过网络43通信地联接到客户端设备42的服务器44。客户端设备42由用户41操作。设计软件与图形用户界面相关联,服务器44在客户端设备42上向用户41显示该图形用户界面。客户端设备42可以是执行web浏览器或本地软件程序的计算机、执行app的移动设备等。在其它实施例中,系统可以是独立的计算机。

服务器44执行设计软件以对用于分布式异构计算和控制系统的应用程序的系统示意图进行实现、分配、部署和执行。用户可以通过客户端设备42上的图形用户界面向设计软件提供输入。服务器44可以全部或部分地存储设计软件。在客户端设备42是web浏览器的实施例中,服务器44存储完整的设计软件并通过网络43将设计软件的部分提供给客户端设备42。在客户端设备42是本地软件程序或app的实施例中,服务器44存储设计软件的一部分,而客户端设备42存储设计软件的其余部分。在其它实施例中,完全设计软件存储在客户端设备上而不连接到服务器。

图5是根据本发明实施例的用于设计分布式异构计算和控制系统的应用程序的图形用户界面50。在本发明的实施例中,用户通过设计代表应用程序功能的示意图来设计分布式异构系统的应用。图形用户界面50向用户提供用于设计和部署示意图的交互式环境。图形用户界面50包括但不限于以下组件:设计画布52、库管理器子面板54和菜单栏56。在设计画布52中,用户形成分布式异构系统的示意图。可以将形成的系统示意图保存在库中作为用于设计未来示意图的新模块。在设计画布52中,可以同时打开多个示意图标签来设计多个示意图。

库管理器子面板54显示在库中经分组的设计模块(例如,功能模块、原语模块、行为模块等)。每个库都是按一个库名分组的模块集。用户可以从库管理器中选择要打开或放置在设计画布中的模块。例如,用户可以从库管理器子面板54拖动模块,并将模块放到设计画布52中。模块的这种选择可以创建模块的实例。用户可以在设计画布52内定购和构造所创建的模块实例,以设计分布式异构系统的示意图。菜单栏56由多个菜单选项和下拉菜单组成,其提供用于设计、模拟和部署示意图的用户选项。

图6示出了根据本发明实施例的图形用户界面60中的示意图62和相应网表64的显示。示意图62中的图形表示的应用功能和设备可以包括跨分布式异构系统执行的应用程序。示意图62在功能上等同于相应的基于文本的网表64。在图6中,针对示意图62中的“云逻辑”模块实例显示网表64的一部分,其示出了该模块实例的参数,包括标识符、名称、类型、设计画布中的坐标、以及将该模块实例连接到其它模块实例的虚拟线的标识符。在一个实施例中,示意图作为网表64存储在存储器中,并且设计软件将所存储的网表64呈现为显示在图形用户界面60中的示意图62的形式。通过图形用户界面60,用户可以可视化和编辑示意图62或网表64中的一个或两个。当编辑示意图62或网表64之一时,设计软件根据编辑自动更新另一个。

与图形用户界面相关联的设计软件在本领域中是已知的。然而,现有的设计软件不支持分布式异构系统的设计。大多数现有的设计软件在同一台计算机中运行和执行设计。根据本发明的设计软件将设计(例如,作为示意图)解析为组件(例如,子示意图)、将组件传输到分布式异构设备集,并执行这些分布式异构设备中的组件。

图7是根据本发明实施例的模块组件70的框图。模块是包括分布式异构系统的一个或多个应用功能的单元。模块可以被实例化为在系统示意图中放置和排序的模块实例。如图7所示,模块的组件包括属性表71、图形表示(也称为模块符号)72,示意图73、74和设备相关块75、76(在原语模块或原语模块实例的情况下)。该示意图可以是功能示意图,行为示意图等。模块可以包括其它类型的组件,但不限于此。

图8是根据本发明实施例的定义模块属性的属性表80的框图。属性表80包括模块名称,模块库和组件属性的模块属性。属性表80用于模块“模块1”。在属性表80中,模块属性名称被设置为“模块1”,并且库被设置为“库2”以指示“模块1”被存储在名为“库2”的库中。属性表80的组件属性包括包含在“模块1”中的两个示意图。第一示意图被命名为“示意图”,具有被设置为“功能”的类型属性,这表明第一示意图是功能示意图,并且具有被设置为“2.1”的版本属性。第二示意图被命名为“示意图2”,具有被设置为“行为”的类型属性,其指示第二示意图是行为示意图,并且具有被设置为“1.0”的版本属性。

图9是说明根据本发明实施例的不同类型的设备中的执行90示意图的框图。在本发明的实施例中的示意图(例如,功能示意图和行为示意图)是独立于设备的,这意味着可以在不同类型的设备中执行相同的示意图。图9示出了称为“模块1”的模块实例,其包含示意图92。图9还示出了分布式异构系统,其包括三个异构设备93、94、95,它们各自是不同类型的设备。具体而言,设备1 93是“MCU1”类型,设备2 94是“PEC1”类型,而设备3是“PEC2”类型。由于示意图92是独立于设备的,因此即使设备各自是不同类型的设备,它也可以在异构设备93、94、95中的每一个上被加载和执行。

执行控制程序以在执行示意图的每个设备上运行。具体而言,控制程序1在设备193上实现,控制程序2在设备2 94上实现,并且控制程序3在设备3 95上实现。为了与不同类型的设备93、94、95兼容,可以用不同的编程语言、不同的开发工具、在不同的硬件体系结构中等等实现每个控制程序。尽管控制程序基于它们的设备类型具有不同的实现,但是每一个都能够执行相同的示意图92(而不是为每个设备93、94、95要求不同的示意图)。

图10是根据本发明实施例的定义模块属性的属性表100的框图。属性表100包括模块名称、模块库和组件属性的模块属性。属性表80用于模块“模块2”,它是一个原语模块。在属性表100中,模块属性名称被设置为“模块2”,并且模块属性库被设置为“库2”,以指示“模块2”被存储在名为“库2”的库中。属性表80的组件属性包括包含在“模块2”中的两个设备相关块。第一设备相关块被命名为“dependenent”,具有被设置为“PEC1”和“PEC2”的设备类型属性,并且具有被设置为“3.4”的版本属性。该设备类型属性设置指示设备相关块“dependenent”与两种类型的设备“PEC1”和“PEC2”兼容。第二设备相关块被命名为“dependenent2”,具有被设置为“MCU1”的设备类型属性,并且具有被设置为“2.7”的版本属性。该设备类型属性设置指示相关块“相关2”与一种类型的设备“MCU1”兼容。

如图10所示,诸如“模块2”的模块可以包含与一种或多种类型的设备兼容的多个设备相关块。在一些实施例中,模块中的不同设备相关块执行相同的应用功能,但是在不同设备的情况中。在其它实施例中,模块中的一些或所有设备相关块在不同设备的情况下执行不同的应用功能。

图11是示出根据本发明实施例的在兼容设备114、115、116中执行设备相关块112、113的框图。根据其名称,设备相关块是设备相关的,这意味着设备相关块仅在与设备相关块兼容的设备类型中执行。如图10所示,设备相关块具有被设置为与设备相关块兼容的设备类型的设备类型属性。图11示出了名为“模块2”的模块111,其包含设备相关块“dependent”112和“dependent 2”113。如图10所示,设备相关块“dependent”112与设备类型“PEC1”和“PEC2”兼容,并且设备相关块“dependent 2”113与设备类型“MCU1”兼容。

图11还示出了分布式异构系统,其包括三个异构设备114、115、116,它们各自是不同类型的设备。具体地,设备1 114是类型“MCU1”,设备2 115是类型“PEC1”,并且设备3 116是类型“PEC2”。由于设备相关块“dependent”只与设备类型“PEC1”和“PEC2”兼容,因此它只能在设备2 115和设备3 116上加载和执行。此外,由于设备相关块“dependenent2”仅与设备类型“MCU1”兼容,因此它仅能在设备1 114上加载和执行。这样,为了在这些设备114、115、116中使用模块实例“模块2”111,设备相关块“dependent”被选择用于在设备2 115和设备3 116上加载,并且块“dependent 2”被选择用于在设备1 114上加载。注意,设备相关块“dependent”将不会在设备1 114中正确执行,并且设备相关块“dependent 2”将不会在设备2 115和设备3 116中正确执行。

执行控制程序以在执行兼容的设备相关块的每个设备上运行。具体地,控制程序1在设备1 114上实现,控制程序2在设备2 115上实现,并且控制程序3在设备3 116上实现。为了与不同类型的设备114、115、116兼容,可以用不同的编程语言、使用不同的开发工具在不同的硬件体系结构中等实现每个控制程序。

图12是根据本发明实施例的模块的图形表示的框图。该相同的图形表示可以用于模块和模块的实例。图形表示(也称为模块符号)是矩形块,其具有位于边缘处的正方形输入引脚和输出引脚。在其它实施例中,图形表示和引脚可以呈现为其它形状。

图13是根据本发明实施例的示意图130的框图。该示意图130是表示分布式异构计算和控制系统10的系统示意图。示意图130包括多个模块符号,每个模块符号以图形方式表示模块的实例。给定模块的模块符号可以在示意图中多次使用,使得每次使用都是给定模块的实例或实例。模块实例通过虚拟线彼此连接,代表模块实例之间的数据流和通信。例如,示意图130是系统示意图,其包括数据库模块实例135、仪表板模块实例136、云逻辑模块实例134、边缘逻辑1模块实例131、边缘逻辑2模块实例132和边缘逻辑3模块实例133,它们各自作为模块符号呈现。模块实例131、132、33、134、135、136被分层地构造以定义将在分布式异构计算和控制系统中执行的应用功能。示意图130包括在模块实例对之间的虚拟线,例如在云逻辑模块实例134和边缘逻辑1模块实例131之间,以表示该对之间的数据流或通信。

图14是呈现属性表140的图形用户界面,属性表140定义根据本发明实施例的模块实例的属性141、142、143、144。模块的每个实例具有定义实例属性的对应属性表140。在一个实施例中,如图14所示,模块实例属性表被实现为显示在图形用户界面中的弹出窗口。图形用户界面使用户能够修改模块实例的、属性表140中的属性和参数。图形用户界面还使用户能够向属性表140添加定制属性和参数。属性表140包括模块实例“云逻辑”的模块实例属性:名称141、类型142、设备143和参数144。在属性表140中,模块实例属性名称141被设置为“云逻辑”,而模块实例属性类型142被设置为“库2/模块1/示意图”。

类型属性定义了在创建模块实例时使用的从父模块中选择的实例化类型。例如,父模块可以包含诸如功能示意图、行为示意图和设备相关块的组件(如图8中的“模块1”和图10中的模块2所示)。模块实例类型属性可以由用户从父模块的组件中选择,以定义模块实例的实例化类型。在图14中,模块实例“云逻辑”是从图8的父模块“模块1”实例化的,并且其属性类型142包括位于“库2”中的一个被称为“示意图”的示意图。因此,模块实例“云逻辑”的类型属性被设置为“库2/模块1/示意图”。当为模块实例设置的类型是功能示意图时,如图14所示,模块实例被配置为功能模块实例。当为模块实例设置的类型是行为示意图时,模块实例被配置为行为模块实例。当为模块实例设置的类型是设备相关块时,模块实例被配置为原语模块实例(也简称为“原语”)。

功能模块实例实例化到类型属性142中的功能示意图集,其可以是系统示意图。诸如系统示意图的示意图可以包含多个功能模块实例,每个功能模块实例可以包含一个或多个功能示意图。这样,实例化到系统示意图的模块实例可以包含功能示意图的分层结构(层次结构)。原语模块实例实例化到设备相关块,其不具有这样的分层结构。注意,如在本发明的实施例的上下文中所提及的“分层”或“分层结构”意指关于模块实例的设计分层,而不是设备相关块内的分层代码结构(如在本发明的一些实施例中使用的)。系统示意图的最低层级终止原语模块实例中的所有模块实例路径。

在属性表140中,模块实例属性设备143被设置为“服务器5”,指示要在其中执行模块实例的设备。设计软件在解析系统示意图期间使用设备属性来确定要发送模块实例的目标设备(并将模块实例分配给该设备的相关子示意图)。在一些实施例中,模块实例的设备属性在实例化时从其父模块继承,使得默认情况下,模块实例具有与其父模块相同的设备属性。在这些实施例中,用户可以通过图形用户界面手动设置模块实例的设备属性来覆盖默认设置。

在属性表140中,模块实例属性参数被设置为用于模块属性两个参数“噪声”和“pi”。参数“噪声”被设置为默认值“2.5”,而参数“pi”被设置为模块实例“云逻辑”的默认值“3.14”。用户可以通过图形用户界面手动设置参数的值来改变默认值。

图15是表示根据本发明实施例的系统示意图151的分层结构的树形图150。如图15所示,系统示意图151是模块实例的分层结构,其包含模式、功能模块实例和原语模块实例,而没有与设备相关的块。树形图150中的这种结构使得系统示意图151与设备无关。在该结构中所标识的顶层示意图是在系统示意图151的顶层分层结构处的示意图。顶层示意图包含三个模块实例:F1,其是用于在“设备1”中执行的功能模块实例;F2,其是用于在“设备2”中执行的功能模块实例;以及P1,其是用于在“设备3”中执行的原语模块实例。“设备1”、“设备2”和“设备3”都是不同的设备。

在分层结构的第二层,功能模块实例F1包含两个模块实例:P2,它是一个原语模块实例,以及F4,它是一个功能模块实例。功能模块实例F2包含两个模块实例:P2和P4,它们都是原语模块实例。注意,原语模块实例P2在功能模块F1和F2中。在分级结构的第三层,功能模块实例F4包含单个原语模块实例P3。P1、P2、P3和P4是叶模块实例,它不具有任何子模块实例。由于模块实例P2、F4和P3都是模块实例F1的子模块实例,因此它们各自继承F1的设备属性“Device1”。由于模块实例P2和P4都是模块实例F2的子模块实例,因此它们各自继承F2的设备属性“设备2”。用户可以通过在对应于这些模块实例的实例属性表中手动选择设备属性来覆盖P2、F4、P3、P4的设备属性。

在系统示意图151的结构中,每个分层路径终止于与设备相关块相关联的原语模块实例(叶模块实例P1、P2、P3和P4),如152所示。也就是说,P1与设备相关块D1.3相关联,P2与设备相关块D2.1和D2.2相关联,P3与设备相关块D3.1相关联,P4与设备相关块D4.2相关联。在实施例中,必须为每个原语模块实例配置设备相关块。注意,在系统示意图151中,原语模块实例P2被使用两次,一次在功能模块实例F1中,一次在功能模块实例F2中。当F1和F2分别在不同类型的设备(即设备1和设备2)中执行时,必须在P2中包含两个不同的设备相关块(即D2.1和D2.2)。当在“设备1”加载F1时,用于设备1的设备类型的设备相关块D2.1也被加载到设备1中。当在“设备2”加载F2时,用于设备2的设备类型的设备相关块D2.2也被加载到“设备2”中。

即使系统示意图151是设备无关的(即,设备相关块不包括在系统示意图151的分层结构中,如152所示),设计软件和设备都具有足够的环境来定位用于分布式异构计算和控制系统中的设备的正确的设备相关块。分布式异构系统中的每个设备由执行设计软件的计算机节点分配唯一标识符(ID),并且还可以分配相应的设备名称(其可以由用户通过图形界面以图形方式来标注)。基于针对其属性表中的每个模块实例指定的设备属性来进行设备相关块的正确选择。设备属性包含设备的设备ID或设备名称。当在设备属性中指定设备名称时,设计软件可以定位相应的设备ID。使用设备ID,设计软件可以查找对应于该设备ID的设备类型。当找到设备类型时,设计软件可以定位对应于该设备类型的设备相关块。

在本发明的一些实施例中,当包括在系统示意图151中的模块实例与设备相关联时,用于该设备的设备相关块被预加载在该设备中。在一些实施例中,当包括在系统示意图中的模块实例与设备相关联时,设计软件将相应的设备相关块发送到设备。

图16是示出根据本发明实施例的利用示意图来设计用于分布式异构计算和控制系统的应用程序的方法160的流程图。用户使用设计软件指令来实现系统的示意图以为用户建立交互式环境,所述设计软件指令在计算机节点中执行,并且用户可以通过相关联的用户接口访问。通过实现系统示意图,用户在硬件环境中设计应用程序,使得系统的每个设备的硬件在系统示意图中得以表示。

为了实现系统示意图,在方法160的第一进程161中,计算机节点执行设计软件以实现系统示意图。为此,计算机节点在交互式环境中向用户提供对功能模块集和原语模块集的访问,以定义系统示意图。功能模块集包括一个或多个功能示意图。每个功能示意图是应用程序功能的图形表示,并且独立于硬件环境和软件配置。原语模块集包括一个或多个设备相关块。每个设备相关块是针对分布式异构计算和控制系统的特定设备编写的应用程序代码,其中代码的结构和内容取决于从由设备的硬件环境、代码的软件环境以及它们的组合组成的组中选择的成员的配置,并且对于不同类型的设备通常是不同的。

特定类型的示意图也存在于被称为行为示意图的实施例中。行为示意图通常是功能示意图或设备相关块的模型,例如简化模型或统计模块。与功能示意图不同,行为示意图被用于模拟环境中,而不是用于在分布式异构系统的物理设备上执行。仿真环境通常在设计软件中执行,用于理解与分布式异构系统相关联的问题,例如统计变化、极端情况和特殊输入条件。还可以向用户提供对包括一个或多个行为示意图的行为模块集的访问。还可以向用户提供对在实现系统示意图中使用的其它组件的访问。任何模块和组件都可以由用户通过交互式环境进行图形选择。

在交互式环境中,计算机节点接收对功能模块、原语模块中所需的模块的选择和命令它们来实现系统示意图的输入。计算机节点还可以在交互式环境中接收对期望的行为模块的选择和命令它们来实现系统示意图的输入。在一些实施例中,对所需模块的选择创建相应功能模块和原语模块的模块实例,并且输入可以命令模块实例来实现系统示意图。在交互式环境中,计算机节点还可以接收对虚拟线的选择,以及用于对系统示意图中的、位于系统中彼此通信的一对模块(或模块实例)之间的虚拟线进行配置的输入。

在第二进程162中,计算机节点解析系统示意图以产生子示意图集,使得每个子示意图对应于分布式异构计算和控制系统中的设备集中的设备。在第三过程163中,计算机节点将每个子示意图发送到其相应的设备,使得该设备可以执行在子示意图中分配给该设备的经设计的应用程序的应用程序功能。在第四过程164中,计算机节点配置每个设备以通过在设备内部运行的相应控制程序来执行其相应的子示意图。

图17是根据本发明实施例从图13的系统示意图130解析的子示意图的框图。一旦设计了系统示意图,例如系统示意图130,就必须将系统示意图解析成子示意图。每个解析的子示意图是针对特定分布式异构设备的系统示意图的一部分。设计软件将子示意图发送到它们的分布式异构设备,其中通过在相应设备中运行的控制程序来执行子示意图。

图17示出了对应于系统示意图130的示例性解析的子示意图。图13的模块实例与分布式异构系统中的四个设备相关联:服务器、边缘计算机1、边缘计算机2和边缘计算机3。针对四个设备中的每一个,从系统示意图中解析出子示意图。也就是说,从系统示意图解析子示意图171用于服务器,从系统示意图解析子示意图172用于边缘计算机1,从系统示意图解析子示意图173用于边缘计算机2,从系统示意图解析子示意图174用于边缘计算机3。

在解析期间,系统示意图130中的模块实例被分配给与要执行这些模块实例的设备相关联的子示意图。具体而言,模块实例数据库、仪表板和云逻辑被分配给设备服务器的子示意图171。注意,在其它实施例中,“数据库”和“仪表板”的模块实例可以不在与“云逻辑”相同的服务器设备中执行。此外,模块实例边缘逻辑1被分配给设备边缘计算机1的子示意图172,模块实例边缘逻辑2被分配给设备边缘计算机2的子示意图173,并且模块实例边缘逻辑3被分配给设备边缘计算机3的子示意图174。如果虚拟线存在于系统示意图130中的一对模块实例之间,但是该对的每个模块实例被解析成两个单独的子示意图,则虚拟线在两个子示意图中的每一个中被替换为通信模块实例。所述通信模块实例被配置为提供两个单独的子示意图之间的通信和数据流。例如,在系统示意图130中,云逻辑通过虚拟线连接到边缘逻辑1。云逻辑连同通信模块一起被解析成子示意图171,边缘逻辑1连同通信模块一起被解析成子示意图172。子示意图171和172中的通信模块被配置成便于子示意图171和172之间的通信和数据流。

图18是示出根据本发明实施例的将示意图解析成子示意图的方法180的流程图。如图17所示,解析过程包括两个单独的过程:解析模块实例和解析虚拟线。在方法180的第一进程181中,执行设计软件的计算机节点将示意图中的模块实例解析成子示意图。在该第一进程181中,计算机节点基于模块实例的设备属性将模块实例解析成子示意图。针对分布式异构系统中的特定设备配置每个子示意图。每个模块实例包含被设置为唯一设备标识符(ID)的设备属性,该唯一设备标识符(ID)指示与该模块实例相关联的设备。与同一设备相关联的每个模块实例被解析为该设备的同一子示意图。该过程适用于系统示意图的所有层级上的所有模块实例。

在第二进程182中,计算机节点解析系统示意图中的每个虚拟线。在解析虚拟线时,检查系统示意图中的每个虚拟线。如果虚拟线连接具有相同设备属性的两个模块实例(即,两个模块实例被解析成相同的子示意图),则在第三进程183中,计算机节点在子示意图中的两个模块实例之间的位置处保留虚拟线。如果虚拟线连接具有不同设备属性的两个模块实例(即,两个模块实例被解析成单独的子示意图),则在第四进程184中,计算机节点将通信模块实例添加到每个单独的子示意图。然后,每个模块实例被连接到被添加到其相应的子示意图的通信模块实例。也就是说,虚拟线将系统示意图中的第一模块实例的输出连接到第二模块实例的输入。第一模块实例被解析成第一子示意图,第二模块实例被解析成第二子示意图。在第一子示意图中创建第一通信模块实例,并且从第一模块实例的输出到第一通信模块实例的输入添加虚拟线。在第二子示意图中创建第二通信模块实例,并且从第二通信模块实例的输出到第二模块实例的输入添加虚拟线。

在第四进程185中,计算机节点将连接到第一模块实例的第一通信模块实例的目的地址设置为第二模块实例的地址。在第五进程186中,计算机节点将连接到第二模块实例的第二通信模块实例的接收地址设置为第二模块实例的地址。基于这种地址设置,第一通信模块可以将从第一模块实例接收到的数据传送到在不同的子示意图和设备中的第二通信模块,所述第二通信模块将该数据传送到第二模块实例。

图19是示出根据本发明实施例的用于对示意图的组件进行寻址的逻辑流程190的框图。在系统示意图中,计算机节点针对每个组件(例如,模块,引脚,虚拟线等)分配唯一地址。所分配的地址被用于识别系统示意图内的组件的精确位置。如稍后将描述的,该地址还被用于在被解析成子示意图时识别组件的精确位置,并被用于设置用于该组件的通信地址。

本发明中寻址方法的一个实施例通过以下的组合来寻址示意图的组件:(i)设备ID,(ii)到组件的路径,以及(iii)组件的名称。在系统示意图中,设备ID被设置为设计者的模拟虚拟设备ID。在子示意图中,设备ID标识分布式异构系统中的、与子示意图相关联的设备。组件的路径被定义为分层路径,使得路径定义待在系统示意图或子示意图内以分层顺序遍历直至给定组件的每个模块实例的名称。图19示出了包含模块实例模块_1的系统示意图。模块实例模块_1被配置为在设备_A中执行。在系统示意图中,模块_1被实例化为包含两个模块实例模块_2和模块_3的示意图。在系统示意图中,模块_2被进一步例示为包含两个模块实例模块_5和模块_6的示意图。模块_6具有名为“输入”的输入引脚和“输出”的输出引脚。

在系统示意图中,仿真虚拟设备的设备ID是“设计者”,并且到“输入”引脚的分层路径是“模块_1/模块_2/模块_6”。因此,在系统示意图中,引脚“输入”的地址是“设计者/模块_1/模块_2/模块_6/输入”。作为将系统示意图解析成子示意图的结果,“模块_1”(连同其所有子图)被放置成对应于“设备_A”的子示意图。在该子示意图中,设备ID是“设备_A”,并且引脚“输入”的分层路径仍然是“模块_1/模块_2/模块_6”。因此,在该子示意图中,引脚“输入”的地址是“设备_A/模块_1/模块_2/模块_6/输入”。注意,系统示意图和子示意图中的“输入”引脚的地址之间的唯一变化是设备ID,而该地址的其余部分被保留。这是这种寻址方法的巨大优点,因为它允许系统示意图中的任何组件容易地定位到相应的子示意图中。

图20是示出根据本发明实施例的当将示意图201解析成子示意图202、203时使用的寻址方法200的框图。例如,图20示出了当解析示意图201时使用图19的唯一寻址方法。图20示出了包含两个模块实例“边缘逻辑1”和“云逻辑”的示例性系统示意图201。这两个模块实例被配置为分别在两个不同的设备“边缘计算机1”和“服务器”中执行。这两个模块实例被配置成使得“边缘逻辑1”的输出被连接到“云逻辑”的输入。

系统示意图201被解析成用于边缘计算机1的第一子示意图202和用于服务器203的第二子示意图203。第一子示意图202包含模块实例“边缘逻辑1”和通信模块实例,以替换系统示意图201中的“云逻辑”模块实例和“边缘逻辑1”模块实例之间的虚拟线。在第一子示意图202中,虚拟线将“边缘逻辑1”模块实例的输出连接到通信模块实例的输入。第二子示意图203包含模块实例“云逻辑”和通信模块实例。在第二子示意图203中,虚拟线将通信模块实例的输出连接到“云逻辑”模块实例的输入,以替换系统示意图201中的“云逻辑”模块实例和“边缘逻辑1”模块实例之间的虚拟线。使用图19的寻址方法,“云逻辑”模块实例的输入引脚是“/服务器/云逻辑/输入”。

在第一子示意图202中,将通信模块实例的目的地址设置为“云逻辑”模块实例的输入引脚“/服务器/云逻辑/输入”的地址。在第二子示意图202中,通信模块的接收地址也被设置为“云逻辑”模块实例“/服务器/云逻辑/输入”的输入引脚的地址。基于这种地址设置,通信模块可以在不同子示意图和设备中的“云逻辑”模块实例和“边缘逻辑1”模块实例之间通信数据。在该实施例中,第一子示意图202的目的地址和第二子示意图的接收地址都是接收模块实例(“云逻辑”)上的输入引脚的地址。如图19所示,该地址易于基于输入引脚的地址和接收模块实例的设备属性生成。此外,即使系统示意图包含大量具有复杂分层结构的模块实例,使用该地址的寻址方法也工作良好。

本发明中的寻址方法的另一个实施例通过以下的组合来寻址示意图的组件:(i)设备ID,(ii)模块实例ID,以及(ii)组件名称。如果组件是模块实例,则可以从地址中省略组件名称。在系统示意图中,设备ID被设置为模拟虚拟设备ID“设计者”。在子示意图中,设备ID标识分布式异构计算和控制系统中的、与子示意图相关联的设备。如果组件是模块实例,则模块实例ID用于该模块实例。如果组件不是模块实例,则模块实例ID用于与组件相关联的模块实例。模块实例ID是系统示意图中的模块实例的唯一标识符,并且它通常由设计软件自动生成,并且是随机字符串或数字。模块实例ID与模块实例名称的不同之处在于,模块实例名称在系统示意图中不需要是唯一的。模块实例名称通常由用户定义并且是人类可读的。

将该寻址方法应用于图19的系统示意图,“模块_6”的“输入”引脚的地址被设置为“/设备_A/29f.ab2/输入”,其中“29f.ab2”是“模块_6”的唯一模块实例ID。这种寻址方法的优点在于,当系统示意图具有许多层级时,地址可以短得多。在本发明的另一个实施例中,设计软件可以使用图19的基于路径的寻址方法和该基于模块实例ID的方法。当模块实例ID具有唯一的正则表达式时,例如,三个字母数字,接着一个点,接着三个以上的字母数字,使得可以将基于模块实例ID的地址与基于路径的地址区分开来,这种寻址方法的应用是可行的。

图21是根据本发明实施例的通信模块210的组件211、212、213、214的框图。组件211、212、213、214是形成通信模块210的功能示意图的模块实例。功能示意图允许在不同设备中执行的通信模块210的两个实例之间通过网络通信和数据流。

通信模块210的功能示意图具有接收路径,其包括通信接收模块实例211和接收处理模块实例212。通信接收模块实例211接收通过网络传输到联接到通信模块210的模块实例的数据。接收处理模块实例212对所接收的数据进行后处理(例如,准备由联接到通信模块210的模块实例使用的数据)。通信模块210的功能示意图还具有发送路径,其包括通信发送模块实例214和发送处理模块实例213。发送处理模块实例213预处理用于在网络上传输的数据(例如,准备来自联接到通信模块210的模块实例的数据以用于在网络上通信)。通信发送模块实例214通过网络发送来自联接的模块实例的数据。

在实施例中,可以实现通信模块210的多个功能示意图,以支持不同的通信协议,例如TCP、HTTP、MQTT等,用于在网络上传送数据。在实施例中,用户可以使用通信模块实例属性表中的通信模块实例类型属性针对通信模块210的实例设置通信协议。在实施例中,通过与设计软件相关联的图形用户界面,用户可以改变给定通信模块实例的通信模块实例类型。在实施例中,通过与设计软件相关联的图形用户界面,用户可以全局地改变用于所有通信模块实例的通信模块实例类型。以这种方式改变通信模块实例类型允许用户容易地切换通信协议。

图22是示出根据本发明实施例的使用发布/预订协议传送数据的方法220的流程图。在实施例中,计算机节点在计算设备上配置中央通信(comm)代理,该中央通信(通信)代理利用发布/预订协议来在源通信模块实例和目的通信模块实例之间进行通信。通信模块实例在通信的发送侧执行发布功能以及在通信的接收侧执行预订功能。在执行方法220之前,目的通信模块实例通过向中央通信代理发送预订请求来预订中央通信代理,该预订请求指定目的通信模块实例的至少一个接收地址。

在方法220的第一进程221中,源通信模块实例组装用于在网络上传输的数据分组。数据分组包含数据有效载荷、目的地址、以及(可选地)源地址。在实施例中,源地址是与源通信模块实例联接的模块实例的输出引脚的地址。在第二进程222中,源通信模块实例将数据分组发送到中央通信代理。当数据分组中的目的地址与目的通信模块实例的接收地址匹配时,在第三过程223中,中央通信代理将数据分组转发到目的通信模块实例进行处理。

图22的“发布/预订”通信协议可以被用作图18中描述的虚拟线替换方法的替代。在实施例中,在图19和图20中描述的寻址方法可用于配置数据分组中的目的地址和源地址以及目的通信模块实例的接收地址。

图23是示出根据本发明实施例的替换模块实例之间的虚拟线的逻辑流程230的框图。图23的虚拟线替换方法是图18中描述的方法的替代方法。在图18所示的方法180中,在每个子示意图中,设计软件为每个虚拟线配置一对通信模块实例,这导致向系统应用附加大量通信模块实例。在图23所示的方法中,对于给定的子示意图,设计软件配置在多个模块实例之间共享的通信模块实例。

图23示出了具有三个模块实例模块_1 231、模块_2 232和模块_3 233、通信模块实例234和地址解析模块实例235的子示意图。设计软件将模块实例(模块_1 231、模块_2232和模块_3 233)配置为共享通信模块实例234的发送路径。具体地,当模块实例(模块_1231,模块_2 232和模块_3 233)需要通过虚拟线连接来传输数据时,模块实例将其目的地址和数据有效载荷传输到相同的通信模块实例234。然后,通信模块实例234形成包含目的地址和数据有效载荷的数据分组,并通过网络发送该数据分组。

设计软件将通信模块实例234的接收路径配置为接收去往模块实例(模块_1 231、模块_2 232和模块_3 233)的所有数据分组。具体地,设计软件配置通信模块实例234的接收地址以接收去往执行子示意图的设备中的任何子示意图组件的所有数据分组,包括去往模块实例(模块_1 231、模块_2 232和模块_3 233)的输入引脚的那些数据分组。例如,如果执行子示意图的设备是“设备_A”,则设计软件将通信模块实例234的接收地址设置为“/设备_A/*”,使得通信模块实例234接收具有与“设备_A”中的子示意图的组件相匹配的目的地址的任何数据分组,例如地址“/设备_A/模块_1/输入1”、“/设备_A/模块_2/输入2”、“/设备_A/模块_3/输入3”等。

然后,通信模块实例234将数据分组转发到地址解析模块235。地址解析模块235检查数据分组的全部目的地址,以确定子示意图中的数据分组的预期目的地,并将数据分组转发到该预期目的地。例如,当分组的目的地址是“/设备_A/模块_2/输入2”时,地址解析模块235将数据分组转发到模块_2的输入引脚(“输入2”)。

图24是示出根据本发明实施例的更新用于在设备中执行的子示意图的方法240的流程图。在执行方法240之前,在分布式异构系统中的设备集中的每一个设备都被预加载有控制程序和初始化示意图。初始化示意图具有联接到系统模块实例的通信模块实例,系统模块实例联接到更新模块实例。更新模块实例被配置为执行对设备上执行的子示意图的更新。在每个设备中,当设备通电时,控制程序执行预加载在设备上的初始化示意图。

一旦设计软件将系统示意图解析成子示意图,设计软件就将子示意图发送到它们相应的设备以供执行。对于每个子示意图,在方法240的第一进程241中,执行设计软件的计算机节点向相应的设备发送数据分组。数据分组具有数据有效载荷,该数据有效载荷包含设置到相应设备上执行的更新模块实例的子示意图和目的地址集。例如,如果子示意图用于在设备ID被设置为“设备_id”的相应设备上执行,则目的地址被设置为“/设备_id/系统/更新”。在一个实施例中,表示子示意图的网表(它是示意图的文本表示)被用作数据分组中的数据有效载荷。在第二进程242中,每个设备接收包含目标地址的相应数据分组,该目标地址包括与该设备相匹配的设备_id。基于目的地址,设备将接收到的数据分组转发到与初始化示意图的系统模块实例联接的更新模块实例。更新模块实例通过加载作为数据分组的数据有效载荷所包含的子示意图并使得控制程序执行所加载的子示意图来执行对设备的更新。

如果对系统示意图进行改变,则一旦设计软件将改变的系统示意图解析成子示意图,则重复方法240(过程241和242)以用改变的系统示意图更新相应的设备。在实施例中,加载的子示意图还可以具有与系统模块实例联接的通信模块实例,系统模块实例还联接到更新模块实例。在这些实施例的一些中,在重复方法240时,设备将接收到的数据分组转发到与执行子示意图的系统模块实例联接的更新模块实例。

图25是根据本发明实施例的初始化示意图250的框图。在分布式异构系统的设备中加载和执行初始化示意图250。在一个实施例中,初始化示意图被预加载到每个设备中,从而当该设备被加电时,该设备执行初始化示意图。这种执行使得设备能够从设计软件接收子示意图更新,即使当子示意图尚未在设备中加载和执行时也是如此。

如图25所示,初始化示意图250包括与系统模块实例251联接的通信模块实例252。在具有设备ID“设备_id”的给定设备上执行的联接的系统模块实例215(与通信模块实例252联接)的接收地址被设置为“/设备_id/系统/*”。在初始化示意图250中,发往该接收地址的子示意图更新由系统模块实例251接收,该系统模块实例251执行子示意图更新以加载并执行包含在更新中的子示意图。

图26是示出根据本发明实施例的实例化的系统模块260的框图。在一个实施例中,实例化的系统模块260是图25的系统模块实例251。图26的实例化的系统模块260(也称为系统模块实例)包括预处理模块实例261。当数据分组的目的地址与地址“/设备_id/系统/*”匹配时,由系统模块实例260接收数据分组,其中设备_id是执行系统模块实例260的设备的标识符。预处理模块实例260将接收到的数据路由到包括在系统模块实例260中的处理模块实例(例如,更新模块实例262,命令模块实例263等)。处理模块实例262、263等中的每一者具有接收地址且配置为执行对数据分组的特定处理。例如,更新模块实例262的接收地址是“/设备_id/系统/更新”,并且它被配置成执行子示意图更新。对于另一个示例,命令模块实例263的接收地址是“/设备_id/系统/命令”,并且它被配置为执行包含在数据分组的数据有效载荷中的一个或多个系统命令。

预处理模块实例261基于与处理模块实例匹配的数据分组中的目的地址将接收到的数据分组路由到处理模块实例。例如,当数据分组中的目的地址与“/设备_id/系统/更新”匹配时,预处理模块261将接收到的数据分组转发到更新模块实例262,更新模块实例262执行子示意图更新。在本发明的一个实施例中,更新模块实例262将包含在数据分组的数据有效载荷中的接收到的子示意图作为设备的硬盘驱动器上的文件来保存。更新模块实例262然后请求(例如,经由重新加载请求)在设备中运行的控制程序来执行子示意图。对于另一示例,当数据分组中的目的地址匹配“/设备_id/系统/命令”时,预处理模块261将接收到的数据分组转发到命令模块实例263,命令模块实例263执行包含在数据分组中的一个或多个系统命令。

图27是示出根据本发明实施例的在设备中执行控制程序的方法270的流程图。控制程序是与设备相关的软件程序,其在特定类型的设备处被加载并且在该设备中执行子示意图。当设备通电时,在方法270的第一进程271中,控制程序启动并执行预加载在设备上的初始化示意图。在第二过程272中,控制程序然后检查设备上是否存在子示意图。在一个实施例中,如果存在子示意图,则将其作为文件保存在设备的硬盘驱动器上。如果控制程序定位到这样的子示意图,则在第三过程273中,控制程序执行子示意图。如果控制程序没有定位到这样的子示意图,则在第四过程274中,控制程序不采取附加动作。然后控制程序继续执行。

当控制程序接收到重新加载命令时,在第五过程275中,控制程序重新加载新的子示意图并执行重新加载的子示意图。控制程序通常从更新模块实例(例如,图26的更新模块实例262)接收重新加载命令,且可从装置内部和外部的其它源接收重新加载命令。当控制程序执行子示意图时,其还加载与子示意图中的任何原语模块实例相关联的设备相关块。控制程序能够基于与子示意图中的每个原语模块实例相关联的类型属性来选择正确的设备相关块。

图28是示出根据本发明实施例的为低能力设备提供可执行代码的方法280的流程图。在分布式异构系统中存在一些不具有运行用于执行示意图的控制程序的能力(例如,处理能力、存储器能力等)的低能力设备。这种低能力设备的一个示例是没有配置操作系统的低功率微控制器。

对于这种设备,如图28的方法280所示,设计软件还将子示意图处理成在这些设备上可执行的形式,而不需要控制程序。在方法280的第一进程281中,执行设计软件的计算机节点产生用于这种设备的子示意图。在第二进程282中,计算机节点然后将子示意图处理成编译器兼容代码。在一个实施例中,由设计软件在内部处理子示意图,并且在另一个实施例中,通过外部转换器软件处理子示意图。在第三进程283中,计算机节点运行外部编译器软件以将编译器兼容代码编译成设备代码,该设备代码可以在对应于子示意图的目标低能力设备中执行。在第四进程284中,计算机节点将设备代码发送到目标设备,该目标设备配置有能够加载和执行设备代码的引导加载器。

图29是根据本发明实施例的包括为分布式异构系统提供可视化数据的模块实例的示意图的框图。如本领域普通技术人员所知,传统的设计软件可以为非分布式系统提供数据可视化能力,其中数据的可视化可以在中央位置执行。然而,在分布式异构系统中,数据可视化不是那么直接。在分布式异构系统中,可视化组件必须在分布式设备中执行,在分布式设备中不存在这种中心位置来使这种系统中的数据可视化。本发明的设计软件以将所有可视化组件从分布式设备收集到用于可视化的设计软件中的方式来提供可视化功能。

在本发明的设计软件中,通过与设计软件相关联的图形用户界面向用户提供了将可视化模块实例添加到示意图中的模块实例的引脚和虚拟线的选项。图29示出了系统示意图290,其是添加了两个可视化模块实例的图13的系统示意图130:探针模块实例291和图表模块实例292。探针模块实例291被添加到连接“云逻辑”模块实例和“边缘逻辑1”模块实例的第一虚拟线。探针模块实例291捕获并打印第一虚拟线上传送的数据。将图表模块实例292添加到连接“云逻辑”模块实例和“边缘逻辑3”模块实例的第二虚拟线。图表模块实例292捕获并绘制第二虚拟线上传送的数据。图表模块实例292可以以多种格式绘制数据,用户可从与设计软件相关联的图形用户界面选择。由于模块实例291和292在其上接收数据的虚拟线实际上不存在于分布式异构设备上的所执行的子示意图中,所以探针模块实例291和图表模块实例292不以与传统设计软件中相同的方式起作用。在图30中进一步描述了这种可视化模块实例的配置和功能。

图30是根据本发明实施例的用于执行数据可视化的子示意图300的框图。在实施例中,本发明的设计软件创建具有设备_id被设置为“设计者”的虚拟设备。当用户选择将探针模块实例301和图表模块实例302连接到示意图中的虚拟线时,设计软件将这些模块实例291、292的设备属性设置为设备_id“设计者”。在解析过程期间,设计软件针对设计者设备产生图30的子示意图300,并将设置到该设备属性的所有模块解析为子示意图300,包括探测模块实例301和图表模块实例302。在解析过程期间,设计软件还添加诸如在图18中描述的通信模块实例303、304,以替换与探针模块实例301和绘图模块实例302连接的虚拟线。设计软件将探测模块实例301联接到添加的通信模块实例303,并将图表模块实例联接到添加的通信模块实例304。

在一个实施例中,设计者设备的子示意图由设计软件在仿真环境中执行,该仿真环境使用户能够可视化设计软件内的数据。在该实施例中,设计者设备被称为虚拟设备,因为该设备在设计软件内部执行并且不代表分布式异构系统中的真实设备。然而,在设计软件中对执行虚拟化能力的设备的类型没有限制。在另一个实施例中,虚拟设备标识符可以由真实设备标识符代替,并且可以在该真实设备中执行子示意图300。

图31是示出根据本发明实施例的通过虚拟设备更新用于在仿真环境中执行的示意图的方法310的流程图。特定类型的示意图也存在于被称为行为示意图的实施例中。行为示意图通常是功能示意图或设备相关块的模型,例如简化模型或统计模块。与功能示意图不同,行为示意图被用于模拟环境中,而不是用于在分布式异构系统的物理设备上执行。仿真环境通常在设计软件中执行,用于理解与分布式异构系统相关联的问题,例如统计变化、极端情况和特殊输入条件。

在方法310的第一进程311中,执行设计软件的计算机节点在系统示意图中定位每个模块实例。在第二进程312中,计算机节点将每个定位的模块实例的设备属性设置为值“设计者”。设计者设备是在仿真环境中在设计软件内执行的虚拟设备。在第三过程313中,对于系统示意图中具有实例的每个模块,计算机节点确定该模块是否包括被设置为被称为“示意图2”的行为示意图的组件。在方法310中,“示意图2”是行为示意图的默认名称,但是在其它方法中,行为示意图的默认名称可以是任何其它名称,在此不受限制。如果在第四过程314中,给定模块中包括“示意图2”,则设计软件将系统示意图中给定模块的每个实例的模块实例类型设置为“示意图2”。如果在第五过程315中,给定模块中不包括“示意图2”,则设计软件不对系统示意图中的该模块的实例采取任何动作。

当设计软件解析系统示意图时,如果“示意图2”组件可用,则仅产生对应于虚拟设计者设备的一个子示意图,其中每个模块实例被设置为“示意图2”。该一个子示意图被部署在设计软件的内部,并且当设计软件执行该子示意图时,该一个子示意图在仿真环境中运行。方法310可以在各种其它实施例中实现。在实施例中,行为示意图不需要被限制为在仿真环境中在设计软件内执行。在该实施例中,用户通过与设计软件相关联的图形用户界面可以手动地选择一个或多个设备类型,并且行为示意图可以在模拟环境中在设备中执行,或者通过与所选择的一个或多个设备类型相对应的多个设备来分布。在另一个实施例中,用户可以选择除“示意图2”之外的行为示意图,这在需要模拟多个行为时是有用的,需要多个行为示意图。

本发明可以以许多不同的形式实施,包括但不限于用于处理器(例如微处理器、微控制器、数字信号处理器或通用计算机)的计算机程序逻辑,用于可编程逻辑器件(例如现场可编程门阵列(FPGA)或其它PLD)的可编程逻辑、分立元件、集成电路(例如专用集成电路(ASIC)),或包括其任何组合的任何其它方式。

实现本文先前描述的全部或部分功能的计算机程序逻辑可以以各种形式来实现,包括但不限于源代码形式、计算机可执行形式和各种中间形式(例如,由汇编器、编译器、网络器或定位器生成的形式)。源代码可以包括以各种编程语言(例如,目标代码、汇编语言、或诸如Fortran、C、C++、JAVA或HTML的高级语言)中的任一种实现的一系列计算机程序指令,以用于各种操作系统或操作环境。源代码可以定义和使用各种数据结构和通信消息。源代码可以是计算机可执行形式(例如,经由解释器),或者源代码可以被转换(例如,经由翻译器,汇编器或编译器)成计算机可执行形式。

计算机程序可以以任何形式(例如,源代码形式、计算机可执行形式或中间形式)永久地或暂时地固定在有形存储介质中,例如半导体存储设备(例如,RAM、ROM、PROM、EEPROM或闪存可编程RAM)、磁存储设备(例如,磁盘或硬盘)、光存储设备(例如,CD-ROM)、PC卡(例如PCMCIA卡)或其它存储设备。计算机程序可以以任何形式固定在信号中,该信号可使用各种通信技术中的任一种传输到计算机,包括但不限于模拟技术、数字技术、光学技术、无线技术、联网技术和网际互联技术。计算机程序可以以任何形式作为具有随附的打印或电子文档(例如,收缩包装的软件或磁带)的可移动存储介质来分发,预加载有计算机系统(例如,在系统ROM或硬盘上),或者通过通信系统(例如,因特网或万维网)从服务器或电子公告板分发。

可以使用传统的手动方法来设计实现在此之前描述的全部或部分功能的硬件逻辑(包括用于可编程逻辑器件的可编程逻辑),或者可以使用各种工具(诸如计算机辅助设计(CAD)、硬件描述语言(例如,VHDL或AHDL)或PLD编程语言(例如,PALASM、ABEL或CUPL)来电子地设计、捕获、模拟或记录。

虽然已经参考特定实施例具体示出和描述了本发明,但是本领域的技术人员将理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。虽然在权利要求中通过处理步骤描述了这些实施例中的一些,但是本发明还包括一种装置,该装置包括具有相关联的显示器的计算机,该计算机能够执行随附的权利要求书中的处理步骤。同样,包括用于执行随附的权利要求中的处理步骤并存储在计算机可读介质上的计算机可执行指令的计算机程序产品也包括在本发明内。

上述本发明的实施例仅仅是示例性的;对于本领域的技术人员来说,许多变化和修改将是显而易见的。所有这些变化和修改都落在如任何所附权利要求所限定的本发明的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号