基于ROS的可编程逻辑控制器、系统及方法与流程

文档序号:17336156发布日期:2019-04-05 22:30阅读:767来源:国知局
基于ROS的可编程逻辑控制器、系统及方法与流程

本申请通常涉及可编程逻辑控制器(plc,programmablelogiccontroller)领域,更具体地,涉及基于机器人操作系统(ros,robotoperatingsystem)的plc、plc系统及用于所述plc的方法。



背景技术:

plc是一种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出(i/o)来控制各种类型的机械设备或生产过程。

图1示出了现有plc的结构的示意图。如图1所示,plc10中通常包含有数据区11(也称为数据块)和函数区12(也称为函数块)。数据区11用于存储数据,比如从外设单元获取的数据或者函数区12输出的数据。函数区12用于存储plc中的处理程序,比如plc的常用处理逻辑等。在图1中示出的结构中,由于数据的处理逻辑通常不同,对于每种外设单元的数据,都需要单独编写函数区12中的执行程序,而且需要按照plc中特别规定的编写规则,这种编写方式要求编写者熟悉plc编写规则并具有丰富的编程经验。此外,在图1中示出的结构中,多个plc之间通常是采用集中式控制的方式来进行数据交换,这种通信机制并不适合于自主式系统和应用。



技术实现要素:

为了解决上述和/或其他技术问题,本申请提供了一种基于机器人操作系统(ros,robotoperatingsystem)的plc、plc系统及用于所述plc的方法。利用该种结构,通过在该结构内设置包含ros模块的ros容器和适配器,并且所述ros模块对所获取的数据进行基于ros协议的处理并经由所述适配器来与所述plc模块进行交互,可以实现适于自主式应用的plc。

根据本申请的一个方面,提供了一种可编程逻辑控制器(plc),包括:机器人操作系统(ros)容器,所述ros容器包括用于获取外设单元的数据的ros模块;plc模块,所述plc模块包括数据区和函数区;以及适配器,设置在所述ros模块和所述plc模块之间,其中,所述适配器包括i/o模块和存储模块,并且所述plc模块被配置为经由所述i/o模块获取经过所述ros模块处理后的数据或经由所述存储模块获取所述ros模块从所述外设单元获取的数据。

优选地,在上述方面的一个示例中,当所获取的数据的数据处理模式是实时处理模式时,所述ros模块被配置为将所获取的数据存储在所述存储模块中,并且所述函数区被配置为具有针对所述存储模块中的数据的处理逻辑,以执行对所述存储模块中的数据的处理;或者当所获取的数据的数据处理模式是非实时处理模式时,所述ros模块被配置为具有针对所获取的数据的处理逻辑以执行对所获取的数据的处理,并且所述函数区被配置为经由所述i/o模块从所述ros模块获取所述处理后的数据。

优选地,在上述方面的一个示例中,所述plc还可以包括:外设模式检测单元,用于检测来自所述外设单元的数据的数据处理模式;以及配置单元,用于根据所述外设模式检测单元所检测到的数据处理模式,对所述ros模块或所述函数区进行配置,以使得:在所检测到的数据处理模式是实时处理模式时,将所述ros模块配置为将所获取的数据存储在所述存储模块中,并且将所述函数区配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑,以执行对所述存储模块中的数据的处理,或者在所检测到的数据处理模式是非实时处理模式时,将所述ros模块配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑以执行对所获取的数据的处理,并且将所述函数区配置为经由所述i/o模块从所述ros模块获取所述处理后的数据,其中,所述多种预设处理逻辑与数据处理模式相关联地存储在所述可编程逻辑控制器中。

优选地,在上述方面的一个示例中,所述多种预设模式可以被存储在所述ros模块或所述函数区中,或者被存储在所述配置单元中。

优选地,在上述方面的一个示例中,所述plc还可以包括:和程序管理单元,用于调度所述ros模块和所述plc模块对多种处理资源的调用。

根据本申请的另一方面,提供了一种可编程逻辑控制器(plc)系统,包括多个如上所述的plc,其中,所述多个plc之间是经由所述适配器并基于发布/订阅机制来进行数据通信的。

