CN116490830A - 控制系统以及控制方法 - Google Patents
控制系统以及控制方法 Download PDFInfo
- Publication number
- CN116490830A CN116490830A CN202180078958.0A CN202180078958A CN116490830A CN 116490830 A CN116490830 A CN 116490830A CN 202180078958 A CN202180078958 A CN 202180078958A CN 116490830 A CN116490830 A CN 116490830A
- Authority
- CN
- China
- Prior art keywords
- container
- plc
- server
- control
- runtime
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 65
- 238000012545 processing Methods 0.000 claims description 43
- 230000018109 developmental process Effects 0.000 description 38
- 238000011161 development Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 34
- 238000004088 simulation Methods 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Programmable Controllers (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Stored Programmes (AREA)
Abstract
控制系统包含:生成模块,其生成包含运行时镜像的容器,所述运行时镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及编排器,其对控制装置和服务器中的一方或双方释放容器。控制装置和服务器具有对容器进行部署的容器引擎,通过对由编排器释放的容器进行部署,生成运行时镜像的实例并执行控制运算。
Description
技术领域
本发明涉及包含控制装置和服务器的控制系统以及该控制系统中的控制方法。
背景技术
为了开始由多个控制装置(典型的是PLC(可编程逻辑控制器))构成的控制系统的运用,需要设计、安装、验证等一系列的作业。在这一系列的作业中,在对控制装置单体进行了设计、安装、验证之后,组合控制装置以及设备。为了作为这样的系统进行结合,需要完成关于各控制装置的作业,但由于每个控制装置的复杂度、特性等,难以使作业进展相同。因此,由于作业进展的偏差,在作为系统结合之前可能会产生等待时间。
另外,不是在控制装置的技术领域,而是在通常的IT技术的领域中,通过利用容器(container)和编排(orchestration)这样的技术来动态地扩展和简并计算机资源,实现了可扩展的软件服务的提供。例如,日本特表2015-512091号公报(专利文献1)公开了管理计算机云资源的方法。
现有技术文献
专利文献
专利文献1:日本特表2015-512091号公报
发明内容
发明要解决的课题
期望如下结构:使上述那样的针对多个控制装置以及组合了多个控制装置的系统的设计、安装、验证等一系列的作业容易化,并且能够可扩展地利用控制装置的资源。
本发明的一个目的在于提供一种应对这样的要求的解决手段。
用于解决课题的手段
根据本发明的一例,提供一种具有1个或多个控制装置和1个或多个服务器的控制系统。控制系统包含:生成模块,其生成包含运行时的镜像的容器,所述运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及编排器,其对控制装置和服务器中的一方或双方释放容器。控制装置和服务器具有对容器进行部署的容器引擎,通过对由编排器(orchestrator)释放的容器进行部署,生成运行时(runtime)的实例(instance)并执行控制运算。根据该结构,能够通过控制装置和服务器中的任意一方来部署并执行包含运行时的镜像(image)的容器,因此即使在不存在控制装置的状态下,也能够使控制运算的执行验证等容易化。另外,还能够使由服务器执行的控制运算容易地移动到控制装置。
也可以是,服务器的容器引擎与运行时的实例一起,还生成对与控制对象交换的输入输出数据进行模拟的模拟器的实例。根据该结构,即使不存在与控制装置连接的设备,也能够在服务器上容易地进行控制运算的验证等。
也可以是,在服务器的容器引擎生成运行时的实例的情况下,控制装置的容器引擎生成将经由与控制装置连接的设备交换的输入输出数据中转给服务器的网络服务器的实例。根据该结构,能够利用与连接于控制装置的设备之间交换的I/O数据,并且控制运算自身能够由服务器执行,因此能够利用服务器提供的资源。
也可以是,服务器的容器引擎在生成运行时的实例的情况下,生成对I/O驱动器进行模拟的虚拟I/O驱动器的实例,所述I/O驱动器负责对与控制装置连接的设备进行访问的处理。根据该结构,能够提供与在控制装置上执行控制运算实质上相同的执行环境,因此在服务器中也能够共用控制运算实现用的运行时。
也可以是,容器包含仅由控制装置的容器引擎部署的镜像和仅由服务器的容器引擎部署的镜像中的至少一方。根据该结构,通过使容器冗余地包含镜像,能够在不依赖于部署目的地的情况下实现控制运算。
也可以是,控制系统还包含仓库,在服务器的容器引擎生成运行时的实例的情况下,所述仓库对用于访问该容器引擎的地址进行管理。根据该结构,在服务器上执行控制运算的情况下,能够通过参照仓库(repository)来吸收分配给执行环境的地址的差异。
也可以是,控制系统还包含节点管理器,在对服务器释放容器的情况下,如果不存在部署该容器的容器引擎,则所述节点管理器虚拟地生成包含容器引擎的节点。根据该结构,能够根据请求任意地生成执行控制运算的节点。
也可以是,控制系统还包含容器公共仓库,所述容器公共仓库将由生成模块生成的容器与可释放的控制装置的识别信息相关联地进行登记。根据该结构,容器一旦生成,再利用变得容易。
也可以是,编排器按照用户操作,选择要释放的容器并且决定释放目的地。根据该结构,用户能够根据控制系统的状况,将所需的容器释放到所需的执行环境。
根据本发明的另一例,提供一种在具有1个或多个控制装置和1个或多个服务器的控制系统中执行的控制方法。控制方法包含以下步骤:生成包含运行时的镜像的容器,所述运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及对控制装置和服务器中的一方或双方释放容器。控制装置和服务器具有对容器进行部署的容器引擎,通过对释放的容器进行部署,生成运行时的实例并执行控制运算。
发明的效果
根据本发明的一个方面,能够使关于多个控制装置以及组合了多个控制装置的系统的设计、安装、验证等一系列的作业容易化。根据本发明的另一方面,能够可扩展地利用控制装置的资源。
附图说明
图1是表示本实施方式的控制系统的整体结构例的示意图。
图2是用于说明本实施方式的控制系统中的利用了容器的处理概要的图。
图3是用于说明在本实施方式的控制系统中提供的模式的图。
图4是表示构成本实施方式的控制系统的PLC的硬件结构例的框图。
图5是表示构成本实施方式的控制系统的服务器的硬件结构例的框图。
图6是表示构成本实施方式的控制系统的开发维护终端的硬件结构例的框图。
图7是表示本实施方式的控制系统中的功能结构的一例的示意图。
图8是表示用于实现在本实施方式的控制系统中提供的模式的功能结构例的示意图。
图9是表示在本实施方式的控制系统中利用的PLC运行时容器的结构例的示意图。
图10是表示本实施方式的控制系统中的PLC运行时容器的生成所涉及的功能结构例的示意图。
图11是表示本实施方式的控制系统中的PLC运行时容器的释放及执行管理所涉及的功能结构例的示意图。
图12是表示本实施方式的控制系统的典型的用例的示意图。
图13是概略地表示图12的(A)所示的用例中的处理过程的一例的示意图。
图14是概略地表示图12的(A)所示的用例中的另一处理过程的一例的示意图。
图15是概略地表示图12的(B)所示的用例中的处理过程的一例的示意图。
图16是概略地表示图12的(B)所示的用例中的另一处理过程的一例的示意图。
图17是概略地表示图12的(C)所示的用例中的处理过程的一例的示意图。
图18是表示本实施方式的控制系统中的与PLC运行时容器的生成相关的处理过程的一例的流程图。
图19是表示本实施方式的控制系统中的与PLC运行时容器的释放及执行管理相关的处理过程的一例的流程图。
具体实施方式
参照附图对本发明的实施方式进行详细说明。另外,对图中的相同或相应的部分标注相同的标号并不重复其说明。
<A.应用例>
首先,对应用本发明的场景的一例进行说明。
图1是表示本实施方式的控制系统1的整体结构例的示意图。参照图1,本实施方式的控制系统1包含1个或多个PLC系统2-1、2-2、2-3(以下,也总称为“PLC系统2”。)、1个或多个服务器200以及开发维护终端300。以下的说明中,在需要分别区分PLC系统2-1、2-2、2-3的情况下,有时对相关的构成要素赋予“-1”、“-2”、“-3”这样的后缀。
PLC控制系统2各自也称作生产线,可以控制工厂整体,也可以控制设置于工厂的特定的制造设备、制造装置。PLC系统2-1、2-2、2-3作为主要的构成要素,将对控制对象进行控制的控制装置的典型例即PLC(Programmable Logic Controller:可编程逻辑控制器)100-1、100-2、100-3(以下,也总称为“PLC 100”)分别构成为主体。
PLC 100与现场设备10连接。现场设备10包含为了对控制对象进行控制所需的任意装置。更具体而言,现场设备10包含用于与控制对象(例如,制造设备、制造装置、制造设备或制造装置中包含的传感器以及致动器等)之间交换信息的装置。在图1所示的例子中,现场设备10包含远程I/O(Input/Output:输入/输出)12、继电器组14、伺服驱动器16以及伺服电机18。
PLC 100从现场设备10取得信息,按照预先创建的用户程序执行控制运算,由此生成给出到现场设备10的信息。以下,将PLC 100从现场设备10取得的信息也称为“输入数据”,将给出到现场设备10的信息也称为“输出数据”。另外,也将输入数据以及输出数据统称为“输入输出数据”或者“I/O数据”。
在图1所示的例子中,PLC 100与现场设备10经由控制系统网络4连接,但并不限定于此,也可以通过硬连线连接。另外,现场设备10不限于图1所示的设备,可包含任意的设备。
作为控制系统网络4,优选采用工业用的通信协议。作为这样的通信协议,已知EtherCAT(注册商标)、EtherNet/IP(注册商标)、DeviceNet(注册商标)、CompoNet(注册商标)等。
各个PLC系统2能够经由信息系统网络6以及网关20访问存在于因特网8上的服务器200。作为信息系统网络6,也可以采用Ethernet(注册商标)等通用的通信协议。
服务器200提供能够部署并执行容器的环境,并且管理容器的释放。在本说明书中,容器的“释放”包含将对象容器提供给执行目的地的处理以及指示在执行目的地的可执行化的处理(例如,指示部署的处理)。关于这些处理以及功能的详细内容,将在后面叙述。
服务器200可以经由因特网8配置在云上,也可以不经由因特网8而配置在PLC系统2所存在的局域网内。作为服务器200的安装方式,能够根据所要求的性能以及功能等而任意地决定。
开发维护终端300能够访问服务器200,进行用于实现后述的各种处理的用户操作。
图2是用于说明本实施方式的控制系统1中的利用了容器的处理概要的图。
在本说明书中,将在PLC系统2的PLC 100中执行控制运算所需的程序以及库等称为“PLC运行时”。此外,“PLC运行时”这一用语除了控制运算的执行所需的程序以及库等之外,还能够包含实现控制运算的实体以及执行环境。典型地,“PLC运行时”包含定义PLC 100对控制对象的控制运算的用户程序(例如,按照IEC61131-3而任意创建的程序)、以及执行用户程序的执行环境即PLC引擎(固件)。
在本实施方式的控制系统1中,将以不仅在PLC 100中而且在服务器200所提供的虚拟环境中也能够实现的方式将PLC运行时封装化而得的容器称为“PLC运行时容器”。通过将“PLC运行时容器”部署到主机OS(Operating System:操作系统),能够实现逻辑上独立的应用的执行环境。另外,“PLC运行时容器”这一用语可包含所实现的应用的执行环境。关于构成“PLC运行时容器”的程序(应用)和库等的详情以及“PLC运行时容器”的生成方法的详情等将后述。
参照图2,PLC运行时容器50能够释放给PLC系统2的PLC 100和服务器200中的任意一方。根据所要求的状况,使PLC运行时容器50的部署目的地以及部署内容最佳化,由此至少能够实现(1)本地执行模式、(2)云执行模式、(3)仿真(simulation)模式这3个模式。
图3是用于说明在本实施方式的控制系统1中提供的模式的图。
参照图3的(A),(1)本地执行模式相当于PLC 100利用经由现场设备10交换的I/O数据来执行控制运算的状态。更具体而言,在PLC 100中实现PLC运行时510和物理I/O 160。物理I/O 160是也包含现场设备10及控制系统网络4(均参照图1)的抽象化的层。本地执行模式相当于所谓的实际运用。
参照图3的(B),(2)云执行模式相当于经由与PLC 100连接的现场设备10来交换I/O数据,另一方面,控制运算自身由服务器200执行的状态。更具体而言,在PLC 100中实现物理I/O 160,并且在服务器200中实现PLC运行时510。云执行模式既能够作为实际运用来使用,也能够用于用户程序的开发、检查等。
参照图3的(C),(3)仿真模式相当于如下状态:不需要与PLC 100连接的现场设备10,服务器200对现场设备10进行模拟(emulate),并且服务器200也执行控制运算。更具体而言,在服务器200中实现PLC运行时510和虚拟I/O模拟器550。虚拟I/O模拟器550是对物理I/O 160的行为进行模拟的模块。仿真模式能够用于用户程序的开发、检查。
这样,在本实施方式的控制系统1中,通过利用PLC运行时容器50,即使在不存在PLC系统2的一部分或全部的状态下,也能够容易地进行用户程序的开发、检查,并且还能够无缝地转移到实际运用。
<B.硬件结构>
接着,说明构成本实施方式的控制系统的装置的硬件结构的一例。
(b1:PLC 100)
图4是表示构成本实施方式的控制系统1的PLC 100的硬件结构例的框图。参照图4,PLC 100包含CPU(Central Processing Unit:中央处理器)或MPU(Micro-ProcessingUnit:微处理器)等处理器102、芯片组104、主存储器106、储存器110、信息系统网络控制器120、控制系统网络控制器122、USB(Universal Serial Bus:通用串行总线)控制器124以及存储卡接口126。
处理器102读出储存器110中存储的各种程序,在主存储器106中展开并执行,由此实现用于对控制对象进行控制的控制运算。芯片组104控制处理器102与各组件之间的数据传输等。
在储存器110中,典型地存储用于实现基本处理的OS 112和进行PLC运行时容器的部署等处理的系统程序114。
信息系统网络控制器120控制经由信息系统网络6的与开发维护终端300等之间的数据交换。
对控制系统网络控制器122与现场设备10之间的经由控制系统网络4的数据交换进行控制。
USB控制器124控制经由USB连接的与外部装置(例如,支持装置)之间的数据交换。
存储卡接口126构成为能够装卸存储卡128,能够对存储卡128写入数据,并从存储卡128读出各种数据(用户程序、跟踪数据等)。
在图4中,示出了通过处理器102执行程序来提供所需的处理的结构例,但也可以使用专用的硬件电路(例如,ASIC(Application Specific Integrated Circuit:专用集成电路)或者FPGA(Field-Programmable Gate Array:现场可编程门阵列)等)来安装这些所提供的处理的一部分或者全部。或者,也可以使用遵循通用架构的硬件(例如以通用个人计算机为基础的工业用个人计算机)来实现PLC 100的主要部分。在该情况下,也可以使用虚拟化技术并行地执行用途不同的多个OS,并且在各OS上执行所需的应用。
(b2:服务器200)
图5是表示构成本实施方式的控制系统1的服务器200的硬件结构例的框图。参照图5,服务器200包含CPU或MPU等1个或多个处理器202、主存储器206、储存器210、1个或多个网络控制器220、输入部226和显示部228。这些组件经由总线208连接。
处理器202读出储存器210中存储的各种程序,在主存储器206中展开并执行,由此实现后述的各种处理。
储存器210例如由HDD(Hard Disk Drive:硬盘驱动器)或SSD(Flash Solid StateDrive:闪存固态驱动器)等构成。储存器210通常存储用于实现基本处理的OS 212和用于实现由服务器200提供的各种处理的后述的容器应用214。
网络控制器220控制经由网络的与各种装置之间的数据交换。
输入部226由键盘、鼠标等构成,受理来自用户的指示。显示部228由显示器等构成,输出来自处理器202的处理结果等。
在图5中,示出了通过处理器202执行程序而提供所需的处理的结构例,但也可以使用专用的硬件电路(例如ASIC或FPGA等)来安装这些所提供的处理的一部分或全部。
(b3:开发维护终端300)
图6是表示构成本实施方式的控制系统的开发维护终端300的硬件结构例的框图。参照图6,开发维护终端300包含CPU或MPU等处理器302、主存储器306、储存器310、网络控制器320、USB控制器324、输入部326以及显示部328。这些组件经由总线308连接。
处理器302读出储存器310中存储的各种程序,在主存储器306中展开并执行,由此在开发维护终端300中实现所需的处理。
储存器310例如由HDD或SSD等构成。储存器310典型地存储有OS 312和用于指示后述的处理等的开发程序314。另外,在储存器310中,也可以存储图6所示的程序以外的所需的程序。
网络控制器320控制经由任意的控制系统网络4的与PLC 100等之间的数据交换。
USB控制器324控制经由USB连接的与外部装置之间的数据交换。
输入部326由鼠标、键盘、触摸面板等构成,受理来自用户的指示。显示部228由显示器、各种指示器等构成,输出来自处理器202的处理结果等。
开发维护终端300也可以具有光学驱动器304。光学驱动器304从非暂时性地存储计算机可读取的程序的记录介质305(例如,DVD(Digital Versatile Disc:数字多功能光盘)等光学记录介质)中读取程序,并存储在储存器310等中。
由开发维护终端300执行的各种程序可以经由计算机可读取的记录介质305安装,但也可以以从网络上的任意服务器下载的形式安装。
在图6中,示出了通过处理器302执行程序而提供所需的处理的结构例,但也可以使用专用的硬件电路(例如ASIC或FPGA等)来安装这些所提供的处理的一部分或全部。
<C.控制系统1的功能结构>
图7是表示本实施方式的控制系统1中的功能结构的一例的示意图。参照图7,各个PLC 100具有容器引擎150。容器引擎150提供容器的执行环境,基于PLC运行时容器50所包含的清单(manifest)等,对模块的镜像进行部署,生成用于执行处理的模块(实例)。
另一方面,服务器200具有容器引擎250、容器生成模块260和编排器270。
与容器引擎150同样,容器引擎250基于PLC运行时容器50中包含的清单来部署模块的镜像,生成用于执行处理的模块(实例)。
容器引擎150、250是作为CaaS(Containers as a Service:容器即服务)的基础。在释放PLC运行时容器50的上下文中,有时也将容器引擎150、250分别称为“节点”。
容器生成模块260根据用户操作生成PLC运行时容器50。在本实施方式中,容器生成模块260根据应由PLC 100执行的用户程序以及关联的设定信息等,生成包含PLC运行时的镜像的PLC运行时容器50。即,容器生成模块260生成包含PLC运行时的镜像的PLC运行时容器50,该PLC运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境。
编排器270负责对PLC运行时容器50进行管理的处理。编排器270进行将由容器生成模块260生成的PLC运行时容器50登记到容器公共仓库(hub)等的处理,并且根据用户操作等,进行管理由某个主机(在本实施方式中为PLC 100的容器引擎150或者服务器200的容器引擎250)执行登记到容器公共仓库的PLC运行时容器50的处理等。如上所述,编排器270将PLC运行时容器50释放到PLC 100和服务器200中的一方或双方。
PLC 100和服务器200分别具有对PLC运行时容器50进行部署的容器引擎150和250,通过对由编排器270释放的PLC运行时容器50进行部署,生成PLC运行时的镜像的实例并执行控制运算。
此外,编排器270负责PLC运行时容器50的启动/停止的管理、主机间的网络连接的管理、储存器的管理、执行PLC运行时容器50的主机的调度、PLC运行时容器50在主机中的执行状态的管理等。
此外,由编排器270进行的PLC运行时容器50的释放可以按照预先确定的时间表来进行,也可以按照用户操作来进行要释放的PLC运行时容器50的选择以及释放目的地的决定。
关于由各个构成要素进行的处理的详细内容将后述。
<D.PLC运行时容器的利用>
接着,说明利用PLC运行时容器50来实现图2和图3所示的各个模式的例子。在以下的说明中,主要对由PLC 100的容器引擎150或服务器200的容器引擎250提供的功能及处理进行说明。
图8是表示用于实现在本实施方式的控制系统1中提供的模式的功能结构例的示意图。
参照图8的(A),PLC 100具有本地OS 140和容器引擎150。
在(1)本地执行模式中,在容器引擎150上生成PLC运行时510的实例。另外,在PLC100中还准备有用于实现PLC运行时510与物理I/O 160的交换的物理I/O驱动器142。通过图8的(A)所示的功能结构,实现PLC 100的控制运算。
参照图8的(B),在(2)云执行模式中,在PLC 100的容器引擎150上,代替PLC运行时510而生成虚拟I/O网络服务器540的实例。虚拟I/O网络服务器540负责对服务器200与物理I/O 160的交换进行中转的处理。虚拟I/O网络服务器540与虚拟I/O网络客户端530之间将包含物理I/O 160的I/O处理的结果进行同步。
这样,在服务器200的容器引擎250生成PLC运行时510的镜像的实例的情况下,PLC100的容器引擎150生成虚拟I/O网络服务器540的实例,该虚拟I/O网络服务器540将经由与PLC 100连接的现场设备10交换的I/O数据中转给服务器200。
另一方面,服务器200包含服务器OS 240和容器引擎250。在(2)云执行模式中,在容器引擎250上生成PLC运行时510的实例。此外,在容器引擎250上生成虚拟I/O驱动器520和虚拟I/O网络客户端530的实例。
这样,在(2)云执行模式中,在服务器200中生成PLC运行时510的实例,并且在PLC100中也生成虚拟I/O网络服务器540的实例。
虚拟I/O网络客户端530与虚拟I/O网络服务器540交换I/O数据。
虚拟I/O驱动器520对图8的(A)所示的PLC 100的物理I/O驱动器142进行模拟,响应于用于访问来自PLC运行时510的I/O数据的内部命令,进行与访问PLC 100的物理I/O160相同的处理。这样,在服务器200的容器引擎250生成PLC运行时510的镜像实例的情况下,生成对物理I/O驱动器142进行模拟的虚拟I/O驱动器520的实例,该物理I/O驱动器142负责对与PLC 100连接的现场设备10进行访问的处理。
虚拟I/O网络服务器540与虚拟I/O网络客户端530之间的交换对于PLC运行时510具有透过性。即,在由PLC 100执行的PLC运行时510以及由服务器200执行的PLC运行时510中,对物理I/O 160的访问命令相同。虚拟I/O驱动器520、虚拟I/O网络客户端530以及虚拟I/O网络服务器540响应于该相同的访问命令,实现与PLC 100的物理I/O驱动器142执行的处理实质上相同的处理。由于这些处理的同一性,即便使PLC运行时510如图8的(A)~图8的(C)那样在互不相同的执行环境上动作,也不需要使处理内容分别不同。
参照图8的(C),在(3)仿真模式中,在容器引擎250上生成虚拟I/O模拟器550和虚拟I/O网络服务器540的实例。
虚拟I/O模拟器550是模拟PLC 100的物理I/O 160的模块,执行响应于来自PLC运行时510的输出数据而生成输入数据的处理。此外,虚拟I/O模拟器550只要能够实现使用了PLC运行时510的仿真即可,因此也可以执行将从PLC运行时510提供的输出数据直接作为输入数据返回的处理(所谓的折返处理)。或者,虚拟I/O模拟器550例如也可以具有伺服驱动器等模型,将从PLC运行时510提供的输出数据输入至该模型而获得的结果作为输入数据进行响应。
这样,在(3)仿真模式中,服务器200的容器引擎250还与PLC运行时510的实例一同生成对与控制对象交换的I/O数据进行模拟的虚拟I/O模拟器550的实例。
虚拟I/O网络服务器540执行与图8的(B)所示的PLC 100的虚拟I/O网络服务器540相同的处理。即,虚拟地形成用于在虚拟I/O网络客户端530与虚拟I/O网络服务器540之间交换I/O数据的通信路径。虚拟I/O网络服务器540与虚拟I/O网络客户端530之间将由虚拟I/O模拟器550进行的I/O处理的结果进行同步。
此外,根据模式,虚拟I/O网络客户端530的连接目的地被适当变更为PLC 100的虚拟I/O网络服务器540或者服务器200的虚拟I/O网络服务器540。
图9是表示在本实施方式的控制系统1中利用的PLC运行时容器50的结构例的示意图。参照图9,PLC运行时容器50包含PLC运行时镜像51、虚拟I/O驱动器镜像52、虚拟I/O网络客户端镜像53、虚拟I/O网络服务器镜像54以及虚拟I/O模拟器镜像55。这些镜像是通过被部署而能够执行所需的处理的形式的数据。
PLC运行时容器50还包含清单56。清单56包含在各个执行环境和各个模式中使哪个镜像有效化以及利用哪个资源这样的定义。
容器引擎150、250参照清单56,从PLC运行时容器50所包含的各模块的镜像中选择所需的镜像。典型地,清单56包含在图8的(A)~图8的(C)所示的各个模式中利用的功能的定义。
如图9所示,PLC运行时容器50也可以包含仅PLC 100的容器引擎150部署的镜像(例如,虚拟I/O网络服务器镜像54)。另外,PLC运行时容器50也可以包含仅服务器200的容器引擎250部署的镜像(例如,虚拟I/O驱动器镜像52、虚拟I/O网络客户端镜像53、虚拟I/O模拟器镜像55等)。
此外,在图9中示出利用同一PLC运行时容器50的结构例,但也可以根据释放目的地以及所选择的模式,使PLC运行时容器50的结构不同。即,可以生成和释放包含所选择的模式下所需的镜像和对应的清单56的PLC运行时容器50。
<E.PLC运行时容器的生成>
接下来,对PLC运行时容器50的生成所涉及的功能以及处理进行说明。
图10是表示本实施方式的控制系统1中的PLC运行时容器50的生成所涉及的功能结构例的示意图。参照图10,服务器200的容器生成模块260(图7)包含开发环境262和系统结构管理器264。
开发环境262按照用户操作,生成并输出在PLC系统2中执行的用户程序266、以及定义PLC系统2的结构的PLC系统结构信息268。典型地,开发环境262包含编辑器功能、调试功能、仿真功能、匹配性检查功能等。
开发环境262可以在服务器200上实现,也可以通过开发维护终端300执行开发程序来实现。
用户在开发环境262上定义控制系统1中包含的PLC系统2的结构。作为所定义的内容,包含PLC 100的台数以及在服务器200上利用的资源等。另外,用户在开发环境262上创建与控制对象对应的用户程序266。
另外,用户还能够经由开发环境262进行PLC运行时容器50的释放、部署的指示。
系统结构管理器264按照用户操作基于用户程序266和PLC系统结构信息268生成PLC运行时容器50。PLC运行时容器50除了包含各模块的镜像之外,还包含清单56。
系统结构管理器264除了生成PLC运行时容器50之外,还生成并输出系统结构配置文件60。系统结构配置文件60包含PLC运行时容器50的释放目的地以及PLC 100的识别信息等。
系统结构配置文件60可以包含要利用的容器公共仓库276的识别信息、要利用的PLC运行时容器50的识别信息、指示是否允许使用虚拟节点的信息、要利用的虚拟节点的最大数量等。此时,系统结构配置文件60也包含登记有与PLC运行时容器50相关的信息的仓库的信息。
此外,系统结构配置文件60既可以按每个控制系统1生成,也可以按控制系统1所包含的每个PLC系统2生成。
系统结构配置文件60也可以包含容器结构配置文件。容器结构配置文件包含用于确定PLC运行时容器50的识别信息、将PLC运行时容器50作为对象的PLC 100以及与各PLC100连接的设备(电机、机器人等)等信息。另外,容器结构配置文件也可以包含如下等信息:在对设备进行控制时,在开发环境上是否需要追加的所需功能(以下,也称为“功能模块”。)。
<F.PLC运行时容器的释放及执行管理>
接着,对PLC运行时容器50的释放及执行管理所涉及的功能及处理进行说明。
图11是表示本实施方式的控制系统1中的PLC运行时容器50的释放及执行管理所涉及的功能结构例的示意图。参照图11,服务器200的编排器270(图7)包含容器管理器272和节点管理器274。
容器管理器272管理PLC运行时容器50的释放、部署、执行等。容器管理器272管理登记PLC运行时容器50的容器公共仓库276和管理登记在容器公共仓库276中的PLC运行时容器50的状态的仓库278。
容器管理器272在从容器生成模块260(参照图10)被提供PLC运行时容器50时,参照附带的系统结构配置文件60,将PLC运行时容器50登记到容器公共仓库276,并且追加与仓库278对应的条目。
容器公共仓库276将由容器生成模块260生成的PLC运行时容器50与可释放的PLC100的识别信息相关联地进行登记。
仓库278的各个条目包含用于指定登记在容器公共仓库276中的PLC运行时容器50的容器名、将节点名与节点地址对应起来的名称空间、以及指示PLC运行时容器50的状态的容器状态。名称空间是映射有来自PLC运行时510的节点名的指定、与对应的节点地址的空间。这样,仓库278在服务器200的容器引擎250生成PLC运行时510的实例的情况下,管理用于访问容器引擎250的地址。
节点管理器274根据来自容器管理器272的请求等,进行PLC运行时容器50的释放目的地节点(PLC 100的容器引擎150或服务器200的容器引擎250)的搜索、节点状态的取得、虚拟节点的生成等。
关于虚拟节点的生成,节点管理器274在对服务器200释放PLC运行时容器50的情况下,如果不存在部署PLC运行时容器50的容器引擎250,则虚拟地生成包含容器引擎250的节点。
<G.用例>
接着,对几个用例进行说明。
图12是表示本实施方式的控制系统1的典型用例的示意图。在图12所示的用例中,设想PLC 100-1、100-2、100-3对控制对象进行控制的情况。
在图12的(A)所示的用例1中,示出由服务器200仿真PLC 100-1、100-2、100-3执行的全部控制运算的例子。即,对PLC 100-1、100-2、100-3中的任意一个都实现仿真模式。在该情况下,PLC 100-1、100-2、100-3也可以不一定实际存在。
在图12的(B)所示的用例2中,示出在利用PLC 100-1的物理I/O 160-1的同时,在服务器200上执行PLC 100-1所执行的控制运算的例子。即,对于PLC 100-1,实现云执行模式。另外,对于PLC 100-2、100-3,与图12的(A)同样地实现仿真模式。在该情况下,PLC 100-2、100-3也可以不一定实际存在。
在图12的(C)所示的用例3中,示出PLC 100-2利用自身装置的物理I/O 160-2来执行的例子。即,对于PLC 100-1,实现本地执行模式。另外,对于PLC 100-1,与图12的(B)同样地实现云执行模式,对于PLC 100-3,与图12的(A)同样地实现仿真模式。在该情况下,PLC100-3也可以不一定实际存在。
(g1:用例1)
图13是概略地表示图12的(A)所示的用例1中的处理过程的一例的示意图。图13示出新创建包含用户程序266的PLC运行时510(PLC运行时容器50)的情况。此外,PLC运行时容器50在仿真模式下被释放。
参照图13,用户输入所设计的PLC系统2的结构的定义((1)结构定义)。于是,系统结构管理器264生成与所输入的PLC系统2对应的系统结构配置文件60((2)系统结构配置文件生成)。
接着,用户利用开发环境262创建用户程序266((3)用户程序创建)。然后,系统结构管理器264生成PLC运行时容器50((4)PLC运行时容器生成)。进而,容器管理器272将生成的PLC运行时容器50登记到容器公共仓库276((5)PLC运行时容器登记)。通过以上的处理,PLC运行时容器50的生成以及登记完成。
当用户指示释放任意的PLC运行时容器50(在该情况下为仿真模式)时((6)释放指示),节点管理器274生成作为释放目的地的虚拟节点((7)虚拟节点生成),并且将所生成的虚拟节点的节点地址与节点名对应起来登记到仓库278((8)节点名登记)。然后,将所选择的PLC运行时容器50发送到作为释放目的地的虚拟节点((9)PLC运行时容器释放)。作为虚拟节点的容器引擎250-1对PLC运行时容器50进行部署((10)PLC运行时容器部署)。作为虚拟节点的容器引擎250-1将部署的PLC运行时容器50的容器名登记到仓库278((11)容器名登记)。作为虚拟节点的容器引擎250-1通过参照仓库278的内容,在I/O数据的交换中,能够解决与作为发送目的地或接收目的地的节点名对应的节点地址。
此外,作为虚拟节点的容器引擎250-1将通过部署生成的PLC运行时容器50的实例的内容反映到容器公共仓库276((12)部署内容反映)。这样,通过反映到容器公共仓库276,在虚拟节点下次启动时,再利用变得容易。
图14是概略地表示图12的(A)所示的用例1中的另一处理过程的一例的示意图。图14示出在图13所示的处理过程中创建的PLC运行时容器50被再利用的情况。此外,PLC运行时容器50在仿真模式下被释放。
参照图14,用户指示已创建的PLC系统2的再利用((1)再利用指示)。于是,系统结构管理器264加载与所指示的PLC系统2对应的系统结构配置文件60((2)系统结构配置文件加载)。
接着,用户利用开发环境262更新用户程序266((3)用户程序更新)。然后,系统结构管理器264更新PLC运行时容器50((4)PLC运行时容器更新)。此外,容器管理器272将更新后的PLC运行时容器50登记到容器公共仓库276((5)PLC运行时容器登记)。通过以上的处理,PLC运行时容器50的更新(再生成)以及登记完成。
当用户指示释放任意的PLC运行时容器50(在该情况下为仿真模式)时((6)释放指示),所选择的PLC运行时容器50被发送到作为释放目的地的虚拟节点((7)PLC运行时容器释放)。在该例子中,设想了已经在虚拟节点中实现了PLC运行时的情况,因此不需要新生成作为释放目的地的虚拟节点。
作为虚拟节点的容器引擎250-1对PLC运行时容器50进行部署((8)PLC运行时容器部署)。由此,实现与更新后的用户程序对应的PLC运行时。另外,在多数情况下,不需要更新仓库278的内容。
此外,作为虚拟节点的容器引擎250-1将通过部署生成的PLC运行时容器50的实例的内容反映到容器公共仓库276((9)部署内容反映)。
(g2:用例2)
图15是概略地表示图12的(B)所示的用例2中的处理过程的一例的示意图。图15示出新创建包含用户程序266的PLC运行时510(PLC运行时容器50)的情况。另外,PLC运行时容器50在云执行模式下被释放。
参照图15,用户输入所设计的PLC系统2的结构的定义((1)结构定义)。于是,系统结构管理器264生成与所输入的PLC系统2对应的系统结构配置文件60((2)系统结构配置文件生成)。
接着,用户利用开发环境262创建用户程序266((3)用户程序创建)。然后,系统结构管理器264生成PLC运行时容器50((4)PLC运行时容器生成)。进而,容器管理器272将生成的PLC运行时容器50登记到容器公共仓库276((5)PLC运行时容器登记)。通过以上的处理,PLC运行时容器50的生成以及登记完成。
当用户指示释放任意的PLC运行时容器50(在该情况下为云执行模式)时((6)释放指示),节点管理器274生成作为释放目的地的虚拟节点((7)虚拟节点生成),并且将所生成的虚拟节点的节点地址与节点名对应起来登记到仓库278((8)节点名登记)。
然后,将所选择的PLC运行时容器50发送到作为释放目的地的虚拟节点((9)PLC运行时容器释放)。作为虚拟节点的容器引擎250-1对PLC运行时容器50进行部署((10)PLC运行时容器部署)。通过基于容器引擎250-1的部署,生成PLC运行时510、虚拟I/O驱动器520以及虚拟I/O网络客户端530的实例(参照图8的(B))。
另外,所选择的PLC运行时容器50也向释放目的地PLC 100-1发送((11)PLC运行时容器释放)。PLC 100-1的容器引擎150部署PLC运行时容器50((12)PLC运行时容器部署)。通过容器引擎150的部署,生成虚拟I/O网络服务器540的实例。
作为虚拟节点的容器引擎250-1将部署的PLC运行时容器50的容器名登记到仓库278((13)容器名登记)。此外,作为虚拟节点的容器引擎250-1将通过部署生成的PLC运行时容器50的实例的内容反映到容器公共仓库276((14)部署内容反映)。
图16是概略地表示图12的(B)所示的用例2中的另一处理过程的一例的示意图。在图16中,示出虽然在本地执行模式下释放了PLC运行时510,但由于PLC 100中的资源不足而变更为云执行模式的情况。
参照图16,用户输入所设计的PLC系统2的结构的定义((1)结构定义)。于是,系统结构管理器264生成与所输入的PLC系统2对应的系统结构配置文件60((2)系统结构配置文件生成)。
接着,用户利用开发环境262创建用户程序266((3)用户程序创建)。然后,系统结构管理器264生成PLC运行时容器50((4)PLC运行时容器生成)。进而,容器管理器272将生成的PLC运行时容器50登记到容器公共仓库276((5)PLC运行时容器登记)。通过以上的处理,PLC运行时容器50的生成以及登记完成。
当用户指示释放任意的PLC运行时容器50(在该情况下为本地执行模式)时((6)释放指示),所选择的PLC运行时容器50被发送到释放目的地PLC 100-1((7)PLC运行时容器释放)。PLC 100-1的容器引擎150部署PLC运行时容器50((8)PLC运行时容器部署)。在此,假设由于PLC 100-1的容量超过,PLC运行时容器50的部署失败。
这里,假设系统结构管理器264将处理从本地执行模式变更为云执行模式。于是,节点管理器274生成作为释放目的地的虚拟节点((9)虚拟节点生成),并将所生成的虚拟节点的节点地址与节点名对应起来登记到仓库278((10)节点名登记)。
然后,将所选择的PLC运行时容器50发送到作为释放目的地的虚拟节点((11)PLC运行时容器释放)。作为虚拟节点的容器引擎250-1对PLC运行时容器50进行部署((12)PLC运行时容器部署)。
另外,所选择的PLC运行时容器50也被再次发送到释放目的地PLC 100-1((13)PLC运行时容器释放)。PLC 100-1的容器引擎150以云执行模式部署PLC运行时容器50((14)PLC运行时容器部署)。通过容器引擎150的部署,生成虚拟I/O网络服务器540的实例。
作为虚拟节点的容器引擎250-1将部署的PLC运行时容器50的容器名登记到仓库278((15)容器名登记)。此外,作为虚拟节点的容器引擎250-1将通过部署生成的PLC运行时容器50的实例的内容反映到容器公共仓库276((16)部署内容反映)。
(g3:用例3)
图17是概略地表示图12的(C)所示的用例3中的处理过程的一例的示意图。在图17中示出在本地执行模式、云执行模式以及仿真模式下分别释放PLC运行时510的情况。
参照图17,用户输入所设计的PLC系统2的结构的定义((1)结构定义)。于是,系统结构管理器264生成与所输入的PLC系统2对应的系统结构配置文件60((2)系统结构配置文件生成)。
接着,用户利用开发环境262创建用户程序266((3)用户程序创建)。然后,系统结构管理器264生成PLC运行时容器50((4)PLC运行时容器生成)。进而,容器管理器272将生成的PLC运行时容器50登记到容器公共仓库276((5)PLC运行时容器登记)。通过以上的处理,PLC运行时容器50的生成以及登记完成。
假设用户针对PLC 100-1选择了本地执行模式,针对PLC 100-2选择了云执行模式,针对PLC 100-3选择了仿真模式((6)释放指示)。
节点管理器274生成作为释放目的地的虚拟节点((7)虚拟节点生成),并将所生成的虚拟节点的节点地址与节点名对应起来登记到仓库278((8)节点名登记)。
在本地执行模式下选择的PLC运行时容器50被发送到释放目的地PLC 100-1((9)PLC运行时容器释放),PLC 100-1的容器引擎150部署PLC运行时容器50((10)PLC运行时容器部署)。
在云执行模式下选择的PLC运行时容器50被发送到释放目的地PLC 100-2((11)PLC运行时容器释放),PLC 100-2的容器引擎150部署PLC运行时容器50((12)PLC运行时容器部署)。另外,在云执行模式下选择的PLC运行时容器50也被发送到作为释放目的地的虚拟节点((13)PLC运行时容器释放),作为虚拟节点的容器引擎250-2部署PLC运行时容器50((14)PLC运行时容器部署)。
在仿真模式下选择的PLC运行时容器50也被发送到作为释放目的地的虚拟节点((15)PLC运行时容器释放),作为虚拟节点的容器引擎250-3部署PLC运行时容器50((16)PLC运行时容器部署)。
作为虚拟节点的容器引擎250-2和250-3将部署的PLC运行时容器50的容器名登记到仓库278((17)容器名登记)。此外,作为虚拟节点的容器引擎250-2和250-3将通过部署生成的PLC运行时容器50的实例内容反映到容器公共仓库276((18)部署内容反映)。
<H.处理过程>
接着,对本实施方式的控制系统1中的处理过程的一例进行说明。
图18是表示本实施方式的控制系统1中的与PLC运行时容器50的生成相关的处理过程的一例的流程图。图19是表示本实施方式的控制系统1中的与PLC运行时容器50的释放及执行管理相关的处理过程的一例的流程图。图18和图19所示的各步骤典型地通过服务器200的处理器202执行程序来实现。
参照图18,用户访问开发环境262,定义PLC系统2的结构。即,服务器200的开发环境262从用户受理PLC系统2的结构的定义(步骤S100)。更具体而言,用户指定作为对象的PLC 100以及与各PLC 100连接的设备(电机、机器人等)等。
响应于用户的定义,服务器200的开发环境262生成并输出PLC系统结构信息268(步骤S102)。接着,服务器200的系统结构管理器264生成并输出与所指定的PLC 100分别对应的系统结构配置文件60(步骤S104)。即,生成所指定的PLC 100的数量个的系统结构配置文件60。另外,系统结构配置文件60分别包含与对应的PLC100连接的设备的信息。
服务器200的开发环境262提供用于生成IEC程序的编辑器环境,并受理由用户创建的用户程序266(步骤S106)。
服务器200的开发环境262参照系统结构配置文件60,判断是否存在与连接于PLC100的任意设备相关联的功能模块(步骤S108)。如果存在与任意设备相关联的功能模块(在步骤S108中为“是”),则服务器200的开发环境262提供与该相关联的功能模块关联的编辑器环境,受理来自用户的各种设定(步骤S110)。
当用户的设定操作完成时,服务器200的系统结构管理器264加载PLC运行时所需的标准模板(步骤S112)。服务器200的系统结构管理器264参照系统结构配置文件60,判断是否需要与连接于PLC 100的任意设备相关联的模板(步骤S114)。如果需要与任意设备相关联的模板(在步骤S114中为“是”),则服务器200的系统结构管理器264加载所需的模板(步骤S116)。
然后,服务器200的系统结构管理器264基于由用户生成的用户程序和加载的模板来生成PLC运行时容器50(步骤S118)。
继而,服务器200的容器管理器272将由容器生成模块260生成的PLC运行时容器50登记到容器公共仓库276(步骤S120)。
通过以上的过程,与PLC运行时容器50的生成相关的处理完成。即,服务器200生成包含PLC运行时的镜像的容器,该PLC运行时的镜像包含定义针对控制对象的控制运算的用户程序和执行用户程序的执行环境。
参照图19,服务器200的开发环境262响应于用户操作,参照容器公共仓库276和仓库278,显示预先准备的PLC运行时容器50的一览(步骤S200)。
当用户选择任意的PLC运行时容器50和模式时,服务器200的系统结构管理器264确定选择了哪个模式(步骤S202)。
当选择本地执行模式时(在步骤S202中为“本地执行”),服务器200的节点管理器274参照系统结构配置文件60,判断作为所选择的PLC运行时容器50的释放目的地的PLC100是否有效存在(步骤S204)。
如果作为释放目的地的PLC 100有效存在(步骤S204中为“是”),则服务器200的容器管理器272根据PLC运行时容器50的释放来更新仓库278的内容(步骤S206)。接着,服务器200的系统结构管理器264将所选择的PLC运行时容器50发送到作为释放目的地的PLC 100(步骤S208)。作为发送目的地的PLC 100的容器引擎150参照PLC运行时容器50中包含的清单56,部署PLC运行时容器50(步骤S210)。由此,在作为释放目的地的PLC 100中,实现PLC运行时510。然后,处理结束。
另一方面,如果作为释放目的地的PLC 100有效存在(在步骤S204中为“否”),则服务器200的开发环境262对用户通知作为资源目的地的PLC 100未有效存在的意思(步骤S212)。然后,处理结束。
当选择云执行模式时(在步骤S202中为“云执行模式”),服务器200的节点管理器274参照系统结构配置文件60,判断作为所选择的PLC运行时容器50的释放目的地的PLC100是否有效存在(步骤S214)。
如果作为释放目的地的PLC 100有效存在(在步骤S214中为“是”),则服务器200的节点管理器274参照系统结构配置文件60,判断作为所选择的PLC运行时容器50的释放目的地的虚拟节点是否有效存在于服务器200上(步骤S216)。
如果作为释放目的地的虚拟节点未有效存在于服务器200上(在步骤S216中为“否”),则服务器200的节点管理器274生成所需数量的虚拟节点(步骤S218)。虚拟节点提供包含容器引擎250的、能够部署PLC运行时容器50的环境。
如果作为释放目的地的虚拟节点有效存在于服务器200上(在步骤S216中为“是”),则跳过步骤S218的处理。
服务器200的容器管理器272根据PLC运行时容器50的释放,更新仓库278的内容(步骤S220)。然后,服务器200的系统结构管理器264将所选择的PLC运行时容器50发送到作为释放目的地的PLC 100和服务器200上的虚拟节点(步骤S222)。另一方面,包含在发送目的地服务器200的虚拟节点中的容器引擎250也参照包含在PLC运行时容器50中的清单56来部署PLC运行时容器50(步骤S224)。由此,在作为释放目的地的PLC 100中,实现虚拟I/O网络服务器540,在服务器200上的虚拟节点中,实现PLC运行时510。
另一方面,如果作为释放目的地的PLC 100未有效存在(在步骤S214中为“否”),则服务器200的开发环境262对用户通知作为资源目的地的PLC 100未有效存在的意思(步骤S226)。然后,处理结束。
当选择了仿真模式时(在步骤S202中为“仿真模式”),服务器200的节点管理器274参照系统结构配置文件60,判断作为所选择的PLC运行时容器50的释放目的地的虚拟节点是否有效存在于服务器200上(步骤S228)。
如果作为释放目的地的虚拟节点未有效存在于服务器200上(在步骤S228中为“否”),则服务器200的节点管理器274生成所需数量的虚拟节点(步骤S230)。
如果作为释放目的地的虚拟节点有效存在于服务器200上(在步骤S228中为“是”),则跳过步骤S230的处理。
服务器200的容器管理器272根据PLC运行时容器50的释放,更新仓库278的内容(步骤S232)。然后,服务器200的系统结构管理器264将所选择的PLC运行时容器50发送到服务器200上的虚拟节点(步骤S234)。包含在目的地服务器200的虚拟节点中的容器引擎250参照包含在PLC运行时容器50中的清单56来部署PLC运行时容器50(步骤S236)。由此,在释放目的地服务器200上的虚拟节点中,实现包含PLC运行时510和虚拟I/O模拟器550的可仿真的环境。这样,对PLC 100和服务器200中的一方或双方执行释放PLC运行时容器50的处理。
<I.其他实施方式>
为了便于说明,设为服务器200具有容器引擎250、容器生成模块260、编排器270(参照图7),但在服务器200的实体被云化以及虚拟化的情况下,同一硬件不需要实现这些模块的全部,能够适当使用1个或者多个处理器来实现。
<J.附记>
如上所述的本实施方式包含以下这样的技术思想。
[结构1]
一种控制系统(1),其具有1个或多个控制装置(100)和1个或多个服务器(200),其中,该控制系统(1)具有:
生成模块(260),其生成包含运行时(510)的镜像(51)的容器(50),所述运行时(510)的镜像(51)包括定义针对控制对象的控制运算的用户程序(266)和执行该用户程序的执行环境;以及
编排器(270),其对所述控制装置和所述服务器中的一方或双方释放所述容器,
所述控制装置和所述服务器具有对所述容器进行部署的容器引擎(150、250),通过对由所述编排器释放的容器进行部署,生成所述运行时(510)的实例并执行所述控制运算。
[结构2]
在结构1所记载的控制系统中,
所述服务器的容器引擎(250)与所述运行时的实例一起,还生成对与所述控制对象交换的输入输出数据进行模拟的模拟器(550)的实例。
[结构3]
在结构1所记载的控制系统中,
在所述服务器的容器引擎(250)生成所述运行时的实例的情况下,所述控制装置的容器引擎生成将经由与所述控制装置连接的设备(10)交换的输入输出数据中转给所述服务器的网络服务器(540)的实例。
[结构4]
在结构1~3中的任意一项所记载的控制系统中,
所述服务器的容器引擎(250)在生成所述运行时的实例的情况下,生成对I/O驱动器进行模拟的虚拟I/O驱动器(520)的实例,所述I/O驱动器(520)负责对与所述控制装置连接的设备进行访问的处理。
[结构5]
在结构1~4中的任意一项所记载的控制系统中,
所述容器包含仅由所述控制装置的容器引擎部署的镜像(54)和仅由所述服务器的容器引擎部署的镜像(52、53、55)中的至少一方。
[结构6]
在结构1~5中的任意一项所记载的控制系统中,
该控制系统还具有仓库(278),在所述服务器的容器引擎生成所述运行时的实例的情况下,所述仓库(278)对用于访问该容器引擎的地址进行管理。
[结构7]
在结构1~6中的任意一项所记载的控制系统中,
该控制系统还具有节点管理器(274),在对所述服务器释放所述容器的情况下,如果不存在部署该容器的容器引擎,则所述节点管理器(274)虚拟地生成包含容器引擎的节点。
[结构8]
在结构1~7中的任意一项所记载的控制系统中,
该控制系统还具有容器公共仓库(276),所述容器公共仓库(276)将由所述生成模块生成的容器与可释放的控制装置的识别信息相关联地进行登记。
[结构9]
在结构1~8中的任意一项所记载的控制系统中,
所述编排器按照用户操作,选择要释放的容器并且决定释放目的地。
[结构10]
一种控制方法,其在具有1个或多个控制装置(100)和1个或多个服务器(200)的控制系统(1)中执行,其中,该控制方法具有:
步骤(S100~S120),生成包含运行时的镜像的容器,所述运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及
步骤(S200~S234),对所述控制装置和所述服务器中的一方或双方释放所述容器,
所述控制装置和所述服务器具有对所述容器进行部署的容器引擎,通过对所述释放的容器进行部署,生成所述运行时的实例并执行所述控制运算。
<K.优点>
根据本实施方式,能够实现可利用容器技术和编排技术的控制系统。通过利用这些技术,例如在进行控制运算的仿真等的情况下,能够可扩展地利用服务器(云)的资源,因此即使是更复杂以及大规模的仿真,也能够实时地进行。
根据本实施方式,能够利用与PLC连接的设备,并且控制运算自身也能够由服务器执行,因此还能够进行配置于现场侧的PLC的小型化以及简化等。
根据本实施方式,即使在由多个PLC构成的情况下,对于各个PLC,也能够以本地执行模式、云执行模式、仿真模式这3个模式执行控制运算,因此即使在需要组合多个PLC来进行验证的情况下,也能够以在此时的状况下可能的模式下的组合来进行验证。通过这样的组合的验证,能够早期发现以及解决系统结合时的问题等,能够缩短到控制系统的运用开始为止的时间。
应该认为此次公开的实施方式在所有方面都是例示而不是限制性的。本发明的范围由权利要求书、而不由上述的说明来表示,意在包含与权利要求书等同的意思以及范围内的所有变更。
标号说明
1:控制系统;2:PLC系统;4:控制系统网络;6:信息系统网络;8:因特网;10:现场设备;12:远程I/O;14:继电器组;16:伺服驱动器;18:伺服电机;20:网关;50:运行时容器;51:PLC运行时镜像;52:虚拟I/O驱动器镜像;53:虚拟I/O网络客户端镜像;54:虚拟I/O网络服务器镜像;55:虚拟I/O模拟器镜像;56:清单;60:系统结构配置文件;100:PLC;102、202、302:处理器;104:芯片组;106、206、306:主存储器;110、210、310:储存器;112、212、312:OS;114:系统程序;120:信息系统网络控制器;122:控制系统网络控制器;124、324:USB控制器;126:存储卡接口;128:存储卡;140:本地OS;142:物理I/O驱动器;150、250:容器引擎;160:物理I/O;200:服务器;208、308:总线;220、320:网络控制器;226、326:输入部;228、328:显示部;240:服务器OS;260:容器生成模块;262:开发环境;264:系统结构管理器;266:用户程序;268:系统结构信息;270:编排器;272:容器管理器;274:节点管理器;276:容器公共仓库;278:仓库;300:开发维护终端;304:光学驱动器;305:记录介质;314:开发程序;510:PLC运行时;520:虚拟I/O驱动器;530:虚拟I/O网络客户端;540:虚拟I/O网络服务器;550:虚拟I/O模拟器。
Claims (10)
1.一种控制系统,其具有1个或多个控制装置和1个或多个服务器,其中,该控制系统具有:
生成模块,其生成包含运行时的镜像的容器,所述运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及
编排器,其对所述控制装置和所述服务器中的一方或双方释放所述容器,
所述控制装置和所述服务器具有对所述容器进行部署的容器引擎,通过对由所述编排器释放的容器进行部署,生成所述运行时的实例并执行所述控制运算。
2.根据权利要求1所述的控制系统,其中,
所述服务器的容器引擎与所述运行时的实例一起,还生成对与所述控制对象交换的输入输出数据进行模拟的模拟器的实例。
3.根据权利要求1所述的控制系统,其中,
在所述服务器的容器引擎生成所述运行时的实例的情况下,所述控制装置的容器引擎生成将经由与所述控制装置连接的设备交换的输入输出数据中转给所述服务器的网络服务器的实例。
4.根据权利要求1~3中的任意一项所述的控制系统,其中,
所述服务器的容器引擎在生成所述运行时的实例的情况下,生成对I/O驱动器进行模拟的虚拟I/O驱动器的实例,所述I/O驱动器负责对与所述控制装置连接的设备进行访问的处理。
5.根据权利要求1~4中的任意一项所述的控制系统,其中,
所述容器包含仅由所述控制装置的容器引擎部署的镜像和仅由所述服务器的容器引擎部署的镜像中的至少一方。
6.根据权利要求1~5中的任意一项所述的控制系统,其中,
该控制系统还具有仓库,在所述服务器的容器引擎生成所述运行时的实例的情况下,所述仓库对用于访问该容器引擎的地址进行管理。
7.根据权利要求1~6中的任意一项所述的控制系统,其中,
该控制系统还具有节点管理器,在对所述服务器释放所述容器的情况下,如果不存在部署该容器的容器引擎,则所述节点管理器虚拟地生成包含容器引擎的节点。
8.根据权利要求1~7中的任意一项所述的控制系统,其中,
该控制系统还具有容器公共仓库,所述容器公共仓库将由所述生成模块生成的容器与可释放的控制装置的识别信息相关联地进行登记。
9.根据权利要求1~8中的任意一项所述的控制系统,其中,
所述编排器按照用户操作,选择要释放的容器并且决定释放目的地。
10.一种控制方法,其在具有1个或多个控制装置和1个或多个服务器的控制系统中执行,其中,该控制方法具有以下步骤:
生成包含运行时的镜像的容器,所述运行时的镜像包括定义针对控制对象的控制运算的用户程序、和执行该用户程序的执行环境;以及
对所述控制装置和所述服务器中的一方或双方释放所述容器,
所述控制装置和所述服务器具有对所述容器进行部署的容器引擎,通过对所述释放的容器进行部署,生成所述运行时的实例并执行所述控制运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020204061A JP2022091301A (ja) | 2020-12-09 | 2020-12-09 | 制御システムおよび制御方法 |
JP2020-204061 | 2020-12-09 | ||
PCT/JP2021/008916 WO2022123803A1 (ja) | 2020-12-09 | 2021-03-08 | 制御システムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116490830A true CN116490830A (zh) | 2023-07-25 |
Family
ID=81974338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180078958.0A Pending CN116490830A (zh) | 2020-12-09 | 2021-03-08 | 控制系统以及控制方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240004688A1 (zh) |
EP (1) | EP4261631A1 (zh) |
JP (1) | JP2022091301A (zh) |
CN (1) | CN116490830A (zh) |
WO (1) | WO2022123803A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240103455A1 (en) * | 2022-09-22 | 2024-03-28 | Rockwell Automation Technologies, Inc. | Application driven enhancement to industrial automation device via container implementation |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102011077317B4 (de) * | 2011-06-09 | 2015-10-01 | Siemens Aktiengesellschaft | Simulationssystem, Verfahren zur Durchführung einer Simulation, Leitsystem und Computerprogrammprodukt |
JP6231020B2 (ja) | 2012-02-13 | 2017-11-15 | オラクル・インターナショナル・コーポレイション | クラウドコンピューティング環境におけるプロセスの調整 |
DE112018005879T5 (de) * | 2017-11-16 | 2020-08-20 | Intel Corporation | Verteilte softwaredefinierte industrielle Systeme |
JP6572330B2 (ja) * | 2018-01-26 | 2019-09-04 | 株式会社インテック | ロボットアプリケーション管理装置、システム、方法及びプログラム |
EP3722951A1 (en) * | 2019-04-08 | 2020-10-14 | Schneider Electric Industries SAS | Service deployment in a cluster of i/o devices |
-
2020
- 2020-12-09 JP JP2020204061A patent/JP2022091301A/ja active Pending
-
2021
- 2021-03-08 WO PCT/JP2021/008916 patent/WO2022123803A1/ja active Application Filing
- 2021-03-08 CN CN202180078958.0A patent/CN116490830A/zh active Pending
- 2021-03-08 EP EP21902910.5A patent/EP4261631A1/en active Pending
- 2021-03-08 US US18/039,653 patent/US20240004688A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022123803A1 (ja) | 2022-06-16 |
US20240004688A1 (en) | 2024-01-04 |
EP4261631A1 (en) | 2023-10-18 |
JP2022091301A (ja) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784152B (zh) | 包括多个模拟器的模拟 | |
US7437706B2 (en) | Automating the life cycle of a distributed computing application | |
US8230264B2 (en) | System evaluation apparatus | |
US7823023B2 (en) | Test framework for testing an application | |
JP5657475B2 (ja) | 運用管理装置、及び方法 | |
JP6978443B2 (ja) | レガシー・レベル1コントローラ仮想化システムおよび方法 | |
CN103514023A (zh) | 一种虚拟机离线自动软件安装的方法及系统 | |
CN111679889B (zh) | 一种虚拟机的转换迁移方法和系统 | |
CN114881233A (zh) | 一种基于容器的分布式模型推理服务方法 | |
CN116490830A (zh) | 控制系统以及控制方法 | |
CN112764981B (zh) | 一种协同测试系统及方法 | |
US7873498B2 (en) | Remote hardware inspection system and method | |
WO2020246097A1 (ja) | サポート装置およびサポートプログラム | |
EP3734379A1 (en) | Method and system for generating control programs in a cloud computing environment | |
US20230315038A1 (en) | Method and system for providing engineering of an industrial device in a cloud computing environment | |
US9424016B2 (en) | Methods, apparatuses, and systems relating to automation in distributed systems | |
KR102392469B1 (ko) | 트러블 슈팅을 위한 프로젝트 서버의 복제 방법 및 이를 이용한 클라우드 개발 플랫폼 시스템 | |
JP6920501B1 (ja) | 情報処理システム、プログラム、及び情報処理方法 | |
US20240095006A1 (en) | Image assembly | |
WO2020246096A1 (ja) | サポート装置およびサポートプログラム | |
WO2013114829A1 (ja) | 情報処理システム、データセンタ、システム移行方法、及び、プログラム | |
KR20240009766A (ko) | 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법 | |
JP2022027047A (ja) | コントロールシステム | |
CN115756514A (zh) | 一种软件自动化编译方法及系统 | |
CN117742282A (zh) | 用于控制逻辑测试的分布式控制系统的虚拟部署 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |