WO2022123803A1 - 制御システムおよび制御方法 - Google Patents

制御システムおよび制御方法 Download PDF

Info

Publication number
WO2022123803A1
WO2022123803A1 PCT/JP2021/008916 JP2021008916W WO2022123803A1 WO 2022123803 A1 WO2022123803 A1 WO 2022123803A1 JP 2021008916 W JP2021008916 W JP 2021008916W WO 2022123803 A1 WO2022123803 A1 WO 2022123803A1
Authority
WO
WIPO (PCT)
Prior art keywords
container
plc
server
runtime
control
Prior art date
Application number
PCT/JP2021/008916
Other languages
English (en)
French (fr)
Inventor
弓束 重森
Original Assignee
オムロン株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by オムロン株式会社 filed Critical オムロン株式会社
Priority to US18/039,653 priority Critical patent/US20240004688A1/en
Priority to EP21902910.5A priority patent/EP4261631A1/en
Priority to CN202180078958.0A priority patent/CN116490830A/zh
Publication of WO2022123803A1 publication Critical patent/WO2022123803A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Definitions

  • the present invention relates to a control system including a control device and a server, and a control method in the control system.
  • a series of work such as design, implementation, and verification is required.
  • the control device and the device are combined after designing, mounting, and verifying the control device alone.
  • it is necessary to complete the work for each control device but it is difficult to make the work progress the same due to the complexity and characteristics of each control device. Therefore, due to variations in work progress, a waiting time may occur before the system is combined.
  • Patent Document 1 discloses a method for managing computer cloud resources.
  • One object of the present invention is to provide a solution to meet such a demand.
  • a control system including one or more control devices and one or more servers.
  • the control system is for a generator module that creates a container containing a runtime image containing a user program that defines a control operation for a controlled object and an execution environment that executes the user program, and one or both of the control device and the server.
  • the controller and server have a container engine that deploys the container, and by deploying the container released by the orchestrator, an instance of the runtime is created and the control operation is executed.
  • the container containing the image of the runtime can be deployed and executed by either the control device or the server, it is possible to facilitate the verification of the execution of the control operation even in the absence of the control device. It is also possible to easily move the control operation executed on the server to the control device.
  • the server container engine may generate an instance of the emulator that emulates the input / output data exchanged with the controlled object together with the instance of the runtime. According to this configuration, even if there is no device connected to the control device, it is possible to easily verify the control operation on the server.
  • the container engine of the server creates an instance of the runtime
  • the container engine of the controller creates an instance of the network server that mediates the input / output data exchanged through the device connected to the controller to the server. good.
  • the control operation itself can be executed by the server while using the I / O data exchanged with the device connected to the control device, so that the resources provided by the server can be used.
  • the server's container engine may create an instance of a virtual I / O driver that emulates the I / O driver responsible for accessing the device connected to the controller. .. According to this configuration, it is possible to provide an execution environment that is substantially the same as executing a control operation on a control device, so that a runtime for realizing the control operation can be commonly used in the server.
  • the container may include at least one of an image deployed only by the container engine of the control device and an image deployed only by the container engine of the server. According to this configuration, by including the image redundantly in the container, the control operation can be realized regardless of the deployment destination.
  • the control system may further include a repository that manages the address for accessing the container engine of the server when the container engine of the server creates an instance of the runtime. According to this configuration, when executing a control operation on the server, the difference in the address assigned to the execution environment can be absorbed by referring to the repository.
  • control system may further include a node manager that virtually creates a node including the container engine if the container engine for deploying the container does not exist. According to this configuration, a node that executes a control operation can be arbitrarily generated in response to a request.
  • the control system may further include a container hub that registers the container generated by the generation module in association with the identification information of the releaseable controller. This configuration facilitates the reuse of once created containers.
  • the orchestrator may select the container to be released and determine the release destination according to the user operation. With this configuration, the user can release the required container to the required execution environment depending on the situation of the control system.
  • a control method executed in a control system including one or more control devices and one or more servers.
  • the control method is for one or both of the step of creating a container containing a runtime image containing the user program that defines the control operation for the controlled object and the execution environment that executes the user program. Includes steps to release the container.
  • the control unit and server have a container engine that deploys a container, and by deploying a released container, an instance of the runtime is generated and a control operation is executed.
  • the resources of the controller can be made available in a scalable manner.
  • FIG. 12A It is a schematic diagram which outlines an example of another processing procedure in the use case shown in FIG. 12A. It is a schematic diagram which outlines an example of the processing procedure in the use case shown in FIG. 12B. It is a schematic diagram which outlines an example of another processing procedure in the use case shown in FIG. 12B. It is a schematic diagram which outlines an example of the processing procedure in the use case shown in FIG. 12C. It is a flowchart which shows an example of the processing procedure about the generation of PLC run-time container in the control system which follows this embodiment. It is a flowchart which shows an example of the processing procedure about release and execution management of PLC run-time container in the control system which follows this embodiment.
  • FIG. 1 is a schematic diagram showing an overall configuration example of the control system 1 according to the present embodiment.
  • the control system 1 according to the present embodiment is referred to as one or a plurality of PLC systems 2-1, 2, 2-3 (hereinafter, also collectively referred to as “PLC system 2”).
  • PLC system 2 includes one or more servers 200 and a development / maintenance terminal 300.
  • the related components are referred to as "-1", "-2" and "-3". In some cases, a subscript such as is added.
  • Each of the PLC systems 2 is also referred to as a line and may control the entire factory or may control specific manufacturing equipment or manufacturing equipment installed in the factory.
  • the PLC systems 2-1, 2, 2-3 are the main components of the PLC (Programmable Logic Controller) 100-1, 100-2, 100-3 (Programmable Logic Controller) 100-1, 100-2, 100-3, which is a typical example of a control device that controls a control target. Hereinafter, it is also collectively referred to as “PLC100”).
  • the PLC 100 is connected to the field device 10.
  • the field device 10 includes any device necessary for controlling a controlled object. More specifically, the field device 10 includes a device for exchanging information with a controlled object (for example, a manufacturing facility, a manufacturing device, a sensor and an actuator included in the manufacturing facility or the manufacturing device). In the example shown in FIG. 1, the field device 10 includes a remote I / O (Input / Output) 12, a relay group 14, a servo driver 16, and a servomotor 18.
  • I / O Input / Output
  • the PLC 100 acquires information from the field device 10 and executes a control operation according to a user program created in advance to generate information given to the field device 10.
  • the information acquired by the PLC 100 from the field device 10 is also referred to as “input data”, and the information given to the field device 10 is also referred to as “output data”.
  • input data and output data are also collectively referred to as "input / output data" or "I / O data”.
  • the PLC 100 and the field device 10 are connected via the control system network 4, but the present invention is not limited to this, and the PLC 100 may be connected by a hard wire.
  • the field device 10 is not limited to the device shown in FIG. 1, and may include any device.
  • EtherCAT registered trademark
  • EtherNet / IP registered trademark
  • DeviceNet registered trademark
  • CompoNet registered trademark
  • Each of the PLC systems 2 can access the server 200 existing on the Internet 8 via the information system network 6 and the gateway 20.
  • the information system network 6 a general-purpose communication protocol such as Ethernet (registered trademark) may be adopted.
  • the server 200 manages the release of the container while providing an environment in which the container can be deployed and executed.
  • the "release" of a container includes a process of providing a target container to an execution destination and a process of instructing execution at the execution destination (for example, a process of instructing deployment). Details of these processes and functions will be described later.
  • the server 200 may be arranged on the cloud via the Internet 8 or may be arranged in the local network where the PLC system 2 exists without going through the Internet 8.
  • the implementation form of the server 200 can be arbitrarily determined according to the required performance and functions.
  • the development / maintenance terminal 300 can access the server 200 and perform user operations for realizing various processes as described later.
  • FIG. 2 is a diagram for explaining an outline of processing using a container in the control system 1 according to the present embodiment.
  • PLC runtime the programs and libraries required to execute control operations on the PLC100 of the PLC system 2 are referred to as "PLC runtime".
  • PLC runtime may include an entity that realizes a control operation and an execution environment, in addition to a program and a library necessary for executing the control operation.
  • the "PLC runtime” is a user program (for example, a program arbitrarily created according to IEC61131-3) that defines a control operation for a control target by the PLC 100, and a PLC engine that is an execution environment for executing the user program. Includes (firmware).
  • a PLC runtime packaged so that it can be realized not only in the PLC 100 but also in the virtual environment provided by the server 200 is referred to as a "PLC runtime container".
  • PLC runtime container By deploying the "PLC runtime container” to the host OS (Operating System), it is possible to realize a logically independent application execution environment.
  • the term "PLC runtime container” may include the execution environment of the realized application. Details of the programs (applications) and libraries that make up the "PLC runtime container”, details of how to generate the "PLC runtime container", and the like will be described later.
  • the PLC runtime container 50 can be released to either the PLC 100 of the PLC system 2 or the server 200.
  • the deployment destination and deployment contents of the PLC runtime container 50 can be realized.
  • FIG. 3 is a diagram for explaining a mode provided in the control system 1 according to the present embodiment.
  • the local execution mode corresponds to a state in which the PLC 100 executes a control operation using the I / O data exchanged via the field device 10. More specifically, the PLC 100 has a PLC runtime 510 and a physical I / O 160.
  • the physical I / O 160 is an abstracted layer that also includes the field device 10 and the control network 4 (both see FIG. 1).
  • the local execution mode corresponds to so-called actual operation.
  • (2) the cloud execution mode exchanges I / O data via the field device 10 connected to the PLC 100, while the control operation itself is executed by the server 200.
  • the physical I / O 160 is realized in the PLC 100
  • the PLC runtime 510 is realized in the server 200.
  • the cloud execution mode can be used for actual operation, or can be used for developing or checking a user program.
  • the simulation mode does not require the field device 10 connected to the PLC 100, and the server 200 also emulates the field device 10 while the server 200 also executes control operations.
  • the PLC runtime 510 and the virtual I / O emulator 550 are realized in the server 200.
  • the virtual I / O emulator 550 is a module that emulates the behavior of the physical I / O 160.
  • the simulation mode can be used for developing and checking user programs.
  • control system 1 by using the PLC runtime container 50, it is easy to develop and check the user program even if a part or all of the PLC system 2 does not exist. In addition to being able to do this, it is also possible to seamlessly move to actual operation.
  • FIG. 4 is a block diagram showing a hardware configuration example of the PLC 100 constituting the control system 1 according to the present embodiment.
  • the PLC 100 includes a processor 102 such as a CPU (Central Processing Unit) and an MPU (Micro-Processing Unit), a chip set 104, a main memory 106, a storage 110, and an information system network controller 120.
  • a control system network controller 122 a USB (Universal Serial Bus) controller 124, and a memory card interface 126.
  • USB Universal Serial Bus
  • the processor 102 realizes a control operation for controlling a controlled object by reading various programs stored in the storage 110, expanding them in the main memory 106, and executing the programs.
  • the chipset 104 controls data transmission and the like between the processor 102 and each component.
  • the storage 110 typically stores an OS 112 for realizing basic processing and a system program 114 for performing processing such as deploying a PLC runtime container.
  • the information system network controller 120 controls the exchange of data with the development / maintenance terminal 300 or the like via the information system network 6.
  • the USB controller 124 controls the exchange of data with an external device (for example, a support device) via a USB connection.
  • an external device for example, a support device
  • the memory card interface 126 is configured so that the memory card 128 can be attached and detached, and data can be written to the memory card 128 and various data (user programs, trace data, etc.) can be read from the memory card 128. There is.
  • FIG. 4 shows a configuration example in which the necessary processing is provided by the processor 102 executing the program, and a part or all of the provided processing is provided by a dedicated hardware circuit (for example, ASIC). It may be implemented using (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). Alternatively, the main part of the PLC 100 may be realized by using hardware that follows a general-purpose architecture (for example, an industrial personal computer based on a general-purpose personal computer). In this case, virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • a general-purpose architecture for example, an industrial personal computer based on a general-purpose personal computer.
  • virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • FIG. 5 is a block diagram showing a hardware configuration example of the server 200 constituting the control system 1 according to the present embodiment.
  • the server 200 includes one or more processors 202 such as a CPU or MPU, a main memory 206, a storage 210, one or more network controllers 220, an input unit 226, and a display unit 228. And include. These components are connected via bus 208.
  • the processor 202 realizes various processes as described later by reading various programs stored in the storage 210, expanding them in the main memory 206, and executing the programs.
  • the storage 210 is composed of, for example, an HDD (Hard Disk Drive) or an SSD (Flash Solid State Drive).
  • the storage 210 typically stores an OS 212 for realizing basic processing and a container application 214 for realizing various processing provided by the server 200 as described later.
  • the network controller 220 controls the exchange of data with various devices via the network.
  • the input unit 226 is composed of a keyboard, a mouse, etc., and receives instructions from the user.
  • the display unit 228 is composed of a display or the like, and outputs a processing result or the like from the processor 202.
  • FIG. 5 shows a configuration example in which the necessary processing is provided by the processor 202 executing the program, and a part or all of the provided processing is provided by a dedicated hardware circuit (for example, ASIC). Alternatively, it may be implemented using FPGA or the like).
  • FIG. 6 is a block diagram showing a hardware configuration example of the development / maintenance terminal 300 constituting the control system 1 according to the present embodiment.
  • the development / maintenance terminal 300 includes a processor 302 such as a CPU and an MPU, a main memory 306, a storage 310, a network controller 320, a USB controller 324, an input unit 326, and a display unit 328. including. These components are connected via bus 308.
  • the processor 302 reads various programs stored in the storage 310, expands them in the main memory 306, and executes them to realize the processing required by the development / maintenance terminal 300.
  • the storage 310 is composed of, for example, an HDD or an SSD.
  • the storage 310 typically stores an OS 312 and a development program 314 for instructing a process as described later.
  • a necessary program other than the program shown in FIG. 6 may be stored in the storage 310.
  • the network controller 320 controls the exchange of data with the PLC 100 or the like via an arbitrary control system network 4.
  • the USB controller 324 controls the exchange of data with an external device via a USB connection.
  • the input unit 326 is composed of a mouse, keyboard, touch panel, etc., and receives instructions from the user.
  • the display unit 228 is composed of a display, various indicators, and the like, and outputs a processing result from the processor 202 and the like.
  • the development / maintenance terminal 300 may have an optical drive 304.
  • the optical drive 304 reads a program from a recording medium 305 (for example, an optical recording medium such as a DVD (Digital Versatile Disc)) that temporarily stores a computer-readable program, and stores the program in a storage 310 or the like.
  • a recording medium 305 for example, an optical recording medium such as a DVD (Digital Versatile Disc)
  • DVD Digital Versatile Disc
  • Various programs executed by the development / maintenance terminal 300 may be installed via a computer-readable recording medium 305, but may also be installed by downloading from any server on the network.
  • FIG. 6 shows a configuration example in which the necessary processing is provided by the processor 302 executing the program, and a part or all of the provided processing is provided by a dedicated hardware circuit (for example, ASIC). Alternatively, it may be implemented using FPGA or the like).
  • FIG. 7 is a schematic diagram showing an example of the functional configuration in the control system 1 according to the present embodiment.
  • each of the PLCs 100 has a container engine 150.
  • the container engine 150 provides an execution environment for a container, deploys an image of a module based on a manifest included in the PLC runtime container 50, and generates a module (instance) for executing a process. ..
  • the server 200 has a container engine 250, a container generation module 260, and an orchestrator 270.
  • the container engine 250 deploys an image of the module based on the manifest included in the PLC runtime container 50 and generates a module (instance) for executing the process.
  • the container engines 150 and 250 are the basis of Software as a Service (CaaS). In the context of releasing the PLC runtime container 50, each of the container engines 150 and 250 may be referred to as a "node”.
  • the container generation module 260 generates the PLC runtime container 50 according to the user operation.
  • the container generation module 260 generates a PLC runtime container 50 including an image of the PLC runtime from a user program to be executed by the PLC 100 and related setting information. That is, the container generation module 260 generates a PLC runtime container 50 including an image of a PLC runtime including a user program that defines a control operation for a controlled object and an execution environment for executing the user program.
  • the orchestrator 270 is in charge of the process of managing the PLC runtime container 50.
  • the orchestrator 270 performs processing such as registering the PLC runtime container 50 generated by the container generation module 260 in the container hub, and any one of the PLC runtime containers 50 registered in the container hub according to a user operation or the like.
  • the host in the present embodiment, the container engine 150 of the PLC 100 or the container engine 250 of the server 200 manages whether to execute the process.
  • the orchestor 270 releases the PLC runtime container 50 to one or both of the PLC 100 and the server 200.
  • the PLC 100 and the server 200 have container engines 150 and 250 for deploying the PLC runtime container 50, respectively, and generate an instance of the PLC runtime image by deploying the PLC runtime container 50 released by the orchestrator 270. And execute the control operation.
  • the orchestrator 270 manages the start / stop of the PLC runtime container 50, manages the network connection between hosts, manages the storage, schedules the host to execute the PLC runtime container 50, and executes the PLC runtime container 50 on the host. Responsible for status management, etc.
  • the PLC runtime container 50 may be released by the orchestrator 270 according to a predetermined schedule, or the PLC runtime container 50 to be released may be selected and the release destination may be determined according to the user operation.
  • FIG. 8 is a schematic diagram showing a functional configuration example for realizing the mode provided in the control system 1 according to the present embodiment.
  • the PLC 100 has a local OS 140 and a container engine 150.
  • an instance of PLC runtime 510 is generated on the container engine 150. Further, the PLC 100 is also provided with a physical I / O driver 142 for realizing the exchange between the PLC runtime 510 and the physical I / O 160. With the functional configuration as shown in FIG. 8A, the control calculation by the PLC 100 is realized.
  • an instance of the virtual I / O network server 540 is generated on the container engine 150 of the PLC 100 instead of the PLC runtime 510.
  • the virtual I / O network server 540 is in charge of a process of mediating the exchange between the server 200 and the physical I / O 160.
  • the virtual I / O network server 540 synchronizes the results of I / O processing including the physical I / O 160 with the virtual I / O network client 530.
  • the container engine 250 of the server 200 creates an instance of the image of the PLC runtime 510
  • the container engine 150 of the PLC 100 servers the I / O data exchanged via the field device 10 connected to the PLC 100.
  • the server 200 has a server OS 240 and a container engine 250.
  • an instance of the PLC runtime 510 is generated on the container engine 250.
  • an instance of the virtual I / O driver 520 and the virtual I / O network client 530 is generated on the container engine 250.
  • the instance of the PLC runtime 510 is generated in the server 200, and the instance of the virtual I / O network server 540 is also generated in the PLC 100.
  • the virtual I / O network client 530 exchanges I / O data with the virtual I / O network server 540.
  • the virtual I / O driver 520 emulates the physical I / O driver 142 of the PLC 100 shown in FIG. 8 (A) and responds to an internal command for accessing I / O data from the PLC runtime 510. Then, the same process as accessing the physical I / O 160 of the PLC 100 is performed. In this way, when the container engine 250 of the server 200 creates an instance of the image of the PLC runtime 510, the virtual that emulates the physical I / O driver 142 that is in charge of the process of accessing the field device 10 connected to the PLC 100. Create an instance of the I / O driver 520.
  • the interaction between the virtual I / O network server 540 and the virtual I / O network client 530 is transparent with respect to the PLC runtime 510. That is, the access instruction to the physical I / O 160 is the same in the PLC runtime 510 executed by the PLC 100 and the PLC runtime 510 executed by the server 200.
  • the virtual I / O driver 520, the virtual I / O network client 530, and the virtual I / O network server 540 are substantially the same as the processing executed by the physical I / O driver 142 of the PLC 100 in response to the same access instruction. Realize the processing of. Due to the identity of these processes, even if the PLC runtime 510 is operated in different execution environments as shown in FIGS. 8 (A) to 8 (C), it is not necessary to make the processing contents different.
  • an instance of the virtual I / O emulator 550 and the virtual I / O network server 540 is generated on the container engine 250.
  • the virtual I / O emulator 550 is a module that simulates the physical I / O 160 of the PLC 100, and executes processing such as generating input data in response to output data from the PLC runtime 510. Since the virtual I / O emulator 550 only needs to be able to realize a simulation using the PLC runtime 510, even if the output data given from the PLC runtime 510 is returned as input data as it is (so-called wrapping process). good. Alternatively, the virtual I / O emulator 550 has a model such as a servo driver, and even if the output data given from the PLC runtime 510 is input to the model and the result obtained is returned as input data. good.
  • the container engine 250 of the server 200 also generates an instance of the virtual I / O emulator 550 that emulates the I / O data exchanged with the controlled object together with the instance of the PLC runtime 510. do.
  • the virtual I / O network server 540 executes the same processing as the virtual I / O network server 540 of the PLC 100 shown in FIG. 8 (B). That is, a communication path for exchanging I / O data between the virtual I / O network client 530 and the virtual I / O network server 540 is virtually formed.
  • the virtual I / O network server 540 synchronizes the result of I / O processing by the virtual I / O emulator 550 with the virtual I / O network client 530.
  • connection destination of the virtual I / O network client 530 is appropriately changed to the virtual I / O network server 540 of the PLC 100 or the virtual I / O network server 540 of the server 200.
  • FIG. 9 is a schematic diagram showing a configuration example of the PLC runtime container 50 used in the control system 1 according to the present embodiment.
  • the PLC runtime container 50 includes a PLC runtime image 51, a virtual I / O driver image 52, a virtual I / O network client image 53, a virtual I / O network server image 54, and a virtual I. Includes / O emulator image 55. These images are data in a format that can perform the necessary processing by being deployed.
  • the PLC runtime container 50 further includes a manifest 56.
  • the manifest 56 includes definitions such as which image is enabled and what resources are used in each execution environment and each mode.
  • the container engines 150 and 250 refer to the manifest 56 and select a necessary image from the images of each module included in the PLC runtime container 50.
  • the manifest 56 includes definitions of the functions utilized in each of the modes shown in FIGS. 8 (A) to 8 (C).
  • the PLC runtime container 50 may include an image (for example, a virtual I / O network server image 54) deployed only by the container engine 150 of the PLC 100. Further, the PLC runtime container 50 includes an image (for example, a virtual I / O driver image 52, a virtual I / O network client image 53, a virtual I / O emulator image 55, etc.) deployed only by the container engine 250 of the server 200. You may be.
  • an image for example, a virtual I / O driver image 52, a virtual I / O network client image 53, a virtual I / O emulator image 55, etc.
  • FIG. 9 shows a configuration example using the same PLC runtime container 50
  • the configuration of the PLC runtime container 50 may be different depending on the release destination and the selected mode. That is, the PLC runtime container 50 containing the required image and the corresponding manifest 56 in the selected mode may be generated and released.
  • FIG. 10 is a schematic diagram showing a functional configuration example related to the generation of the PLC runtime container 50 in the control system 1 according to the present embodiment.
  • the container generation module 260 (FIG. 7) of the server 200 includes a development environment 262 and a system configuration manager 264.
  • the development environment 262 generates and outputs the user program 266 executed by the PLC system 2 and the PLC system configuration information 268 that defines the configuration of the PLC system 2 according to the user operation.
  • the development environment 262 includes an editor function, a debugging function, a simulation function, a consistency check function, and the like.
  • the development environment 262 may be realized on the server 200, or may be realized by the development / maintenance terminal 300 executing the development program.
  • the user defines the configuration of the PLC system 2 included in the control system 1 on the development environment 262.
  • the contents to be defined include the number of PLCs 100 and the resources used on the server 200.
  • the user creates a user program 266 according to the control target on the development environment 262.
  • the user can also instruct the release and deployment of the PLC runtime container 50 via the development environment 262.
  • the system configuration manager 264 generates the PLC runtime container 50 based on the user program 266 and the PLC system configuration information 268 according to the user operation.
  • the PLC runtime container 50 contains a manifest 56 in addition to the image of each module.
  • the system configuration manager 264 generates and outputs the system configuration profile 60 in addition to the generation of the PLC runtime container 50.
  • the system configuration profile 60 includes the release destination of the PLC runtime container 50, the identification information of the PLC 100, and the like.
  • system configuration profile 60 may include identification information of the container hub 276 to be used, identification information of the PLC runtime container 50 to be used, information indicating whether or not the virtual node can be used, the maximum number of virtual nodes to be used, and the like. .. At this time, the system configuration profile 60 also includes information on the repository in which information about the PLC runtime container 50 is registered.
  • the system configuration profile 60 may be generated for each control system 1 or for each PLC system 2 included in the control system 1.
  • the system configuration profile 60 may include a container configuration profile.
  • the container configuration profile includes identification information for identifying the PLC runtime container 50, information such as the PLC 100 targeted by the PLC runtime container 50 and devices (motors, robots, etc.) connected to each PLC 100.
  • the container configuration profile may include information such as the necessity of additional necessary functions (hereinafter, also referred to as “functional modules”) in the development environment in controlling the device.
  • FIG. 11 is a schematic diagram showing a functional configuration example related to the release and execution management of the PLC runtime container 50 in the control system 1 according to the present embodiment.
  • the orchestra 270 (FIG. 7) of the server 200 includes a container manager 272 and a node manager 274.
  • the container manager 272 manages the release, deployment, execution, etc. of the PLC runtime container 50.
  • the container manager 272 manages the container hub 276 that registers the PLC runtime container 50 and the repository 278 that manages the state of the PLC runtime container 50 registered in the container hub 276.
  • the container manager 272 registers the PLC runtime container 50 with the container hub 276 and registers the PLC runtime container 50 with the container hub 276 by referring to the accompanying system configuration profile 60, and also registers the PLC runtime container 50 with the repository. Add the entry corresponding to 278.
  • the container hub 276 registers the PLC runtime container 50 generated by the container generation module 260 in association with the identification information of the PLC100 that can be released.
  • Each entry in the repository 278 is a container name for identifying the PLC runtime container 50 registered in the container hub 276, a namespace for associating a node name with a node address, and a container state indicating the state of the PLC runtime container 50. And include.
  • the namespace maps the node name specification from the PLC runtime 510 to the corresponding node address. In this way, the repository 278 manages the address for accessing the container engine 250 when the container engine 250 of the server 200 creates an instance of the PLC runtime 510.
  • the node manager 274 searches for the node (container engine 150 of the PLC 100 or the container engine 250 of the server 200) to which the PLC runtime container 50 is released, acquires the node state, and virtualizes the node in response to a request from the container manager 272. Generate nodes, etc.
  • the node manager 274 releases the PLC runtime container 50 to the server 200, and if the container engine 250 for deploying the PLC runtime container 50 does not exist, the node manager 274 includes the node including the container engine 250. Is virtually generated.
  • FIG. 12 is a schematic diagram showing a typical use case of the control system 1 according to the present embodiment. In the use case shown in FIG. 12, it is assumed that PLC100-1, 100-2, and 100-3 control the control target.
  • Use case 2 shown in FIG. 12B shows an example in which the control operation executed by the PLC100-1 is executed on the server 200 while using the physical I / O160-1 of the PLC100-1. That is, for PLC100-1, a cloud execution mode is realized. For PLC100-2 and 100-3, a simulation mode is realized as in FIG. 12A. In this case, PLC100-2 and 100-3 do not necessarily have to exist.
  • PLC100-2 executes using the physical I / O160-2 of its own device. That is, for PLC100-1, a local execution mode is realized. For PLC100-1, a cloud execution mode is realized as in FIG. 12B, and for PLC100-3, a simulation mode is realized as in FIG. 12A. In this case, PLC100-3 does not necessarily have to exist.
  • FIG. 13 is a schematic diagram illustrating an example of the processing procedure in the use case 1 shown in FIG. 12 (A).
  • FIG. 13 shows a case where a PLC runtime 510 (PLC runtime container 50) including a user program 266 is newly created. Also, the PLC runtime container 50 is released in simulation mode.
  • PLC runtime container 50 PLC runtime container 50
  • the user inputs the definition of the configuration of the PLC system 2 to be designed ((1) configuration definition). Then, the system configuration manager 264 generates the system configuration profile 60 corresponding to the input PLC system 2 ((2) system configuration profile generation).
  • the user creates a user program 266 using the development environment 262 ((3) user program creation). Then, the system configuration manager 264 generates the PLC runtime container 50 ((4) PLC runtime container generation). Further, the container manager 272 registers the generated PLC runtime container 50 in the container hub 276 ((5) PLC runtime container registration). By the above processing, the generation and registration of the PLC runtime container 50 are completed.
  • the node manager 274 creates a virtual node to be released ((7) virtual.
  • the node address of the generated virtual node is associated with the node name and registered in the repository 278 ((8) node name registration).
  • the selected PLC runtime container 50 is transmitted to the virtual node of the release destination ((9) PLC runtime container release).
  • the container engine 250-1 of the virtual node deploys the PLC runtime container 50 ((10) PLC runtime container deployment).
  • the container engine 250-1 of the virtual node registers the container name of the deployed PLC runtime container 50 in the repository 278 ((11) container name registration).
  • the container engine 250-1 of the virtual node can resolve the node address corresponding to the node name of the transmission destination or the reception destination in the exchange of I / O data.
  • the container engine 250-1 of the virtual node reflects the contents of the instance of the PLC runtime container 50 generated by deploying to the container hub 276 ((12) Reflecting the contents of deployment). By reflecting it on the container hub 276 in this way, it becomes easy to reuse it the next time it is started on the virtual node.
  • FIG. 14 is a schematic diagram illustrating an example of another processing procedure in use case 1 shown in FIG. 12 (A).
  • FIG. 14 shows a case where the PLC runtime container 50 created by the processing procedure as shown in FIG. 13 is reused. Also, the PLC runtime container 50 is released in simulation mode.
  • the user instructs to reuse the created PLC system 2 ((1) reuse instruction). Then, the system configuration manager 264 loads the system configuration profile 60 corresponding to the instructed PLC system 2 ((2) system configuration profile load).
  • the user updates the user program 266 using the development environment 262 ((3) user program update).
  • the system configuration manager 264 updates the PLC runtime container 50 ((4) PLC runtime container update).
  • the container manager 272 registers the updated PLC runtime container 50 in the container hub 276 ((5) PLC runtime container registration).
  • PLC runtime container 50 In this case, simulation mode ((6) release instruction), the selected PLC runtime container 50 is sent to the virtual node to be released (((6) release instruction). 7) PLC runtime container release).
  • the PLC runtime has already been realized in the virtual node, so it is not necessary to newly generate the virtual node to be the release destination.
  • the virtual node container engine 250-1 deploys the PLC runtime container 50 ((8) PLC runtime container deployment). As a result, the PLC runtime corresponding to the updated user program is realized. In many cases, it is not necessary to update the contents of the repository 278.
  • the container engine 250-1 of the virtual node reflects the contents of the instance of the PLC runtime container 50 generated by deploying to the container hub 276 ((9) Reflecting the contents of deployment).
  • FIG. 15 is a schematic diagram illustrating an example of the processing procedure in the use case 2 shown in FIG. 12 (B).
  • FIG. 15 shows a case where a PLC runtime 510 (PLC runtime container 50) including a user program 266 is newly created.
  • the PLC runtime container 50 is released in the cloud execution mode.
  • the user inputs the definition of the configuration of the PLC system 2 to be designed ((1) configuration definition). Then, the system configuration manager 264 generates the system configuration profile 60 corresponding to the input PLC system 2 ((2) system configuration profile generation).
  • the user creates a user program 266 using the development environment 262 ((3) user program creation). Then, the system configuration manager 264 generates the PLC runtime container 50 ((4) PLC runtime container generation). Further, the container manager 272 registers the generated PLC runtime container 50 in the container hub 276 ((5) PLC runtime container registration). By the above processing, the generation and registration of the PLC runtime container 50 are completed.
  • the node manager 274 When the user instructs the release of any PLC runtime container 50 (in this case, the cloud execution mode) ((6) release instruction), the node manager 274 creates a virtual node to be released ((7)). Along with the virtual node generation), the node address of the generated virtual node is associated with the node name and registered in the repository 278 ((8) node name registration).
  • the selected PLC runtime container 50 is transmitted to the virtual node of the release destination ((9) PLC runtime container release).
  • the container engine 250-1 of the virtual node deploys the PLC runtime container 50 ((10) PLC runtime container deployment). Deployment by the container engine 250-1 creates instances of the PLC runtime 510, virtual I / O driver 520, and virtual I / O network client 530 (see FIG. 8B).
  • the selected PLC runtime container 50 is also transmitted to the release destination PLC100-1 ((11) PLC runtime container release).
  • the PLC 100-1 container engine 150 deploys the PLC runtime container 50 ((12) PLC runtime container deployment). Deployment by the container engine 150 creates an instance of the virtual I / O network server 540.
  • the container engine 250-1 of the virtual node registers the container name of the deployed PLC runtime container 50 in the repository 278 ((13) container name registration). Further, the container engine 250-1 of the virtual node reflects the contents of the instance of the PLC runtime container 50 generated by deploying to the container hub 276 ((14) Reflecting the contents of deployment).
  • FIG. 16 is a schematic diagram illustrating an example of another processing procedure in use case 2 shown in FIG. 12 (B).
  • FIG. 16 shows a case where the PLC runtime 510 is released in the local execution mode, but is changed to the cloud execution mode due to lack of resources in the PLC100.
  • the user inputs the definition of the configuration of the PLC system 2 to be designed ((1) configuration definition). Then, the system configuration manager 264 generates the system configuration profile 60 corresponding to the input PLC system 2 ((2) system configuration profile generation).
  • the user creates a user program 266 using the development environment 262 ((3) user program creation). Then, the system configuration manager 264 generates the PLC runtime container 50 ((4) PLC runtime container generation). Further, the container manager 272 registers the generated PLC runtime container 50 in the container hub 276 ((5) PLC runtime container registration). By the above processing, the generation and registration of the PLC runtime container 50 are completed.
  • the selected PLC runtime container 50 is sent to the release destination PLC100-1.
  • PLC runtime container release The PLC100-1 container engine 150 deploys the PLC runtime container 50 ((8) PLC runtime container deployment).
  • PLC runtime container deployment it is assumed that the deployment of the PLC runtime container 50 fails due to the capacity exceeding of the PLC100-1.
  • the system configuration manager 264 changes the process from the local execution mode to the cloud execution mode.
  • the node manager 274 generates a virtual node to be released ((9) virtual node generation) and registers the node address of the generated virtual node in the repository 278 in association with the node name ((10) node). Name registration).
  • the selected PLC runtime container 50 is transmitted to the virtual node of the release destination ((11) PLC runtime container release).
  • the container engine 250-1 of the virtual node deploys the PLC runtime container 50 ((12) PLC runtime container deployment).
  • the selected PLC runtime container 50 is sent again to the release destination PLC100-1 ((13) PLC runtime container release).
  • the PLC100-1 container engine 150 deploys the PLC runtime container 50 in the cloud execution mode ((14) PLC runtime container deployment). Deployment by the container engine 150 creates an instance of the virtual I / O network server 540.
  • the container engine 250-1 of the virtual node registers the container name of the deployed PLC runtime container 50 in the repository 278 ((15) container name registration). Further, the container engine 250-1 of the virtual node reflects the contents of the instance of the PLC runtime container 50 generated by deploying to the container hub 276 ((16) Reflecting the contents of deployment).
  • FIG. 17 is a schematic diagram illustrating an example of the processing procedure in the use case 3 shown in FIG. 12 (C).
  • FIG. 17 shows the case where the PLC runtime 510 is released in the local execution mode, the cloud execution mode, and the simulation mode, respectively.
  • the user inputs the definition of the configuration of the PLC system 2 to be designed ((1) configuration definition). Then, the system configuration manager 264 generates the system configuration profile 60 corresponding to the input PLC system 2 ((2) system configuration profile generation).
  • the user creates a user program 266 using the development environment 262 ((3) user program creation). Then, the system configuration manager 264 generates the PLC runtime container 50 ((4) PLC runtime container generation). Further, the container manager 272 registers the generated PLC runtime container 50 in the container hub 276 ((5) PLC runtime container registration). By the above processing, the generation and registration of the PLC runtime container 50 are completed.
  • the node manager 274 generates a virtual node to be released ((7) virtual node generation) and registers the node address of the generated virtual node in the repository 278 in association with the node name ((8) node name registration). ).
  • the PLC runtime container 50 selected in the local execution mode is sent to the release destination PLC100-1 ((9) PLC runtime container release), and the PLC100-1 container engine 150 deploys the PLC runtime container 50 ((10). ) PLC runtime container deployment).
  • the PLC runtime container 50 selected in the cloud execution mode is sent to the release destination PLC100-2 ((11) PLC runtime container release), and the PLC100-2 container engine 150 deploys the PLC runtime container 50 ((12) PLC runtime container release). ) PLC runtime container deployment).
  • the PLC runtime container 50 selected in the cloud execution mode is also sent to the release destination virtual node ((13) PLC runtime container release), and the container engine 250-2 of the virtual node deploys the PLC runtime container 50. ((14) PLC runtime container deployment).
  • the PLC runtime container 50 selected in the simulation mode is also sent to the release destination virtual node ((15) PLC runtime container release), and the container engine 250-3 of the virtual node deploys the PLC runtime container 50 ((16). ) PLC runtime container deployment).
  • the virtual node container engines 250-2 and 250-3 register the container name of the deployed PLC runtime container 50 in the repository 278 ((17) container name registration). Further, the container engines 250-2 and 250-3 of the virtual node reflect the contents of the instance of the PLC runtime container 50 generated by deployment to the container hub 276 ((18) Reflection of the deployment contents).
  • FIG. 18 is a flowchart showing an example of a processing procedure relating to the generation of the PLC runtime container 50 in the control system 1 according to the present embodiment.
  • FIG. 19 is a flowchart showing an example of a processing procedure related to release and execution management of the PLC runtime container 50 in the control system 1 according to the present embodiment.
  • Each step shown in FIGS. 18 and 19 is typically realized by the processor 202 of the server 200 executing the program.
  • the user accesses the development environment 262 and defines the configuration of the PLC system 2. That is, the development environment 262 of the server 200 receives the definition of the configuration of the PLC system 2 from the user (step S100). More specifically, the user specifies the target PLC100 and a device (motor, robot, etc.) connected to each PLC100.
  • the development environment 262 of the server 200 In response to the user's definition, the development environment 262 of the server 200 generates and outputs PLC system configuration information 268 (step S102). Subsequently, the system configuration manager 264 of the server 200 generates and outputs the system configuration profile 60 corresponding to each of the designated PLC 100 (step S104). That is, the system configuration profile 60 is generated by the number of the specified PLC100. Also, each of the system configuration profiles 60 contains information about the devices connected to the corresponding PLC100.
  • the development environment 262 of the server 200 provides an editor environment for generating an IEC program, and accepts a user program 266 created by the user (step S106).
  • the development environment 262 of the server 200 refers to the system configuration profile 60 and determines whether or not there is a functional module associated with any device connected to the PLC 100 (step S108). If there is a functional module associated with any device (YES in step S108), the development environment 262 of the server 200 provides an editor environment associated with the associated functional module and makes various settings from the user. Accept (step S110).
  • the system configuration manager 264 of the server 200 loads the standard template required for the PLC runtime (step S112).
  • the system configuration manager 264 of the server 200 refers to the system configuration profile 60 to determine if a template associated with any device connected to the PLC 100 is required (step S114). If a template associated with any device is required (YES in step S114), the system configuration manager 264 of the server 200 loads the required template (step S116).
  • the system configuration manager 264 of the server 200 generates the PLC runtime container 50 based on the user program generated by the user and the loaded template (step S118).
  • the container manager 272 of the server 200 registers the PLC runtime container 50 generated by the container generation module 260 in the container hub 276 (step S120).
  • the server 200 generates a container including an image of the PLC runtime including the user program that defines the control operation for the controlled object and the execution environment that executes the user program.
  • the development environment 262 of the server 200 refers to the container hub 276 and the repository 278 to display a list of the PLC runtime containers 50 prepared in advance in response to the user operation (step S200). ).
  • the system configuration manager 264 of the server 200 determines which mode is selected (step S202).
  • the node manager 274 of the server 200 refers to the system configuration profile 60, and the PLC100 to which the selected PLC runtime container 50 is released is valid. It is determined whether or not it exists in (step S204).
  • the container manager 272 of the server 200 updates the contents of the repository 278 according to the release of the PLC runtime container 50 (step S206). Subsequently, the system configuration manager 264 of the server 200 sends the selected PLC runtime container 50 to the release destination PLC100 (step S208).
  • the container engine 150 of the destination PLC 100 deploys the PLC runtime container 50 with reference to the manifest 56 included in the PLC runtime container 50 (step S210). As a result, the PLC runtime 510 is realized in the PLC100 of the release destination. Then, the process ends.
  • step S204 if the release destination PLC100 is validly present (NO in step S204), the development environment 262 of the server 200 notifies the user that the resource destination PLC100 is not validly present (NO). Step S212). Then, the process ends.
  • the node manager 274 of the server 200 refers to the system configuration profile 60, and the PLC 100 to which the selected PLC runtime container 50 is released is released. It is determined whether or not it exists effectively (step S214).
  • the node manager 274 of the server 200 refers to the system configuration profile 60 and refers to the virtual destination of the selected PLC runtime container 50. It is determined whether or not the node is effectively present on the server 200 (step S216).
  • the node manager 274 of the server 200 generates the required number of virtual nodes (step S218).
  • the virtual node provides an environment in which the PLC runtime container 50 including the container engine 250 can be deployed.
  • step S216 If the virtual node to be released exists effectively on the server 200 (YES in step S216), the process of step S218 is skipped.
  • the container manager 272 of the server 200 updates the contents of the repository 278 according to the release of the PLC runtime container 50 (step S220). Then, the system configuration manager 264 of the server 200 sends the selected PLC runtime container 50 to the release destination PLC 100 and the virtual node on the server 200 (step S222). On the other hand, the container engine 250 included in the virtual node of the destination server 200 also deploys the PLC runtime container 50 with reference to the manifest 56 included in the PLC runtime container 50 (step S224). As a result, the virtual I / O network server 540 is realized in the PLC 100 of the release destination, and the PLC runtime 510 is realized in the virtual node on the server 200.
  • step S214 if the release destination PLC100 does not exist effectively (NO in step S214), the development environment 262 of the server 200 notifies the user that the resource destination PLC100 does not exist effectively (NO). Step S226). Then, the process ends.
  • the node manager 274 of the server 200 refers to the system configuration profile 60, and the virtual node to which the selected PLC runtime container 50 is released is the server. It is determined whether or not it is effectively present on the 200 (step S228).
  • the node manager 274 of the server 200 generates the required number of virtual nodes (step S230).
  • step S230 If the virtual node to be released exists effectively on the server 200 (YES in step S228), the process of step S230 is skipped.
  • the container manager 272 of the server 200 updates the contents of the repository 278 according to the release of the PLC runtime container 50 (step S232). Then, the system configuration manager 264 of the server 200 transmits the selected PLC runtime container 50 to the virtual node on the server 200 (step S234).
  • the container engine 250 included in the virtual node of the destination server 200 deploys the PLC runtime container 50 with reference to the manifest 56 included in the PLC runtime container 50 (step S236).
  • the virtual node on the release destination server 200 realizes a simulationable environment including the PLC runtime 510 and the virtual I / O emulator 550. In this way, the process of releasing the PLC runtime container 50 to one or both of the PLC 100 and the server 200 is executed.
  • server 200 has a container engine 250, a container generation module 260, and an orchestrator 270 (see FIG. 7), but when the actual server 200 is cloud-based and virtualized. It is not necessary for the same hardware to implement all of these modules, but it can be implemented using one or more processors as appropriate.
  • a control system (1) comprising one or more control devices (100) and one or more servers (200).
  • a generation module (260) that generates a container (50) including an image (51) of a runtime (510) that includes a user program (266) that defines a control operation for a controlled object and an execution environment that executes the user program.
  • It comprises an orchestrator (270) that releases the container to one or both of the controller and the server.
  • the control device and the server have a container engine (150, 250) for deploying the container, and by deploying the container released by the orchestrator, an instance of the runtime (510) is generated.
  • a control system that executes the control calculation.
  • the container engine (250) of the server emulates a virtual I / O driver (520) that emulates an I / O driver in charge of accessing a device connected to the control device when creating an instance of the runtime. ) Is generated, the control system according to any one of the configurations 1 to 3.
  • the container includes at least one of an image (54) deployed only by the container engine of the control device and an image (52, 53, 55) deployed only by the container engine of the server, configurations 1 to 4.
  • the control system according to any one of the above items.
  • the configuration 1 to 6 further includes a node manager (274) that virtually generates a node including the container engine.
  • the control system according to any one of the above items.
  • a control method performed in a control system (1) comprising one or more control devices (100) and one or more servers (200). Steps (S100 to S120) to generate a container containing a runtime image containing a user program that defines a control operation for a controlled object and an execution environment that executes the user program. A step (S200 to S234) of releasing the container to one or both of the control device and the server is provided.
  • control operation itself can be executed by the server while using the device connected to the PLC, so that the PLC arranged on the field side can be miniaturized and simplified. can.
  • the control operation can be executed in three modes of the local execution mode, the cloud execution mode, and the simulation mode for each of the PLCs, so that a plurality of PLCs can be executed. Even when it is necessary to perform verification in combination with PLC, verification can be performed by combining in a mode possible in the situation at that time. By verifying with such a combination, it becomes possible to detect and solve problems at the time of system connection at an early stage, and it is possible to shorten the time until the operation of the control system starts.
  • Manager 276 container hub, 278 repository, 300 development and maintenance terminal, 304 optical drive, 305 recording medium, 314 development program, 510 PLC runtime, 520 virtual I / O driver, 530 virtual I / O network client, 540 virtual I / O Network server, 550 virtual I / O emulator.

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)
  • Stored Programmes (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

制御システムは、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムイメージを含むコンテナを生成する生成モジュールと、制御装置およびサーバの一方または両方に対してコンテナをリリースするオーケストレータとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、オーケストレータによりリリースされたコンテナをデプロイすることで、ランタイムイメージのインスタンスを生成して制御演算を実行する。

Description

制御システムおよび制御方法
 本発明は、制御装置およびサーバを含む制御システムおよびその制御システムにおける制御方法に関する。
 複数の制御装置(典型的には、PLC(プログラマブルロジックコントローラ))からなる制御システムの運用を開始するには、設計、実装、検証などの一連の作業が必要である。これらの一連の作業では、制御装置単体について設計、実装、検証を行った後に、制御装置およびデバイスを組み合わせる。このようなシステムとして結合するためには、各制御装置についての作業が完了している必要があるが、制御装置毎の複雑さや特性などによって、作業進捗を同じにすることは難しい。そのため、作業進捗のばらつきによって、システムとして結合するまでに待ち時間が発生し得る。
 ところで、制御装置の技術分野ではなく、一般的なIT技術の分野では、コンテナおよびオーケストレーションといった技術を利用して、コンピュータリソースの動的に拡張および縮退することで、スケーラブルなソフトウェアサービスの提供が実現されている。例えば、特表2015-512091号公報(特許文献1)は、コンピュータクラウドリソースを管理する方法を開示する。
特表2015-512091号公報
 上述したような複数の制御装置および複数の制御装置を組み合わせたシステムについての設計、実装、検証などの一連の作業を容易化するとともに、制御装置のリソースをスケーラブルに利用可能にする構成が要望されている。
 本発明の一つの目的は、このような要望に応える解決手段を提供することである。
 本発明の一例に従えば、1または複数の制御装置と1または複数のサーバとを備える制御システムが提供される。制御システムは、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成する生成モジュールと、制御装置およびサーバの一方または両方に対してコンテナをリリースするオーケストレータとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、オーケストレータによりリリースされたコンテナをデプロイすることで、ランタイムのインスタンスを生成して制御演算を実行する。この構成によれば、ランタイムのイメージを含むコンテナを制御装置およびサーバのいずれでもデプロイして実行できるので、制御装置が存在しない状態であっても、制御演算の実行の検証などを容易化できる。また、サーバで実行されている制御演算を制御装置へ容易に移動させることもできる。
 サーバのコンテナエンジンは、ランタイムのインスタンスとともに、制御対象とやり取りされる入出力データをエミュレートするエミュレータのインスタンスも生成してもよい。この構成によれば、制御装置に接続されるデバイスが存在しなくても、サーバ上で制御演算の検証などを容易に行うことができる。
 サーバのコンテナエンジンがランタイムのインスタンスを生成する場合に、制御装置のコンテナエンジンが制御装置に接続されたデバイスを介してやり取りされる入出力データをサーバに仲介するネットワークサーバのインスタンスを生成してもよい。この構成によれば、制御装置に接続されたデバイスとの間でやり取りされるI/Oデータを利用しつつ、制御演算自体はサーバで実行できるので、サーバが提供するリソースを利用できる。
 サーバのコンテナエンジンは、ランタイムのインスタンスを生成する場合に、制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバのインスタンスを生成してもよい。この構成によれば、制御装置上で制御演算を実行するのと実質的に同じ実行環境を提供できるので、制御演算を実現するためのランタイムをサーバにおいても共通に利用できる。
 コンテナは、制御装置のコンテナエンジンのみがデプロイするイメージと、サーバのコンテナエンジンのみがデプロイするイメージとのうち、少なくとも一方を含んでいてもよい。この構成によれば、コンテナに冗長にイメージを含ませておくことで、デプロイ先に依存せず制御演算を実現できる。
 制御システムは、サーバのコンテナエンジンがランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリをさらに含んでいてもよい。この構成によれば、サーバ上で制御演算を実行する場合に、実行環境に割り当てられるアドレスの違いをリポジトリの参照により吸収できる。
 制御システムは、サーバに対してコンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャをさらに含んでいてもよい。この構成によれば、要求に応じて、制御演算を実行するノードを任意に生成できる。
 制御システムは、生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブをさらに含んでいてもよい。この構成によれば、一度生成されたコンテナの再利用が容易になる。
 オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定してもよい。この構成によれば、ユーザは、制御システムの状況に応じて、必要なコンテナを必要な実行環境にリリースできる。
 本発明の別の一例に従えば、1または複数の制御装置と1または複数のサーバとを備える制御システムにおいて実行される制御方法が提供される。制御方法は、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップと、制御装置およびサーバの一方または両方に対してコンテナをリリースするステップとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、リリースされたコンテナをデプロイすることで、ランタイムのインスタンスを生成して制御演算を実行する。
 本発明のある局面によれば、複数の制御装置および複数の制御装置を組み合わせたシステムについての設計、実装、検証などの一連の作業を容易化できる。本発明の別の局面によれば、制御装置のリソースをスケーラブルに利用可能にできる。
本実施の形態に係る制御システムの全体構成例を示す模式図である。 本実施の形態に係る制御システムにおけるコンテナを利用した処理の概要を説明するための図である。 本実施の形態に係る制御システムにおいて提供されるモードを説明するための図である。 本実施の形態に係る制御システムを構成するPLCのハードウェア構成例を示すブロック図である。 本実施の形態に係る制御システムを構成するサーバのハードウェア構成例を示すブロック図である。 本実施の形態に係る制御システムを構成する開発保守端末のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御システムにおける機能構成の一例を示す模式図である。 本実施の形態に係る制御システムにおいて提供されるモードを実現するための機能構成例を示す模式図である。 本実施の形態に係る制御システムにおいて利用されるPLCランタイムコンテナの構成例を示す模式図である。 本実施の形態に係る制御システムにおけるPLCランタイムコンテナの生成に係る機能構成例を示す模式図である。 本実施の形態に係る制御システムにおけるPLCランタイムコンテナのリリースおよび実行管理に係る機能構成例を示す模式図である。 本実施の形態に係る制御システムの典型的なユースケースを示す模式図である。 図12(A)に示すユースケースにおける処理手順の一例を概略する模式図である。 図12(A)に示すユースケースにおける別の処理手順の一例を概略する模式図である。 図12(B)に示すユースケースにおける処理手順の一例を概略する模式図である。 図12(B)に示すユースケースにおける別の処理手順の一例を概略する模式図である。 図12(C)に示すユースケースにおける処理手順の一例を概略する模式図である。 本実施の形態に従う制御システムにおけるPLCランタイムコンテナの生成に関する処理手順の一例を示すフローチャートである。 本実施の形態に従う制御システムにおける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(以下、「PLC100」とも総称する。)をそれぞれ主体に構成される。
 PLC100は、フィールドデバイス10に接続される。フィールドデバイス10は、制御対象を制御するために必要な任意の装置を包含する。より具体的には、フィールドデバイス10は、制御対象(例えば、製造設備、製造装置、製造設備あるいは製造装置に含まれるセンサおよびアクチュエータなど)との間で情報をやり取りするための装置を含む。図1に示す例では、フィールドデバイス10は、リモートI/O(Input/Output)12と、リレー群14と、サーボドライバ16およびサーボモータ18とを含む。
 PLC100は、フィールドデバイス10から情報を取得し、予め作成されたユーザプログラムに従って制御演算を実行することで、フィールドデバイス10へ与えられる情報を生成する。以下では、PLC100がフィールドデバイス10から取得する情報を「入力データ」とも称し、フィールドデバイス10へ与えられる情報を「出力データ」とも称す。また、入力データおよび出力データを「入出力データ」あるいは「I/Oデータ」とも総称する。
 図1に示す例では、PLC100とフィールドデバイス10とは、制御系ネットワーク4を介して接続されているが、これに限らず、ハードワイヤーで接続されていてもよい。また、フィールドデバイス10は、図1に示されるデバイスに限らず、任意のデバイスを包含し得る。
 制御系ネットワーク4としては、産業用の通信プロトコルを採用することが好ましい。このような通信プロトコルとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
 PLCシステム2の各々は、情報系ネットワーク6およびゲートウェイ20を介して、インターネット8上に存在するサーバ200にアクセス可能になっている。情報系ネットワーク6としては、イーサネット(登録商標)などの汎用的な通信プロトコルを採用してもよい。
 サーバ200は、コンテナをデプロイして実行可能な環境を提供するとともに、コンテナのリリースを管理する。本明細書において、コンテナの「リリース」は、対象のコンテナを実行先に提供する処理および実行先での実行可能化を指示する処理(例えば、デプロイを指示する処理)を包含する。これらの処理および機能の詳細については、後述する。
 サーバ200は、インターネット8を介してクラウド上に配置してもよいし、インターネット8を介することなく、PLCシステム2が存在するローカルネットワーク内に配置してもよい。サーバ200の実装形態としては、要求される性能および機能などに応じて、任意に決定できる。
 開発保守端末300は、サーバ200にアクセスして、後述するような各種処理を実現するためのユーザ操作が可能になっている。
 図2は、本実施の形態に係る制御システム1におけるコンテナを利用した処理の概要を説明するための図である。
 本明細書においては、PLCシステム2のPLC100で制御演算を実行するために必要なプログラムおよびライブラリなどを「PLCランタイム」と称す。なお、「PLCランタイム」との用語は、制御演算の実行に必要なプログラムおよびライブラリなどに加えて、制御演算を実現する実体および実行環境を包含し得る。典型的には、「PLCランタイム」は、PLC100による制御対象に対する制御演算を定義するユーザプログラム(例えば、IEC61131-3に従って任意に作成されるプログラム)と、ユーザプログラムを実行する実行環境であるPLCエンジン(ファームウェア)とを含む。
 本実施の形態に従う制御システム1においては、PLCランタイムをPLC100だけではなく、サーバ200が提供する仮想環境においても実現できるようにパッケージ化したものを「PLCランタイムコンテナ」と称す。「PLCランタイムコンテナ」をホストOS(Operating System)にデプロイすることで、論理的に独立したアプリケーションの実行環境を実現できる。なお、「PLCランタイムコンテナ」との用語は、実現されたアプリケーションの実行環境を包含し得る。「PLCランタイムコンテナ」を構成するプログラム(アプリケーション)およびライブラリなどの詳細、ならびに、「PLCランタイムコンテナ」の生成方法の詳細などについては、後述する。
 図2を参照して、PLCランタイムコンテナ50は、PLCシステム2のPLC100およびサーバ200のいずれにもリリース可能である。要求される状況に応じて、PLCランタイムコンテナ50のデプロイ先およびデプロイ内容を最適化することで、少なくとも、(1)ローカル実行モード、(2)クラウド実行モード、(3)シミュレーションモードの3つのモードを実現できる。
 図3は、本実施の形態に係る制御システム1において提供されるモードを説明するための図である。
 図3(A)を参照して、(1)ローカル実行モードは、PLC100がフィールドデバイス10を介してやり取りされるI/Oデータを利用して制御演算を実行する状態に相当する。より具体的には、PLC100にPLCランタイム510および物理I/O160が実現される。物理I/O160は、フィールドデバイス10および制御系ネットワーク4(いずれも図1参照)も含む抽象化されたレイヤである。ローカル実行モードは、いわゆる実運用に相当する。
 図3(B)を参照して、(2)クラウド実行モードは、PLC100に接続されたフィールドデバイス10を介してI/Oデータをやり取りする一方で、制御演算自体は、サーバ200で実行する状態に相当する。より具体的には、PLC100に物理I/O160が実現されるとともに、サーバ200にPLCランタイム510が実現される。クラウド実行モードは、実運用として用いることもできるし、ユーザプログラムの開発やチェックなどに用いることもできる。
 図3(C)を参照して、(3)シミュレーションモードは、PLC100に接続されたフィールドデバイス10を必要とせず、サーバ200がフィールドデバイス10をエミュレートしつつ、サーバ200が制御演算も実行する状態に相当する。より具体的には、サーバ200にPLCランタイム510および仮想I/Oエミュレータ550が実現される。仮想I/Oエミュレータ550は、物理I/O160の挙動をエミュレートするモジュールである。シミュレーションモードは、ユーザプログラムの開発やチェックに用いることができる。
 このように、本実施の形態に従う制御システム1においては、PLCランタイムコンテナ50を利用することで、PLCシステム2の一部または全部が存在しない状態であっても、ユーザプログラムの開発やチェックを容易に行うことができるとともに、シームレスで実運用へ移行することもできる。
 <B.ハードウェア構成>
 次に、本実施の形態に係る制御システムを構成する装置のハードウェア構成の一例について説明する。
 (b1:PLC100)
 図4は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示すブロック図である。図4を参照して、PLC100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、ストレージ110と、情報系ネットワークコントローラ120と、制御系ネットワークコントローラ122と、USB(Universal Serial Bus)コントローラ124と、メモリカードインターフェイス126とを含む。
 プロセッサ102は、ストレージ110に格納された各種プログラムを読み出して、主メモリ106に展開して実行することで、制御対象を制御するための制御演算を実現する。チップセット104は、プロセッサ102と各コンポーネントとのデータ伝送などを制御する。
 ストレージ110には、典型的には、基本的な処理を実現するためのOS112と、PLCランタイムコンテナのデプロイなどの処理を行うシステムプログラム114とが格納される。
 情報系ネットワークコントローラ120は、情報系ネットワーク6を介した開発保守端末300などとのデータのやり取りを制御する。
 制御系ネットワークコントローラ122と、制御系ネットワーク4を介したフィールドデバイス10とのデータのやり取りを制御する。
 USBコントローラ124は、USB接続を介した外部装置(例えば、サポート装置)とのデータのやり取りを制御する。
 メモリカードインターフェイス126は、メモリカード128を着脱可能に構成されており、メモリカード128に対してデータを書き込み、メモリカード128から各種データ(ユーザプログラムやトレースデータなど)を読み出すことが可能になっている。
 図4には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数の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 State Drive)などで構成される。ストレージ210には、典型的には、基本的な処理を実現するためのOS212と、後述するようなサーバ200が提供する各種処理を実現するためのコンテナアプリケーション214とが格納される。
 ネットワークコントローラ220は、ネットワークを介した各種装置とのデータのやり取りを制御する。
 入力部226は、キーボード、マウスなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイなどで構成され、プロセッサ202からの処理結果などを出力する。
 図5には、プロセッサ202がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
 (b3:開発保守端末300)
 図6は、本実施の形態に係る制御システム1を構成する開発保守端末300のハードウェア構成例を示すブロック図である。図6を参照して、開発保守端末300は、CPUやMPUなどのプロセッサ302と、主メモリ306と、ストレージ310と、ネットワークコントローラ320と、USBコントローラ324と、入力部326と、表示部328とを含む。これらのコンポーネントは、バス308を介して接続される。
 プロセッサ302は、ストレージ310に格納された各種プログラムを読み出して、主メモリ306に展開して実行することで、開発保守端末300で必要な処理を実現する。
 ストレージ310は、例えば、HDDやSSDなどで構成される。ストレージ310には、典型的には、OS312と、後述するような処理を指示などするための開発プログラム314とが格納される。なお、ストレージ310には、図6に示すプログラム以外の必要なプログラムが格納されてもよい。
 ネットワークコントローラ320は、任意の制御系ネットワーク4を介したPLC100などとのデータのやり取りを制御する。
 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を参照して、PLC100の各々は、コンテナエンジン150を有している。コンテナエンジン150は、コンテナの実行環境を提供するものであり、PLCランタイムコンテナ50に含まれるマニフェストなどに基づいて、モジュールのイメージをデプロイして、処理を実行するためのモジュール(インスタンス)を生成する。
 一方、サーバ200は、コンテナエンジン250と、コンテナ生成モジュール260と、オーケストレータ270とを有している。
 コンテナエンジン250は、コンテナエンジン150と同様に、PLCランタイムコンテナ50に含まれるマニフェストなどに基づいて、モジュールのイメージをデプロイして、処理を実行するためのモジュール(インスタンス)を生成する。
 コンテナエンジン150,250は、CaaS(Containers as a Service)としての基盤である。PLCランタイムコンテナ50をリリースする文脈においては、コンテナエンジン150,250の各々を「ノード」と称することもある。
 コンテナ生成モジュール260は、ユーザ操作に応じて、PLCランタイムコンテナ50を生成する。本実施の形態においては、コンテナ生成モジュール260は、PLC100で実行されるべきユーザプログラムおよび関連する設定情報などから、PLCランタイムのイメージを含むPLCランタイムコンテナ50を生成する。すなわち、コンテナ生成モジュール260は、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するPLCランタイムのイメージを含むPLCランタイムコンテナ50を生成する。
 オーケストレータ270は、PLCランタイムコンテナ50を管理する処理を担当する。オーケストレータ270は、コンテナ生成モジュール260により生成されたPLCランタイムコンテナ50をコンテナハブに登録するなどの処理を行うとともに、ユーザ操作などに応じて、コンテナハブに登録されたPLCランタイムコンテナ50をいずれかのホスト(本実施の形態においては、PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250)で実行するのかを管理する処理などを行う。このように、オーケストレータ270は、PLC100およびサーバ200の一方または両方に対してPLCランタイムコンテナ50をリリースする。
 PLC100およびサーバ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に示すようなそれぞれのモードを実現する例を説明する。以下の説明では、主として、PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250により提供される機能および処理について説明する。
 図8は、本実施の形態に係る制御システム1において提供されるモードを実現するための機能構成例を示す模式図である。
 図8(A)を参照して、PLC100は、ローカルOS140およびコンテナエンジン150を有している。
 (1)ローカル実行モードにおいては、コンテナエンジン150上にPLCランタイム510のインスタンスが生成される。また、PLC100には、PLCランタイム510と物理I/O160とのやり取りを実現するための物理I/Oドライバ142も用意される。図8(A)に示すような機能構成によって、PLC100による制御演算が実現される。
 図8(B)を参照して、(2)クラウド実行モードでは、PLC100のコンテナエンジン150上には、PLCランタイム510に代えて、仮想I/Oネットワークサーバ540のインスタンスが生成される。仮想I/Oネットワークサーバ540は、サーバ200と物理I/O160のやり取りを仲介する処理を担当する。仮想I/Oネットワークサーバ540は、物理I/O160を含むI/O処理の結果を仮想I/Oネットワーククライアント530との間で同期する。
 このように、サーバ200のコンテナエンジン250がPLCランタイム510のイメージのインスタンスを生成する場合に、PLC100のコンテナエンジン150はPLC100に接続されたフィールドデバイス10を介してやり取りされるI/Oデータをサーバ200に仲介する仮想I/Oネットワークサーバ540のインスタンスを生成する。
 一方、サーバ200は、サーバOS240およびコンテナエンジン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)に示すPLC100の物理I/Oドライバ142をエミュレートするものであり、PLCランタイム510からのI/Oデータにアクセスするための内部コマンドに応答して、PLC100の物理I/O160へアクセスするのと同様の処理を行う。このように、サーバ200のコンテナエンジン250がPLCランタイム510のイメージのインスタンスを生成する場合に、PLC100に接続されたフィールドデバイス10へアクセスする処理を担当する物理I/Oドライバ142をエミュレートする仮想I/Oドライバ520のインスタンスを生成する。
 仮想I/Oネットワークサーバ540と仮想I/Oネットワーククライアント530との間のやり取りは、PLCランタイム510に関して透過性を有している。すなわち、PLC100で実行されるPLCランタイム510およびサーバ200で実行されるPLCランタイム510において、物理I/O160へのアクセス命令は同一である。仮想I/Oドライバ520、仮想I/Oネットワーククライアント530および仮想I/Oネットワークサーバ540は、当該同一のアクセス命令に応答してPLC100の物理I/Oドライバ142が実行する処理と実質的に同一の処理を実現する。これらの処理の同一性によって、PLCランタイム510を図8(A)~図8(C)のように互いに異なる実行環境上で動作させても、処理内容をそれぞれ異ならせる必要がない。
 図8(C)を参照して、(3)シミュレーションモードでは、コンテナエンジン250上に、仮想I/Oエミュレータ550および仮想I/Oネットワークサーバ540のインスタンスが生成される。
 仮想I/Oエミュレータ550は、PLC100の物理I/O160を模擬するモジュールであり、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)に示すPLC100の仮想I/Oネットワークサーバ540と同様の処理を実行する。すなわち、仮想I/Oネットワーククライアント530と仮想I/Oネットワークサーバ540との間でI/Oデータをやり取りするための通信路を仮想的に形成する。仮想I/Oネットワークサーバ540は、仮想I/Oエミュレータ550によるI/O処理の結果を仮想I/Oネットワーククライアント530との間で同期する。
 なお、モードに応じて、仮想I/Oネットワーククライアント530の接続先は、PLC100の仮想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は、PLC100のコンテナエンジン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の構成を定義する。定義される内容としては、PLC100の台数およびサーバ200上で利用するリソースなどを含む。また、ユーザは、開発環境262上で、制御対象に応じたユーザプログラム266を作成する。
 また、ユーザは、開発環境262を介して、PLCランタイムコンテナ50のリリースやデプロイの指示を行うこともできる。
 システム構成マネージャ264は、ユーザ操作に従って、ユーザプログラム266およびPLCシステム構成情報268に基づいて、PLCランタイムコンテナ50を生成する。PLCランタイムコンテナ50は、各モジュールのイメージに加えて、マニフェスト56を含む。
 システム構成マネージャ264は、PLCランタイムコンテナ50の生成に加えて、システム構成プロファイル60を生成および出力する。システム構成プロファイル60は、PLCランタイムコンテナ50のリリース先およびPLC100の識別情報などを含む。
 また、システム構成プロファイル60は、利用するコンテナハブ276の識別情報、利用するPLCランタイムコンテナ50の識別情報、仮想ノードの使用許否を示す情報、利用する仮想ノードの最大数などを含んでいてもよい。このとき、システム構成プロファイル60は、PLCランタイムコンテナ50に関する情報が登録されるリポジトリの情報も含まれる。
 なお、システム構成プロファイル60は、制御システム1毎に生成されてもよいし、制御システム1に含まれるPLCシステム2毎に生成されてもよい。
 システム構成プロファイル60は、コンテナ構成プロファイルを含んでいてもよい。コンテナ構成プロファイルは、PLCランタイムコンテナ50を特定するための識別情報と、PLCランタイムコンテナ50が対象とするPLC100および各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のリリース先のノード(PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250)の探索、ノード状態を取得、仮想的なノードの生成などを行う。
 仮想的なノードの生成に関して、ノードマネージャ274は、サーバ200に対してPLCランタイムコンテナ50をリリースする場合に、PLCランタイムコンテナ50をデプロイするコンテナエンジン250が存在しなければ、コンテナエンジン250を含むノードを仮想的に生成する。
 <G.ユースケース>
 次に、いくつかのユースケースについて説明する。
 図12は、本実施の形態に係る制御システム1の典型的なユースケースを示す模式図である。図12に示すユースケースでは、PLC100-1,100-2,100-3が制御対象を制御する場合を想定する。
 図12(A)に示すユースケース1では、PLC100-1,100-2,100-3が実行する制御演算のすべてをサーバ200でシミュレーションする例を示す。すなわち、PLC100-1,100-2,100-3のいずれについても、シミュレーションモードが実現される。この場合、PLC100-1,100-2,100-3は必ずしも実在しなくてもよい。
 図12(B)に示すユースケース2では、PLC100-1が実行する制御演算を、PLC100-1の物理I/O160-1を利用しつつ、サーバ200上で実行する例を示す。すなわち、PLC100-1については、クラウド実行モードが実現される。なお、PLC100-2,100-3については、図12(A)と同様に、シミュレーションモードが実現される。この場合、PLC100-2,100-3は必ずしも実在しなくてもよい。
 図12(C)に示すユースケース3では、PLC100-2が自装置の物理I/O160-2を利用して実行する例を示す。すなわち、PLC100-1については、ローカル実行モードが実現される。なお、PLC100-1については、図12(B)と同様に、クラウド実行モードが実現され、PLC100-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はリリース先のPLC100-1へも送信される((11)PLCランタイムコンテナリリース)。PLC100-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をローカル実行モードでリリースしたものの、PLC100でのリソース不足により、クラウド実行モードに変更する場合を示す。
 図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はリリース先のPLC100-1へ送信される((7)PLCランタイムコンテナリリース)。PLC100-1のコンテナエンジン150は、PLCランタイムコンテナ50をデプロイする((8)PLCランタイムコンテナデプロイ)。ここで、PLC100-1の容量オーバにより、PLCランタイムコンテナ50のデプロイに失敗したとする。
 ここで、システム構成マネージャ264は、ローカル実行モードからクラウド実行モードに処理を変更したとする。すると、ノードマネージャ274は、リリース先となる仮想ノードを生成する((9)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((10)ノード名登録)。
 そして、選択されたPLCランタイムコンテナ50がリリース先の仮想ノードへ送信される((11)PLCランタイムコンテナリリース)。仮想ノードのコンテナエンジン250-1は、PLCランタイムコンテナ50をデプロイする((12)PLCランタイムコンテナデプロイ)。
 また、選択されたPLCランタイムコンテナ50はリリース先のPLC100-1へも再度送信される((13)PLCランタイムコンテナリリース)。PLC100-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の生成および登録が完了する。
 ユーザは、PLC100-1についてローカル実行モードを選択し、PLC100-2についてクラウド実行モードを選択し、PLC100-3についてシミュレーションモードを選択したとする((6)リリース指示)。
 ノードマネージャ274は、リリース先となる仮想ノードを生成する((7)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((8)ノード名登録)。
 ローカル実行モードで選択されたPLCランタイムコンテナ50は、リリース先のPLC100-1へ送信され((9)PLCランタイムコンテナリリース)、PLC100-1のコンテナエンジン150がPLCランタイムコンテナ50をデプロイする((10)PLCランタイムコンテナデプロイ)。
 クラウド実行モードで選択されたPLCランタイムコンテナ50は、リリース先のPLC100-2へ送信され((11)PLCランタイムコンテナリリース)、PLC100-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)。より具体的には、ユーザは、対象とするPLC100および各PLC100に接続されるデバイス(モータやロボットなど)などを指定する。
 ユーザの定義に応答して、サーバ200の開発環境262は、PLCシステム構成情報268を生成および出力する(ステップS102)。続いて、サーバ200のシステム構成マネージャ264は、指定されたPLC100にそれぞれ対応するシステム構成プロファイル60を生成および出力する(ステップS104)。すなわち、システム構成プロファイル60は、指定されたPLC100の数だけ生成される。また、システム構成プロファイル60の各々は、対応するPLC100に接続されるデバイスの情報を含む。
 サーバ200の開発環境262は、IECプログラムを生成するためのエディタ環境を提供し、ユーザにより作成されるユーザプログラム266を受け付ける(ステップS106)。
 サーバ200の開発環境262は、システム構成プロファイル60を参照して、PLC100に接続されるいずれかのデバイスに関連付けられた機能モジュールが存在するか否かを判断する(ステップS108)。いずれかのデバイスに関連付けられた機能モジュールが存在すれば(ステップS108においてYES)、サーバ200の開発環境262は、当該関連付けられた機能モジュールに関連するエディタ環境を提供し、ユーザからの各種設定を受け付ける(ステップS110)。
 ユーザによる設定操作が完了すると、サーバ200のシステム構成マネージャ264は、PLCランタイムに必要な標準テンプレートをロードする(ステップS112)。サーバ200のシステム構成マネージャ264は、システム構成プロファイル60を参照して、PLC100に接続されるいずれかのデバイスに関連付けられたテンプレートが必要であるか否かを判断する(ステップS114)。いずれかのデバイスに関連付けられたテンプレートが必要であれば(ステップS114においてYES)、サーバ200のシステム構成マネージャ264は、必要なテンプレートをロードする(ステップS116)。
 そして、サーバ200のシステム構成マネージャ264は、ユーザが生成したユーザプログラムと、ロードしてテンプレートとに基づいて、PLCランタイムコンテナ50を生成する(ステップS118)。
 続いて、サーバ200のコンテナマネージャ272は、コンテナ生成モジュール260により生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する(ステップS120)。
 以上の手順により、PLCランタイムコンテナ50の生成に関する処理は完了する。すなわち、サーバ200は、制御対象に対する制御演算を定義するユーザプログラムとユーザプログラムを実行する実行環境とを内包するPLCランタイムのイメージを含むコンテナを生成する。
 図19を参照して、サーバ200の開発環境262は、ユーザ操作に応答して、コンテナハブ276およびリポジトリ278を参照して、予め用意されているPLCランタイムコンテナ50の一覧を表示する(ステップS200)。
 ユーザがいずれかのPLCランタイムコンテナ50およびモードを選択すると、サーバ200のシステム構成マネージャ264は、いずれのモードが選択されたかを判断する(ステップS202)。
 ローカル実行モードが選択されると(ステップS202において「ローカル実行」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となるPLC100が有効に存在しているか否かを判断する(ステップS204)。
 リリース先となるPLC100が有効に存在していれば(ステップS204においてYES)、サーバ200のコンテナマネージャ272は、PLCランタイムコンテナ50のリリースに応じて、リポジトリ278の内容を更新する(ステップS206)。続いて、サーバ200のシステム構成マネージャ264は、選択されたPLCランタイムコンテナ50をリリース先のPLC100へ送信する(ステップS208)。送信先のPLC100のコンテナエンジン150は、PLCランタイムコンテナ50に含まれるマニフェスト56を参照して、PLCランタイムコンテナ50をデプロイする(ステップS210)。これにより、リリース先のPLC100では、PLCランタイム510が実現される。そして、処理は終了する。
 一方、リリース先となるPLC100が有効に存在していれば(ステップS204においてNO)、サーバ200の開発環境262は、ユーザに対してリソース先のPLC100が有効に存在していない旨を通知する(ステップS212)。そして、処理は終了する。
 クラウド実行モードが選択されると(ステップS202において「クラウド実行モード」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となるPLC100が有効に存在しているか否かを判断する(ステップS214)。
 リリース先となるPLC100が有効に存在していれば(ステップS214においてYES)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となる仮想ノードがサーバ200上に有効に存在しているか否かを判断する(ステップS216)。
 リリース先となる仮想ノードがサーバ200上に有効に存在していなければ(ステップS216においてNO)、サーバ200のノードマネージャ274は、必要な数の仮想ノードを生成する(ステップS218)。仮想ノードは、コンテナエンジン250を含む、PLCランタイムコンテナ50をデプロイ可能な環境を提供するものである。
 リリース先となる仮想ノードがサーバ200上に有効に存在していれば(ステップS216においてYES)、ステップS218の処理はスキップされる。
 サーバ200のコンテナマネージャ272は、PLCランタイムコンテナ50のリリースに応じて、リポジトリ278の内容を更新する(ステップS220)。そして、サーバ200のシステム構成マネージャ264は、選択されたPLCランタイムコンテナ50をリリース先のPLC100およびサーバ200上の仮想ノードへ送信する(ステップS222)。一方、送信先のサーバ200の仮想ノードに含まれるコンテナエンジン250も、PLCランタイムコンテナ50に含まれるマニフェスト56を参照して、PLCランタイムコンテナ50をデプロイする(ステップS224)。これにより、リリース先のPLC100では、仮想I/Oネットワークサーバ540が実現され、サーバ200上の仮想ノードでは、PLCランタイム510が実現される。
 一方、リリース先となるPLC100が有効に存在していなければ(ステップS214においてNO)、サーバ200の開発環境262は、ユーザに対してリソース先のPLC100が有効に存在していない旨を通知する(ステップS226)。そして、処理は終了する。
 シミュレーションモードが選択されると(ステップS202において「シミュレーションモード」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となる仮想ノードがサーバ200上に有効に存在しているか否かを判断する(ステップS228)。
 リリース先となる仮想ノードがサーバ200上に有効に存在していなければ(ステップS228においてNO)、サーバ200のノードマネージャ274は、必要な数の仮想ノードを生成する(ステップS230)。
 リリース先となる仮想ノードがサーバ200上に有効に存在していれば(ステップS228においてYES)、ステップ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を含む、シミュレーションできる環境が実現される。このように、PLC100およびサーバ200の一方または両方に対してPLCランタイムコンテナ50をリリースする処理が実行される。
 <I.その他の実施の形態>
 説明の便宜上、サーバ200がコンテナエンジン250と、コンテナ生成モジュール260と、オーケストレータ270(図7参照)とを有しているとしてしたが、サーバ200の実体がクラウド化および仮想化されている場合には、同一のハードウェアがこれらのモジュールのすべてを実現する必要はなく、1または複数のプロセッサを適宜用いて実現することができる。
 <J.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
 [構成1]
 1または複数の制御装置(100)と1または複数のサーバ(200)とを備える制御システム(1)であって、
 制御対象に対する制御演算を定義するユーザプログラム(266)と当該ユーザプログラムを実行する実行環境とを内包するランタイム(510)のイメージ(51)を含むコンテナ(50)を生成する生成モジュール(260)と、
 前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするオーケストレータ(270)とを備え、
 前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジン(150,250)を有しており、前記オーケストレータによりリリースされたコンテナをデプロイすることで、前記ランタイム(510)のインスタンスを生成して前記制御演算を実行する、制御システム。
 [構成2]
 前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスとともに、前記制御対象とやり取りされる入出力データをエミュレートするエミュレータ(550)のインスタンスも生成する、構成1に記載の制御システム。
 [構成3]
 前記サーバのコンテナエンジン(250)が前記ランタイムのインスタンスを生成する場合に、前記制御装置のコンテナエンジンが前記制御装置に接続されたデバイス(10)を介してやり取りされる入出力データを前記サーバに仲介するネットワークサーバ(540)のインスタンスを生成する、構成1に記載の制御システム。
 [構成4]
 前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスを生成する場合に、前記制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバ(520)のインスタンスを生成する、構成1~3のいずれか1項に記載の制御システム。
 [構成5]
 前記コンテナは、前記制御装置のコンテナエンジンのみがデプロイするイメージ(54)と、前記サーバのコンテナエンジンのみがデプロイするイメージ(52,53,55)とのうち、少なくとも一方を含む、構成1~4のいずれか1項に記載の制御システム。
 [構成6]
 前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリ(278)をさらに備える、構成1~5のいずれか1項に記載の制御システム。
 [構成7]
 前記サーバに対して前記コンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャ(274)をさらに備える、構成1~6のいずれか1項に記載の制御システム。
 [構成8]
 前記生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブ(276)をさらに備える、構成1~7のいずれか1項に記載の制御システム。
 [構成9]
 前記オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定する、構成1~8のいずれか1項に記載の制御システム。
 [構成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.  前記サーバのコンテナエンジンは、前記ランタイムのインスタンスを生成する場合に、前記制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバのインスタンスを生成する、請求項1~3のいずれか1項に記載の制御システム。
  5.  前記コンテナは、前記制御装置のコンテナエンジンのみがデプロイするイメージと、前記サーバのコンテナエンジンのみがデプロイするイメージとのうち、少なくとも一方を含む、請求項1~4のいずれか1項に記載の制御システム。
  6.  前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリをさらに備える、請求項1~5のいずれか1項に記載の制御システム。
  7.  前記サーバに対して前記コンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャをさらに備える、請求項1~6のいずれか1項に記載の制御システム。
  8.  前記生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブをさらに備える、請求項1~7のいずれか1項に記載の制御システム。
  9.  前記オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定する、請求項1~8のいずれか1項に記載の制御システム。
  10.  1または複数の制御装置と1または複数のサーバとを備える制御システムにおいて実行される制御方法であって、
     制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップと、
     前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするステップとを備え、
     前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジンを有しており、前記リリースされたコンテナをデプロイすることで、前記ランタイムのインスタンスを生成して前記制御演算を実行する、制御方法。
PCT/JP2021/008916 2020-12-09 2021-03-08 制御システムおよび制御方法 WO2022123803A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/039,653 US20240004688A1 (en) 2020-12-09 2021-03-08 Control system and control method
EP21902910.5A EP4261631A1 (en) 2020-12-09 2021-03-08 Control system and control method
CN202180078958.0A CN116490830A (zh) 2020-12-09 2021-03-08 控制系统以及控制方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-204061 2020-12-09
JP2020204061A JP2022091301A (ja) 2020-12-09 2020-12-09 制御システムおよび制御方法

Publications (1)

Publication Number Publication Date
WO2022123803A1 true WO2022123803A1 (ja) 2022-06-16

Family

ID=81974338

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/008916 WO2022123803A1 (ja) 2020-12-09 2021-03-08 制御システムおよび制御方法

Country Status (5)

Country Link
US (1) US20240004688A1 (ja)
EP (1) EP4261631A1 (ja)
JP (1) JP2022091301A (ja)
CN (1) CN116490830A (ja)
WO (1) WO2022123803A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140222408A1 (en) * 2011-06-09 2014-08-07 Siemens Aktiengesellschaft Simulation system, method of carrying out a simulation, guidance system and computer program product
JP2015512091A (ja) 2012-02-13 2015-04-23 オラクル・インターナショナル・コーポレイション クラウドコンピューティング環境におけるプロセスの調整
WO2019099111A1 (en) * 2017-11-16 2019-05-23 Intel Corporation Distributed software-defined industrial systems
JP2019128863A (ja) * 2018-01-26 2019-08-01 株式会社インテック ロボットアプリケーション管理装置、システム、方法及びプログラム
EP3722951A1 (en) * 2019-04-08 2020-10-14 Schneider Electric Industries SAS Service deployment in a cluster of i/o devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140222408A1 (en) * 2011-06-09 2014-08-07 Siemens Aktiengesellschaft Simulation system, method of carrying out a simulation, guidance system and computer program product
JP2015512091A (ja) 2012-02-13 2015-04-23 オラクル・インターナショナル・コーポレイション クラウドコンピューティング環境におけるプロセスの調整
WO2019099111A1 (en) * 2017-11-16 2019-05-23 Intel Corporation Distributed software-defined industrial systems
JP2019128863A (ja) * 2018-01-26 2019-08-01 株式会社インテック ロボットアプリケーション管理装置、システム、方法及びプログラム
EP3722951A1 (en) * 2019-04-08 2020-10-14 Schneider Electric Industries SAS Service deployment in a cluster of i/o devices

Also Published As

Publication number Publication date
JP2022091301A (ja) 2022-06-21
CN116490830A (zh) 2023-07-25
EP4261631A1 (en) 2023-10-18
US20240004688A1 (en) 2024-01-04

Similar Documents

Publication Publication Date Title
CN107784152B (zh) 包括多个模拟器的模拟
US7823023B2 (en) Test framework for testing an application
US9298482B2 (en) Plug-in based templatization framework for automating the creation of open virtualization format virtual appliances
Lin et al. ABS-YARN: A formal framework for modeling Hadoop YARN clusters
JP2012256148A (ja) 運用管理装置、及び方法
CN111679889B (zh) 一种虚拟机的转换迁移方法和系统
Marshall Mastering VMware VSphere 6
WO2022123803A1 (ja) 制御システムおよび制御方法
JP2012093899A (ja) 計算機システム、シミュレーション方法、及びプログラム
CN112764981B (zh) 一种协同测试系统及方法
Junghanns et al. Building virtual ECUs quickly and economically
KR102054980B1 (ko) 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템
US7447618B2 (en) Method and system for ASIC simulation
WO2020179581A1 (ja) 制御装置およびソフトウェアのデプロイ方法
CN116157774A (zh) 用于在云计算环境中提供工业设备的工程的方法和系统
US20210141710A1 (en) Development support device
JPH09330243A (ja) 計算機システム
US9424016B2 (en) Methods, apparatuses, and systems relating to automation in distributed systems
Priller et al. Towards perfectly scalable real-time systems
JP7441981B2 (ja) 切り替え可能モデルを有する自律運転シミュレーションアーキテクチャを提供するためのシステムと方法
JP6985685B2 (ja) 情報環境の管理システム及びその作動方法
KR20240009766A (ko) 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 네트워크 가상화 장치 및 방법
WO2020246096A1 (ja) サポート装置およびサポートプログラム
KR20230101667A (ko) 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법
JP2000295242A (ja) 汎用品を用いた監視制御システム及びその評価装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21902910

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202180078958.0

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 18039653

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021902910

Country of ref document: EP

Effective date: 20230710