一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于工业生态系统之间互操作性的自动化代码生成器的制作方法

2021-09-28 10:00:00 来源:中国专利 TAG:
用于工业生态系统之间互操作性的自动化代码生成器的制作方法

本申请要求于2019年2月18日提交的美国临时申请序列号62/807,053的权益,其公开内容通过引用整体并入本文。

背景技术

自动化系统可用于以系统的方式控制机器和其他组件的操作。自动化系统可以包括各种自动化领域,例如工厂自动化、过程自动化、建筑物自动化、能量自动化等。自动化系统还可以包括来自多个供应商的设备。在一些情况下,自动化系统内的设备和机器可使用与其相应生态系统相关联的不同机制,例如不同的运行时环境、协议和编程语言(例如,供应商特定编程语言)。例如,自动化功能通常是平台专用的和/或以专有方式实施。因此,生成可与其他自动化功能交互操作的自动化功能可能是繁琐且耗时的。

当前集成工业生态系统的方法,例如在不同供应商之间集成自动化功能,缺乏效率和能力。例如,通常需要系统集成器来开发用作不同系统之间的代理或适配器的特殊软件。在这种情况下,代理或适配器通常专用于特定的一组设备或供应商,这可能限制可重用性并带来其他技术缺陷。



技术实现要素:

本发明的实施例通过提供用于自动生成接口(例如,胶水代码)的方法、系统和装置来解决和克服本文所描述的一个或多个缺点或技术问题,这实现了自动化工业系统中的不同生态系统之间的互操作性。在一个示例方面,生成器模块可以接收来自第一生态系统的请求,该请求定义第一生态系统的自动化设备原生的第一编程语言。生成器模块可以确定第一编程语言是第一生态系统的自动化设备的原生语言。基于请求,生成器模块可以确定第二生态系统参与履行该请求。在一些示例中,第二生态系统定义第二生态系统的自动化设备原生的第二编程语言。生成器模块可以确定第二编程语言是第二生态系统的自动化设备的原生语言。基于请求并且响应于确定第一生态系统和第二生态系统分别定义第一编程语言和第二编程语言,生成器模块可以生成输出。输出可以包括第一生态系统和第二生态系统之间的接口。接口可定义转换请求的代码,使得来自第一生态系统的请求可至少部分地由第二生态系统满足。例如,接口可以包括与第一编程语言兼容的第一部分。接口还可以包括与第二编程语言兼容的第二部分。继续该示例,生成器模块可以将第一部分和第二部分分别发送到第一生态系统的和第二生态系统的自动化设备。此外,可以基于第一部分和第二部分履行该请求。履行该请求可以包括由第二生态系统的一个或多个物理资产执行在制造产品中涉及的工业任务。在一些示例中,在代码的第一部分被发送到第一生态系统之后,第一生态系统能够与除第二生态系统之外的其他生态系统进行交互操作,而不生成用于第一生态系统的其他代码。类似地,在生成代码的第二部分之后,在一些情况下,第二生态系统可以在不为第二生态系统生成附加代码的情况下与不同的生态系统一起工作。

附图说明

当结合附图阅读以下详细描述时,将更好地理解本发明的前述和其他方面。为了说明本发明,在附图中示出了目前优选的实施例,然而,应当理解,本发明不限于所公开的特定手段。附图中包括以下附图:

图1是根据示例实施例的包括抽象层和生成器模块的示例自动化系统的框图。

图2是示出根据示例实施例的另一示例自动化系统和自动化系统的示例用例的框图。

图3示出了图2所示的示例自动化系统的产品控制器和门架站,以及根据示例实施例由生成器模块生成的接口。

图4是包括根据示例实施例的生成器模块的示例生成器系统的框图。

图5示出了根据示例实施例的生成器模块的示例输入。

图6示出了根据示例实施例由生成器模块响应于图5中描绘的输入而自动生成的示例输出。

图7示出了图6中所示的示例输出的延续。

图8示出了根据示例实施例由生成器模块响应于图5中描绘的输入而自动生成的另一示例输出。

图9示出了根据示例实施例由生成器模块响应于图5中描绘的输入而生成的示例数据块(DB)。

图10是描绘可由于图3的示例系统中描绘的组件的交互而产生的各种输出的框图。

图11是示出了根据示例实施例的通信设备的示例操作的流程图。

图12示出了可在其中实施本公开的各实施例的计算环境的示例。

具体实施方式

在一些情况下,系统集成商可以依赖于各种工业标准(例如,OPC统一架构(UA)、数据分发服务(DDS))来将不同的生态系统桥接在一起。然而,本发明认识到,通常需要额外的努力来将功能与给定标准(例如OPCUA内的标准)中的数据和模型集成。例如,可能需要开发特殊的客户端和服务器适配器、或附加层以支持集成和互操作性。本发明还认识到,与集成和互操作性相关联的开销可降低非功能需求,例如性能和可扩展性。此外,由系统集成商开发的技术解决方案可能仅适用于特定任务,这可限制了解决方案的可重用性。

