神经逻辑控制器

文档序号:863666 发布日期:2021-03-16 浏览:24次 >En<

阅读说明:本技术 神经逻辑控制器 (Neural logic controller ) 是由 阿基梅德斯·马丁内斯·卡内多 哈桑·西南·班科 哈特穆特·路德维格 于 2018-08-03 设计创作,主要内容包括:一种使用控制器来执行机器学习模型的方法,包括:控制器内的处理器将输入值写入控制器内的过程映像。术语过程映像指控制器的易失性存储器内的预定义地址空间。连接到控制器的协处理器从过程映像读取输入值并将机器学习模型应用于输入值以生成输出值。协处理器将输出值写入过程映像并且处理器从过程映像读取那些输出值。然后该过程可执行利用一个或多个输出值的应用程序。(A method of executing a machine learning model using a controller, comprising: a processor within the controller writes input values to a process image within the controller. The term process image refers to a predefined address space within the volatile memory of the controller. A co-processor connected to the controller reads input values from the process image and applies a machine learning model to the input values to generate output values. The coprocessor writes output values to the process image and the processor reads those output values from the process image. The process may then execute an application that utilizes the one or more output values.)

神经逻辑控制器

技术领域

本公开主要涉及神经逻辑控制器(具有一个或多个神经协处理器的PLC)的工程和运行时设计。各种系统和方法可以被应用于工业自动化应用,以及其中使用控制器的各种其它应用。

背景技术

控制器为专用计算机控制系统,其被配置为执行连续采集关于输入装置状态的数据以控制输出装置状态的软件。控制器的示例包括可编程逻辑控制器、运动控制器、CNC、智能I/O和驱动控制器。控制器通常包括三个主要部件:处理器(可包括易失性存储器)、包括应用程序的易失性存储器以及用于连接到自动化系统中的其它装置的一个或多个输入/输出(I/O)端口。现代控制器拥有自己的过程映像和数据历史数据库。此外,这些系统通常具有专有数据访问接口,以便于自动化系统之间的跨层(垂直)数据访问。对于同一层控制系统之间的水平访问也是如此。

机器和深度学习的最新进展表明,使用神经网络可以提高机器的智能。对于自主的应用,这些进展成为重要的任务,诸如感知、学习和推理。在这些应用中,神经网络具有大量参数,从而导致大量操作。为了涵盖神经网络的实时操作,典型的系统包括一组昂贵的GPU、专用处理单元或其它分布式系统。由于板载控制器的成本和物理约束,这限制了神经网络在工业控制器中对自主应用的使用。

由于工厂中的传感器和其它可用的网络物理装置,工业非常需要利用深度学习和应用来训练具有大量数据的系统。可以找到不同的示例,诸如人工智能(AI)、加速器(例如,ASIC,FPGA等)、专用CPU和GPU。在最近的一个示例中,富士通推出了AI 400DL作为AI加速器。加速器将Chainer作为深度学习框架和各种其它目标框架运行。还有其它示例,例如Google(Google TPU)、Knupath的Hermosa和Intel(Lake Crest)的AI加速器,用于增强工业机器的AI功能。然而,这些示例具有类似GPU的局限性。而且,迄今为止,还没有办法将AI加速器硬件链接到在自动化环境中广泛使用的控制器体系结构。

常规控制器缺乏对嵌入神经计算功能的任何支持。在具有神经计算功能的地方,它们通常需要云计算系统来执行处理任务。由于计算距离网络物理系统(例如工业机器人、边缘和物联网装置或其它机器)较远,因此这将所有应用限制为实时板载处理。其它仅在边缘增加CPU能力的构思的缺点是无法与PLC在相同的周期内运行,因此无缝集成非常困难,甚至无法实现。其它更幼稚的实现方式尝试在多核控制器中执行神经函数。这种体系结构只允许控制器中非常简单的神经模型,因为CPU具有足够的可并行性以计算甚至简单神经网络所需的大量线性代数函数。

发明内容

本发明的实施方式通过提供与具有一个或多个神经协处理器的PLC(本文中称为“神经逻辑控制器”)的工程和运行时执行有关的方法、系统和装置,解决并克服上述缺点和缺陷中的一者或多者。这些神经逻辑控制器可被用于各种与自主有关的应用。

根据一些实施方式,一种用于使用控制器来执行机器学习模型的方法包括:控制器内的处理器将输入值写入控制器内的过程映像。术语“过程映像”是指控制器的易失性存储器内的预定义地址空间。连接到控制器的协处理器从过程映像中读取输入值,并将机器学习模型应用于输入值以生成输出值。协处理器将输出值写入过程映像,处理器从过程映像中读取这些输出值。处理器可以执行利用一个或多个输出值的应用程序。例如,在一个实施方式中,应用程序使用输出值来控制控制器外部的自动化系统装置。