根据本申请的另一方面,提供了一种用于可编程逻辑控制器(plc)的方法,所述plc包括机器人操作系统(ros)容器、适配器和plc模块,所述ros容器包括用于获取外设单元的数据的ros模块,所述plc模块包括数据区和函数区,所述适配器包括i/o模块和存储模块,并且,所述方法包括:在来自外设单元的数据的数据处理模式被确定为是实时处理模式时,将所述ros模块配置为将所获取的数据存储在所述适配器的存储模块中,并且将所述函数区配置为具有针对所述存储模块中的数据的处理逻辑以执行对所述存储模块中的数据的处理,以及在来自外设单元的数据的数据处理模式被确定为是非实时处理模式时,将所述ros模块配置为具有针对从所述外设单元获取的数据的处理逻辑以执行对所获取的数据的处理,并且将所述函数区配置为经由所述适配器的i/o模块从所述ros模块获取所述处理后的数据。

优选地,在上述方面的一个示例中,所述方法还可以包括:检测来自所述外设单元的数据的数据处理模式,以及在所检测到的数据处理模式是实时处理模式时,所述ros模块被配置为将所获取的数据存储在所述存储模块中,并且所述函数区被配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑,以执行对所述存储模块中的数据的处理,或者在所检测到的数据处理模式是非实时处理模式时,所述ros模块被配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑以执行对所获取的数据的处理,并且所述函数区被配置为经由所述i/o模块从所述ros模块获取所述处理后的数据,其中,所述多种预设处理逻辑与数据处理模式相关联地存储在所述plc中。

优选地,在上述方面的一个示例中,所述多种预设模式可以被存储在所述ros模块或所述函数区中,或者被存储在所述配置单元中。

利用本申请提供的plc,通过在该结构内设置包含ros模块的ros容器和适配器,并且所述ros模块对所获取的数据进行基于ros机制的处理并经由所述适配器来与所述plc模块进行交互,可以适于自主式系统或自主式应用。

此外,利用本申请的plc,通过基于从外设单元获取的数据的数据处理模式是实时处理模式还是非实时处理模式,将所获取的数据的处理逻辑设置为由plc模块执行还是由ros模块执行,可以解决由于将ros模块引入plc结构中所带来的时延问题。

此外,利用本申请的plc,通过设置外设模式检测单元来检测外设单元的数据处理模式,并由配置单元来基于所检测到的数据处理模式来配置所述ros模块和所述plc模块,可以实现对所述ros模块和所述plc模块的自动配置。

此外,利用本申请的plc,通过设置程序管理单元来调度所述ros模块和所述plc模块对所述处理内核的调用,可以更有效地分配plc中的处理资源。

附图说明

通过参照下面的附图,可以实现对于本公开内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。

图1示出了现有plc的结构的示意图;

图2示出了根据本申请的plc的结构的一个示例的示意图;

图3示出了根据本申请的plc的结构的另一示例的示意图;

图4示出了根据本申请的plc的结构的另一示例的示意图;

图5示出了根据本申请的plc的结构的另一示例的示意图;

图6示出了根据本申请的用于plc的方法的流程图;和

图7示出了根据本申请的plc系统的示意图。

附图标记

10:plc模块11:数据区12:函数区20:ros容器

21:ros模块30:适配器31:i/o模块32:存储模块

40:外设模式检测单元50:配置单元60:程序管理单元

70:内核80:共享存储器

610:确定数据处理模式

612:在实时处理模式时,将外设数据存储在存储模块,并且将plc模块配置为执行针对外设数据的处理逻辑

614:在非实时处理模式时,将ros模块配置为执行针对外设数据的处理逻辑,并且将plc模块配置为经由i/o模块从ros模块获取数据

100-1/100-2/100-3:plc200:ipc300:profinet/ethernet总线

400:ethernet总线500:雷达600:传感器700:相机

90:电机驱动器800-1:导航800-2:移动规划

800-3:计算机视觉800-4:智能算法

具体实施方式

现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本公开内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。

如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。

在本文中,术语“ros”是指机器人操作系统,它是一个机器人软件平台,能够为异质计算机集群提供类似操作系统的功能。术语“ros节点”或“ros模块”是指具有ros能力的节点或模块。在ros节点或ros模块之间的消息交换是基于发布和订阅机制进行的。例如,ros节点可以通过将消息发布到给定主题来发出该消息。这里所述的“主题”是用于标识所述消息的内容的名称。对某种类型的数据感兴趣的ros节点可以订阅与该类数据相关的合适的主题。只要针对该主题存在其它节点发出的消息,订阅该主题的ros节点就可以接收到该消息。此外,在本文中,术语“ros模块”或“ros节点”具有数据采集能力,例如,能够通过与外设单元经由无线或有线进行通信来采集数据。