在本发明描述的各种实施例中,自动生成自动化代码以便将不同的生态系统、编程语言、平台等桥接在一起。因此,根据各种实施例,在一个生态系统中被工程化的自动化功能可以与在可以彼此不同的其他生态系统中被工程化的自动化功能自由地交互。作为示例,由第一生态系统中的第一供应商制造的可编程逻辑控制器(PLC)可以与由第二生态系统中的第二供应商制造的机器人自由地操作,而不需要系统集成商必须执行一个或多个系统集成任务。例如,可以在第一生态系统和第二生态系统之间交换数据,而不必由系统集成商将数据转换为通用数据标准,例如OPC。因此,根据本发明所描述的各种实施例,生态系统所有者可以在其优选平台中专注于自己的业务逻辑,而无必使用资源进行集成。作为示例,供应商可以设计执行拾取和放置功能的机器人,要素所有者可以开发执行组装的自动化系统,并且可以根据本发明所描述的实施例自动生成使得机器人和自动化系统能够彼此交互操作的机制。

现在参考图1,示例自动化系统100定义了多个生态系统或领域102。每个生态系统102可以包括可以由自动化设备106控制的物理资产104,该自动化设备被配置为控制相应的自动化设备106。自动化设备106可以专用于相应生态系统102中的一个或多个物理资产104。自动化系统还可以包括自动化功能108和抽象层110,该抽象层对可以由自动化设备106和物理资产104执行的自动化功能108进行抽象(展露)。应当理解,为了说明的目的,简化了所示的环境自动化系统100。自动化系统100可以根据需要改变,并且所有这样的系统被认为在本公开的范围内。

仍然参考图1,抽象层110可以从自动化设备106抽象被示出为自动化功能108的各种功能特性。自动化功能108可以软连线在一起,使得抽象层110可以用作各种开发环境112和各种自动化设备106之间的中介。因此,自动化系统100,特别是抽象层110,可以提供对应于物理组件的功能,例如自动化设备106和/或物理资产104。在这样做时,开发者可以在一个或多个开发环境112(例如他们选择的开发环境)中操作,以经由抽象层110使用各种自动化功能108,并且自动化功能108可以由自动化设备106和物理资产104来执行。具体地,抽象层100可以使来自不同领域102的自动化功能108能够彼此交互操作。开发环境112可以定义一种或多种语言或平台,例如Java、C、Matlab、Python、西门子全集成自动化(TIA)门户等。因此,各种开发环境112可以经由抽象层102利用来自各种领域102的各种自动化设备106。

根据各种实施例,抽象层110可以包括本发明进一步描述的生成器模块或自动化代码生成器114。抽象层110可以在运行时环境中执行,以便为自动化功能108提供接口。抽象层110以及进而生成器模块114可在服务器、基于云的计算环境、供应商特定运行时平台环境或诸如计算机系统510等其他工业计算系统上实施。

现在转向生成器模块114,图2中示出了生成器114的示例使用情况。参考图2,示例工业自动化系统200可以包括多个生态系统102,例如第一或产品生态系统202、第二或生产生态系统204、第三或生产生态系统206以及第四或生产生态系统208。示例工业系统200可以定义或成为工厂的一部分,例如用于制造或组装各种产品的工厂。根据该示例,第二生态系统204包括门架站210,第三生态系统206包括机器人站212,且第四生态系统208包括传送站214,但是应当理解,生产生态系统可以根据需要包括任何站。还应当理解,虽然示出了示例性自动化系统200的四个生态系统,但是本发明描述的自动化系统可以包括任何数量的生态系统,并且所有这样的系统都被认为是在本公开的范围内。

工业自动化系统200的每个生产生态系统204、206和208可以提供或提供各种生产技能,以便执行各种工业任务,例如拾取和放置、传送、组装等。产品生态系统202可以使用或消费生产一个或多个生产生态系统204、206和208来组装或制造一个或多个产品。示例性产品包括运货车、立方体托盘、控制器柜组件、铆钉组件、车门组件等,但是应当理解,根据本发明所描述的实施例可以生产需要机器操作的任何产品,并且所有这样的产品都被认为在本公开的范围内。因此,还参考图3,产品生态系统202可以定义或被称为消费者生态系统302,并且产品生态系统202、204和206可以定义相应的提供商生态系统,例如第一提供商生态系统304。