根据其它实施方式,一种用于在控制器装置内执行机器学习代码的系统包括可编程逻辑控制器(PLC),其包括非暂时性存储介质、处理器和协处理器。处理器执行多个指令。指令的子集取决于不能由处理器执行的机器学习代码的执行。协处理器本地连接到PLC。例如,在一个实施方式中,协处理器为经由USB连接到PLC的神经计算棒。协处理器被配置为经由非暂时性存储介质从处理器接收输入值。协处理器使用输入值来执行机器学习代码,从而产生一个或多个输出值。一旦生成输出值,就可以将它们经由非暂时性存储介质传送到处理器。

根据本发明的另一方面,如一些实施方式中所描述的,一种用于对包括处理器和协处理器的神经计算体系结构进行编程的方法包括在主机上显示第一图形用户界面(GUI)。第一GUI包括一个基于块的编辑器,其用于对自动化程序进行编程。在第一GUI中实例化“神经块”。神经块包括可由PLC内的处理器执行的自动化代码,该代码允许处理器在连接到PLC的协处理器上执行机器学习模型。响应于神经块的实例化,显示第二GUI,其允许输入与机器学习模型相对应的源代码。为了将神经块与机器学习模型连接,第一GUI可以被用于对自动化程序的与机器学习模型连接的部分进行编程。

通过参考附图进行的说明性实施方式的以下详细描述,本发明的附加特征和优点将变得显而易见。

附图说明

当结合附图阅读时,从以下详细描述中可以最好地理解本发明的前述和其它方面。出于说明本发明的目的,在附图中示出了目前优选的实施方式,但是应该理解,本发明不限于所公开的特定手段。附图中包括以下图:

图1示出了可以在一些实施方式中使用的NCA;

图2示出了根据一些实施方式的用于生成NLC的示例过程;

图3提供了根据一些实施方式的关于编译和部署阶段的附加细节;

图4A示出了根据一些实施方式的在神经协处理器与PLC之间的运行时交互;以及

图4B示出了NCA的另一种实现方式,其中并行使用多个神经协处理器来缩短处理时间并增强NCA的计算能力。

具体实施方式

本文描述了系统、方法和装置,其主要涉及具有一个或多个神经协处理器的控制器(本文中称为“神经逻辑控制器”或“NLC”)的设计和运行时执行。这种神经逻辑控制器(NLC)可被用于各种与自主有关的应用。NLC与传统控制器硬件体系结构的组合在本文中称为“神经控制器体系结构”或“NCA”。NCA通过启用例如工业应用AI应用的板载感知、推理和推断功能,增强了常规控制器的功能。

图1示出了可以在一些实施方式中使用的NCA。简而言之,NCA包括包含了一个或多个人工智能(AI)加速器的PLC。如本领域通常所理解的,AI加速器为专门设计和配置为提供神经计算能力的硬件装置。这些AI加速器在本文中被称为“神经协处理器”。通常,本领域已知的任何PLC可以与本文描述的技术一起使用。例如,在一个实施方式中,PLC为基于Linux的西门子控制器(例如,IOT 20xx或多功能控制器平台)。

在图1中,有一个神经协处理器110;然而,通常,NCA中可以包括任何数量的神经协处理器。每个神经协处理器都是设计用于加速人工神经网络和其它机器学习应用的微处理器。本领域中已知的任何类型的AI加速器都可以用作NCA中的神经协处理器110。在一些实施方式中,神经协处理器110为安装在PLC中的处理器单元。在其它实施方式中,神经协处理器110为神经计算棒,诸如Intel MovidiusTM。如本领域中通常所理解的,神经计算棒为一种小尺寸装置,其执行单板计算机的功能,但可以使用通用串行总线(USB)连接或类似的连接机制来连接至另一装置。

除了神经协处理器110之外,NCA的PLC还包括处理器105、系统存储器(包含过程映像115和控制程序120)以及外围装置总线125,该外围装置总线允许与一个或多个自动化系统装置130进行通信。过程映像115为PLC系统存储器140中的预定义地址空间,它在每个处理/扫描周期中基于与神经协处理器110和自动化系统装置130相关联的数据进行更新。在每个处理步骤中,处理器105读取过程映像115,执行来自控制程序120的部署的应用逻辑,并将结果写回到过程映像115中。通常,任何类型的自动化系统装置都可以与本文讨论的系统一起使用,包括但不限于现场装置、机器人、传送带等。

