本公开通常涉及应用商店(application stores或app stores),并且尤其涉及用于供负责产品开发的人员使用的产品(比如半导体设备)的状态机的应用商店的方法和装置。
背景技术:
许多机电系统、设备和产品都包括被编程来根据预定义的控制算法控制其操作的控制系统。例如,包括用于控制机电组件的位置和/或速度的马达的系统通常包括执行根据限定的系统操作例程或序列来控制马达的操作的控制算法的控制系统。这些控制系统可以部分地在半导体设备、比如微控制器或其他可编程的集成电路上来实现。
尽管在类似类型的控制应用之间存在一些共同点,但是控制例程在不同的控制应用中依使用该例程的特定应用而不同。例如,用于控制特定类型的三相感应马达的程序可以是用于使用这种马达的许多类型的产品的关键构建块。然而,用于控制作为洗衣机中的搅动器的马达的程序不同于用于控制作为输送机系统中的辊的相同马达的程序。尽管用于各种类型的产品的控制例程之间具有共同点,但设计者必须经常通过编写相当大量的控制代码来开发用于给定产品的控制例程,所述控制代码可以包括针对给定类型的控制应用的通用控制功能,以及专用于正在为其编写控制代码的产品的定制代码两者。
技术实现要素:
本公开的一个或更多个实施例涉及用于状态机应用的应用商店,所述状态机应用能够被下载和执行以便于控制产品、系统或设备的一个或更多个机电组件。在一个或更多个实施例中,本文描述的应用商店存储、分类和分发表示描述目标产品的操作或控制序列的状态机的应用。所述应用能够基于关联的状态机所涉及的产品或控制应用的类型、用于状态机的目标平台的供应商或其他分类标准来分类。该应用商店允许用户从多个存储的应用中选择和检索至少一个应用,并且可选地修改由该应用限定的、状态机的一个或更多个参数,以便按照特定的目标应用的需要定制状态机的操作,在该特定的目标应用上将执行状态机应用。检索的——以及可选地修改的——状态机应用能够安装在控制器(例如,微控制器或其他类型的半导体控制器)上,并被执行以便于根据该状态机来控制产品、产品组件、系统或设备。
附图说明
图1是用于洗衣机应用的状态机的图示。
图2是用于洗衣机应用的替代状态机的图示。
图3是用于状态机的应用商店的框图。
图4是用于状态机的应用商店的方法的流程图。
图5是用于状态机的应用商店的一部分的框图,其中目标平台包括马达。
图6是用于状态机的应用商店的方法的流程图,其中目标平台包括马达。
图7是用于状态机的应用商店的图形用户界面(GUI),其中目标平台包括马达。
图8是表示用于实现本文描述的一个或更多个实施例的示例性联网或分布式计算环境的框图。
图9是表示用于实现本文描述的一个或更多个实施例的示例性计算系统或操作环境的框图。
具体实施方式
现在参考附图描述各种实施例,其中相同的参考标号始终表示相同的元件。在下面的描述中,为了解释的目的,阐明了许多具体的细节以便提供对本公开的理解。然而,应当理解,可以在没有这些具体细节的情况下或者用其他方法、组件、材料等来实践这样的实施例。在其他实例中,以框图形式示出结构和设备以便于描述一个或更多个实施例。
文件传输协议(FTP)是用于在传输控制协议(TCP)网络(比如因特网)的计算机之间传输或共享文件的网络协议。以这种方式传输或共享的文件能够包括计算机软件,比如源代码、数字媒体或应用。一些托管媒介商店实现与内容的下载相关的事务,使得能够向用户收取将某些类型的内容下载到终端用户设备(例如,移动电话、台式计算机、便携式计算机、桌上型计算机等)的费用。
便于下载应用的托管媒介商店——被称为“应用商店”——对某些类别的终端用户计算设备寻址,并且还执行与应用的下载相关的事务。应用通常能够根据与应用的下载相关联的事务的类型来分类。例如,免费应用能够免费地下载,付费应用必须由终端用户在下载之前购买,被称为“免费增值”的混合应用可免费下载但包括可选的可供购买的升级功能。
一些应用商店实现终端用户设备应用商店的事务功能,但侧重于较低级的软件代码。例如,一些应用商店允许软件开发人员和信息技术(IT)专业人员来查找、处理和部署软件。
在电子设计自动化(EDA)领域中,特别是在半导体领域中,知识产权(IP)核或IP块是能够在通常属于一方的多个半导体设计中重复使用的逻辑或数据的单元。示例IP核或IP块包括但不限于处理器、存储器、输入输出连接、模拟功能块等。IP核或IP块被分类为软核或硬核。软核以高级语言(例如,寄存器传输级语言)来提供,而硬核是设计(例如,晶体管布局)的较低级的物理描述。
一些软件分发平台试图通过应用商店功能使IP核或IP块可用。例如,允许为开发人员提供代码的一些应用商店可能允许半导体设计者从能够用于构建片上系统(SoC)的多个可用半定制块或相关联的驱动器中进行选择,或便于在开发人员之间通过分发平台共享脚本。这些分发平台可以免费提供这些IP代码,或者可能要求为每个实例化的使用支付使用费或版税。
一些应用库为马达控制、照明、电源等这样的应用提供已验证的功能。然而,这样的库主要集中于对较低级的驱动器的分发,并且不会使构建用于实例化终端产品(例如,洗衣机、输送机系统、纸幅张力控制系统或其他产品或系统)的较高阶应用的进程简化或自动化。
一些公司许可针对电力电子应用的特定应用软件。然而,这些应用是可经由应用程序编程界面(API)而非图形用户界面(GUI)来访问的嵌入式软件。所述软件通常还需要工程师独立于由在客户或被许可方端负责产品开发的其他工程师执行的开发工作来定制该软件。根据此模型,某些应用块是定制的,而不是在应用商店环境中被重复使用和修改的。
控制系统通常包括转换电信号以便于对产品或系统中的物理过程进行机械控制或致动的设备。考虑到半导体设备的低成本和普遍性,所述电信号通常由一个或更多个微控制器或其他可编程集成电路来提供以实现这种机械控制。存在与使用半导体微控制器来控制产品或产品组件相关的许多挑战。举例来说,由不同公司制造的半导体微控制器不共享公用语言。例如,一些设备使用8051指令集,而在其他设备上使用英特尔公司的x86指令集和ARM控制指令集。一些微控制器还使用由它们各自的提供者开发的专有指令集。微控制器还能够设置为用于现场可编程门阵列(FPGA)设备的IP核或IP块。虽然针对这些平台中的每一个都有能够使用比如C编程语言等更高级语言来工作的编译器,但在产品开发方面还存在需要人员靠近硬件以实现机电控制或致动的设计考量。
此外,应用在产品开发方面有所不同。例如,用于控制特定类型的三相感应马达的系统可以是许多类型的工业应用中的关键构建块。然而,用于将马达作为洗衣机中的搅动器来使用的程序可能与用于控制用作输送机中的辊时的马达的程序不同。因此,满足这种控制应用需求的应用商店应当在考虑提供适应性以适应不同的终端用户应用(例如,洗衣机应用、输送带应用等)的同时,还考虑到可复用的构建块,比如感应马达控制器。为了实现无缝体验,较低级的构建块(例如,感应马达控制器)和较高阶的应用能力(例如,洗衣机对输送带)都需要抽象化。如果仅提供较低级的构建块,那么将难以创建应用。如果只提供较高阶的应用,那么应用将不会运行,或只在目标主机上运行。
为了解决这些和其他问题,并且将应用商店扩展到负责产品开发的人员,本公开的一个或更多个实施例重新构想了用于状态机的应用商店的概念。一般来说,根据本文描述的一个或更多个实施例的应用商店包括表示描述产品功能的状态机的多个应用。用户能够从该多个应用中选择至少一个应用。中间步骤可以允许用户定制状态机或其参数。另一中间步骤可以允许用户识别目标平台并且进一步将状态机转换成无需用户编写计算机代码就可由该目标平台中的半导体设备读取的格式。该步骤可以将较低级的构建块与由状态机表示的较高阶的应用融合。另一中间步骤可以处理对表示状态机的应用加以使用的权限。当应用专用代码安装在半导体设备上时,该具有应用专用代码的半导体设备能够执行该状态机。在一个或更多个实施例中,该状态机还可以在仿真环境中、在参考平台或开发板上、或在终端用户产品中的半导体设备上来执行。
在示例实施例中,该系统能够用于选择和定制用于在微控制器上执行的应用,以便于控制马达控制系统。在示例场景中,马达控制应用能够用于控制洗衣机中的搅拌器。状态机能够表示洗衣机周期(例如,浸泡、洗涤、烘干等)。根据一个或更多个实施例,应用商店平台允许用户对表示状态机的应用进行选择,可选地定制由应用表示的状态机,并且将应用安装在微控制器上。因此,系统使用户能够为洗衣机马达控制器创建开箱即用的解决方案,减少开发定制代码的需求。在另一示例场景中,马达控制应用可以用于控制输送带。在该示例中,状态机表示输送带周期(例如,等待、移动等)。该替代的状态机可以由用户选择以使用相同的底层微控制器和较低级的构建块(或使用不同的较低级的构建块的不同微控制器)来创建用于输送带控制的开箱即用的解决方案,而不需要终端用户开发定制代码。
通过这种方式,负责产品开发的人员享受应用商店的益处。例如,由于设计师不需要编写代码或理解用于控制应用的微控制器核的复杂性,因此能够通过利用应用商店提供的应用来减少开发时间。通过使代码开发抽象化,应用商店系统还能够减少微控制器之间的转换成本。应用商店所提供的灵活性能够允许项目团队支持多个微控制器,或如果业务需求要求,则在微控制器厂商之间切换。该应用商店还允许应用在用户社区内共享,并促进用于产品和控制系统的状态机的数据库不断改进。
图1是用于洗衣机应用的状态机的图示。特别地,图1中描述的状态机是由德州仪器(Texas Instruments)微控制器实现的示例状态机。该格式将状态机示为图灵机的有限状态表示。第一个块或初始化状态100是干燥状态。在这一状态下,洗衣机没有水并准备好进入新的周期。然后控制器转变到空闲状态110,该空闲状态110等待用户按下开始按钮以开始周期。当按下启动按钮时,控制器转变到填充状态120,在该填充状态120期间,填充阀打开并且洗衣机滚筒注水。如图1所示,控制器逻辑上遵循多个搅动周期和一个排水周期的附加状态。
图2是用于洗衣机应用的替代状态机的图示。具体地,图2描述来自LG的示例控制算法。与图1的状态机格式相反,该格式不是图灵机的有限状态表示。相反,图2描述处于二维(在x-y图上)的笛卡尔坐标系中的状态机,其将时间210示出为横坐标(或x轴)并且将转动洗衣机滚筒的马达的每分钟转数(RPM)220示出为纵坐标(或y轴)。由于洗衣机应用通过线性方式的状态(浸泡、洗涤、干燥等)来进展,所以能够以这种格式来描述该状态机。多种格式能够用来表示该状态机,包括图灵机的有限状态表示、笛卡尔坐标系、表格、流程图等。通常,该状态机呈现出用于产品、设备或机器的、具有至少两种状态的操作的可视化表示。
“产品”说明性地涉及供消费市场(例如,洗衣机或其搅动器、微波炉或其电磁加热元件、冰箱或其压缩机等)、工业市场(输送机或其带系统、冰箱或其发热元件、炼油厂或其液位控制系统)、汽车和航空航天市场(防抱死制动系统、用于发动机的涡轮增压器、电子燃料喷射系统)、能源市场(太阳能系统或其调节、风力涡轮机或其传动装置和发电机、钻井设备等)、医疗设备(MRI机中的线圈定位器、起搏器中的脉冲发生器、静脉滴注控制器等)、机器人学(UAV稳定性、机械臂控制器、人工假肢等)、无线设备、物联网等来使用的产品或组件。该产品类型的列举不旨在是排他的,而应当理解为,其他类型的产品也在本公开的一个或更多个实施例的范围内。
图3是用于状态机的应用商店的框图。根据图3所示的示例实施例,该应用商店环境包括具有服务器计算机300、客户端计算机340和目标平台370的三个设备。服务器计算机300通过本地或远程托管的多个客户机-服务器配置中的任一个与客户端计算机340通信。客户端计算机340通过包括有线协议(比如JTAG)或无线协议(比如蓝牙、WiFi或Zigbee)的多种协议中的任一种与目标平台370通信。应当理解,应用商店环境的一些实施例不需要图3中所示的所有三个主设备,并且在不脱离本文描述的一个或更多个实施例的范围的情况下,能够省略三个组件中的任一个。例如,替代的实施例能够移除客户端计算机340并且直接从服务器300向目标平台370运作,或者被本地托管在客户端计算机340上而不使用服务器计算机300。
服务器计算机300能够是本领域普通技术人员通常理解的任何计算机系统。服务器计算机300通常会包括三种元件来启用用于状态机的应用商店。多个状态机310存储在服务器计算机300的存储区域中并且可供用户选择。该服务器计算机直接地、或经由客户端计算机340的用户界面350来使多个状态机310对终端用户可见。在一个或更多个实施例中,在服务器计算机上运行的接口组件能够生成GUI并且将其转发给客户端计算机340,客户端计算机340能够用来与用于状态机的应用商店交互。GUI能够在客户端设备的用户界面350上显示可用的状态机,并且还能够包括用于接收来自用户的状态机选择条件的输入部分。
深入多个该状态机310中的可见性可以采取不同的形式。例如,在服务器计算机300上运行的接口组件可以经由用户界面350将多个状态机310呈现为列表。系统可以根据应用(例如,洗衣机)、根据支持的供应商(例如,Texas Instruments微控制器)或根据其他类别将状态机按类别分组归并。由服务器计算机300的接口组件提供的GUI还能够提供搜索特定状态机的方法。在一个或更多个实施例中,GUI能够接受包括关键字的搜索条件,或者可以支持通过应用(例如,洗衣机)或支持的供应商(例如,Texas Instruments微控制器)来识别状态机的特定搜索能力。响应于搜索或选择条件的接收,在服务器计算机300上运行的选择组件能够选择多个状态机310中满足用户输入的搜索或选择条件的子集,并且或者将该子集作为显示列表或其他图形表示传递到客户端设备以供用户查看和进一步选择,或者启动状态机子集到客户端计算机340的下载。选中的状态机应用能够在用户界面350上显示由该应用表示的状态机的可视化表示,其中状态机被设计用于操作具有至少两种状态的产品(例如,洗衣机、输送机等)。
至少一个较低级的构建块320可用作用于状态机的应用商店的一部分。为了在不需要终端用户编写新代码的情况下实现终端用户产品的生成,系统能够使较低级的构建块320对用户可用,同时除非用户请求查看该较低级的构建块320的底层代码,否则为用户隐藏其细节。因此,在一个或更多个实施例中,该较低级的构建块320位于服务器计算机300上,并且不通过用户界面350直接对用户可见。在替代的实施例中,较低级的构建块320能够存储在客户端计算机340上,或者系统能够允许用户访问和修改该较低级的构建块的计算机代码、路由和其他参数。
较低级的构建块320包括会与状态机应用(或app)绑定以创建或控制产品的计算机代码、路径和其他参数。较低级的构建块能够与特定微控制器和/或其他特定硬件相关联。例如,较低级的构建块可以与微控制器的特定引脚分布、为应用选择的马达、或参考板布局相关联。该较低级的构建块可以用接近硅的语言来编写,例如寄存器传送语言(RTL)或VHSIC硬件描述语言(VHDL)。该较低级的构建块可以包括对设备而言的机器语言可执行代码或能够被编译的中间代码,例如C语言。较低级的构建块描述的是操作(感应马达控制器)而非较高阶的应用(例如,洗衣机或输送带)。较低级的构建块320为状态机310提供环境以生成在目标平台370上执行以实现终端用户产品的代码360。
在一个或更多个实施例中,事务引擎330可选地被包括为用于状态机的应用商店的一部分。事务引擎330为用户提供获取对应用的许可权限的机制。在一些实施例中,应用是免费的并且是使用开放源许可模型来提供的。在其他实施例中,状态机和较低级的构建块是被单独许可的。状态机可以在免费增值的基础上来处理;也就是说,可以免费下载,但可以选择付费升级,例如解锁附加功能、定制工具或增加许可计数。收入模型能够使用用于无限使用许可的固定费用、按使用量的许可费用或向终端用户收费的其他安排。所述事务模型可以包括设计的使用价格和用于每个实例化使用的版税。
服务器计算机300和客户端-服务器计算机模型的使用允许用于状态机的应用商店对用户社区可用。用户社区可以包括全局组、特定半导体设备的用户组、特定公司雇用的人员组、工程团队内的人员组或其他这样的组。如果应用商店使得至少两个状态机310可用,并且至少两个用户是用户社区的一部分,则该用户社区可以由上面没有列出的其他分界线来定义。每个用户能够使用单独的客户端计算机340来登录到服务器计算机300并且访问用于状态机的应用商店(例如,经由到远程网络、比如因特网的无线连接、经由本地有线或无线网络等)。事务引擎330可以根据用户社区、使用许可或其他凭证来配置,以授权对状态机310和相关的较低级的构建块320的许可。
客户端计算机340基本上能够是任何计算机系统。例如,客户端计算机340能够是移动计算设备,如便携式计算机、平板计算机、桌上型计算机、移动电话或类似的手持机等。客户端计算机340通常会包括用于访问用于状态机的应用商店的图形用户界面(GUI)。在一个或更多个实施例中,GUI可以由服务器计算机300提供给客户端计算机340。可替代地,GUI可以包括驻留在客户端计算机340本地的可执行文件,使得GUI的执行引起客户端计算机340连接到服务器计算机300以访问状态机库310。客户端计算机340可以是瘦客户端或胖客户端。瘦客户端架构设计为小型,使得大量的数据处理发生在服务器计算机300上。胖客户端架构使处理过程主要在客户端计算机340上进行。在示例胖客户端架构中,服务器计算机300可以仅作为用于应用的状态机的云存储库而用于文件存储。
目标平台370可以是产品、产品的组件、开发环境或用于创建该产品或组件的模拟环境。在洗衣机示例中,目标平台370能够是洗衣机(产品)、用于转动滚筒的马达(产品的组件)或者来自半导体制造商的用于在洗衣机控制中使用的微控制器的开发板(开发环境)。目标平台370会包括至少一个半导体设备380,并且可以包括机电元件390。在洗衣机示例中,半导体设备380可以是来自Texas Instruments或另一制造商的微控制器,并且机电元件390可以是用于转动洗衣机的滚筒的马达或马达部件。
半导体设备380通常会是微控制器,设计用于嵌入式应用的集成电路上的小型计算机。半导体设备380还可以是FPGA,或者是作为完全可编程核或者是作为包括微控制器加可编程逻辑的混合设备。
状态机310所指向的产品可以包括机电元件390。机电元件390从半导体设备380接收信号,并且转化或转换这些信号以产生物理或机械变化。在示例洗衣机场景中,机电元件是马达和由该马达驱动的滚筒。在示例输送带场景中,机电元件是马达和由该马达驱动的辊。机电元件390还可以包括光电系统、电磁系统、一个或更多个传感器或产生或测量物理效应的其他系统。
代码360包括能够被目标平台370使用以产生信号来驱动半导体设备380的计算机代码。在各种实施例中,代码360能够在服务器计算机300或客户端计算机340上生成。代码360包括足以实现状态机310和较低级的构建块320的能力,使得半导体设备380能够根据为目标平台选择的状态机来控制和驱动机电元件390。代码360可以包括低级的代码,比如可由半导体设备380直接使用的目标代码,或者可以包括能够由附加软件模块编译或解释以供半导体设备380使用的代码。
图4是用于状态机的应用商店的方法的流程图。虽然图4的流程图被描述为包括七个步骤,但是一些实施例可能不需要所有七个步骤来执行用于状态机的应用商店的方法。相反,能够使用所示步骤的子集。例如,定制该状态机的步骤420和处理应用获取的步骤450是可选步骤。还应当理解,某些步骤的操作顺序不必符合图4所示的顺序。例如,可以在该过程中的任何时刻——从开始到代码已下载和验证后的最后步骤——执行步骤450(处理应用获取)。
最初,在步骤400,呈现应用商店。步骤400通常会与客户端计算机340和如下面结合图6所讨论的用户界面相关联。在步骤410,由用户为产品选择状态机。如先前所讨论的,状态机的列表可以显示在用户的客户端设备上,并且状态机可以经由与所呈现的列表的交互来选择。为了帮助用户定位期望的状态机,状态机的类别可以由应用程序(例如,洗衣机、输送带等)、由支持的供应商(例如,Texas Instruments)或由一个或更多个其他类别来分组归并。应用商店还能够实现搜索特定状态机的方法。这能够包括关键字搜索或识别用于根据应用(例如,洗衣机、输送带等)、支持的供应商或另一类别来选择的特定状态机的能力。选中的状态机能够提供用于具有至少两种状态的产品的操作的可视化表示。
在步骤420,可选地定制状态机。在这点上,系统可以包括编辑组件,其允许用户定制所选状态机的所有特性或特性的特定子集。在洗衣机示例中,编辑组件可以允许用户调整、插入或删除搅动状态(例如,图1的搅动状态130);例如,经由与显示在用户界面350上的状态机的描述的交互。编辑组件还可以允许用户改变周期的特定部分的时间210或马达速度220。还能够对所选状态机进行其他调整。在一个或更多个实施例中,如果选择用于特定类型的应用——例如洗衣机——的状态机,则系统能够提供洗衣机周期的模板,并且由用户修改产生的变体能够被创建和保存为单独的或相关的状态机。例如,系统能够允许创建用于常规洗涤、重型洗涤和精细洗涤的洗衣机状态机的变体,其中每个变体具有适当修改以实现正确类型的洗涤周期的参数组。
图2的二维状态机能够是三维状态机,其中第三维度控制水温和用于混合热水和冷水输入的相关机电功能。在洗衣机示例中,能够使用自抗扰控制(ADRC)或经典的比例-积分-微分控制(PID控制)来实现马达控制。这些控制系统中的变量也能够被调整。
随后进行一系列步骤来启用目标设备。在步骤430,将状态机与目标平台绑定。该步骤允许用户选择在其上执行表示应用的状态机的目标平台。步骤430可以涉及对包括半导体设备380的特定微控制器的选择。然而,在平台特定化的或限于某些平台的系统中可以省略步骤430。通过在步骤410中对状态机的选择和固有的或通过步骤430对目标平台的认知,在步骤440生成应用代码。来自该步骤的代码与代码360等价,其会受到应用的高级属性和包括其半导体设备380的目标平台的低级属性的影响。在步骤440创建代码之后,将代码下载到目标设备460。
在步骤450,可选地处理应用获取。这涉及用于产品的状态机的许可。如上面结合事务引擎330所讨论的,在一些场景下,系统能够使用开源模型来免费提供应用。系统还可以单独发许可给状态机和较低级的构建块。状态机应用也可以在免费增值模式下来处理,使得应用可以被免费下载并具有付费升级选项,该付费升级选项可解锁比如定制工具或增加许可计数等的其他特性。在一些实施例中,系统能够实现收入模型,其使用用于无限使用许可的固定费用、按使用量的许可费用或向终端用户收费的其他安排。所述事务模型可以包括设计的使用价格和用于每个实例化使用的版税。
图5-7示出用于状态机的应用商店的实施例,其中目标平台包括马达。图5是用于状态机的应用商店的一部分的框图,其中目标平台包括马达。具有个人计算机图形用户界面(PC GUI)的计算机510类似于具有用户界面350的客户端计算机340。存在涉及图6中讨论的马达应用的附加初始化步骤。存储器520和马达270类似于目标平台370。半导体设备380的处理元件以及服务器计算机300和其组件在图5中未示出,但通常会被实现。马达570是机电元件390的一种形式。
马达示例中的存储器520是通常作为微控制器的一部分的微控制器闪存,但是也可以被实现为单独的存储器芯片。在该马达示例中,存储器520包括至少四个元件。马达控制代码530包括激活马达(开、关、转动等)的基本软件例程。运动控制代码540包括控制马达的性质(加速度、减速度、加速度变化率等)的复杂软件例程。如上文结合图4的步骤460所讨论的,闪存加载器550包括使软件能够下载到存储器520的软件。马达应用代码560包括执行用于较高阶的应用(洗衣机、输送带等)的状态机的软件。在该示例中,代码360被存储为单独的模块:与马达控制代码530和运动控制代码540相关联的存储器中的较低级的构建块(例如,较低级的构建块320),以及与马达应用代码560相关联的存储器中的状态机(例如,来自多个状态机310)。
图6是用于状态机的应用商店的方法的流程图,其中目标平台包括马达。这些步骤中的三个类似于图4所示的方法中的对应步骤。所述访问所需马达的代码的步骤630类似于选择状态机的步骤420。所述调整应用状态机的步骤640类似于定制状态机的步骤420。将应用闪存到芯片上的保留的存储器上的步骤650是下载到目标设备的步骤460的一种形式。
在图6所示的实施例中,来自图4所示的一般方法的某些步骤是隐含的、以替代方式来处理的、或不被包括在内的。在GUI中呈现应用商店的步骤400隐含在之后在步骤610和620中所讨论的初始化序列中。在图6所示的示例中,与目标平台绑定的步骤430和创建应用代码的步骤440是至少部分地在运行时来处理的。与如上关于存储器520所讨论的相同,存在用来存储较低级的构建块(在530和540中)和状态机(在560中)的单独区域。处理应用获取的步骤450在图6中未示出,并且如上面结合图4所讨论的,其在一个或更多个实施例中是可选的步骤。
计算机510以及步骤610和620描述作为马达实例的一部分的初始化。测量马达的步骤610读取马达570的参数以识别该马达并且确定应当使用什么马达控制代码530和相关参数。调谐运动控制器的步骤620优化马达570的运动控制,使得马达平稳运行并且确定应当使用什么运动控制代码540和相关参数。例如,能够使用自抗扰控制(ADRC)或经典的比例-积分-微分(PID)控制来实现马达控制。这些控制系统中的变量也能够在步骤620期间被调整并且存储在与运动控制代码540相关联的存储器中。步骤660是马达示例中的附加步骤,其中系统被微调。这可能需要进一步改变存储器520。
图7是用于本发明的示例性的非限制性图形用户界面(GUI),其中目标平台包括马达。这是可以在马达示例中使用的多个屏幕中的一个。在其他实施例中,所有内容都能够显示在单个屏幕上。步骤710与步骤610并行并且涉及对马达的识别。步骤710和720与步骤620并行并且涉及调谐用于马达的运动控制器。图7特别聚焦于步骤720——速度曲线控制,其是马达控制器的元件。步骤730与步骤630并行并且涉及对状态机的选择。步骤730进一步推荐在其中开发状态机的替代实施例,其可以通过与GUI的交互来完成。区域740示出用于马达的速度曲线控制参数的可视化表示。在其他屏幕上,类似于图1或图2,区域740能够示出所选状态机的可视化表示。
其他替代实施例可以包括脱离于用于图3和图4中所示的状态机的应用商店的一般示例和图5-7中所示的马达示例的不同初始化步骤、可选配置或其他元件。也能够使用除马达570之外的其他形式的机电元件390。前述描述仅旨在是说明性的而不应被解释为限制性的。本发明的其他实施例对于本领域普通技术人员会是显而易见的。
示例性的联网和分布式环境
本领域普通技术人员能够理解,本文描述的各种实施例能够结合任何计算机或其他客户端或服务器设备来实现,其能够被部署为计算机网络的一部分或者部署在分布式计算环境中,并且能够连接到可以在其中找到媒体的任何种类的数据存储。在这点上,本文描述的视频编辑系统的各种实施例能够在任何计算机系统或环境中来实现,所述计算机系统或环境具有任何数量的存储器或存储单元(例如,服务器计算机300、客户端计算机340或目标平台370的存储器)以及在任何数量的存储单元中发生的任何数量的应用和过程。这包括但不限于具有部署在具有远程或本地存储器的网络环境或分布式计算环境中的服务器计算机和客户端计算机的环境。例如,参考图3,多个状态机310、较低级的构建块320、事务引擎330和代码360能够存储在与单个设备相关联的单个存储器上,或者能够分布在与相应多个设备相关联的多个存储器之间。类似地,多个状态机310、较低级的构建块320、事务引擎330和代码360能够由单个处理器或由与多个设备相关联的多个分布式处理器来执行。
分布式计算通过计算设备和系统之间的通信交换来提供计算机资源和服务的共享。这些资源和服务包括针对对象的信息交换、缓存存储和磁盘存储。这些资源和服务还能够包括跨多个处理单元的处理能力的共享,所述多个处理单元用于负载均衡、资源扩展、处理专门化等。分布式计算利用网络连接,允许客户利用他们的集体力量来惠及整个企业。在这点上,各种设备可以具有可以参与本公开的各种实施例的应用、对象或资源。
图8提供示例性的联网或分布式计算环境的示意图。分布式计算环境包括计算对象810、812等以及计算对象或设备820、822、824、826、828等,其可以包括由应用830、832、834、836、838表示的程序、方法、数据存储、可编程逻辑等。能够理解,计算对象810、812等以及计算对象或设备820、822、824、826、828等可以包括不同的设备,比如个人数字助理(PDAs)、音频/视频设备、移动电话、数字音乐播放器、个人计算机、笔记本计算机、平板计算机等,其中本文描述的惯性估计器的实施例可以驻留在这样的设备上或与这样的设备交互。
每个计算对象810、812等以及计算对象或设备820、822、824、826、828等能够直接或间接地通过通信网络840与一个或更多个其他计算对象810、812等以及计算对象或设备820、822、824、826、828等通信。即使在图8中被图示为单个元件,然而通信网络840可以包括向图8的系统提供服务的其他计算对象和计算设备,和/或可以表示未示出的多个互连网络。每个计算对象810、812等或计算对象或设备820、822、824、826、828等还能够包含可以利用API或适于与本公开的各种实施例通信或对其进行实现的其他对象、软件、固件和/或硬件的应用,比如应用830、832、834、836、838。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统能够通过本地网络或广泛分布的网络由有线或无线系统连接在一起。当前,许多网络耦接到提供用于广泛的分布式计算的基础设施并且包括许多不同网络的因特网,但是任何合适的网络基础设施能够用于在本文的各个实施例中描述的系统所伴随的示例性通信。
因此,能够对众多网络拓扑和网络基础设施,比如客户端/服务器、对等网络或混合架构加以利用。“客户端”是使用另一个类或组的服务的一个类或组的成员。客户端能够是请求由另一程序或进程提供的服务的计算机进程,例如,大体上一组指令或任务。客户端进程可以利用所请求的服务,而不必“知晓”关于其他程序或服务本身的所有工作细节。
在客户端/服务器架构中,特别是在联网的系统中,客户端能够是访问由另一计算机(例如,服务器)提供的共享网络资源的计算机。在图8的图示中,作为非限制性示例,计算对象或设备820、822、824、826、828等能够被看作客户端,并且计算对象810、812等能够被看作计算对象810、812等在其中提供数据服务的服务器,比如从客户端的计算对象或设备820、822、824、826、828等接收数据、存储数据、处理数据、向客户端的计算对象或设备820、822、824、826、828等传输数据,但任何计算机都能够根据情况而被认为是客户端、服务器或二者。这些计算设备中的任何一个可以正在处理数据,或者请求事务服务或任务,这些服务或任务可以涉及如本文针对一个或更多个实施例所描述的系统的技术。
服务器通常是可通过远程或本地网络(例如因特网或无线网络基础设施)访问的远程计算机系统。客户端进程可以在第一计算机系统中活动,并且服务器进程可以在第二计算机系统中活动,其通过通信介质彼此通信,从而提供分布式功能并允许多个客户端利用服务器的信息收集能力。根据本文所描述的技术而使用的任何软件对象能够被独立地提供,或者分布在多个计算设备或对象上。
在通信网络840是因特网的网络环境中,例如,计算对象810、812等能够是Web服务器、文件服务器、媒体服务器等,客户端计算对象或设备820、822、824、826、828等通过许多已知协议(例如超文本传输协议(HTTP))中的任一协议与之进行通信。计算对象810、812等还可以充当客户端计算对象或设备820、822、824、826、828等,这可以是分布式计算环境的特征。示例性计算设备
如上所述,有利地,本文所描述的技术能够应用于任何合适的设备。因此,应当理解,手持的、便携的和其他所有类型的计算设备和计算对象被预期用于结合各种实施例来使用。因此,以下在图9中描述的下面的计算机仅仅是计算设备的一个示例。另外,合适的服务器能够包括该下面的计算机的一个或更多个方面,比如媒体服务器或其他媒体管理服务器组件。
尽管不是必需的,但是实施例能够部分地经由操作系统来实现,以供服务的开发者用于设备或对象,和/或包括在运行来执行本文所述的各种实施例的一个或更多个功能方面的应用软件内。软件可以在比如程序模块的计算机可执行指令的一般语境中描述,由比如客户端工作站、服务器或其他设备的一个或更多个计算机来执行。本领域技术人员将理解,计算机系统具有能够用于交换数据的各种配置和协议,因此,没有特定配置或协议将被认为是限制性的。
图9因此示出能够在其中实现本文描述的实施例的一个或更多个方面的合适的计算系统环境900的示例,但是如上面所明确的,计算系统环境900仅是合适的计算环境的一个示例而不是旨在对使用范围或功能提出任何限制。计算系统环境900也不被解释为具有与示例性计算系统环境900中所示的组件的任一个或其组合相关联的任何依赖性或要求。
参考图9,描述了用于以计算机910的形式实现一个或更多个实施例的示例性计算设备。计算机910的组件可以包括但不限于处理单元920、系统存储器930和将包括系统存储器的各种系统组件耦接到处理单元920的系统总线922。
计算机910通常包括各种计算机可读介质,并且能够是可由计算机910访问的任何可用介质。系统存储器930可以包括易失性和/或非易失性存储器形式的计算机存储介质,比如只读存储器(ROM)和/或随机存取存储器(RAM)。作为示例而非限制,系统存储器930还可以包括操作系统、应用程序、其他程序模块和程序数据。
用户能够通过输入设备940向计算机910输入命令和信息,输入设备940的非限制性示例能够包括键盘、小键盘、定点设备、鼠标、定位笔、触摸板、触摸屏、追踪球、运动检测器、摄像机、麦克风、控制杆、游戏手柄、扫描仪或允许用户与计算机910交互的任何其他设备。监视器或其他类型的显示设备也经由接口,比如输出接口950来连接到系统总线922。除了监视器之外,计算机还能够包括其他外围输出设备,比如扬声器和打印机,其可以通过输出接口950来连接。在一个或更多个实施例中,输入设备940能够向用户界面350提供用户输入,而输出接口950能够对应于用户界面350。
计算机910可以使用到一个或更多个其他远程计算机(比如远程计算机970)的逻辑连接在联网或分布式环境中运转。远程计算机970可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点、或任何其他远程媒体消费或传输设备,并且可以包括上述相对于计算机910的任一或所有元件。图9中描绘的逻辑连接包括网络972,例如局域网(LAN)或广域网(WAN),但也可包括其他网络/总线,例如蜂窝网络。
如上所述,虽然已经结合各种计算设备和网络架构描述了示例性实施例,但是基本概念可以应用于期望以灵活方式发布或消费媒体的任何网络系统和任何计算设备或系统。
同样,存在多种方式来实现相同或类似的功能,例如,适当的API、工具箱、驱动器代码、操作系统、控制器、独立或可下载的软件对象等,其使得应用和服务能够利用本文所描述的技术。因此,本文的实施例是从API(或其他软件对象)以及实现本文描述的一个或更多个方面的软件或硬件对象的角度考虑的。因此,本文所描述的各种实施例能够具有完全为硬件的方面、部分为硬件而部分为软件的方面以及为软件的方面。
单词“示例性”在本文中用于表示用作示例、实例或说明。为了避免疑义,本文所公开的方面不受这些实施例的限制。另外,本文中描述为“示例性”的任何方面或设计不一定被解释为相对于其他方面或设计是优选的或有利的,也不意味着排除本领域普通技术人员已知的等效的示例性结构和技术。此外,为了避免疑义,就具体的说明书或权利要求中使用的术语“包括”、“具有”,“包含”和其他类似词语来说,这样的术语意为以类似于术语“包括”作为一种开放的转换词的方式而包含的,不排除任何附加的或其他元件。
计算设备通常包括各种介质,其能够包括计算机可读存储介质和/或通信介质,其中这两个术语在本文中彼此不同地使用如下。计算机可读存储介质能够是能够由计算机访问的任何可用存储介质,通常是非暂时性的,并且能够包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读存储介质能够结合用于存储比如计算机可读指令、程序模块、结构化数据或非结构化数据的信息的任何方法或技术来实现。计算机可读存储介质能够包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD ROM、数字通用光盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储或其他磁存储设备或能够用于存储期望信息的其他有形和/或永久性介质。计算机可读存储介质能够例如经由接入请求、查询或其他数据检索协议由一个或更多个本地或远程计算设备访问,以进行关于由介质存储的信息的各种操作。
另一方面,通信介质通常呈现为数据信号(比如调制数据信号,例如载波或其他传输机制)中的计算机可读指令、数据结构、程序模块或其他结构化或非结构化数据,并且包括任何信息递送或传输介质。术语“调制的数据信号”或信号是指具有以在一个或更多个信号中编码信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,通信介质包括有线介质,比如有线网络或直接接线连接,以及无线介质,比如声音、RF、红外和其他无线介质。
如上所述,本文描述的各种技术可与硬件或软件或在适当时与两者的组合结合来实现。如本文所使用的,术语“组件”、“系统”等同样旨在表示计算机相关实体,硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。举例说明,在计算机上运行的应用和该计算机都能够是组件。一个或更多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,“设备”能够以专门设计的硬件的形式呈现;通过在其上执行软件使得硬件能够执行特定功能(例如,编码和/或解码)而专门化的通用硬件;存储在计算机可读介质上的软件;或其组合。
已经关于几个组件之间的相互作用描述了上述系统。能够理解,这样的系统和组件能够包括那些组件或指定的子组件、指定的组件或子组件中的一些和/或附加组件,并且根据前述的各种排列和组合。子组件还能够被实现为可通信地耦接到其他组件而不是包括在父组件(分层)内的组件。另外,应当注意,一个或更多个组件可以被组合成提供集成功能的单个组件或被划分成若干单独的子组件,并且任何一个或更多个中间层,例如管理层,可以被提供来可通信地耦接到这些子组件以便提供集成功能。本文所描述的任何组件还可与本文中未具体描述但本领域技术人员通常已知的一个或更多个其他组件交互。
为了提供或辅助本文所描述的众多推论,本文所描述的组件能够检查其被授权访问的数据的全部或子集,并且能够用于从经由事件和/或数据捕获的一组观察结果推理或推断系统、环境等的状态。例如,能够采用推论来识别特定语境或动作,或者能够生成状态的概率分布。推论能够是概率性的——即,在对数据和事件的考虑的基础上对感兴趣的状态的概率分布的计算。推论还能够指用于由一组事件和/或数据组成更高级别事件的技术。
这样的推论能够导致从一组观察到的事件和/或存储的事件数据构造新的事件或动作,无论事件是否在时间接近地相关,以及事件和数据是否来自一个或多个事件和数据源。各种分类(明示和/或暗示地教导的)方案和/或系统(例如支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎等)能够结合执行与所要求保护的主题相关的自动的和/或推测出的动作来采用。
分类器能够将输入属性向量x=(x1,x2,x3,x4,xn)映射到输入所属类的置信度,如f(x)=confidence(class)。这种分类能够采用概率和/或基于统计的分析(例如,包括分析效用和成本)以预测或推断用户期望自动执行的动作。支持向量机(SVM)是能够使用的分类器的示例。该SVM通过在可能输入的空间中找到超曲面来运行,其中该超曲面试图将触发条件与非触发事件分开。直观地,这使得分类对于接近但不等同于训练数据的测试数据而言是正确的。其他有向和无向模型分类方法包括例如朴素贝叶斯、贝叶斯网络、决策树、神经网络、模糊逻辑模型,并且能够采用提供不同独立性模式的概率分类模型。本文使用的分类还包括用于开发优先级模型的统计回归。
鉴于上述示例性系统,参照各个附图的流程图(例如,图4和图6)会更好地理解可以根据所描述的主题来实现的方法。虽然为了简化说明而将方法示出和描述为一系列的框,但是应当理解和领会的是,所要求保护的主题不受框的顺序限制,因为一些框可以以不同的顺序和/或与来自本文所描绘和描述的其他框同时发生。在通过流程图示出非连续的或分支的流程的情况下,能够理解,可以实现获得相同或相似结果的各种其他分支、流程路径和块的顺序。此外,可能不需要所有示出的框来实现下文描述的方法。
权利要求书(按照条约第19条的修改)
1.一种分发用于产品控制的状态机应用的系统,包括:
存储器,其存储计算机可执行组件;
处理器,其可操作地耦接到所述存储器,所述处理器运行所述计算机可执行组件,所述计算机可执行组件包括:
接口组件,其被配置为从客户端设备接收指定一个或更多个选择条件的输入数据;
选择组件,其被配置为基于所述一个或更多个选择条件从保存在所述存储器上的状态机应用库中选择状态机应用,所述状态机应用代表一个或更多个机电系统的相应控制周期;和
分发组件,其被配置为将所述状态机应用发送到所述客户端设备。
2.根据权利要求1所述的系统,其中所述状态机应用被配置为响应微控制器的运行来根据由所述状态机应用定义的状态机执行对机电系统的控制。
3.根据权利要求2所述的系统,其中所述机电系统包括由所述微控制器控制的至少一个马达。
4.根据权利要求2所述的系统,其中所述状态机应用被配置为使用自抗扰控制或比例-积分-微分控制中的至少一个来执行所述控制。
5.根据权利要求2所述的系统,其中所述接口组件被配置为在所述客户端设备上显示所述状态机应用库的图形表示,并且其中所述输入数据包括经由与所述图形表示交互而接收的所述状态机的标识。
6.根据权利要求5所述的系统,其中所述接口组件还被配置为根据由相应的状态机应用表示的、状态机的两个或更多个类别来显示所述状态机应用库。
7.根据权利要求6所述的系统,其中所述类别包括相应的状态机应用所涉及的应用或机电系统的类型,或由相应的状态机应用支持的设备供应商中的至少一个。
8.根据权利要求2所述的系统,还包括编辑组件,其被配置为基于经由与所述状态机的图形表示交互而接收的修改输入来修改所述状态机的一个或更多个参数,以产生修改的状态机应用。
9.根据权利要求1所述的系统,还包括事务引擎,其被配置为许可终端用户使用所述状态机应用。
10.一种用于选择和部署状态机应用的方法,包括:
通过包括至少一个处理器的系统从客户端设备接收指定一个或更多个选择条件的输入数据;
通过所述系统基于所述一个或更多个选择条件从由所述系统存储的状态机应用库中选择状态机应用,所述状态机应用代表一个或更多个机电系统的相应控制周期;和
通过所述系统将所述状态机应用发送到所述客户端设备。
11.根据权利要求10所述的方法,其中所述状态机应用被配置为响应微控制器的运行来根据由所述状态机应用定义的状态机执行对机电系统的控制。
12.根据权利要求10所述的方法,还包括通过所述系统在所述客户端设备上显示所述状态机应用库的图形表示。
13.根据权利要求12所述的方法,其中所述接收包括响应与所述图形表示的交互来接收所述状态机的标识,其中所述交互选择所述状态机。
14.根据权利要求12所述的方法,其中所述显示包括根据由相应的状态机应用表示的、状态机的两个或更多个类别来对所述状态机应用库分类。
15.根据权利要求14所述的方法,其中所述分类包括根据相应的状态机应用所涉及的应用或机电系统的类型或由相应的状态机应用支持的设备供应商中的至少一个来对所述状态机应用库分类。
16.根据权利要求11所述的方法,还包括:
从所述客户端设备接收修改输入,所述修改输入限定对由所述状态机应用定义的对所述状态机的修改;和
根据所述修改输入来修改所述状态机应用。
17.根据权利要求10所述的方法,还包括发出许可,所述许可允许与所述客户端设备相关联的终端用户使用所述状态机应用。
18.一种其上存储有指令的非暂时性计算机可读介质,所述指令响应于运行来使计算机系统执行操作,所述非暂时性计算机可读介质包括:
从客户端设备接收指定一个或更多个选择条件的输入数据;
基于所述一个或更多个选择条件从由所述系统存储的状态机应用库中选择状态机应用,所述状态机应用代表一个或更多个机电系统的相应控制周期;和
将所述状态机应用发送到所述客户端设备。
19.根据权利要求18所述的非暂时性计算机可读介质,其中所述状态机应被配置为响应微控制器的运行来根据由所述状态机应用定义的状态机来执行对机电系统的控制。
20.根据权利要求18所述的非暂时性计算机可读介质,还包括在所述客户端设备上显示所述状态机应用库的图形表示,其中,接收所述输入数据包括响应与选择状态机的图形表示的交互来接收所述状态机的标识。
21.一种用于状态机的应用商店的方法,包括:
经由计算机呈现库,所述库包括多个状态机,每个状态机包括用于机电系统的操作的可视化表示,所述机电系统与所述计算机分离;
接收对所述多个状态机中的状态机的选择;和
响应所述接收来提供用于在所述产品上操作以启用所述状态机的计算机代码,所述计算机代码包括低级的构建块,所述低级的构建块被配置为由组成所述机电系统的微控制器、板布局或机电设备运行。
22.根据权利要求21所述的方法,其中所述机电系统是消费产品、工业产品、汽车产品、航空航天产品、能源产品、医疗设备、机器人或无线设备。
23.根据权利要求21所述的方法,其中所述状态机中的每个定义至少两种状态。
24.根据权利要求21所述的方法,其中所述状态机的可视化表示是图灵机的有限状态表示、笛卡尔坐标系、表格或流程图。
25.根据权利要求21所述的方法,还包括通过事务引擎来许可对所述计算机代码与所述机电系统的使用。
26.根据权利要求25所述的方法,其中所述事务引擎启用免费增值许可。
27.根据权利要求21所述的方法,其中所述多个状态机中的至少一个由用户社区贡献。
28.根据权利要求21所述的方法,还包括:
接收定制参数;和
基于所述定制参数来配置所述计算机代码。
29.根据权利要求21所述的方法,其中所述多个状态机能够在多个产品上操作,并且还包括:
接收对所述多个产品中的一个的选择;和
基于对所述多个产品中的所述一个的选择来修改所述计算机代码。