继续参考图2,在一些情况下,门架站210、机器人站212和传送站214可以分别由不同的设备供应商提供,这可能产生由本发明解决的互操作性问题以及其他挑战。例如,产品生态系统202可以包括自动化设备(例如产品控制器216),该自动化设备与由工业自动化系统200组装或制造的产品相关联。作为示例,产品控制器216可以是基于PC的,并且可以通过第一编程语言(例如C语言)来编程。产品控制器216可以在给定产品的生命周期期间执行各种活动。例如,在设计状态期间,可以在产品控制器216内建立给定产品的期望状态。期望状态可以指在生产期间或之后的产品或机器的整体状态。期望状态可以指示各种信息,例如,绝对位置信息、相对于其他物理资产的位置信息、温度限制、应力水平限制等。可以根据产品控制器216的输入来确定期望状态,例如但不限于,过程清单(BOP)、物料清单(BOM)、材料的属性和3D模型(例如,CAD模型)或产品的其他物理模型。

在一些情况下,可以基于用户输入来手动定义产品的各方面。在一些示例中,处理是部分或全部自动化的。在示例实施例中,产品控制器216包括用于从标准BOP和BOM文档提取相关信息的文本处理实用程序。产品控制器216还可以包括用于理解产品的物理模型或制造环境的处理实用程序。在一个示例中,在从输入中提取相关信息之后,该信息可被用于设置由产品控制器216管理的产品的期望状态的值。在一些实施例中,这些值可以基于编码到产品控制器216中的一组规则来设置。在其他示例中,产品控制器216可以包括被训练为基于与所提取的信息类似的信息来生成输入的一个或多个机器学习模型。

在生产状态期间,作为进一步的示例,产品控制器216可以通过与被配置为监测产品的传感器通信来控制其产品的生产。基于从传感器接收的信息,产品控制器216可以将实际产品状态与期望状态进行比较。基于该比较,在一些情况下,产品控制器216可以例如经由抽象层110识别工业自动化系统200内的机器或功能以实现期望状态。例如,产品控制器可以经由抽象层110调用门架站210、机器人站212或传送站214的各种自动化设备以实现特定的期望状态。

作为一个实际示例,在汽车的组装过程中,特别是在将门安装到汽车的车身上的过程中,产品生态系统202可以包括与汽车相对应的PC或产品控制器216,并且因此可以在组装过程的各个步骤中知道或确定与汽车的期望状态相关的信息。这样的信息可以包括例如但不限于车门相对于车身的位置。如本发明进一步描述的,产品生态系统202的PC或产品控制器216可以经由抽象层110与生产生态系统通信,以完成汽车的组装。

门架站210可以由来自西门子的自动化设备控制,诸如以第二编程语言(例如,TIA门户工程环境中的IEC61131)编程的一个或多个可编程逻辑控制器(例如,SIMATIC S7-1517)。继续该示例,机器人站212可以由来自Kuka的自动化设备诸如以第三编程语言(例如,基于Java)编程的Kuka控制器来控制。传送站214可由来自MagneMotion的自动化设备控制,该自动化设备提供以第四编程语言(例如,基于Web或C )编程的控制节点。因此,不受特定示例的限制,每个站210、212和214以及产品控制器216的功能可以用其相应生态系统的设备供应商所支持的语言和工具来编程。

继续参考图2,现在描述产品装配或生产的示例。在218处,产品控制器216发送门架站210对给定产品的部分执行拾取和放置操作的请求。该请求可以由抽象层110接收。

具体地,还参考图3,示出了包括产品生态系统202和门架站210之间的交互的示例拾取和放置操作300。拾取和放置可以指涉及机器人拾取物体并将它们放置在其他地方的任何操作。根据示例实施例,可被统称为胶水代码或接口的存根(英文:stub)306和骨架(英文:skeleton)308可以由生成器模块114自动生成。存根306和骨架308可以使得产品生态系统202和生产生态系统204能够彼此操作。产品生态系统202的产品控制器216可以定义消费者插件302。生产生态系统204的门架站210可以定义提供商插件304。在该示例中,生产生态系统204为产品生态系统202提供服务,特别是拾取和放置服务,并且产品生态系统202消费该服务。消费者插件302可以包括与如何使用拾取和放置操作来组装产品生态系统202的产品相关联的代码。消费者插件302的代码可以用产品生态系统原生的编程语言来编程,例如PC、Rasberry Pi或Linux上的C语言。类似地,提供商插件304可以包括与如何使用门架站210的控制器、驱动器和电机实施拾取和放置操作相关联的代码。例如,可以使用S7-1517可编程逻辑控制器上的SIMATIC TIA门户工具以IEC61131语言对提供商插件304进行编程。

继续上述示例,存根306可以是基于PC的,并且可以包括在动态链接库(DLL)或静态库中实施的功能。这样的库可以被插入到产品生态系统202中,例如该库可以由产品控制器216存储。类似地,骨架308可以基于门架站210的控制器的语言(例如,SIMATIC),并且可以包括例如IEC1131中的功能块和数据块(DB)。骨架308可以被存储在生产生态系统204内,以便可以由生产生态系统204内的自动化设备访问。因此,在一些情况下,因为集成机制或胶水代码可以由生成器模块114自动生成,所以用户可以专注于驻留于其自身生态系统内的其首选平台内的业务逻辑。具体地,继续该示例,门架站210的供应商可以专注于门架站210的自动化功能(例如,门架站210内的机器人的拾取和放置功能),并且产品用户或要素拥有者可以专注于在产品生态系统202的平台内开发自动化应用。作为进一步的示例,产品用户可以针对来自C库的接口314以第一编程语言(诸如C/C 编程语言)对产品逻辑进行编程。类似地,门架站210提供商可以以第二编程语言(例如SIMATIC/IEC61131环境)来实施拾取和放置逻辑,因为生成器模块114所生成的接口314可以包括第二编程语言的一部分(例如,骨架308)。此外,存根306和骨架308分别使用实现跨生态系统通信的消息传递系统308和310。消息传递系统308和310可以实现公共接口映射,因为消息传递系统308和310可以提供不同生态系统之间、特别是给定存根和骨架之间的底层通信。在一些情况下,用户不与消息传递系统308和310交互,使得消息传递系统308和310被隐藏。

还参考图4,示例生成器系统400包括可以是抽象层110的一部分的生成器模块114。还参考图3和4,生成器模块114可以接收来自任何生态系统例如示例系统300和400中描绘的生态系统的请求或输入402。响应于输入402,生成器模块114可以生成输出404。生成器系统400还可以包括语言转换模块406,其被配置为将逻辑从一种编程语言转换为另一种编程语言。例如,语言转换模块406可以执行各种例程以将不同的语言转换为C语言。作为另一示例,语言转换模块406可以将C语言转换为内部公共映射语言(例如,串行器/解串器)。

在一个示例中,输入402包括请求。生成器模块114可以接收来自第一生态系统的请求,该请求定义第一生态系统的自动化设备原生的第一编程语言。生成器模块114可以确定第一编程语言是第一生态系统的自动化设备的原生语言。基于该请求,生成器模块114可以确定第二生态系统参与履行该请求。在一些示例中,第二生态系统定义第二生态系统的自动化设备原生的第二编程语言。生成器模块114可以确定第二编程语言是第二生态系统的自动化设备的原生语言。基于该请求并响应于确定第一生态系统和第二生态系统分别定义第一编程语言和第二编程语言,生成器模块114可以生成输出404。输出404可以包括第一生态系统和第二生态系统之间的接口,例如接口314。接口,例如接口314,可定义转换请求的代码,使得来自第一生态系统的请求可至少部分地由第二生态系统满足。例如,接口可以包括与第一编程语言兼容的第一部分(例如,存根306)。接口还可以包括与第二编程语言兼容的第二部分(例如,骨架308)。继续该示例,生成器模块114可以将第一部分和第二部分分别发送到第一生态系统和第二生态系统的自动化设备。可以基于第一部分和第二部分履行该请求。履行该请求可以包括例如由第二生态系统的一个或多个物理资产执行在制造产品中涉及的工业任务。

再次参考图2-4,并且也参考图5,在218处,产品控制器216可以向抽象层110上的生成器模块114发送请求。该请求可以指示或包括输入402。在一些示例中,输入402包括一个或多个接口描述语言(IDL)文件,例如输入文件500。在一些情况下,接口描述语言文件以及输入402可以描述用于一个或多个自动化功能的功能接口。可以将输入文件500输入到生成器模块114,作为参考图3描述的示例的一部分。因此,例如,输入文件500可以指示用于产品控制器216的功能接口。具体地,输入文件500可以指示用于拾取和放置操作的接口以及与该拾取和放置操作相关联的参数。在一些情况下,拾取和放置操作包括诸如拾取、放置和缓冲的离散函数。

继续上述示例,并且还参考附图6和7,生成器模块114基于输入文件500可生成胶水代码。例如,胶水代码可以定义接口314。胶水代码可以定义一个或多个存根和骨架,例如存根306和骨架308。存根306可以定义用于产品生态系统202的PC平台的代码,诸如拾取和放置代码600和700。因此,响应于输入文件500,生成器模块114可以生成拾取和放置码代600和700。此外,拾取和放置代码600和700可以被发送到产品生态系统202,特别是产品控制器216。