在该示例中,控制程序120包括取决于存储在PLC的系统存储器140中的机器学习模型135的执行的代码。机器学习模型135可以被理解为人工神经网络或其它机器学习应用。对应于机器学习模型135的软件代码在本文中被称为“神经代码”或NC。NC可以包括例如以Python语言定义的计算图,该Python语言为深度学习框架(如TensorFlow、PyTorch、Caffe,Keras等)的事实上的语言。概念上,该计算图为被布置为连接节点图形的一系列操作。每个节点对应一个运算符、变量或常量。可以直接在神经编辑器所提供的GUI中对计算图进行编码。作为简单的示例,自动化工程师可以使用TensorFlow库将两个常量定义为“a=constant(1)”和“b=constant(2)”。这两个常数就是计算图中的节点。可以定义将常量加在一起的第三节点:“add op=add(a,b)。”使用这个基础方法,执行更加复杂功能(诸如通过损失函数的优化来学习)的计算图可被组装。在本领域中一般已知计算图,因此在本文不再赘述。

在该示例中,处理器105经由过程映像115与神经协处理器110通信。下面参考图4更详细地描述该过程。简而言之,处理器105将NC参数(例如,至机器学习模型135的输入值)写入过程映像115。神经协处理器110读取这些参数、执行NC,并将任何输出(即由机器学习模型135生成的输出值)写回到过程映像115。然后,处理器105从过程映像115中读取这些输出,并使用它们来执行控制程序120的进一步处理。

作为如何将NCA应用于自动化应用的实际示例,考虑机器人视觉的领域。可以将机器人配置为通过使用相机拍摄场景的图像然后对这些图像应用对象检测算法来“看”。通常,图像处理和对象检测算法为处理器密集型的并且不适用于在PLC的处理器105内执行。然而,神经协处理器110针对这种处理被优化。因此,机器人可以将图像数据传递到PLC,在该处神经协处理器110处理图像并识别生产环境中的对象。基于检测到的对象,处理器105可以向机器人提供指令,该指令允许机器人例如在生产环境内移动期间拾取对象或避开对象。

图2示出了根据一些实施方式的用于生成NLC的示例过程。该过程开始于步骤205,自动化工程师在前端编辑器中实例化专用代码块,在本文中称为“神经块”或“NB”。例如,可以通过在前端编辑器中键入命令列表或将神经块的可视化拖动到允许基于块的视觉编码的GUI中来执行此实例化。此示例中的前端编辑器为允许自动化工程师执行控制程序设计以及可能执行其它任务(诸如配置控制器使用的各种参数和设置)的软件。前端编辑器的一个示例为西门子全集成自动化(TIA)博途TM

神经块类似于功能块(FB),其目的是成为自动化代码与神经代码之间的接口。在图2的示例中,NB的创建触发专门的编辑器,在本文中称为待显示的“神经编辑器”。在一些实施方式中,神经编辑器可以为前端编辑器的附加组件,也可以为单独的集成开发环境(IDE),诸如Jupyter笔记本或Visual Studio Code。在步骤230处,神经编辑器允许自动化工程师定义神经体系结构。通常,任何神经体系结构均可与本文描述的技术一起使用。因此,例如,在一些实施方式中,神经编辑器允许自动化工程师从诸如前馈神经网络、递归网络和对称连接的网络之类的众所周知的体系结构中进行选择。如本领域通常所理解的,神经体系结构具有与其相关联的许多参数,诸如体系结构中包括的层的数量和类型。在步骤230处,自动化工程师可以例如通过在神经编辑器内显示的GUI中输入值来指定这些参数中的每个参数。在一些实施方式中,神经编辑器可以提供例如基于自动化工程师生成的先前体系结构而选择的预定义值。

接下来,在步骤235处,神经编辑器允许自动化工程师准备标记的数据项以训练和测试神经体系结构。什么数据将用于训练和测试的具体细节将取决于NC将要执行的预期任务。可以使用各种技术来指定数据。例如,在一些实施方式中,神经编辑器包括允许自动化工程师上传包括所有数据的数据文件的GUI。数据文件可以明确说明要用于训练或测试的数据项;可替代地,在将数据上传到神经编辑器后,GUI可以允许自动化工程师将数据分为训练和测试组。在其它实施方式中,自动化可能够通过GUI手动输入数据或编辑现有数据项。