发布消息的ros节点称为发布者,而订阅消息的ros节点称为订阅者。对于单个主题,可以同时存在多个发布者和订阅者。通常,订阅者并不知晓所接收的消息是由哪个发布者发布的。换言之,发布者和订阅者彼此之间并不知晓。

此外,与plc编码机制相比,ros编写更加简单,并且更加容易被用户掌握。

在本文中,术语“ros容器”是指利用container技术产生的与ros相关的沙盒独立执行环境。container技术是指直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境。container技术不是在os外来建立虚拟环境,而是在os内的核心系统层来打造虚拟执行环境。在container内,不需要安装操作系统就能执行应用程序。利用ros容器,可以提供运行自主功能的环境,所述自主功能包括移动规划、探测或导航等。

现在结合附图来描述本申请的可编程逻辑控制器、可编程逻辑控制器系统及用于可编程逻辑控制器的方法的实施例。

图2示出了示出了根据本申请的plc的结构的一个示例的示意图。如图2所示,plc包括plc模块10、ros容器20和适配器30。plc模块10包括至少一个数据区11和至少一个函数区12。这里,数据区11用于存储数据,比如通过轮询适配器的i/o模块而从ros模块获取的来自外设单元的数据,或者函数区12输出的数据。函数区12用于存储plc中的处理程序,比如plc的常用处理逻辑或者针对来自外设单元的数据的处理逻辑等。

ros容器20用于提供与ros相关的沙盒独立执行环境,比如用于运行自主功能的独立执行环境,所述自主功能例如包括移动规划、探测、计算机视觉、3d模拟或导航功能等。ros容器包括至少一个ros模块,所述ros模块具有ros能力,并且用于从外设单元获取数据,比如从外设单元采集数据。所述外设单元例如可以包括各种类型的数据获取设备,比如雷达、传感器、相机和点云设备等。

适配器30设置在plc模块10和ros容器20之间,用于与ros模块20和plc模块10进行交互。适配器30能够运行在各种操作系统(例如windows或linux)上,并且具有各种类型的接口,从而能够实时交换不同接口的数据。此外,适配器30对接口是透明的。所述接口例如可以包括以下中的一种或多种:ros适配接口、plc适配接口、profinet接口或ethernet接口等。ros适配接口与ros模块相连,用于解析ros数据包。plc适配接口与plc模块相连,用于解析plc数据包。profinet接口或ethernet接口用于与其他plc或ipc相连,用于解析总线数据。此外,适配器30还具有适配器的其他公知功能,比如消息队列机制、仲裁及冲突避免机制等。上述公知功能在本申请中不再详细描述。此外,在适配器中,还需要执行针对ros模块和plc模块的适应性处理。

此外,优选地,适配器30还可以包括i/o模块31和存储模块32。i/o模块31用于提供数据输入输出功能。i/o模块31可以包括数字i/o和模拟i/o。存储模块32用于存储ros模块从外设单元获取的数据。这里,针对存储模块32中的各个字段,在ros模块和plc模块中预先约定了字段的含义。并且,在对plc模块中的函数块进行重新编写时,所述重新编写的程序中包含针对各个字段的处理程序。同样,在对ros模块进行重新编写时,所述重新编写的程序中包含针对各个字段的处理程序。

在plc初始状态(例如,plc出厂时),预先创建ros容器、ros模块以及plc模块中的数据区11和函数区12。其中,ros模块21被配置为具有从外设单元获取数据的能力以及具有常规ros能力。plc模块中的函数块12被配置为具有plc的基本功能,但不包括用于处理来自外设单元的数据的处理逻辑。

在plc工作时,当ros模块21从外设单元获取的数据所需要的数据处理模式是实时处理模式时,ros模块21被配置为将所获取的数据存储在所述存储模块中,并且函数区12被配置为具有针对存储在所述存储模块中的数据的处理逻辑,以执行对该数据的处理。具体地,通过重新编写函数区12的程序,使得函数块12具有用于执行所述数据的处理逻辑的程序指令。由此,当plc运行时,plc模块轮询存储模块32以获取存储模块32中存储的数据,并且利用所编写的用于执行所述数据的处理逻辑的程序指令,在函数块12中执行对所述数据的处理。