类似地,参考图8,骨架308可以定义用于生产生态系统204的供应商特定的工业平台的代码(例如拾取和放置接口800)。因此,响应于输入文件500,生成器模块114可以生成拾取和放置接口800。在一个示例中,拾取和放置接口800可以用在TIA门户中,用于对门架站210的可编程逻辑控制器(PLC)进行编程。因此,在一个示例中,拾取和放置接口800以SCL语言产生,使得其可在TIA门户中使用以对门架站210进行编程。拾取和放置接口800可以被发送到生产生态系统204,特别是门架站210的自动化设备。作为示例,拾取和放置代码600和700可以是由生成器模块114以C/C 生成的模板代码,并且拾取和放置接口800可以是也由生成器模块114生成的用于TIA门户的SCL中的模板代码。在一些情况下,可以基于所生成的拾取和放置代码600和700以及拾取和放置接口800对实施细节(例如,产品逻辑和门架操作逻辑)进行进一步编程。继续该示例,存根和框架由生成器模块114生成,并且在拾取和放置代码600和700与拾取和放置接口800之间起作用。

还参考图9,如上所描述,输出404还可以包括数据块,例如数据块900。在一个示例中,数据块900被用于IEC61131兼容PLC上的通信。

应当理解,本发明讨论的拾取和放置示例(例如,参考图3和5-9)为了说明的目的而被简化。生成器模块114和进而自动化系统可以根据需要在任何生态系统上生成用于不同功能的代码,并且所有这样的系统被认为在本公开的范围内。例如,再次参考图2,并且还参考图10,生成器模块114可以为生产过程的至少一部分,例如为全部,生成胶水代码。具体地,在226处,产品控制器216可以请求传送站214将给定产品移动到组装站(例如门架站210)以进行组装。如本发明所描述,在218处,当产品到达门架站210时,产品控制器216可以请求门架站执行拾取和放置操作。作为响应,生成器模块114可以生成诸如生成码1002等代码。具体地,生成码1002可以包括控制器存根1004和控制器骨架1006,这使得请求能够跨越可以由门架站210的控制器使用的通信协议(例如,S7)边界。例如,一对存根1004和骨架1006可被用于将函数调用从骨架1008传递到门架站210。类似地,在226处,产品控制器216可以请求传送站214将给定产品移动到另一组装站(例如机器人站212)以进行组装。在220处,产品控制器216可以请求机器人站212执行期望操作。在222处,例如当机器人站212已经完成组装操作时,机器人站212可以请求传送站214将产品移动到例如存储位置。类似地,在224处,当门架站210已经完成其拾取和放置操作时,例如,门架站210可以请求传送站214将产品移动到例如存储位置。

现在参考图11,根据本发明所描述的各种实施例,示例性例程1100可以由生成器(例如生成器系统400)执行。在1102处,生成器系统接收来自多个生态系统中的第一生态系统请求,例如第一请求。第一生态系统定义第一生态系统的自动化设备原生的第一编程语言。在1104处,生成器系统确定第一编程语言是第一生态系统的自动化设备的原生语言。在1106处,基于第一请求,生成器确定多个生态系统中的第二生态系统参与履行第一请求。根据该示例,第二生态系统定义第二生态系统的自动化设备原生的第二编程语言。在1108处,生成器确定第二编程语言是第二生态系统的自动化设备的原生语言。在1110处,基于第一请求并响应于确定第一生态系统和第二生态系统分别定义第一编程语言和第二编程语言,生成器系统生成第一生态系统和第二生态系统之间的接口。接口定义转换请求的代码,使得来自第一生态系统的请求可至少部分地由第二生态系统满足。由接口定义的代码可以包括与第一编程语言兼容的第一部分以及与第二编程语言兼容的第二部分。生成器系统可以将第一部分和第二部分分别发送到第一生态系统和第二生态系统的自动化设备。

在一个示例中,基于接口的第一部分和第二部分,履行第一请求。履行第一请求可以包括由第二生态系统的一个或多个物理资产执行在制造第一产品中涉及的第一工业任务。在将第一部分发送到第一生态系统的自动化设备之后,生成器系统可以接收来自第一生态系统的另一请求,例如第二请求。基于第二请求,生成器系统可以确定多个生态系统中的第三生态系统参与履行第二请求。第三生态系统可以定义第三生态系统的自动化设备原生的第三编程语言。基于第二请求,生成器可以为第三生态系统生成代码,例如代码的第三部分,而不重新生成代码的第一部分。可以基于代码的第一和第三部分来履行第二请求。履行第二请求可以包括由第三生态系统的一个或多个物理资产执行在制造第二产品中涉及的第二工业任务。

类似地,在将第二部分发送到第二生态系统的自动化设备之后,生成器系统可以接收来自多个生态系统中的另一个生态系统(例如新生态系统)的新请求。基于新请求,生成器系统可以确定第二生态系统参与履行该新请求。基于新请求,生成器可以为新生态系统生成代码的新部分而不重新生成代码第二部分。基于新生态系统的代码的第二部分和代码的新部分,可以履行新请求。履行新请求可以包括由新生态系统的一个或多个物理资产执行涉及制造新产品的新工业任务。