继续参考图2,在步骤240处,自动化工程师使用神经编辑器对NC编程。如以上关于图1所述,NC的内容将取决于所采用的深度学习框架。例如,在一个实施方式中,NC包括以Python语言定义的计算图。因此,在步骤NC处执行的编程包括自动化工程师输入定义计算图的Python语句。编程完成后,在步骤245处训练和测试所得的NC。如何进行训练和测试的细节将取决于所采用的框架。例如,对于TensorFlow实现方式,“会话”有助于在一台或多台机器上执行图形或部分计算图。可以通过启动会话、初始化任何变量以及对多批训练数据运行优化器来执行训练。训练完成后,可以随时存储会话变量并将其用于恢复会话。使用测试数据作为会话的输入,然后可以执行NC的测试。

在图2中,步骤250–270说明了如何实施训练和测试。在此示例中,支持两种配置:在本地主机(例如,便携式计算机或云)上进行训练或在神经协处理器上进行训练。通常,与在主机上执行相比,在神经协处理器上进行处理应该更高效、更快捷;然而,在某些情况下,神经协处理器可能不可用,必须使用主机来执行。对于在主机上执行的简单情况,在步骤250处执行处理。除了执行之外,在某些情况下,NC还必须在执行之前进行编译(此步骤未在图2中示出)。类似地,如果要在神经协处理器上进行训练,则在步骤255处使用与协处理器体系结构相对应的编译器软件在用于协处理器的主机上编译NC。然后,在步骤260处,将编译的NC部署到神经协处理器,并且在步骤265处,将用于训练/测试的数据传输到神经协处理器。最终,在步骤270处,在神经协处理器中执行编译的NC以执行训练/测试。

基于测试阶段NC的输出,自动化工程师可以确定训练后的计算图是否产生令人满意的结果。即,自动化工程师确定NC生成的输出与测试数据的原始标签之间的差异。如果差异低于阈值量,则认为NC令人满意;否则,在步骤230处开始重复创建NC的过程。在某些实施方式中,确定结果是否令人满意的过程可以自动化,使得不会直接需要自动化工程师的协助。

使用神经编辑器完成任务后,控件将返回到前端。通过设计和测试的NB,自动化工程师在步骤210处以控制器平台的目标语言创建NB接口。例如,对于西门子SIMATIC系统上的实现方式,可以用阶梯(LAD)、语句列表(STL)或结构化控制语言(SCL)创建接口。该接口在概念上可以理解为是围绕NB的封装,从而允许自动化程序中的其它FB调用NB。因此,该接口可以包括对象应用于与NB一起执行的方法、变量等的规范。在步骤215处,在自动化程序中使用NB(例如,通过将其连接到其它FB)。最后,在步骤220和225处,编译NB并将其部署到神经协处理器。

图3提供了根据一些实施方式的关于编译和部署阶段的附加细节。在此示例中,假定目标平台为西门子SEMATIC PLC;然而,应该理解,下面讨论的一般原理也很容易适用于其它类型的PLC。

在图3的左侧,在305处选择前端编译器。所选的编译器被用于将NB编译为目标SIMATIC语言,以使其可与其余自动化程序(如FB,FC和DB)互操作。在右侧,在步骤310处通过选择适当的神经编译器将NC编译到目标框架中。这些神经编译器由包括Tensorflow在内的现有深度学习框架提供。例如,NB编译产生MC7+代码。对于NC,编译产生已编译的NC(通常为GPU的机器代码)。

如以上在图2的讨论中所指出的,用于神经网络的训练和测试过程可以在主机系统(例如,便携式计算机或云)中或在一个或多个神经协处理器中执行。使用神经协处理器的优势在于,训练也可以直接在NCA中执行。这需要编译、部署NC,将训练数据传输、执行并将结果收集回神经编辑器。否则,训练将在主机中本地进行。在步骤315处,使用TIA博途中存在的SIMATIC 325协议将MC7代码部署到PLC。类似地,在步骤320处,将编译的NC部署到NCA中的神经协处理器330。

图4A示出了根据一些实施方式的在神经协处理器与PLC之间的运行时交互。运行时的任务是协调PLC控制程序中的自动化代码和神经协处理器中的神经功能的执行。运行时操作的一项挑战是确保在PLC中执行的自动化程序与在神经协处理器中执行的神经程序之间进行实时通信。然而,这种交互的主要优点在于可以在运行时期间将PLC过程映像提供给神经协处理器。将神经功能直接带到传感器数据提供了前所未有的优势,因为感知、推断和推理功能可以访问PLC或控制器可以访问的全分辨率数据。

在图4A中,PLC执行作为控制程序一部分的自动化代码405。在此执行期间,PLC遇到NB写入命令410。这使得数据被写入到过程映像430。然后,PLC在PLC等待神经协处理器的处理结果的同时执行代码块415。块415可以执行一个或多个功能,这些功能不需要神经协处理器执行的处理结果;因此,可替代地,块415可以为不执行功能的“虚拟”块(例如,循环直到神经协处理器完成处理为止)。