当ros模块21从外设单元获取的数据的数据处理模式是非实时处理模式时,ros模块21被配置为具有针对所获取的数据的处理逻辑,以执行对所获取的数据的处理,并且函数区12被配置为经由i/o模块30从ros模块21获取所述处理后的数据。具体地,通过重新编写ros模块21的程序,使得ros模块21具有用于执行所述数据的处理逻辑的程序指令。由此,当plc运行时,利用所编写的用于执行所述数据的处理逻辑的程序指令,在ros模块12中执行对所述数据的处理。然后,plc模块10中的函数块12通过轮询适配器30中的i/o模块来从ros模块21获取经过处理后的数据。

此外,优选地,适配器30也可以包含在ros容器20中。

在上述示例中,通过基于从外设单元获取的数据的数据处理模式是实时处理模式还是非实时处理模式,将所获取的数据的处理逻辑设置为由plc模块执行还是由ros模块执行,可以解决由于将ros模块引入plc结构中所带来的时延问题。

此外,在上述示例中,在数据处理模式是非实时处理模式,可以在ros模块中基于ros机制来进行编程,由于基于ros机制进行的编程比基于plc机制进行的编程更为简单,从而使得编程更加容易和灵活。

图3示出了根据本申请的plc的结构的另一示例的示意图。图3是图2中的示例的变型。与图2相比,图3中的ros容器包括至少两种类型的ros模块21,即,第一类型ros模块21-1和第二类型ros模块21-2。其中,第一类型ros模块21-1与非实时处理数据对应,以及第二类型ros模块21-2与实时处理数据对应。第一类型ros模块21-1的输出与适配器30中的i/o模块31相连,以及第二类型ros模块21-2的输出与适配器30中的存储模块32相连。而且,第一类型ros模块21-1的程序可重新编写,以及第二类型ros模块21-2中的程序不可重新编写。

此外,图3中的plc还包括至少两种类型的函数区12,即,第一类型函数区12-1和第二类型函数区12-2。中,第一类型函数区12-1与非实时处理数据对应,以及第二类型函数区12-2与实时处理数据对应。第一类型函数区12-1的输入经由数据区11-1与适配器30中的i/o模块31相连,以及第二类型函数区12-2的输如经由数据区11-2与适配器30中的存储模块32相连。而且,第一类型函数区12-1的程序不可重新编写,以及第二类型函数区12-2中的程序可重新编写。

图4示出了根据本申请的plc的结构的另一示例的示意图。图4是图2中的示例的变型。与图2相比,图4中的plc还包括外设模式检测单元40和配置单元50。

外设模式检测单元40用于检测来自外设单元的数据的数据处理模式。例如,外设模块检测单元40可以通过检测外设单元的类型来确定来自外设单元的数据的数据处理模式,例如,通过判断外设单元是雷达、相机、传感器还是点云设备来确定数据处理模式。或者,外设模块检测单元40可以通过分析来自外设单元的数据中携带的消息来确定该数据的数据处理模式,所述消息包含与外设单元的自有特征相关的信息。

在检测出来自外设单元的数据的数据处理模式后,配置单元50根据所检测到的数据处理模式,基于多种预设处理逻辑来对所述ros模块或所述函数区进行相应配置。这里,预设处理逻辑例如可以是预先编写好的处理逻辑程序,每种处理逻辑对应于针对来自一种外设单元的数据的处理。该处理逻辑程序可以例如在出厂预先存储在可编程逻辑控制器中,但未被激活或启用。

具体地,在数据处理模式是实时处理模式时,将ros模块21配置为将所获取的数据存储在所述存储模块中,并且将函数区12配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑,以执行对存储模块中的数据的处理。在数据处理模式是非实时处理模式时,将ros模块21配置为具有从多种预设处理逻辑中选择的与所检测到的数据处理模式对应的一种处理逻辑,以执行对从外设单元获取的数据的处理,并且将函数区12配置为经由i/o模块30从ros模块21获取所述处理后的数据。所述多种预设处理逻辑与数据处理模式相关联地存储在可编程逻辑控制器。在这种情况下,配置单元50可以基于所检测到的数据处理模式,从预设的多种处理逻辑中选择匹配的处理逻辑,并激活(或启用)所选择的处理逻辑来对ros模块或函数区进行配置,以使得ros模块或函数区具有对应的数据处理能力。