另外地或可选地,基于第一请求,生成器系统可以确定与履行第一请求相关联的多个生态系统中的第三生态系统。第三生态系统可以定义第三生态系统的自动化设备原生的第三编程语言。基于第一请求并且响应于确定第二生态系统和第三生态系统分别定义第二编程语言和第三编程语言,生成器可以生成第二生态系统和第三生态系统之间的第二接口。第二接口可以定义转换第二编程语言的代码,使得来自第一生态系统的第一请求可至少部分地由第三生态系统满足。

根据本发明中所描述的各种实施例,自动化任务不需要系统集成商,因为生成器模块114可生成胶水代码以实现跨多个生态系统的互操作性。此外,在生成胶水代码(例如,存根306和构架308)之后,可以将其用于未来的应用程序,这些未来的应用程序遵循针对其而生成的应用程序。即,例如,产品控制器216可以与除门架站210之外的其他门架站交互操作,而不需要进一步的集成工作,其在与门架站210相同的平台上运行。类似地,门架站210可在其到抽象层的接口由生成器模块114生成之后与其他生态系统交互操作,而无需其它集成专家。此外,作为示例,如果门架站210代替其机器人中的一个,则产品控制器216不需要采取任何动作来与新机器人交互操作。相反,从新机器人到抽象层110的接口可以由生成器模块114生成,且然后产品控制器216可以经由抽象层110调用新机器人。本发明认识到,在机器人被替换或更新的情况下,生产经常被停滞或停止。然而,在本发明所描述的实施例中,产品控制器216的产品逻辑不必改变,因为产品控制器可以与不同的机器人或完全不同的生态系统(例如机器人站212)交互操作以完成其操作。

图12示出了可在其中实施本公开的实施例的计算环境的示例。计算环境1200包括计算机系统510,该计算机系统可包括诸如系统总线521或用于在计算机系统510内传送信息的其他通信机制等通信机制。计算机系统510还包括与系统总线521耦接的用于处理信息的一个或多个处理器520。机器人设备104可以包括或耦接至一个或多个处理器520。

处理器520可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)或本领域已知的任何其他处理器。更一般地,本发明所描述的处理器是用于执行存储在计算机可读介质上的机器可读指令以执行任务的设备,并且可以包括硬件和固件中的任何一个或组合。处理器还可以包括存储可用于执行任务的机器可读指令的存储器。处理器通过操纵、分析、修改、转换或传输信息以供可执行程序或信息设备使用,和/或通过将该信息传递到输出设备来对信息起作用。处理器可以使用或包括例如计算机、控制器或微处理器的能力,并且使用可执行指令来调节以执行通用计算机不执行的专用功能。处理器可以包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(RISC)微处理器、复杂指令集计算机(CISC)微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、数字信号处理器(DSP)等等。此外,处理器520可以具有任何合适的微体系结构设计,其包括任何数量的组成组件,例如寄存器、复用器、算术逻辑单元、用于控制对高速缓冲存储器的读/写操作的高速缓存控制器、分支预测器等。处理器的微体系结构设计能够支持多种指令集中的任何一种。处理器可以与能够在其间进行交互和/或通信的任何其他处理器耦接(电耦接和/或包括可执行组件)。用户接口处理器或产生器是包括用于生成显示图像或其部分的电子电路或软件或两者组合的已知元件。用户接口包括使得用户能够与处理器或其他设备交互的一个或多个显示图像。

系统总线521可以包括系统总线、存储器总线、地址总线或消息总线中的至少一种,并且可以允许在计算机系统510的各个组件之间交换信息(例如,数据(包括计算机可执行代码)、信令等)。系统总线521可包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。系统总线521可与任何合适的总线结构相关联,包括但不限于工业标准结构(ISA)、微通道结构(MCA)、增强型ISA(EISA)、视频电子标准协会(VESA)架构、加速图形端口(AGP)架构、外围组件互连(PCI)架构、PCI-Express架构、个人计算机存储卡国际协会(PCMCIA)架构、通用串行总线(USB)架构等。

继续参考图12,计算机系统510还可以包括耦接到系统总线521的系统存储器530,用于存储将由处理器520执行的信息和指令。系统存储器530可以包括易失性和/或非易失性存储器形式的计算机可读存储介质,例如只读存储器(ROM)531和/或随机存取存储器(RAM)532。RAM 532可以包括其他动态存储设备(例如,动态RAM、静态RAM和同步DRAM)。ROM 531可以包括其他静态存储设备(例如,可编程ROM、可擦除PROM和电可擦除PROM)。另外,系统存储器530可被用于在处理器520执行指令期间存储临时变量或其他中间信息。基本输入/输出系统533(BIOS)可以被存储在ROM 531中,该基本输入/输出系统包含帮助在计算机系统510内的元件之间(例如在启动期间)传输信息的基本例程,诸如在启动期间。RAM 532可以包含可由处理器520立即访问和/或当前正由处理器520操作的数据和/或程序模块。系统存储器530还可包括例如操作系统534、应用程序535和其他程序模块536。应用程序535还可以包括用于开发应用程序的用户门户,允许输入参数根据需要被输入和修改。