神经协处理器执行NC读取命令435,该命令从过程映像430中读取数据。读取的数据随后被用于执行NC 440以生成一个或多个输出。然后,神经协处理器执行NC写入命令445,以将这些输出写到过程映像430。然后,PLC执行NB读取命令420以读取来自过程映像430的输出。然后,这些输出被用于执行控制程序的附加自动化代码425。

PLC的处理器与神经协处理器进行交互的模式有多种。例如,一种模式是“循环式”,这意味着处理器和神经协处理器之间的交互在每个周期发生。在图4A中示出该模式。作为第二示例,在“流水线”模式下,每当PLC或神经协处理器具有新数据,就会发生交互。当发生这种情况时,可以切换控制信号以警告接收器提供了新数据。否则,控制信号将关闭,接收器可以忽略过程映像的输入,也可以使用最新值。作为第三示例,PLC和神经协处理器可以独立地操作。期望两个计算彼此独立地执行。无论何时需要,都可以通过在过程映像中放置特定消息来请求通信、消息传递或显式通信。

图4B示出了NCA的另一种实现方式,其中并行使用多个神经协处理器来缩短处理时间并增强NCA的计算能力。在该示例中,有两个神经协处理器;然而,这个构思可被容易地拓展到任意数量的协处理器。除了上面相对于图4A描述的运行时交互之外,第二协处理器还执行NC读取命令450,以从过程映像430中读取NC。然后,第二协处理器与第一协处理器的NC执行440并行执行NC 455。然后,第二处理器执行NC写入命令460,以将结果写入过程映像430,进而由PLC读取该结果。须注意,在该示例中,自动化代码405可以被明确地编码以支持并行化。例如,在一个实施方式中,自动化代码405将数据集划分为多个子集。为每个子集生成NB,然后使用NB写入命令410将NB写入过程映像430。每个单独的NB都被寻址到其中一个神经协处理器。PLC读取从过程映像430返回的结果,并且自动化代码425汇总结果。

本文描述的各种装置(包括但不限于嵌入式控制器和相关的计算体系结构)可以包括至少一个计算机可读介质或存储器,其用于保存根据本发明的实施方式编程的指令并用于包含数据结构、表格、记录或本文描述的其它数据。本文使用的术语“计算机可读介质”是指参与向一个或多个处理器提供指令以供执行的任何介质。计算机可读介质可以采用许多形式,包括但不限于非暂时性、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘。易失性介质的非限制性示例包括动态存储器。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成系统总线的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间产生的那些声波或光波。

本文使用的可执行应用包括用于调节处理器以实现预定功能的代码或机器可读指令(例如,响应于用户命令或输入),诸如操作系统、上下文数据采集系统或其它信息处理系统的那些代码或机器可读指令。可执行程序为用于执行一个或多个特定过程的代码段或机器可读指令、子例程或代码的其它不同部分或可执行应用的一部分。这些过程可包括接收输入数据和/或参数,对接收的输入数据执行操作和/或响应于接收的输入参数执行功能,并且提供所得输出数据和/或参数。

本文使用的图形用户界面(GUI)包括一个或多个显示图像,其由显示处理器生成并使用户能够与处理器或其它装置进行交互并且具有相关的数据采集和处理功能。GUI还包括可执行程序或可执行应用。可执行程序或可执行应用支配显示处理器以生成表示GUI显示图像的信号。这些信号被提供给显示装置,该显示装置显示图像供用户观看。在可执行程序或可执行应用的控制下,处理器响应于从输入装置接收到的信号操纵GUI显示图像。以这种方式,用户可以使用输入装置与显示图像交互,使得用户能够与处理器或其它装置进行交互。

本文的功能和处理步骤可以响应于用户命令自动地、全部地或部分地执行。响应于一个或多个可执行指令或装置操作而无需用户直接启动活动,执行自动执行的活动(包括步骤)。

图中的系统和过程不是唯一的。可以根据本发明的原理导出其它系统、过程和菜单以实现相同的目的。尽管已经参考特定实施方式描述了本发明,但是应该理解,本文示出和描述的实施方式和变化仅用于说明目的。在不脱离本发明的范围的情况下,本领域技术人员可以实现对当前设计的修改。如本文所述,可以使用硬件部件、软件部件和/或其组合来实现各种系统、子系统、代理、管理器和过程。本文中的任何权利要求要素都不应根据35U.S.C.112(f)的规定来解释,除非使用短语“用于...的装置”明确叙述该要素。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:脂质纳米片

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!