在本申请的一个示例中,所述多种预设处理逻辑可以存储(比如,内置)在配置单元50中,由配置单元50进行选择并安装到相应的ros模块或函数区中。或者,所述多种预设处理逻辑也可以存储(比如内置)在ros模块或函数区中。在这种情况下,在检测到数据处理模块后,由配置单元50基于所检测到的数据处理模式,确定对应的处理逻辑,并向ros模块或函数区发送对应的处理逻辑选择指令,由ros模块或函数区选择对应的处理逻辑来进行配置。

在上述示例中,通过设置外设模式检测单元来检测外设单元的数据处理模式,并由配置单元来基于所检测到的数据处理模式来配置所述ros模块和所述plc模块,可以实现对所述ros模块和所述plc模块的自动配置。

图5示出了根据本申请的plc的结构的另一示例的示意图。图5是图2中的示例的变型。与图2相比,图5中的plc还包括程序管理单元60、一个或多个内核(图中例示了两个内核70-1和70-2)以及共享存储器80。程序管理单元60(例如,程序管理程序hypervisor)用于调度所述ros模块和所述plc模块对多种处理资源(即,内核70-1和70-2)的调用。此外,替代工业总线,内核70-1和内核70-2之间可以经由共享存储器80来进行数据/信息通信。

在上述示例中,通过设置程序管理单元来作为硬件资源的管理器,可以充分利用计算资源。此外,通过利用共享存储器来替代工业总线,可以节省成本并且提高实时性。

图6示出了根据本申请的用于plc的方法的流程图。这里,plc包括机器人操作系统(ros)容器、适配器和plc模块,所述ros容器包括用于获取外设单元的数据的ros模块,所述plc模块包括数据区和函数区。所述适配器包括i/o模块和存储模块。

如图6所示,在框610,确定来自外设单元的数据的数据处理模式。这里,数据处理模式的确定过程可以由用户人工执行,也可以通过设置外设模式检测单元来进行检测。

接着,在框612,在来自外设单元的数据的数据处理模式被确定为是实时处理模式时,将所述ros模块配置为将所获取的数据存储在所述适配器中,并且将所述函数区配置为具有针对所述存储模块中的数据的处理逻辑以执行对所述存储模块中的数据的处理。

在框614,在来自外设单元的数据的数据处理模式被确定为是非实时处理模式时,将所述ros模块配置为将所述ros模块配置为具有针对从所述外设单元获取的数据的处理逻辑以执行对所获取的数据的处理,并且将所述函数区配置为经由所述适配器从所述ros模块获取所述处理后的数据。

在通过外设模式检测单元检测数据处理模式的情况下,框612和614中的操作可以通过配置单元来基于多种预设处理逻辑自动执行。关于配置单元的配置过程参见上面针对图4的具体描述。

图7示出了根据本申请的plc系统的示意图。如图7所示,plc系统包括多个如上所述的plc,其中,各个plc100-1、100-2、100-3与不同的外设单元相连,比如雷达500、传感器600、相机700、电机驱动器90等,所述多个plc之间是经由适配器30并基于发布/订阅机制来进行数据通信的。此外,所述plc系统还可以包括ipc(industrypersonercomputer,工业计算机),所述ipc也包括ros容器。图7中的plc和ipc中的各个ros容器中可以运行不同的自主应用,比如导航800-1、移动规划800-2、计算机视觉800-3、智能算法800-4等。

此外,根据本申请的plc可以利用一个或多个处理器和存储器来实现。其中,在存储器中存储计算机可执行指令,其当执行时使得一个或多个处理器用于:在来自外设单元的数据的数据处理模式被确定为是实时处理模式时,将ros模块21配置为将所获取的数据存储在适配器30的存储模块32中,并且将函数区12配置为具有针对存储模块32中的数据的处理逻辑以执行对存储模块32中的数据的处理,以及在来自外设单元的数据的数据处理模式被确定为是非实时处理模式时,将ros模块21配置为具有针对从所述外设单元获取的数据的处理逻辑以执行对所获取的数据的处理,并且将函数区12配置为经由适配器30的i/o模块31从ros模块21获取所述处理后的数据。

应该理解,在存储器中存储的计算机可执行指令当被执行时使得一个或多个处理器进行本申请的各个实施例中描述的各种操作和功能。

根据一个实施例,提供了一种比如非暂时性机器可读介质的程序产品。所述非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本申请的各个实施例中描述的各种操作和功能。

上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。

本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1