操作系统534可被加载到存储器530中,并可提供在计算机系统510上执行的其他应用软件与计算机系统510的硬件资源之间的接口。更具体地,操作系统534可包括用于管理计算机系统510的硬件资源和用于向其他应用程序提供共同服务(例如,管理各种应用程序之间的存储器分配)的一组计算机可执行指令。在某些示例实施例中,操作系统534可控制被描述为存储在数据存储540中的一个或多个程序模块的执行。操作系统534可以包括现在已知的或将来可以开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统、或任何其他专有或非专有操作系统。

计算机系统510还可以包括磁盘/介质控制器543,其耦接到系统总线521以控制用于存储信息和指令的一个或多个存储设备,诸如磁性硬盘541和/或可移动介质驱动器542(例如,软盘驱动器、光盘驱动器、磁带驱动器、闪存驱动器和/或固态驱动器)。可以使用适当的设备接口(例如,小型计算机系统接口(SCSI)、集成设备电子器件(IDE)、通用串行总线(USB)或FireWire)将存储设备540添加到计算机系统510。存储设备541、542可以在计算机系统510的外部。

计算机系统510还可以包括现场设备接口565,其耦接到系统总线521以控制现场设备566,例如在生产线中使用的设备。计算机系统510可以包括用户输入接口或GUI 561,其可以包括一个或多个输入设备,例如键盘、触摸屏、平板和/或定点设备,用于与计算机用户交互并向处理器520提供信息。

计算机系统510可以响应于处理器520执行包含在存储器(例如,系统存储器530)中的一个或多个指令的一个或多个序列,来执行本发明的实施例的处理步骤的一部分或全部。这些指令可以从存储器540的另一计算机可读介质(例如,磁性硬盘541或可移动介质驱动器542)读入系统存储器530。磁性硬盘541和/或可移动介质驱动器542可以包含由本公开的实施例使用的一个或多个数据存储器和数据文件。数据存储器540可包括但不限于数据库(例如,关系型、面向对象型等)、文件系统、平面文件、数据存储在计算机网络的一个以上节点上的分布式数据存储设备、对等网络数据存储器等。数据存储器可以存储各种类型的数据,例如技能数据、传感器数据或根据本公开的实施例生成的任何其他数据。可以对数据存储内容和数据文件进行加密以提高安全性。处理器520还可以在多处理配置中使用以执行包含在系统存储器530中的一个或多个指令序列。在可选实施例中,可以使用硬连线电路来代替软件指令或者与软件指令结合。因此,实施例不限于硬件电路和软件的任何特定组合。

如上所描述,计算机系统510可以包括至少一个计算机可读介质或存储器,用于保存根据本发明的实施例编程的指令,并用于包含数据结构、表、记录或本发明描述的其他数据。这里使用的术语“计算机可读介质”是指参与向处理器520提供指令以供执行的任何介质。计算机可读介质可以采用许多形式,包括但不限于非暂时性、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘,例如硬性磁盘541或可移动介质驱动器542。易失性介质的非限制性示例包括动态存储器,例如系统存储器530。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成系统总线521的导线。传输介质还可以采用声波或光波的形式,例如在无线电波和红外数据通信期间产生的那些声波或光波。

用于执行本公开的操作的计算机可读介质指令可以是汇编指令、指令系统体系结构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码、包括诸如Smalltalk、C 等面向对象的编程语言,以及诸如“C”编程语言或类似的编程语言等传统的程序化程序语言。计算机可读程序指令可以完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上和部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以(例如,使用互联网服务提供商通过互联网)与外部计算机进行连接。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本公开的方面。

参考根据本公开的实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来在本发明中描述本公开的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读介质指令来实施。

计算环境1200还可包括使用到诸如远程计算设备580等一个或多个远程计算机的逻辑连接在网络化环境中操作的计算机系统510。网络接口570可以允许例如经由网络571与其他远程设备580或系统和/或存储设备541、542进行通信。远程计算设备580可以是个人计算机(便携式或台式)、移动设备、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括许多或所有上述与计算机系统510相关的元件当在网络环境中使用时,计算机系统510可以包括调制解调器672,用于通过网络571(例如因特网)建立通信。调制解调器672可经由用户网络接口570或经由另一适当机制连接至系统总线521。

网络571可以是本领域中通常已知的任何网络或系统,包括因特网、内联网、局域网(LAN)、广域网(WAN)、城域网(MAN)、直接连接或系列连接、蜂窝电话网络、或能够促进计算机系统510和其他计算机(例如,远程计算设备580)之间通信的任何其他网络或介质。网络571可以是有线的、无线的或其组合。有线连接可以使用以太网、通用串行总线(USB)、RJ-6或本领域中公知的任何其他有线连接来实施。无线连接可以使用Wi-Fi、WiMAX和蓝牙、红外、蜂窝网络、卫星或本领域公知的任何其他无线连接方法来实施。另外,若干网络可单独工作或彼此通信以促进网络571中的通信。

应当理解,图12中描绘的存储在系统存储器530中的程序模块、应用程序、计算机可执行指令、代码等仅仅是说明性的而不是穷尽性的,并且被描述为由任何特定模块支持的处理可替换地分布在多个模块上或者由不同的模块来执行。此外,还提供了各种程序模块、脚本、插件。可以提供应用编程接口(API)或在计算机系统510、远程设备580上本地托管的和/或在经由一个或多个网络571可访问的其他计算设备上托管的任何其他合适的计算机可执行代码,以支持由图12中描绘的程序模块、应用或计算机可执行代码提供的功能和/或附加或替代功能。此外,功能可被不同地模块化,使得被描述为由图12所示的程序模块集合共同支持的处理可由更少或更多数量的模块来执行,或者被描述为由任何特定模块支持的功能可至少部分地由另一模块来支持。另外,支持本发明所描述功能的程序模块可形成一个或多个应用程序的一部分,这些应用程序可以根据任何合适的计算模型(例如客户端-服务器模型、对等模型等)跨任意数量的系统或设备执行。此外,被描述为由图12中描绘的任何程序模块支持的任何功能可至少部分地在跨任意数量的设备的硬件和/或固件中实施。

还应当理解,在不脱离本公开的范围的情况下,计算机系统510可以包括除了所描述或描绘的那些之外的可选和/或附加的硬件、软件或固件组件。更具体地,应当理解,描绘为形成计算机系统510的一部分的软件、固件或硬件组件仅仅是说明性的,并且在各种实施例中可能不存在某些组件或者可以提供附加组件。虽然已将各种说明性程序模块描绘和描述为存储在系统存储器530中的软件模块,但应当理解,被描述为由程序模块支持的功能可以通过硬件、软件和/或固件的任何组合来启用。还应当理解,在各种实施例中,上述模块中的每一个可以表示所支持功能的逻辑分区。该逻辑分区是为了便于解释该功能而描绘的,并且可能不表示用于实施该功能的软件、硬件和/或固件的结构。因此,应当理解,在各种实施例中,被描述为由特定模块提供的功能性可至少部分地由一个或多个其他模块提供。此外,在某些实施例中可能不存在一个或多个所描绘的模块,而在其他实施例中,未描绘的附加模块可以存在并且可以支持所描述的功能和/或附加功能的至少一部分。此外,虽然某些模块可以被描绘和描述为另一个模块的子模块,但是在某些实施例中,这样的模块可以被提供为独立的模块或其他模块的子模块。

虽然已经描述了本公开的具体实施例,但是本领域的普通技术人员将认识到,许多其他修改和替代实施例也在本公开的范围内。例如,关于特定设备或组件描述的任何功能和/或处理能力可以由任何其他设备或组件来执行。此外,尽管已经根据本公开的实施例描述了各种说明性实施方式和架构,但是本领域的普通技术人员将理解,对本发明所描述的说明性实施方式和架构的许多其他修改也在本公开的范围内。另外,应当理解,本发明中描述为基于另一操作、元件、组件、数据等的任何操作、元件、组件、数据等可以另外基于一个或多个其他操作、元件、组件、数据等。因此,短语“基于”或其变体应被解释为“至少部分地基于”。

尽管已经用结构特征和/或方法动作专用的语言描述了实施例,但是应当理解,本公开不必限于所描述的具体特征或动作。相反,具体特征和动作被公开为实施实施例的说明性形式。除非另外特别说明,或者在所使用的上下文中另外理解,否则诸如“能”、“能够”、“可”或“可能”等条件语言通常旨在表达某些实施例可以包括而其他实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤以任何方式对于一个或多个实施例是必需的,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下判定这些特征、元件和/或步骤是否被包括在任何特定实施例中或者是否将在任何特定实施例中执行的逻辑。

图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示模块、段或指令的一部分,其包括用于实施指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中标注的功能可以与图中标注的顺序不同。例如,连续示出的两个方框实际上可以基本上同时执行、或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由基于专用硬件的系统来实施,该系统执行指定的功能或动作或者执行专用硬件和计算机指令的组合。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