WO2022049805A1 - 制御装置、制御システムおよびプログラム - Google Patents

制御装置、制御システムおよびプログラム Download PDF

Info

Publication number
WO2022049805A1
WO2022049805A1 PCT/JP2021/008668 JP2021008668W WO2022049805A1 WO 2022049805 A1 WO2022049805 A1 WO 2022049805A1 JP 2021008668 W JP2021008668 W JP 2021008668W WO 2022049805 A1 WO2022049805 A1 WO 2022049805A1
Authority
WO
WIPO (PCT)
Prior art keywords
engine
robot
control
program
control device
Prior art date
Application number
PCT/JP2021/008668
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/041,498 priority Critical patent/US20230341835A1/en
Priority to CN202180056383.2A priority patent/CN116056842A/zh
Priority to EP21863866.6A priority patent/EP4209314A1/en
Publication of WO2022049805A1 publication Critical patent/WO2022049805A1/ja

Links

Images

Classifications

    • 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
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4155Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/1605Simulation of manipulator lay-out, design, modelling of manipulator
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/41885Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by modeling, simulation of the manufacturing system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32357Simulation of material handling, flexible conveyor system fcs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/50Machine tool, machine tool null till machine tool work handling
    • G05B2219/50391Robot

Definitions

  • the present invention relates to a control device for controlling a controlled object, a control system for controlling the controlled object, and a program for realizing the control device.
  • FA Vectory Automation
  • Patent Document 1 discloses a control system capable of positioning an object with high accuracy.
  • This control system is composed of a motion controller and a visual sensor configured by a PLC (programmable logic controller) or the like.
  • PLC programmable logic controller
  • the motion controller and the visual sensor are configured independently of each other, and both exchange data via an arbitrary interface.
  • the transmission delay and the like are relatively large, which may hinder the realization of high-speed control.
  • a control device for controlling a controlled object is provided.
  • the control device is constructed according to user settings, a PLC engine that cyclically executes a program including sequence instructions, a robot control engine for controlling the robot, and an image processing engine that executes image processing on the image from the camera. It includes a controlled object, a robot, and a simulated module that simulates at least a part of a camera.
  • control target can be controlled by processing in which a PLC engine, a robot control engine, and an image processing engine are arbitrarily combined.
  • the control device may further include a visualizer that visualizes the state of the controlled object in the virtual space based on the processing results of the PLC engine, the robot control engine, and the image processing engine. According to this configuration, the state of the controlled object can be confirmed even when a part or all of the controlled object does not exist.
  • the simulation module may be realized by utilizing the result of collision detection in the virtual space visualized by the visualizer. According to this configuration, an arbitrary control target can be simulated by using the state reproduced in the virtual space.
  • the simulation module may be realized by using an emulator that simulates the behavior of the device or equipment included in the controlled object. According to this configuration, the behavior of any device or equipment can be simulated by adopting an emulator.
  • the simulation module may be realized by using a simulator that simulates the physical movement of the object included in the controlled object. According to this configuration, by using the simulator, it is possible to provide a simulated module that reflects the physical movement of the object included in the controlled object.
  • the control device has a user interface that arbitrarily selects a device associated with any of a PLC engine, a robot control engine, and an image processing engine from candidates including real devices and virtual devices, and when a virtual device is selected. , Further include construction means for constructing a simulated module corresponding to the selected virtual device. According to this configuration, the user can arbitrarily select the device to be associated with the control device.
  • the PLC engine may cyclically execute motion control commands for controlling one or more motors driving the robot, and the robot control engine may sequentially generate commands for controlling the robot according to a robot program. .. According to this configuration, in addition to the robot controlled by the robot control engine, a robot having another control method can be controlled.
  • the control device may further include a hypervisor that manages common hardware resources.
  • the hypervisor may provide an execution environment for a real-time OS and a general-purpose OS.
  • the PLC engine may be run on a real-time OS.
  • the robot control engine and the image processing engine may be executed by a general-purpose OS. According to this configuration, a common hardware resource can be used to realize a combination of a plurality of types of processing.
  • a control system for controlling a controlled object includes a PLC engine that cyclically executes a program including sequence instructions, a robot control engine for controlling the robot, and a control device including an image processing engine that executes image processing on an image from a camera.
  • a control device, a robot, and a support device that constructs a simulation module that simulates at least a part of the camera and provides the constructed simulation module to the control device according to user settings.
  • a program for realizing a control device for controlling a controlled object has a PLC engine that cyclically executes a program including sequence instructions, a robot control engine for controlling the robot, an image processing engine that performs image processing on the image from the camera, and a user setting. It functions as a simulated module that simulates at least a part of the controlled object, robot, and camera to be constructed.
  • FIG. 7 It is a figure for demonstrating the case where the user program is executed in the state which the industrial robot is not arranged in the conveyor system shown in FIG. 7. It is a schematic diagram which shows the software configuration example for realizing the state shown in FIG. It is a figure which shows an example of the setting screen which concerns on the user program provided in the control system which follows this embodiment. It is a flowchart which shows the schematic process of the development process of the user program in the control system according to this embodiment.
  • control device can control various devices by combining various processing logics.
  • control target is not limited to the device or equipment for producing something, any device that provides arbitrary information to the control device 100, and a command from the control device 100. Includes any device to which is output. That is, the "controlled object” may include any device related to the control operation in the control device 100.
  • the control device 100 includes a PLC engine 136, a robot control engine 1420, and an image processing engine 1422.
  • the PLC engine 136 is a module that provides a typical function as a PLC, and cyclically executes a program including a sequence instruction.
  • the robot control engine 1420 is a module that provides a function as a robot controller, and executes processing for controlling the robot.
  • the image processing engine 1422 is a module that provides a function as an image processing device, and executes image processing on an image from a camera.
  • Data can be exchanged between the PLC engine 136, the robot control engine 1420, and the image processing engine 1422.
  • FIG. 1A shows a state in which the control device 100 controls the actual control target 4.
  • the PLC engine 136, the robot control engine 1420, and the image processing engine 1422 control the controlled object 4 while exchanging data as necessary.
  • control device 100 has a plurality of types of control functions, and control can be realized with a simpler configuration.
  • control device 100 At the stage of constructing the equipment or machine controlled by the control device 100, there may be a state in which a part of the control target 4 cannot be prepared yet. Even in such a case, the control device 100 according to the present embodiment can execute the process in the same state as the actual controlled object exists by using the simulated module 148. can.
  • FIG. 1B shows a configuration example in which the simulation module 148 is mounted instead of a part of the control target 4.
  • the simulation module 148 simulates at least a part of the controlled object 4, the robot, and the camera.
  • the simulation module 148 is arbitrarily constructed according to the user setting.
  • the target simulated by the simulation module 148 may be any.
  • FIG. 2 is a schematic diagram showing a configuration example of the control system 1 according to the present embodiment. A configuration example of the control system 1 according to the present embodiment will be described with reference to FIG.
  • Control system 1 is an integrated system that controls various devices with one control device. More specifically, the control system 1 includes a control device 100 for realizing integrated control.
  • the control device 100 is a device for controlling a controlled object, and is typically realized by using hardware (for example, an industrial personal computer) that follows a general-purpose architecture.
  • the control system 1 further includes one or more devices connected to the control device 100 via the field network 14, which is an industrial network.
  • EtherCAT registered trademark
  • EtherCAT registered trademark
  • the control system 1 shown in FIG. 2 includes a servo driver 500 constituting a custom robot 550, a robot controller 600 for controlling an industrial robot 650, a safety controller 700, and an IO unit 800. ..
  • a safety device 750 such as a light curtain is electrically connected to the safety controller 700, and an arbitrary sensor and / or an arbitrary actuator is electrically connected to the IO unit 800.
  • the control device 100 is connected to the support device 200, the display device 300, and the server device 400 via the upper network 12.
  • the upper network 12 may realize a branched topology by using the network hub 10.
  • industrial Ethernet registered trademark
  • EtherNet / IP may be adopted.
  • the control device 100 is connected to the camera 20 for image processing. As will be described later, the control device 100 may have a function of processing an image captured by the camera 20.
  • FIG. 3 is a schematic diagram showing a hardware configuration example of the control device 100 constituting the control system 1 according to the present embodiment.
  • the control device 100 includes a processor 102, a main memory 104, an input unit 106, a display unit 108, a storage 110, communication controllers 112 and 114, an optical drive 116, and a memory card interface. 120 and a USB controller 124. These components are connected via the processor bus 128.
  • the processor 102 corresponds to an arithmetic processing unit that executes control operations, and is composed of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and the like. Specifically, the processor 102 reads out the program stored in the storage 110, expands it in the main memory 104, and executes it to realize control operations according to the control target and various processes as described later. do.
  • a CPU Central Processing Unit
  • GPU Graphics Processing Unit
  • the main memory 104 is composed of a volatile storage device such as a DRAM (Dynamic Random Access Memory) or a SRAM (Static Random Access Memory).
  • the storage 110 is composed of, for example, a non-volatile storage device such as an SSD (Solid State Drive) or an HDD (Hard Disk Drive).
  • the input unit 106 is composed of a keyboard, a mouse, and the like, and accepts user operations.
  • the display unit 108 is composed of a display, various indicators, and the like, and outputs processing results and the like from the processor 102.
  • the storage 110 stores an OS (Operating System) 1102 for realizing basic functions, a PLC engine program 1104, an application engine program 1106, a user program 1108, and a program execution setting 1110.
  • the OS 1102 may include a hypervisor for realizing a virtual environment as described later, an RTOS (Real Time Operating System), and a general-purpose OS.
  • the PLC engine program 1104 provides an execution environment corresponding to PLC.
  • the application engine program 1106 provides an environment for executing an arbitrary application program.
  • the OS 1102, the PLC engine program 1104, and the application engine program 1106 correspond to the main programs for realizing the control device 100.
  • the user program 1108 may include an application program for realizing processing related to robot control and visual sensors, and a PLC program including sequence instructions and / or motion control instructions.
  • the PLC program may be described in a format conforming to IEC61131-3, and therefore, a program executed by the PLC engine is also referred to as an "IEC program” below.
  • IEC program may also include the program described in the form which does not conform to IEC61131-3.
  • the program execution setting 1110 includes a setting value that defines an environment for executing the user program 1108. As will be described later, the program execution setting 1110 defines the activation / invalidation of the simulation module 148 that simulates a part or all of the controlled object, the connection relationship with each engine, and the like.
  • the communication controllers 112 and 114 exchange data with an arbitrary information processing device via an arbitrary network.
  • the communication controller 112 is in charge of data communication via the upper network 12
  • the communication controller 114 is in charge of data communication via the field network 14.
  • the optical drive 116 reads arbitrary data from a storage medium 118 (for example, an optical storage medium such as a DVD (Digital Versatile Disc)) that temporarily stores a computer-readable program, and stores arbitrary data. It can be written on the medium 118.
  • a storage medium 118 for example, an optical storage medium such as a DVD (Digital Versatile Disc)
  • DVD Digital Versatile Disc
  • the memory card interface 120 accepts a memory card 122, which is an example of a removable storage medium.
  • the memory card interface 120 can read arbitrary data from the memory card 122 and write arbitrary data to the memory card 122.
  • the USB controller 124 exchanges data with an arbitrary information processing device via a USB connection.
  • FIG. 4 is a schematic diagram showing a hardware configuration example of the support device 200 constituting the control system 1 according to the present embodiment.
  • the support device 200 is realized, for example, by using hardware (for example, a general-purpose personal computer) that follows a general-purpose architecture.
  • the support device 200 provides an integrated development environment in which settings for each device included in the control system 1 and creation of a program executed by each device can be integrated.
  • the integrated development environment it is possible to set, create a program, debug, and the like for the control device 100, the display device 300, the servo driver 500, the robot controller 600, the safety controller 700, and the like.
  • the support device 200 includes a processor 202, a main memory 204, an input unit 206, a display unit 208, a storage 210, a communication controller 212, an optical drive 216, and a USB controller 224. include. These components are connected via the processor bus 228.
  • the processor 202 is composed of a CPU, a GPU, or the like, and reads out a program (OS 2102 and development program 2104 as an example) stored in the storage 210, expands the program into the main memory 204, and executes the program. Realize the processing.
  • a program OS 2102 and development program 2104 as an example
  • the main memory 204 is composed of a volatile storage device such as DRAM or SRAM.
  • the storage 210 is composed of, for example, a non-volatile storage device such as an HDD or SSD.
  • the storage 210 stores an OS 2102 for realizing basic functions, a development program 2104 for realizing an integrated development environment, and the like.
  • the development program 2104 is executed by the processor 202 to provide an integrated development environment.
  • the development program 2104 includes a build module 2105 that builds a mock module 148 corresponding to the selected virtual device. The processing related to the construction of the simulation module 148 will be described later.
  • the input unit 206 is composed of a keyboard, a mouse, and the like, and accepts user operations.
  • the display unit 208 is composed of a display, various indicators, and the like, and outputs a processing result from the processor 202 and the like.
  • the communication controller 212 exchanges data with an arbitrary information processing device via an arbitrary network.
  • the communication controller 212 is in charge of data communication via the upper network 12.
  • the optical drive 216 reads arbitrary data from a storage medium 218 (for example, an optical storage medium such as a DVD) that non-transiently stores a computer-readable program, and writes arbitrary data to the storage medium 218. Can be done.
  • a storage medium 218 for example, an optical storage medium such as a DVD
  • the USB controller 224 exchanges data with any information processing device via a USB connection.
  • the program stored in the storage medium 218 that temporarily stores the computer-readable program may be read and installed in the storage 210 or the like.
  • various programs executed by the support device 200 may be installed by downloading from a server device or the like on the network.
  • the function provided by the support device 200 according to the present embodiment may be realized by using a part of the module provided by the OS.
  • the support device 200 may be removed from the control device 100 while the control system 1 is in operation.
  • the display device 300 constituting the control system 1 according to the present embodiment is also referred to as an HMI (Human Machine Interface) or a PT (Programmable Terminal), and provides a monitoring operation screen with reference to information held by the control device 100. At the same time, an instruction corresponding to the user operation is sent to the control device 100.
  • HMI Human Machine Interface
  • PT Programmable Terminal
  • the display device 300 is realized by using hardware (for example, a general-purpose personal computer) that follows a general-purpose architecture. Since the basic hardware configuration example is the same as the hardware configuration example of the support device 200 shown in FIG. 4, detailed description is not given here.
  • the server device 400 constituting the control system 1 according to the present embodiment functions as, for example, a file server, a manufacturing execution system (MES), a production management system, and the like.
  • MES manufacturing execution system
  • production management system and the like.
  • the server device 400 is realized by using hardware (for example, a general-purpose personal computer) that follows a general-purpose architecture. Since the basic hardware configuration example is the same as the hardware configuration example of the support device 200 shown in FIG. 4, detailed description is not given here.
  • the servo driver 500 constituting the control system 1 according to the present embodiment drives an electrically connected servomotor 530.
  • Each of the servomotors 530 is mechanically connected to the moving mechanism of the custom robot 550.
  • the servo driver 500 is an example of a motor driver, and a motor driver different from the servo driver 500 may be adopted.
  • the servo motor 530 is an example of a motor, and a motor different from the servo motor 530 (for example, an inductive motor, a linear motor, etc.) may be adopted.
  • As the motor driver a configuration according to the motor to be driven can be adopted.
  • the robot controller 600 constituting the control system 1 according to the present embodiment drives the industrial robot 650 in accordance with a command from the control device 100.
  • any general-purpose robot such as a vertical articulated robot, a horizontal articulated (scalar) robot, a parallel link robot, or an orthogonal robot may be used.
  • the safety controller 700 constituting the control system 1 according to the present embodiment executes safety control.
  • the safety controller 700 typically includes a processing unit that performs control operations relating to safety control, one or more safety expansion units that are electrically connected to the safety device 750.
  • the IO unit 800 constituting the control system 1 according to the present embodiment receives a signal from an arbitrary sensor and outputs a command to an arbitrary actuator. That is, the IO unit 800 is electrically connected to any IO device.
  • the above-mentioned device may adopt an implementation form in which one or more processors execute a program to provide a necessary function, or a part or all of the necessary function may be provided by a dedicated hardware circuit (for example, a dedicated hardware circuit).
  • a dedicated hardware circuit for example, a dedicated hardware circuit.
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • FIG. 5 is a schematic diagram showing a software configuration example realized in the control device 100 constituting the control system 1 according to the present embodiment.
  • the control device 100 provides a virtual environment in which a common hardware resource 130 can be shared by a plurality of systems.
  • the hypervisor 132 that manages the common hardware resource 130, the RTOS 134, the PLC engine 136, the IEC program 138, the general-purpose OS 140, the application engine 142, and the application program. 144 and is realized.
  • the hypervisor 132 provides an execution environment for the RTOS 134 and the general-purpose OS 140.
  • the hypervisor 132, RTOS 134, and general-purpose OS 140 are realized by executing the code included in OS 1102 (FIG. 3).
  • the PLC engine 136 is realized by executing the code included in the PLC engine program 1104 (FIG. 3).
  • the PLC engine 136 runs on the RTOS 134.
  • the IEC program 138 and the application program 144 may be included in the user program 1108 (FIG. 3).
  • the PLC engine 136 of the control device 100 provides an environment in which the IEC program 138 can be cyclically executed at a predetermined control cycle.
  • the application engine 142 of the control device 100 provides an environment in which an arbitrary application program 144 that can be executed by a general-purpose OS can be executed.
  • control device 100 both the function provided by the PLC and the function provided by the general-purpose personal computer are realized.
  • the PLC engine 136 refers to the value of the variable managed by the variable manager 1322 and cyclically executes the sequence instruction 1382 included in the IEC program 138. The value of the variable calculated by executing the sequence instruction 1382 is reflected in the variable manager 1322.
  • the PLC engine 136 refers to the value of the variable managed by the variable manager 1322, and cyclically executes the motion control instruction 1384 included in the IEC program 138.
  • the value of the variable calculated by executing the motion control instruction 1384 is reflected in the variable manager 1322.
  • Motion control instructions 1384 typically include one or more instructions for controlling the servo driver 500 (see FIG. 2) that constitutes the custom robot 550.
  • the motion control command 1384 controls one or more motors that drive the custom robot 550 and is cyclically executed.
  • the application engine 142 includes, for example, a robot control engine 1420, an image processing engine 1422, an emulator 1424, a physical simulator 1426, and a visualizer 1428. These programs are executed as appropriate depending on the computing resources.
  • the robot control engine 1420 interprets the robot program 1442 included in the application program 144 and sequentially generates commands for controlling the industrial robot 650 (see FIG. 2).
  • the robot program 1442 may be described in a programming language dedicated to robot control such as V + language, a programming language related to NC control such as G code, or the like. In this way, the robot control engine 1420 sequentially generates commands for controlling the industrial robot 650 according to the robot program 1442.
  • the image processing engine 1422 executes image processing on the image captured by the camera 20 according to the image processing setting 1444.
  • the result of image processing by the image processing engine 1422 is reflected in the variable manager 1322.
  • the image processing performed by the image processing engine 1422 includes, for example, scratch inspection, object detection, object recognition, character recognition, and the like.
  • the emulator 1424 simulates the behavior of a controlled object (device, equipment, etc.) controlled by the control device 100.
  • the emulator 1424 refers to the value of the variable managed by the variable manager 1322 and outputs the result according to the predefined model.
  • the physics simulator 1426 simulates the physical operation of an object included in the controlled object controlled by the control device 100.
  • the physics simulator 1426 refers to the value of the variable managed by the variable manager 1322 and outputs the result according to the predefined physics model.
  • the visualizer 1428 visualizes the state of the controlled object (device, equipment, etc.) controlled by the control device 100 in a virtual space.
  • the visualizer 1428 visualizes the state of the controlled object in a virtual space based on the processing results of the PLC engine 136, the robot control engine 1420, and the image processing engine 1422. More specifically, the visualizer 1428 refers to the values of the variables managed by the variable manager 1322 and generates the data necessary for visualization that reflects the state at each time point according to the predefined model and settings. do.
  • control system 1 can control an actual control target, and even if a part or all of the control target does not actually exist, the control system 1 can execute the processing of the entire control system 1. Can be done.
  • a custom robot 550 placed on the upstream side of the conveyor 6 places the work 8 on the conveyor 6.
  • the work 8 conveyed to the downstream side by the conveyor 6 is tracked based on the image captured by the camera 20.
  • the industrial robot 650 picks the work 8.
  • the range (pick range) in which the industrial robot 650 picks the work 8 is predetermined.
  • a photoelectric sensor 30 for detecting the unpicked work 8 is provided on the downstream side of the pick range.
  • the conveyor 6 can rotate at an arbitrary speed.
  • the conveyor 6 is provided with an encoder 32, and the number of pulses output from the encoder 32 (or the rotation speed calculated from the number of pulses) is input to the control device 100.
  • a conveyor coordinate system is defined for the conveyor 6. The position of the work 8 on the conveyor 6 is managed by the conveyor coordinate system.
  • the custom robot 550 moves in synchronization with the rotation speed of the conveyor 6, so that there is no speed difference when the work 8 is placed on the conveyor 6.
  • the industrial robot 650 moves in synchronization with the rotation speed of the conveyor 6 so that there is no speed difference when the work 8 is picked from the conveyor 6.
  • the camera coordinate system is defined in the camera 20.
  • the camera coordinate system is used to manage the position of the work 8 appearing in the image captured by the camera 20.
  • each of the custom robot 550 and the industrial robot 650 may have its own coordinate system.
  • a world coordinate system is defined for the entire conveyor system 2, and the positions are mutually converted between the world coordinate system and the conveyor coordinate system, and between the world coordinate system and the camera coordinate system. Conversion matrix is prepared in advance.
  • FIG. 8 is a flowchart showing a processing procedure in the conveyor system 2 shown in FIG. 7.
  • the control for the conveyor system 2 shown in FIG. 7 is typically a process executed by the PLC engine 136 of the control device 100, the robot control engine 1420, and the image processing engine 1422, respectively. Is realized by.
  • the PLC engine 136 executes the input / output refresh process (step S100).
  • the input / output refresh process includes a process of outputting the command value calculated in the immediately preceding control cycle to the device and a process of acquiring input data from the device.
  • the input data includes the rotation speed of the conveyor 6, the state values (position, speed, acceleration, etc.) of each servomotor 530 constituting the custom robot 550, the current position of the industrial robot 650, and the like.
  • the PLC engine 136 updates the tracking database that manages the current position of each work 8 on the conveyor 6 based on the rotation speed of the conveyor 6 or the number of pulses of the encoder 32 (step S102).
  • the tracking database contains the current position of each work 8 on the conveyor 6 in each control cycle.
  • the PLC engine 136 calculates the moving distance of the work 8 (difference from the immediately preceding control cycle) based on the rotation speed of the conveyor 6 and the length of the control cycle, and determines the current position of each work 8 included in the tracking database. Offset by the calculated travel distance.
  • the PLC engine 136 determines whether or not a predetermined time has elapsed since the last transmission of the image pickup trigger to the image processing engine 1422 (step S104). If a predetermined time has elapsed since the last transmission of the image processing trigger to the image processing engine 1422 (YES in step S104), the PLC engine 136 transmits the image pickup trigger to the image processing engine 1422 (step S106). ..
  • step S106 If a predetermined time has not elapsed since the image processing trigger was transmitted to the image processing engine 1422 last time (NO in step S104), the processing in step S106 is skipped.
  • steps S104 and S106 correspond to the processes of determining the timing of imaging the imaging range on the conveyor 6 by the camera 20.
  • the timing of imaging is controlled so that the same work 8 is not duplicated as a subject in a plurality of images captured by the camera 20.
  • the PLC engine 136 determines whether or not the position of the work 8 recognized based on the image captured by the camera 20 is received from the image processing engine 1422 (step S108). If the position of the work 8 recognized based on the image captured by the camera 20 is received from the image processing engine 1422 (YES in step S108), the PLC engine 136 will receive the work 8 from the image processing engine 1422. The location is added to the tracking database (step S110).
  • step S110 If the position of the work 8 recognized based on the image captured by the camera 20 is not received from the image processing engine 1422 (NO in step S108), the processing in step S110 is skipped.
  • step S112 It is determined whether or not a signal indicating that the work 8 has been detected by the photoelectric sensor 30 has been input (step S112).
  • the PLC engine 136 deletes the position of the corresponding work 8 from the tracking database (step S114).
  • the PLC engine 136 refers to the tracking database and determines whether or not the condition for placing the work 8 on the conveyor 6 (place condition) is satisfied (step S116). If the place condition is satisfied (YES in step S116), the PLC engine 136 sets the operation flag of the custom robot 550 on (step S118).
  • step S118 If the place condition is not satisfied (NO in step S116), the process of step S118 is skipped.
  • the PLC engine 136 refers to the tracking database and determines whether or not the condition for picking the work 8 from the conveyor 6 (pick condition) is satisfied (step S120). If the pick condition is satisfied (YES in step S120), the PLC engine 136 transmits a control command including information on the position of the work 8 to be picked to the robot control engine 1420 (step S122). Then, the PLC engine 136 deletes the position of the work 8 to be picked from the tracking database (step S124).
  • steps S102 to S124 is mainly described in the sequence instruction 1382 included in the IEC program 138.
  • the PLC engine 136 determines whether or not the operation flag of the custom robot 550 is set to ON (step S150). If the operation flag of the custom robot 550 is set to ON (YES in step S150), the PLC engine 136 is based on the state value of each servomotor 530 according to the motion control command 1384 included in the IEC program 138. , A command value for driving each servomotor 530 constituting the custom robot 550 is calculated (step S152).
  • the PLC engine 136 determines whether or not the execution of the motion control instruction 1384 included in the IEC program 138 is completed (step S154). When the execution of the motion control instruction 1384 included in the IEC program 138 is completed (YES in step S154), the PLC engine 136 sets the operation flag to off (step S156).
  • step S156 If the execution of the motion control instruction 1384 included in the IEC program 138 is not completed (NO in step S154), the process of step S156 is skipped.
  • step S150 If the operation flag of the custom robot 550 is not turned on (NO in step S150), the processes of steps S152 to S156 are skipped.
  • steps S150 to S156 is mainly described in the motion control instruction 1384 included in the IEC program 138.
  • the image processing engine 1422 determines whether or not an image pickup trigger has been received from the PLC engine 136 (step S200). If the imaging trigger has not been received from the PLC engine 136 (NO in step S200), the process of step S200 is repeated.
  • the image processing engine 1422 acquires the image captured by the camera 20 (step S202), and the position of the work 8 included in the acquired image. Is recognized (step S204).
  • the recognized position of the work 8 is a position defined by the camera coordinate system.
  • the image processing engine 1422 converts the recognized position of the work 8 into the position of the world coordinate system (step S206), and outputs the converted position of the work 8 to the PLC engine 136 (step S208). Then, the process of step S200 or less is repeated.
  • the robot control engine 1420 determines whether or not a new control command has been received from the PLC engine 136 (step S300). If no new control command has been received from the PLC engine 136 (NO in step S300), the process of step S300 is repeated.
  • step S300 If a new control command is received from the PLC engine 136 (YES in step S300), the robot control engine 1420 interprets the target portion of the robot program 1442 according to the received control command, and the industrial robot 650. Sequential generation of instructions for controlling the above is started (step S302). Then, the robot control engine 1420 transmits commands to be sequentially generated to the robot controller 600 (step S304).
  • the robot control engine 1420 acquires the current position of the industrial robot 650 from the robot controller 600 (step S306).
  • the acquired current position of the industrial robot 650 is a position defined by the camera coordinate system.
  • the robot control engine 1420 converts the acquired current position of the industrial robot 650 into a position in the world coordinate system (step S308), and outputs the converted current position of the industrial robot 650 to the PLC engine 136 (step S310).
  • the robot control engine 1420 determines whether or not the generation of commands for controlling the industrial robot 650 is continuing (step S312). If the generation of the command for controlling the industrial robot 650 continues (YES in step S312), the process of step S304 and the like is repeated.
  • step S312 If the generation of the instruction for controlling the industrial robot 650 is not continued (NO in step S312), the processing of step S300 or less is repeated.
  • FIG. 9 is a schematic diagram showing a software configuration example realized in the control device 100 for realizing the processing in the conveyor system 2 shown in FIG. 7.
  • the PLC engine 136, the robot control engine 1420, and the image processing engine 1422 exchange data with each other, and each engine exchanges data or signals with the controlled object.
  • the PLC engine 136 acquires a signal such as a rotation speed from the encoder 32 included in the conveyor system 2 and also acquires a signal for detecting the work 8 from the photoelectric sensor 30. Further, the PLC engine 136 gives a command value to the servo driver 500 and acquires a state value from the servo driver 500.
  • the PLC engine 136 gives a control command to the robot control engine 1420 and acquires the current position of the industrial robot 650 from the robot control engine 1420. Further, the PLC engine 136 gives an image pickup trigger to the image processing engine 1422 and acquires the position of the work 8 detected by the image processing engine 1422 from the image processing engine 1422.
  • the robot control engine 1420 gives a command to the robot controller 600 to control the industrial robot 650, and acquires the current position of the industrial robot 650 from the robot controller 600.
  • the image processing engine 1422 acquires the image captured by the camera 20.
  • the image processing engine 1422 may give an image pickup command to the camera 20.
  • the PLC engine 136, the robot control engine 1420, and the image processing engine 1422 included in the control device 100 control the conveyor system 2 by exchanging data or signals with an actual controlled object. do.
  • the visualizer 1428 implemented in the control system 1 according to the present embodiment will be described.
  • the visualizer 1428 visualizes the state of a controlled object (device, equipment, etc.) controlled by the control device 100 in a virtual space.
  • FIG. 10 is a schematic diagram showing a more detailed configuration of the visualizer 1428 mounted on the control system 1 according to the present embodiment.
  • the visualizer 1428 refers to the value of the variable managed by the variable manager 1322 and generates a reproduced image 1430 that reproduces the controlled object in the virtual space.
  • the reproduced image 1430 may be a moving image or a still image.
  • the visualizer 1428 includes a conveyor model 14281 that simulates a conveyor 6, a custom robot model 14482 that simulates a custom robot 550, an industrial robot model 14283 that simulates an industrial robot 650, and an object library 14284. including.
  • the object library 14284 includes image data for synthesizing the reproduced image 1430.
  • FIG. 11 is a schematic diagram showing an example of the reproduced image 1430 provided by the visualizer 1428 mounted on the control system 1 according to the present embodiment.
  • the reproduced image 1430 as shown in FIG. 11 can be displayed on the display unit 108 of the control device 100 or the like.
  • the user can check the operation of the user program 1108 and find a defect while looking at the displayed reproduced image 1430.
  • the reproduced image 1430 provided by the visualizer 1428 reflects the behavior of the actual control target as it is.
  • each engine of the control device 100 executes the process, and the visualizer 1428 as if the actual controlled object exists based on the process result.
  • Reproduced image 1430 can also be provided.
  • control system 1 even if a part or all of the controlled objects do not exist, the operation of the user program 1108 can be confirmed as if an actual controlled object exists.
  • a function capable of flexibly developing a user program provided by the control device 100 will be described.
  • a mechanism that freely simulates a part or all of the controlled object is prepared.
  • FIG. 12 is a schematic diagram showing a software configuration example for executing processing in the control device 100 even when the conveyor system 2 shown in FIG. 7 does not actually exist.
  • FIG. 9 and FIG. 12 will be compared and described.
  • the control target for exchanging data or signals with the control device 100 shown in FIG. 9 is simulated by at least one of the emulator 1424, the physical simulator 1426, and the visualizer 1428 mounted on the control device 100. That is, the simulation module may be implemented by at least one of the emulator 1424, the physics simulator 1426 and the visualizer 1428.
  • the user program 1108 can be executed in the control device 100 as in the case where the controlled object actually exists.
  • the encoder 32 of the conveyor system 2 can be simulated by setting the conveyor setting 14241 on the emulator 1424.
  • the emulator 1424 provides information to the PLC engine 136 that simulates the rotation speed from the encoder 32 according to the conveyor setting 14241.
  • the simulation module for the encoder 32 is realized by using the emulator 1424 that simulates the behavior of the device or equipment included in the controlled object.
  • the photoelectric sensor 30 of the conveyor system 2 can be simulated by setting the collision detection setting 14285 in the visualizer 1428.
  • the visualizer 1428 performs collision detection between the work 8 and the virtual object set in association with the detection range of the photoelectric sensor 30 in the virtual space according to the collision detection setting 14285, thereby indicating that the work 8 has been detected.
  • Collision detection is a process of determining whether or not objects collide with each other based on the closeness of the distance between the objects.
  • FIG. 13 is a schematic diagram showing a setting example of a virtual object for performing collision detection by the visualizer 1428 shown in FIG.
  • a virtual object 14286 is set in the virtual space in association with the detection range of the photoelectric sensor 30.
  • the position of the work 8 on the conveyor 6 is updated according to the tracking database managed by the PLC engine 136.
  • the visualizer 1428 determines whether or not any of the works 8 has collided with the virtual object 14286, and if it is determined that the work 8 has collided with the virtual object 14286, the visualizer 1428 generates a signal indicating that the work 8 is detected by the photoelectric sensor 30. ..
  • the simulation module for the photoelectric sensor 30 is realized by utilizing the result of collision detection in the virtual space visualized by the visualizer 1428.
  • the custom robot 550 of the conveyor system 2 can be simulated by setting the servo driver model 14242 in the emulator 1424 and setting the custom robot model 14261 in the physical simulator 1426.
  • the servo driver model 14242 includes parameters that reflect the response characteristics of the servo driver 500.
  • the emulator 1424 calculates the state value of the servo driver according to the command value from the PLC engine 136 according to the servo driver model 14242, and provides the calculated state value to the PLC engine 136.
  • the custom robot model 14261 includes parameters that reflect the kinematics of the servo motor 530 and the custom robot 550.
  • the physics simulator 1426 calculates the state value, the current position, and the like of the custom robot model 14261 according to the state value calculated by the emulator 1424 according to the custom robot model 14261.
  • the simulation module for the custom robot 550 is realized by using the emulator 1424 that simulates the behavior of the device or equipment included in the controlled object, and also simulates the physical movement of the object included in the controlled object. It is realized by using the physics simulator 1426.
  • the industrial robot 650 of the conveyor system 2 can be simulated by setting the robot controller model 14243 in the emulator 1424 and setting the industrial robot model 14262 in the physical simulator 1426.
  • the robot controller model 14243 includes parameters that reflect the response characteristics of the robot controller 600 and the like.
  • the emulator 1424 generates an internal command for driving the industrial robot 650 in response to a command from the robot control engine 1420 according to the robot controller model 14243.
  • the emulator 1424 provides the robot control engine 1420 with the current position of the industrial robot 650 calculated by the physical simulator 1426.
  • the industrial robot model 14262 includes parameters that reflect the response characteristics and kinematics of the industrial robot 650.
  • the physics simulator 1426 calculates the speed, acceleration, current position, etc. of the industrial robot 650 according to the internal command calculated by the emulator 1424 according to the industrial robot model 14262.
  • FIG. 12 shows a configuration example in which the robot controller 600 and the industrial robot 650 are simulated by the emulator 1424 and the physical simulator 1426, a single emulator 1424 may be used to simulate the robot controller 600 and the industrial robot 650.
  • the simulation module for the industrial robot 650 is realized by using the emulator 1424 that simulates the behavior of the device or equipment included in the controlled object, and also simulates the physical movement of the object included in the controlled object. It is realized by using the physical simulator 1426.
  • the camera 20 of the conveyor system 2 can be simulated by setting the simulated image group 14244 on the emulator 1424.
  • the simulated image group 14244 is composed of one or a plurality of images corresponding to a predetermined place pattern of the work 8.
  • the emulator 1424 sequentially provides the image processing engine 1422 with the images included in the simulated image group 14244 in response to the image capture trigger provided via the image processing engine 1422.
  • a simulated image is created by simulating in a virtual space the state in which the work 8 is sequentially placed and conveyed on the conveyor system 2 and by performing virtual imaging using a virtual camera arranged at a position corresponding to the camera 20.
  • Group 14244 may be generated.
  • the simulation module for the camera 20 is realized by using the emulator 1424 that simulates the behavior of the device or equipment included in the controlled object.
  • a virtual camera is set in the virtual space provided by the visualizer 1428, and the images generated by being virtually captured by the virtual camera are sequentially provided to the image processing engine 1422. You may. That is, instead of using the emulator 1424 and the simulated image group 14244, the camera 20 of the conveyor system 2 may be simulated by setting a virtual camera in the visualizer 1428.
  • FIG. 14 is a diagram for explaining a case where a user program is executed in a state where the industrial robot 650 is not arranged in the conveyor system 2 shown in FIG. 7.
  • FIG. 14A shows a state in which the industrial robot 650 has not yet been arranged in the conveyor system 2 shown in FIG. 7. Even in the state shown in FIG. 14 (A), by enabling the mechanism for simulating the industrial robot 650 as described above, even if the industrial robot 650 does not actually exist, FIG. 14 (A) The reproduced image 1430 as shown in B) can be displayed.
  • the user can check the operation of the user program 1108, find a defect, and the like while looking at the reproduced image 1430 as shown in FIG. 14 (B).
  • FIG. 15 is a schematic diagram showing a software configuration example for realizing the state shown in FIG.
  • an emulator 1424 (a robot controller model 14243 is set) and a physical simulator 1426 (an industrial robot model 14262) that simulate a robot controller 600 and an industrial robot 650 are set. ) Is enabled.
  • the control device 100 (PLC engine 136, robot control engine 1420 and image processing engine 1422) is provided by a simulation module (implemented using an emulator 1424 and a physical simulator 1426) that simulates such a robot controller 600 and an industrial robot 650. Can execute the user program 1108 in the same manner as when the conveyor system 2 actually exists.
  • the user can flexibly develop the user program 1108.
  • control device 100 ⁇ H. Settings in control device 100 / support device 200>
  • the user program 1108 executed by the control device 100 and the program execution setting 1110 that defines the environment for executing the user program 1108 are created by the user on the integrated development environment.
  • the integrated development environment may be realized by the support device 200 executing the development program 2104 (see FIG. 4).
  • the control device 100 may provide the integrated development environment by executing the development program 2104.
  • the program execution setting 1110 includes a setting of whether or not to simulate any part of such a controlled object.
  • FIG. 16 is a diagram showing an example of a setting screen related to the user program 1108 provided in the control system 1 according to the present embodiment.
  • the controlled device associated with the user program 1108 can be selected and set.
  • Devices to be controlled include virtual devices (simulating real devices) in addition to real devices.
  • the setting screen 250 includes a device registration field 252 for registering a device associated with the user program 1108, and a device property field 254 for registering the properties of each device.
  • the device selection screen 260 When the user clicks the device registration field 252, the device selection screen 260 for selecting the device is displayed.
  • the device selection screen 260 includes a list of real devices 262 and a list of virtual devices 264.
  • the user can arbitrarily select either a real device or a virtual device on the device selection screen 260.
  • the selection result by the user is reflected in the program execution setting 1110.
  • the user program 1108 executed by the control device 100 is associated with the selected device.
  • the support device 200 arbitrarily selects the device associated with any of the PLC engine 136, the robot control engine 1420, and the image processing engine 1422 from the candidates including the real device and the virtual device.
  • the setting screen 250 as shown in FIG. 16 is provided.
  • FIG. 17 is a flowchart showing a schematic process of development process of the user program 1108 in the control system 1 according to the present embodiment. Each step shown in FIG. 17 is typically realized by the processor 202 of the support device 200 executing the development program 2104.
  • the support device 200 generates the source code of the user program 1108 according to the operation by the user (step S400).
  • the support device 200 accepts the selection of the device associated with the user program 1108 according to the operation by the user (step S402).
  • the support device 200 determines the type of selected device (step S404). If the selected device is a real device (in the case of a "real device" in step S404), the support device 200 associates the user program 1108 with specific information such as the network address of the selected device (step S406). ).
  • the support device 200 constructs a simulation module corresponding to the selected virtual device (step S408). More specifically, the support device 200 is a simulation module that simulates the selected device by reflecting the settings of the selected device for one or more of the emulator 1424, the physics simulator 1426, and the visualizer 1428. To build. Subsequently, the support device 200 associates the simulated module corresponding to the constructed virtual device with the user program 1108 (step S410).
  • the support device 200 constructs a simulated module corresponding to the selected virtual device. That is, the support device 200 (or the control device 100) can construct a simulation module that simulates at least a part of the controlled object, the robot, and the camera according to the user setting.
  • the support device 200 determines whether or not the device selection is completed (step S412). If the device selection is not completed (NO in step S412), the process of step S402 and the like is repeated.
  • step S412 the support device 200 generates an executable program from the source code of the user program 1108 (step S414), and reflects the device selection result. Generate the program execution setting 1110 (step S416).
  • a user interface (250) that arbitrarily selects a device associated with any of the PLC engine, the robot control engine, and the image processing engine from candidates including real devices and virtual devices.
  • the control device according to any one of configurations 1 to 5, further comprising a construction means (2105) for constructing the simulation module corresponding to the selected virtual device when the virtual device is selected. ..
  • the PLC engine cyclically executes a motion control command (1384) for controlling one or a plurality of motors (530) for driving a robot (550).
  • the control device according to any one of configurations 1 to 6, wherein the robot control engine sequentially generates commands for controlling the robot according to a robot program.
  • FIG. 8 Further equipped with a hypervisor (132) that manages common hardware resources (130), The hypervisor provides an execution environment for a real-time OS (134) and a general-purpose OS (140).
  • the PLC engine is executed on the real-time OS and The control device according to any one of configurations 1 to 7, wherein the robot control engine and the image processing engine are executed by the general-purpose OS.
  • a control system (1) for controlling a controlled object (4) An image for an image from a PLC engine (136) that cyclically executes a program including a sequence instruction (1382), a robot control engine (1420) for controlling a robot (600,650), and an image from a camera (20).
  • control system 1 According to the control system 1 according to the present embodiment, complicated control can be realized with a simpler configuration and program development can be facilitated.

Landscapes

  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • General Physics & Mathematics (AREA)
  • Manufacturing & Machinery (AREA)
  • Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)
  • Manipulator (AREA)

Abstract

複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供する。制御対象を制御するための制御装置は、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとを含む。

Description

制御装置、制御システムおよびプログラム
 本発明は、制御対象を制御するための制御装置、制御対象を制御するための制御システム、および当該制御装置を実現するためのプログラムに関する。
 FA(Factory Automation)分野においては、視覚センサにより対象物を検出し、その検出結果に基づいてモータやロボットなどを制御するシステムが実現されている。
 例えば、特開2019-215635号公報(特許文献1)は、対象物を高精度に位置決めできる制御システムを開示する。この制御システムは、PLC(プログラマブルロジックコントローラ)などにより構成されるモーションコントローラと視覚センサとから構成される。
特開2019-215635号公報
 上述の先行技術文献においては、モーションコントローラと視覚センサとは互いに独立した構成となっており、両者は、任意のインターフェイスを介してデータをやり取りする。複数の装置がインターフェイスを介してデータをやり取りする構成を採用した場合には、伝送遅延などが相対的に大きく、高速な制御の実現を阻害する可能性がある。
 本発明は、このような従来構成に対して、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供することを目的とする。
 本発明のある実施の形態によれば、制御対象を制御するための制御装置が提供される。制御装置は、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとを含む。
 この構成によれば、制御対象が存在しないような場合でも、模擬モジュールを適用することで、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンの処理を確認および検証できる。これによって、制御装置で実行されるプログラム開発を容易化できる。
 また、この構成によれば、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンを任意に組み合わせた処理によって制御対象を制御できる。
 制御装置は、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンの処理結果に基づいて、制御対象の状態を仮想空間で視覚化するビジュアライザをさらに含んでいてもよい。この構成によれば、制御対象の一部または全部が存在しない場合であっても、制御対象の状態を確認できる。
 模擬モジュールは、ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現されてもよい。この構成によれば、仮想空間に再現された状態を利用して、任意の制御対象を模擬できる。
 模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータを用いて実現されてもよい。この構成によれば、エミュレータを採用することで、任意の装置または設備の挙動を模擬できる。
 模擬モジュールは、制御対象に含まれる物体の物理的な動作を模擬するシミュレータを用いて実現されてもよい。この構成によれば、シミュレータを用いることで、制御対象に含まれる物体の物理的な動作を反映した模擬モジュールを提供できる。
 制御装置は、PLCエンジン、ロボットコントロールエンジンおよび画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスと、仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する模擬モジュールを構築する構築手段とをさらに含む。この構成によれば、ユーザは、制御装置に関連付けるデバイスを任意に選択できる。
 PLCエンジンは、ロボットを駆動する1または複数のモータを制御するモーション制御命令をサイクリック実行し、ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成するようにしてもよい。この構成によれば、ロボットコントロールエンジンが制御するロボットに加えて、別の制御方式のロボットも制御できる。
 制御装置は、共通のハードウェアリソースを管理するハイパーバイザをさらに含んでいてもよい。ハイパーバイザは、リアルタイムOSおよび汎用OSの実行環境を提供してもよい。PLCエンジンは、リアルタイムOS上で実行されてもよい。ロボットコントロールエンジンおよび画像処理エンジンは、汎用OSで実行されてもよい。この構成によれば、共通のハードウェアリソースを利用して、複数種類の処理を組み合わせて実現できる。
 本発明の別の実施の形態によれば、制御対象を制御するための制御システムが提供される。制御システムは、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンとを含む制御装置と、ユーザ設定に従って、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールを構築するとともに、当該構築した模擬モジュールを制御装置へ提供するサポート装置とを含む。
 本発明のさらに別の実施の形態によれば、制御対象を制御するための制御装置を実現するためのプログラムが提供される。プログラムはコンピュータを、シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンと、ユーザ設定に従って構築される、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールとして機能させる。
 本発明によれば、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することが可能な構成を提供できる。
本実施の形態に係る制御装置の適用例を示す模式図である。 本実施の形態に係る制御システムの構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置に実現されるソフトウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する制御装置に実現されるソフトウェア構成の要部を示す模式図である。 本実施の形態に従う制御システムの制御対象の一例を示す模式図である。 図7に示すコンベアシステムにおける処理手順を示すフローチャートである。 図7に示すコンベアシステムにおける処理を実現するための制御装置に実現されるソフトウェア構成例を示す模式図である。 本実施の形態に係る制御システムに実装されるビジュアライザのより詳細な構成を示す模式図である。 本実施の形態に係る制御システムに実装されるビジュアライザが提供する再現画像の一例を示す模式図である。 図7に示すコンベアシステムが実在しない場合であっても制御装置における処理を実行するためのソフトウェア構成例を示す模式図である。 図12に示すビジュアライザによる衝突検出を行うための仮想オブジェクトの設定例を示す模式図である。 図7に示すコンベアシステムにおいて産業用ロボットが配置されていない状態でユーザプログラムを実行する場合を説明するための図である。 図14に示す状態を実現するためのソフトウェア構成例を示す模式図である。 本実施の形態に従う制御システムにおいて提供されるユーザプログラムに係る設定画面の一例を示す図である。 本実施の形態に従う制御システムにおけるユーザプログラムの開発処理の概略処理を示すフローチャートである。
 本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
 <A.適用例>
 まず、本発明が適用される場面の一例について説明する。本実施の形態に係る制御装置は、様々な処理ロジックを組み合わせて様々なデバイスを制御できる。
 図1は、本実施の形態に係る制御装置100の適用例を示す模式図である。図1を参照して、制御装置100は、任意の制御対象4を制御する。
 本明細書において、「制御対象」は、何らかの物を生産等するための装置や設備に限らず、制御装置100に対して任意の情報を提供する任意の装置、および、制御装置100からの指令が出力される先の任意の装置を含む。すなわち、「制御対象」は、制御装置100における制御演算に関連する任意の装置を含み得る。
 図1(A)に示すように、制御装置100は、PLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とを含む。
 PLCエンジン136は、PLCとしての典型的な機能を提供するモジュールであり、シーケンス命令を含むプログラムをサイクリック実行する。
 ロボットコントロールエンジン1420は、ロボットコントローラとしての機能を提供するモジュールであり、ロボットを制御するための処理を実行する。
 画像処理エンジン1422は、画像処理装置としての機能を提供するモジュールであり、カメラからの画像に対して画像処理を実行する。
 PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、データを交換可能になっている。
 図1(A)には、制御装置100が現実の制御対象4を制御している状態を示す。PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、必要に応じてデータを交換しつつ、制御対象4を制御する。
 このように、本実施の形態に従う制御装置100は、複数種類の制御機能を有しており、制御をより簡単な構成で実現できる。
 なお、制御装置100が制御する設備や機械を構築中の段階においては、制御対象4の一部がまだ用意できないような状態も存在し得る。このような場合であっても、本実施の形態に従う制御装置100は、模擬モジュール148を利用することで、現実の制御対象が存在しているのと同様の状態で、処理を実行することができる。
 図1(B)には、制御対象4の一部に代えて、模擬モジュール148を実装した構成例を示す。模擬モジュール148は、制御対象4と、ロボットと、カメラとのうち少なくとも一部を模擬する。模擬モジュール148は、ユーザ設定に従って任意に構築される。模擬モジュール148が模擬する対象は、いずれであってもよい。
 このような模擬モジュール148を任意に実装することで、制御対象4のすべてが利用できなくても、制御装置100で実行されるプログラムの挙動などを確認できる。このような機能によって、制御装置100で実行されるプログラムの開発を容易化できる。
 <B.制御システムの構成例>
 図2は、本実施の形態に係る制御システム1の構成例を示す模式図である。図2を参照して、本実施の形態に係る制御システム1の構成例について説明する。
 制御システム1は、1つの制御装置で様々なデバイスを制御する統合型のシステムである。より具体的には、制御システム1は、統合的な制御を実現するための制御装置100を含む。制御装置100は、制御対象を制御するための装置であり、典型的には、汎用的なアーキテクチャに従うハードウェア(例えば、産業用パソコン)を用いて実現される。
 制御システム1は、制御装置100と産業用のネットワークであるフィールドネットワーク14を介して接続される1または複数のデバイスをさらに含む。フィールドネットワーク14のプロトコルの一例として、EtherCAT(登録商標)を採用してもよい。
 図2に示す制御システム1は、デバイスの一例として、カスタムロボット550を構成するサーボドライバ500と、産業用ロボット650を制御するためのロボットコントローラ600と、安全コントローラ700と、IOユニット800とを含む。
 安全コントローラ700には、ライトカーテンなどの安全デバイス750が電気的に接続されており、IOユニット800には、任意のセンサおよび/または任意のアクチュエータが電気的に接続されている。
 制御装置100は、上位ネットワーク12を介して、サポート装置200と、表示装置300と、サーバ装置400と接続されている。上位ネットワーク12は、ネットワークハブ10を用いて分岐したトポロジーを実現してもよい。上位ネットワーク12のプロトコルの一例として、EtherNet/IPなどの産業用のイーサネット(登録商標)を採用してもよい。
 制御装置100は、画像処理用のカメラ20と接続されている。後述するように、制御装置100は、カメラ20により撮像された画像を処理する機能を有していてもよい。
 このように、本実施の形態によれば、1つの制御装置100で様々なデバイスを制御する統合型の制御システム1を提供できる。
 <C.ハードウェア構成例>
 次に、本実施の形態に係る制御システム1を構成する各装置のハードウェア構成の一例について説明する。
 (c1:制御装置100)
 図3は、本実施の形態に係る制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。図3を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、入力部106と、表示部108と、ストレージ110と、通信コントローラ112,114と、光学ドライブ116と、メモリカードインターフェイス120と、USBコントローラ124とを含む。これらのコンポーネントは、プロセッサバス128を介して接続されている。
 プロセッサ102は、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
 メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
 入力部106は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。
 表示部108は、ディスプレイや各種インジケータなどで構成され、プロセッサ102からの処理結果などを出力する。
 ストレージ110には、基本的な機能を実現するためのOS(Operating System)1102と、PLCエンジンプログラム1104と、アプリケーションエンジンプログラム1106と、ユーザプログラム1108と、プログラム実行設定1110とが格納される。OS1102は、後述するような仮想環境を実現するためのハイパーバイザ、RTOS(Real Time Operating System)、および汎用OSを含んでいてもよい。PLCエンジンプログラム1104は、PLCに相当する実行環境を提供する。アプリケーションエンジンプログラム1106は、任意のアプリケーションプログラムを実行するための環境を提供する。
 OS1102、PLCエンジンプログラム1104およびアプリケーションエンジンプログラム1106は、制御装置100を実現するための主たるプログラムに相当する。
 ユーザプログラム1108は、ロボット制御や視覚センサに係る処理を実現するためのアプリケーションプログラムと、シーケンス命令および/またはモーション制御命令を含むPLCプログラムとを含んでいてもよい。PLCプログラムは、IEC61131-3準拠した形式で記述されてもよく、そのため、以下では、PLCエンジンで実行されるプログラムを「IECプログラム」とも称する。なお、本明細書において、「IECプログラム」は、IEC61131-3準拠しない形式で記述されたプログラムも含み得る。
 プログラム実行設定1110は、ユーザプログラム1108を実行するための環境などを規定する設定値を含む。後述するように、プログラム実行設定1110は、制御対象の一部または全部を模擬する模擬モジュール148の有効化/無効化ならびに各エンジンとの接続関係などを規定する。
 通信コントローラ112,114は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。図2に制御システム1においては、通信コントローラ112は、上位ネットワーク12を介したデータ通信を担当し、通信コントローラ114は、フィールドネットワーク14を介したデータ通信を担当する。
 光学ドライブ116は、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体118(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)から任意のデータを読み取り、および、任意のデータを記憶媒体118に書き込むことができる。
 メモリカードインターフェイス120は、着脱可能な記憶媒体の一例であるメモリカード122を受け付ける。メモリカードインターフェイス120は、メモリカード122から任意のデータを読み取り、および、任意のデータをメモリカード122に書き込むことができる。
 USBコントローラ124は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
 (c2:サポート装置200)
 図4は、本実施の形態に係る制御システム1を構成するサポート装置200のハードウェア構成例を示す模式図である。図4を参照して、サポート装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。
 サポート装置200は、制御システム1に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な統合開発環境を提供する。統合開発環境においては、制御装置100、表示装置300、サーボドライバ500、ロボットコントローラ600、安全コントローラ700などに向けられた設定、プログラムの作成、およびデバッグなどが可能になっている。
 図4を参照して、サポート装置200は、プロセッサ202と、メインメモリ204と、入力部206と、表示部208と、ストレージ210と、通信コントローラ212と、光学ドライブ216と、USBコントローラ224とを含む。これらのコンポーネントは、プロセッサバス228を介して接続されている。
 プロセッサ202は、CPUやGPUなどで構成され、ストレージ210に格納されたプログラム(一例として、OS2102および開発プログラム2104)を読出して、メインメモリ204に展開して実行することで、後述するような各種処理を実現する。
 メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ210は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
 ストレージ210には、基本的な機能を実現するためのOS2102、および、統合開発環境を実現するための開発プログラム2104などが格納される。
 開発プログラム2104は、プロセッサ202により実行されることで、統合開発環境を提供する。開発プログラム2104は、選択された仮想のデバイスに対応する模擬モジュール148を構築する構築モジュール2105を含む。模擬モジュール148の構築に係る処理については、後述する。
 入力部206は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。
 表示部208は、ディスプレイや各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
 通信コントローラ212は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。図2に制御システム1においては、通信コントローラ212は、上位ネットワーク12を介したデータ通信を担当する。
 光学ドライブ216は、コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体218(例えば、DVDなどの光学記憶媒体)から任意のデータを読み取り、および、任意のデータを記憶媒体218に書き込むことができる。
 USBコントローラ224は、USB接続を介して、任意の情報処理装置との間のデータをやり取りする。
 コンピュータ読取可能なプログラムを非一過的に格納する記憶媒体218から、その中に格納されたプログラムが読み取られてストレージ210などにインストールされてもよい。あるいは、サポート装置200で実行される各種プログラムは、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置200が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
 なお、制御システム1の稼動中において、サポート装置200は、制御装置100から取り外されていてもよい。
 (c3:表示装置300)
 本実施の形態に係る制御システム1を構成する表示装置300は、HMI(Human Machine Interface)やPT(Programmable Terminal)とも称され、制御装置100が保持する情報を参照して監視操作画面を提供するとともに、ユーザ操作に対応する指示を制御装置100へ送出する。
 表示装置300は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。基本的なハードウェア構成例は、図4に示すサポート装置200のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
 (c4:サーバ装置400)
 本実施の形態に係る制御システム1を構成するサーバ装置400は、例えば、ファイルサーバ、製造実行システム(MES:Manufacturing Execution System)、生産管理システムなどとして機能する。
 サーバ装置400は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いて実現される。基本的なハードウェア構成例は、図4に示すサポート装置200のハードウェア構成例と同様であるので、ここでは詳細な説明は行わない。
 (c5:サーボドライバ500)
 本実施の形態に係る制御システム1を構成するサーボドライバ500は、電気的に接続されたサーボモータ530を駆動する。サーボモータ530の各々は、カスタムロボット550の移動機構と機械的に連結されている。サーボドライバ500は、モータドライバの一例であり、サーボドライバ500とは異なるモータドライバを採用してもよい。同様に、サーボモータ530は、モータの一例であり、サーボモータ530とは異なるモータ(例えば、誘導型モータやリニアモータなど)を採用してもよい。モータドライバとしては、駆動対象のモータに応じた構成を採用できる。
 (c6:ロボットコントローラ600)
 本実施の形態に係る制御システム1を構成するロボットコントローラ600は、制御装置100からの指令に従って、産業用ロボット650を駆動する。産業用ロボット650は、例えば、垂直多関節ロボット、水平多関節(スカラ)ロボット、パラレルリンクロボット、直交ロボットなどの任意の汎用ロボットが用いられてもよい。
 (c7:安全コントローラ700)
 本実施の形態に係る制御システム1を構成する安全コントローラ700は、安全制御を実行する。安全コントローラ700は、典型的には、安全制御に係る制御演算を実行する処理ユニット、安全デバイス750と電気的に接続される1または複数の安全拡張ユニットとを含む。
 (c8:IOユニット800)
 本実施の形態に係る制御システム1を構成するIOユニット800は、任意のセンサからの信号を受け付けるとともに、任意のアクチュエータへ指令を出力する。すなわち、IOユニット800は、任意のIOデバイスと電気的に接続される。
 (c9:その他の形態)
 上述のデバイスは、1または複数のプロセッサがプログラムを実行することで必要な機能を提供する実装形態を採用してもよいし、必要な機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いた実装形態を採用してもよい。
 <D.ソフトウェア構成例>
 次に、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成例について説明する。
 図5は、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成例を示す模式図である。図5を参照して、制御装置100は、共通のハードウェアリソース130を複数のシステムで共有可能な仮想環境を提供する。
 より具体的には、制御装置100においては、共通のハードウェアリソース130を管理するハイパーバイザ132と、RTOS134と、PLCエンジン136と、IECプログラム138と、汎用OS140と、アプリケーションエンジン142と、アプリケーションプログラム144とが実現されている。
 ハイパーバイザ132は、RTOS134および汎用OS140の実行環境を提供する。なお、ハイパーバイザ132、RTOS134および汎用OS140は、OS1102(図3)に含まれるコードが実行されることで実現される。
 PLCエンジン136は、PLCエンジンプログラム1104(図3)に含まれるコードが実行されることで実現される。PLCエンジン136は、RTOS134上で実行される。
 アプリケーションエンジン142は、アプリケーションエンジンプログラム1106(図3)に含まれるコードが実行されることで実現される。アプリケーションエンジン142は、汎用OS140上で実行される。
 IECプログラム138およびアプリケーションプログラム144は、ユーザプログラム1108(図3)に含まれていてもよい。
 制御装置100のPLCエンジン136は、所定の制御周期でIECプログラム138をサイクリック実行できる環境を提供する。併せて、制御装置100のアプリケーションエンジン142は、汎用OSで実行可能な任意のアプリケーションプログラム144を実行できる環境を提供する。
 このように、制御装置100においては、PLCが提供する機能と、汎用パソコンが提供する機能との両方が実現される。
 図6は、本実施の形態に係る制御システム1を構成する制御装置100に実現されるソフトウェア構成の要部を示す模式図である。図6を参照して、制御装置100のハイパーバイザ132は、スケジューラ1320および変数マネジャ1322を提供する。スケジューラ1320は、制御装置100における各プログラムの実行タイミングなどを管理する。変数マネジャ1322は、制御装置100で実行されるそれぞれのプログラムが参照可能な変数を保持および更新する。変数マネジャ1322が管理する変数の値は、通信コントローラ114を介して対応するデバイスへ送信され、変数マネジャ1322が管理する変数の値は、通信コントローラ114を介してデバイスから受信した値で更新される。
 PLCエンジン136は、変数マネジャ1322が管理する変数の値を参照して、IECプログラム138に含まれるシーケンス命令1382をサイクリック実行する。シーケンス命令1382の実行により算出された変数の値は、変数マネジャ1322に反映される。
 また、PLCエンジン136は、変数マネジャ1322が管理する変数の値を参照して、IECプログラム138に含まれるモーション制御命令1384をサイクリック実行する。モーション制御命令1384の実行により算出された変数の値は、変数マネジャ1322に反映される。モーション制御命令1384は、典型的には、カスタムロボット550を構成するサーボドライバ500(図2参照)を制御するための1または複数の命令を含む。モーション制御命令1384は、カスタムロボット550を駆動する1または複数のモータを制御するものであり、サイクリック実行される。
 一方、アプリケーションエンジン142は、例えば、ロボットコントロールエンジン1420と、画像処理エンジン1422と、エミュレータ1424と、物理シミュレータ1426と、ビジュアライザ1428とを含む。これらのプログラムは、コンピューティングリソースに応じて適宜実行される。
 ロボットコントロールエンジン1420は、アプリケーションプログラム144に含まれるロボットプログラム1442を解釈して、産業用ロボット650(図2参照)を制御するための命令を順次生成する。ロボットプログラム1442は、V+言語などのロボット制御専用プログラミング言語やGコードなどのNC制御に係るプログラミング言語などで記述されてもよい。このように、ロボットコントロールエンジン1420は、ロボットプログラム1442に従って、産業用ロボット650を制御するための命令を順次生成する。
 画像処理エンジン1422は、画像処理設定1444に従って、カメラ20により撮像された画像に対して画像処理を実行する。画像処理エンジン1422による画像処理の結果は、変数マネジャ1322に反映される。画像処理エンジン1422で実行される画像処理は、例えば、キズ検査、物体検出、物体認識、文字認識などを含む。
 エミュレータ1424は、制御装置100が制御する制御対象(装置や設備など)の挙動を模擬する。エミュレータ1424は、変数マネジャ1322が管理する変数の値を参照して、予め定義されたモデルに沿った結果を出力する。
 物理シミュレータ1426は、制御装置100が制御する制御対象に含まれる物体の物理的な動作を模擬する。物理シミュレータ1426は、変数マネジャ1322が管理する変数の値を参照して、予め定義された物理モデルに沿った結果を出力する。
 なお、エミュレータ1424および物理シミュレータ1426を必ずしも区別しなくてもよい。
 ビジュアライザ1428は、制御装置100が制御する制御対象(装置や設備など)の状態を仮想空間で視覚化する。ビジュアライザ1428は、PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422の処理結果に基づいて、制御対象の状態を仮想空間で視覚化する。より具体的には、ビジュアライザ1428は、変数マネジャ1322が管理する変数の値を参照して、予め定義されたモデルおよび設定に沿って、各時点の状態を反映した視覚化に必要なデータを生成する。
 後述するように、本実施の形態に従う制御システム1は、現実の制御対象を制御することができるとともに、制御対象の一部または全部が実在しない場合でも、制御システム1全体の処理を実行することができる。
 <E.処理例>
 次に、本実施の形態に従う制御システム1における処理例について説明する。
 図7は、本実施の形態に従う制御システム1の制御対象の一例を示す模式図である。図7を参照して、制御システム1の制御対象として、ワーク8がコンベア6により順次搬送されるコンベアシステム2を想定する。
 コンベア6の上流側に配置されたカスタムロボット550がワーク8をコンベア6上にプレイスする。コンベア6により下流側に搬送されたワーク8は、カメラ20により撮像された画像に基づいてトラッキングされる。ワーク8のトラッキング結果に基づいて、産業用ロボット650がワーク8をピックする。産業用ロボット650がワーク8をピックする範囲(ピック範囲)は、予め定められている。ピック範囲の下流側には、ピックされなかったワーク8を検出するための光電センサ30が設けられている。
 図7に示すコンベアシステム2において、コンベア6は任意の速度で回転できる。コンベア6にはエンコーダ32が設けられており、エンコーダ32から出力されるパルス数(あるいは、パルス数から算出される回転速度)は、制御装置100に入力される。コンベア6にはコンベア座標系が定義されている。コンベア6上のワーク8の位置は、コンベア座標系で管理される。
 カスタムロボット550は、コンベア6の回転速度に同期して移動することで、ワーク8をコンベア6上にプレイスする際に速度差が生じないようになっている。同様に、産業用ロボット650は、コンベア6の回転速度に同期して移動することで、ワーク8をコンベア6上からピックする際に速度差が生じないようになっている。
 カメラ20にはカメラ座標系が定義されている。カメラ座標系は、カメラ20により撮像された画像内に現れるワーク8の位置を管理するために用いられる。
 なお、カスタムロボット550および産業用ロボット650のそれぞれも独自の座標系を有していてもよい。
 コンベアシステム2の全体に対して、ワールド座標系が定義されており、ワールド座標系とコンベア座標系との間、および、ワールド座標系とカメラ座標系との間は、位置を相互に変換するための変換マトリックスが予め用意される。
 図8は、図7に示すコンベアシステム2における処理手順を示すフローチャートである。図8を参照して、図7に示すコンベアシステム2に対する制御は、典型的には、制御装置100のPLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とのそれぞれで実行される処理により実現される。
 PLCエンジン136は、入出力リフレッシュ処理を実行する(ステップS100)。入出力リフレッシュ処理は、直前の制御周期において算出された指令値をデバイスへ出力する処理と、デバイスから入力データを取得する処理を含む。入力データは、コンベア6の回転速度、カスタムロボット550を構成する各サーボモータ530の状態値(位置、速度、加速度など)、産業用ロボット650の現在位置などを含む。
 PLCエンジン136は、コンベア6の回転速度またはエンコーダ32のパルス数に基づいて、コンベア6上の各ワーク8の現在位置を管理するトラッキングデータベースを更新する(ステップS102)。トラッキングデータベースは、各制御周期におけるコンベア6上の各ワーク8の現在位置を含む。PLCエンジン136は、コンベア6の回転速度と制御周期の長さとに基づいて、ワーク8の移動距離(直前の制御周期からの差分)を算出し、トラッキングデータベースに含まれる各ワーク8の現在位置を算出した移動距離だけオフセットする。
 PLCエンジン136は、画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過したか否かを判断する(ステップS104)。画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過していれば(ステップS104においてYESの場合)、PLCエンジン136は、画像処理エンジン1422へ撮像トリガを送信する(ステップS106)。
 画像処理エンジン1422へ撮像トリガを前回送信してから所定の時間が経過していなければ(ステップS104においてNOの場合)、ステップS106の処理はスキップされる。
 ステップS104およびステップS106の処理は、カメラ20によるコンベア6上の撮像範囲を撮像するタイミングを決定する処理に相当する。カメラ20により撮像された複数の画像に同一のワーク8が被写体として重複して含まれないように、撮像するタイミングが制御される。
 PLCエンジン136は、カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信したか否かを判断する(ステップS108)。カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信すれば(ステップS108においてYESの場合)、PLCエンジン136は、画像処理エンジン1422から受信したワーク8の位置をトラッキングデータベースに追加する(ステップS110)。
 カメラ20により撮像された画像に基づいて認識されたワーク8の位置を画像処理エンジン1422から受信していなければ(ステップS108においてNOの場合)、ステップS110の処理はスキップされる。
 光電センサ30によりワーク8が検出されたことを示す信号が入力されたか否かを判断する(ステップS112)。光電センサ30によりワーク8が検出されたことを示す信号が入力されると(ステップS112においてYESの場合)、PLCエンジン136は、トラッキングデータベースから対応するワーク8の位置を削除する(ステップS114)。
 光電センサ30によりワーク8が検出されたことを示す信号が入力されなければ(ステップS112においてNOの場合)、ステップS114の処理はスキップされる。
 PLCエンジン136は、トラッキングデータベースを参照して、ワーク8をコンベア6上にプレイスする条件(プレイス条件)が成立したか否かを判断する(ステップS116)。プレイス条件が成立すれば(ステップS116においてYESの場合)、PLCエンジン136は、カスタムロボット550の動作フラグをオンにセットする(ステップS118)。
 プレイス条件が成立していなければ(ステップS116においてNOの場合)、ステップS118の処理はスキップされる。
 PLCエンジン136は、トラッキングデータベースを参照して、コンベア6上からワーク8をピックする条件(ピック条件)が成立したか否かを判断する(ステップS120)。ピック条件が成立すれば(ステップS120においてYESの場合)、PLCエンジン136は、ピック対象のワーク8の位置の情報を含む制御指令をロボットコントロールエンジン1420へ送信する(ステップS122)。そして、PLCエンジン136は、トラッキングデータベースからピック対象のワーク8の位置を削除する(ステップS124)。
 ピック条件が成立していなければ(ステップS120においてNOの場合)、ステップS122およびS124の処理はスキップされる。
 なお、ステップS102~S124の処理は、主として、IECプログラム138に含まれるシーケンス命令1382に記述される。
 続いて、PLCエンジン136は、カスタムロボット550の動作フラグがオンにセットされているか否かを判断する(ステップS150)。カスタムロボット550の動作フラグがオンにセットされていれば(ステップS150においてYESの場合)、PLCエンジン136は、IECプログラム138に含まれるモーション制御命令1384に従って、各サーボモータ530の状態値に基づいて、カスタムロボット550を構成する各サーボモータ530を駆動するための指令値を算出する(ステップS152)。
 PLCエンジン136は、IECプログラム138に含まれるモーション制御命令1384の実行が完了したか否かを判断する(ステップS154)。IECプログラム138に含まれるモーション制御命令1384の実行が完了すれば(ステップS154においてYESの場合)、PLCエンジン136は、動作フラグをオフにセットする(ステップS156)。
 IECプログラム138に含まれるモーション制御命令1384の実行が完了していなければ(ステップS154においてNOの場合)、ステップS156の処理はスキップされる。
 カスタムロボット550の動作フラグがオンされていなければ(ステップS150においてNOの場合)、ステップS152~S156の処理はスキップされる。
 なお、ステップS150~S156の処理は、主として、IECプログラム138に含まれるモーション制御命令1384に記述される。
 画像処理エンジン1422は、PLCエンジン136から撮像トリガを受信したか否かを判断する(ステップS200)。PLCエンジン136から撮像トリガを受信していなければ(ステップS200においてNOの場合)、ステップS200の処理が繰り返される。
 PLCエンジン136から撮像トリガを受信すれば(ステップS200においてYESの場合)、画像処理エンジン1422は、カメラ20により撮像された画像を取得し(ステップS202)、取得した画像に含まれるワーク8の位置を認識する(ステップS204)。認識したワーク8の位置は、カメラ座標系により規定される位置となる。
 画像処理エンジン1422は、認識したワーク8の位置をワールド座標系の位置に変換し(ステップS206)、変換したワーク8の位置をPLCエンジン136へ出力する(ステップS208)。そして、ステップS200以下の処理が繰り返される。
 ロボットコントロールエンジン1420は、PLCエンジン136から新たな制御指令を受信したか否かを判断する(ステップS300)。PLCエンジン136から新たな制御指令を受信していなければ(ステップS300においてNOの場合)、ステップS300の処理が繰り返される。
 PLCエンジン136から新たな制御指令を受信すれば(ステップS300においてYESの場合)、ロボットコントロールエンジン1420は、受信した制御指令に従って、ロボットプログラム1442のうち対象の部分を解釈して、産業用ロボット650を制御するための命令を順次生成を開始する(ステップS302)。そして、ロボットコントロールエンジン1420は、順次生成する命令をロボットコントローラ600へ送信する(ステップS304)。
 ロボットコントロールエンジン1420は、ロボットコントローラ600から産業用ロボット650の現在位置を取得する(ステップS306)。取得した産業用ロボット650の現在位置は、カメラ座標系により規定される位置となる。ロボットコントロールエンジン1420は、取得した産業用ロボット650の現在位置をワールド座標系の位置に変換し(ステップS308)、変換した産業用ロボット650の現在位置をPLCエンジン136へ出力する(ステップS310)。
 ロボットコントロールエンジン1420は、産業用ロボット650を制御するための命令の生成が継続しているか否かを判断する(ステップS312)。産業用ロボット650を制御するための命令の生成が継続していれば(ステップS312においてYESの場合)、ステップS304以下の処理を繰り返す。
 産業用ロボット650を制御するための命令の生成が継続していなければ(ステップS312においてNOの場合)、ステップS300以下の処理が繰り返される。
 図9は、図7に示すコンベアシステム2における処理を実現するための制御装置100に実現されるソフトウェア構成例を示す模式図である。図9を参照して、PLCエンジン136と、ロボットコントロールエンジン1420と、画像処理エンジン1422とが互いにデータをやり取りするとともに、それぞれのエンジンが制御対象との間でデータあるいは信号をやり取りする。
 より具体的には、PLCエンジン136は、コンベアシステム2に含まれるエンコーダ32から回転速度などの信号を取得するとともに、光電センサ30からワーク8を検出する信号を取得する。また、PLCエンジン136は、サーボドライバ500に対して指令値を与えるとともに、サーボドライバ500から状態値を取得する。
 さらに、PLCエンジン136は、ロボットコントロールエンジン1420に対して、制御指令を与えるとともに、ロボットコントロールエンジン1420から産業用ロボット650の現在位置を取得する。また、PLCエンジン136は、画像処理エンジン1422に対して、撮像トリガを与えるとともに、画像処理エンジン1422から画像処理エンジン1422により検出されたワーク8の位置を取得する。
 ロボットコントロールエンジン1420は、ロボットコントローラ600に対して、産業用ロボット650を制御するための命令を与えるとともに、ロボットコントローラ600から産業用ロボット650の現在位置を取得する。
 画像処理エンジン1422は、カメラ20により撮像された画像を取得する。なお、画像処理エンジン1422からカメラ20に対して撮像指令を与えるようにしてもよい。
 図9に示すように、制御装置100に含まれるPLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422は、現実の制御対象との間でデータあるいは信号をやり取りすることで、コンベアシステム2を制御する。
 <F.ビジュアライザ>
 次に、本実施の形態に従う制御システム1に実装されるビジュアライザ1428について説明する。ビジュアライザ1428は、制御装置100が制御する制御対象(装置や設備など)の状態を仮想空間で視覚化する。
 図10は、本実施の形態に係る制御システム1に実装されるビジュアライザ1428のより詳細な構成を示す模式図である。図10を参照して、ビジュアライザ1428は、変数マネジャ1322が管理する変数の値を参照して、制御対象を仮想空間で再現した再現画像1430を生成する。再現画像1430は、動画像であってもよいし、静止画像であってもよい。
 より具体的には、ビジュアライザ1428は、コンベア6を模擬するコンベアモデル14281と、カスタムロボット550を模擬するカスタムロボットモデル14282と、産業用ロボット650を模擬する産業用ロボットモデル14283と、オブジェクトライブラリ14284とを含む。
 オブジェクトライブラリ14284は、再現画像1430を合成するための画像データなどを含む。
 図11は、本実施の形態に係る制御システム1に実装されるビジュアライザ1428が提供する再現画像1430の一例を示す模式図である。図11に示すような再現画像1430を制御装置100の表示部108などに表示できる。
 ユーザは、表示された再現画像1430を見ながら、ユーザプログラム1108の動作確認や不具合発見などを行うことができる。
 現実に制御対象が存在する場合には、ビジュアライザ1428が提供する再現画像1430は、現実の制御対象の挙動をそのまま反映したものとなる。一方、制御対象の全部または一部が現実に存在しなくても、制御装置100の各エンジンが処理を実行するとともに、その処理結果に基づいてビジュアライザ1428があたかも現実の制御対象が存在するような再現画像1430を提供することもできる。
 本実施の形態に従う制御システム1では、制御対象の一部または全部が存在しなくても、あたかも現実の制御対象が存在するかのように、ユーザプログラム1108の動作を確認できる。以下、制御装置100が提供するユーザプログラムをフレキシブルに開発できる機能について説明する。
 <G.フレキシブルな開発を行うための環境>
 本実施の形態に従う制御システム1においては、制御対象の一部または全部を自在に模擬する機構(模擬モジュール)が用意される。
 図12は、図7に示すコンベアシステム2が実在しない場合であっても制御装置100における処理を実行するためのソフトウェア構成例を示す模式図である。以下では、図9と図12とを比較しつつ説明する。
 図9に示す制御装置100との間でデータあるいは信号をやり取りする制御対象は、制御装置100に実装されるエミュレータ1424、物理シミュレータ1426およびビジュアライザ1428の少なくとも1つにより模擬される。すなわち、模擬モジュールは、エミュレータ1424、物理シミュレータ1426およびビジュアライザ1428の少なくとも1つにより実現されてもよい。このような制御対象の模擬によって、制御対象が実在する場合と同様に、制御装置100においてユーザプログラム1108を実行できる。
 (g1:エンコーダ32)
 コンベアシステム2のエンコーダ32は、エミュレータ1424にコンベア設定14241を設定することで模擬できる。エミュレータ1424は、コンベア設定14241に従って、エンコーダ32からの回転速度を模擬した情報をPLCエンジン136に提供する。
 このように、エンコーダ32についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現される。
 (g2:光電センサ30)
 コンベアシステム2の光電センサ30は、ビジュアライザ1428に衝突検出設定14285を設定することで模擬できる。ビジュアライザ1428は、衝突検出設定14285に従って、仮想空間において光電センサ30の検出範囲に対応付けて設定された仮想オブジェクトとワーク8との衝突検知を行うことで、ワーク8が検出されたことを示す信号をPLCエンジン136に提供する。衝突検知は、オブジェクト同士の距離の近さに基づいて、当該オブジェクト同士が衝突しているか否かを判断する処理である。
 図13は、図12に示すビジュアライザ1428による衝突検出を行うための仮想オブジェクトの設定例を示す模式図である。図13を参照して、仮想空間において光電センサ30の検出範囲に対応付けて仮想オブジェクト14286が設定される。コンベア6上のワーク8の位置は、PLCエンジン136が管理するトラッキングデータベースに応じて更新される。ビジュアライザ1428は、いずれかのワーク8が仮想オブジェクト14286と衝突したか否かを判断し、ワーク8が仮想オブジェクト14286と衝突したと判断すると、光電センサ30によるワーク8の検出を示す信号を生成する。
 このように、光電センサ30についての模擬モジュールは、ビジュアライザ1428によって視覚化された仮想空間における衝突検知の結果を利用して実現される。
 (g3:カスタムロボット550)
 コンベアシステム2のカスタムロボット550は、エミュレータ1424にサーボドライバモデル14242を設定するとともに、物理シミュレータ1426にカスタムロボットモデル14261を設定することで模擬できる。
 サーボドライバモデル14242は、サーボドライバ500の応答特性などを反映したパラメータを含む。エミュレータ1424は、サーボドライバモデル14242に従って、PLCエンジン136からの指令値に応じてサーボドライバの状態値を算出し、算出した状態値をPLCエンジン136に提供する。
 カスタムロボットモデル14261は、サーボモータ530およびカスタムロボット550のキネマティクスなどを反映したパラメータを含む。物理シミュレータ1426は、カスタムロボットモデル14261に従って、エミュレータ1424により算出される状態値に応じてカスタムロボットモデル14261の状態値および現在位置などを算出する。
 なお、図12には、サーボドライバ500およびサーボモータ530を含むカスタムロボット550を、エミュレータ1424および物理シミュレータ1426により模擬する構成例を示すが、単一のエミュレータ1424を用いて模擬するようにしてもよい。
 このように、カスタムロボット550についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現されるとともに、制御対象に含まれる物体の物理的な動作を模擬する物理シミュレータ1426を用いて実現される。
 (g4:産業用ロボット650)
 コンベアシステム2の産業用ロボット650は、エミュレータ1424にロボットコントローラモデル14243を設定するとともに、物理シミュレータ1426に産業用ロボットモデル14262を設定することで模擬できる。
 ロボットコントローラモデル14243は、ロボットコントローラ600の応答特性などを反映したパラメータを含む。エミュレータ1424は、ロボットコントローラモデル14243に従って、ロボットコントロールエンジン1420からの命令に応じて、産業用ロボット650を駆動するための内部命令を生成する。エミュレータ1424は、物理シミュレータ1426により算出される産業用ロボット650の現在位置などをロボットコントロールエンジン1420に提供する。
 産業用ロボットモデル14262は、産業用ロボット650の応答特性およびキネマティクスなどを反映したパラメータを含む。物理シミュレータ1426は、産業用ロボットモデル14262に従って、エミュレータ1424により算出される内部命令に応じて産業用ロボット650の速度、加速度、現在位置などを算出する。
 なお、図12には、ロボットコントローラ600および産業用ロボット650を、エミュレータ1424および物理シミュレータ1426により模擬する構成例を示すが、単一のエミュレータ1424を用いて模擬するようにしてもよい。
 このように、産業用ロボット650についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現されるとともに、制御対象に含まれる物体の物理的な動作を模擬する物理シミュレータ1426を用いて実現される。
 (g5:カメラ20)
 コンベアシステム2のカメラ20は、エミュレータ1424に模擬画像群14244を設定することで模擬できる。模擬画像群14244は、予め定められたワーク8のプレイスパターンに対応する1または複数の画像からなる。エミュレータ1424は、画像処理エンジン1422を介して提供される撮像トリガに応じて、模擬画像群14244に含まれる画像を画像処理エンジン1422に順次提供する。
 コンベアシステム2上にワーク8が順次プレイスされた搬送される状態を仮想空間で模擬するとともに、カメラ20に対応する位置に配置された仮想カメラを用いて仮想的な撮像を行うことで、模擬画像群14244を生成してもよい。
 このように、カメラ20についての模擬モジュールは、制御対象に含まれる装置または設備の挙動を模擬するエミュレータ1424を用いて実現される。
 さらに、模擬画像群14244を用意することなく、ビジュアライザ1428が提供する仮想空間に仮想カメラを設定して、仮想カメラにより仮想的に撮像されることで生成される画像を画像処理エンジン1422に順次提供してもよい。すなわち、エミュレータ1424および模擬画像群14244を用いるのではなく、ビジュアライザ1428に仮想カメラを設定することで、コンベアシステム2のカメラ20を模擬してもよい。
 上述の説明においては、制御対象のすべてを模擬した状態で制御装置100においてユーザプログラム1108を実行する場合を例示したが、これに限らず、制御対象の任意の一部を模擬するようにしてもよい。
 図14は、図7に示すコンベアシステム2において産業用ロボット650が配置されていない状態でユーザプログラムを実行する場合を説明するための図である。図14(A)には、図7に示すコンベアシステム2において産業用ロボット650がまだ配置されていない状態を示す。図14(A)に示すような状態であっても、上述したような産業用ロボット650を模擬する仕組みを有効化することで、産業用ロボット650が現実に存在しなくても、図14(B)に示すような再現画像1430を表示できる。
 ユーザは、図14(B)に示すような再現画像1430を見ながら、ユーザプログラム1108の動作確認や不具合発見などを行うことができる。
 図15は、図14に示す状態を実現するためのソフトウェア構成例を示す模式図である。図15に示す制御装置100においては、ロボットコントローラ600および産業用ロボット650を模擬する、エミュレータ1424(ロボットコントローラモデル14243が設定されている)および物理シミュレータ1426(産業用ロボットモデル14262が設定されている)が有効化される。このようなロボットコントローラ600および産業用ロボット650を模擬する模擬モジュール(エミュレータ1424および物理シミュレータ1426を用いて実現される)によって、制御装置100(PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422)は、現実にコンベアシステム2が存在する場合と同様に、ユーザプログラム1108を実行できる。
 なお、図14および図15に示すソフトウェア構成例は一例であり、制御装置100が制御する制御対象の任意の一部または全部を模擬する模擬モジュールを有効化することができる。
 上述したような環境を提供することで、ユーザは、ユーザプログラム1108をフレキシブルに開発できる。
 <H.制御装置100/サポート装置200における設定>
 制御装置100で実行されるユーザプログラム1108、および、ユーザプログラム1108を実行するための環境などを規定するプログラム実行設定1110は、ユーザが統合開発環境上で作成する。統合開発環境は、サポート装置200が開発プログラム2104(図4参照)を実行することで実現されてもよい。但し、制御装置100が開発プログラム2104を実行することで、制御装置100が統合開発環境を提供するようにしてもよい。
 本実施の形態に従う制御装置100においては、制御対象の任意の一部を模擬して処理を実行することもできる。プログラム実行設定1110(図4参照)は、このような制御対象の任意の一部を模擬するか否かの設定を含む。
 図16は、本実施の形態に従う制御システム1において提供されるユーザプログラム1108に係る設定画面の一例を示す図である。図16に示される設定画面250において、ユーザプログラム1108に関連付けられる制御対象のデバイスを選択および設定できる。
 制御対象のデバイスは、現実のデバイスに加えて、仮想のデバイス(現実のデバイスを模擬したもの)を含む。
 より具体的には、設定画面250は、ユーザプログラム1108に関連付けられるデバイスを登録するデバイス登録フィールド252と、各デバイスのプロパティを登録するデバイスプロパティフィールド254とを含む。
 ユーザがデバイス登録フィールド252をクリックすると、デバイスを選択するためのデバイス選択画面260が表示される。デバイス選択画面260は、現実のデバイスの一覧262と、仮想のデバイスの一覧264とを含む。
 ユーザは、デバイス選択画面260において、現実のデバイスおよび仮想のデバイスのいずれについても任意に選択ができる。ユーザによる選択結果は、プログラム実行設定1110に反映される。そして、制御装置100で実行されるユーザプログラム1108は、選択されたデバイスに関連付けられる。
 このように、サポート装置200(あるいは、制御装置100)は、PLCエンジン136、ロボットコントロールエンジン1420および画像処理エンジン1422のいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスの一例として、図16に示すような設定画面250を提供する。
 図17は、本実施の形態に従う制御システム1におけるユーザプログラム1108の開発処理の概略処理を示すフローチャートである。図17に示す各ステップは、典型的には、サポート装置200のプロセッサ202が開発プログラム2104を実行することで実現される。
 図17を参照して、サポート装置200は、ユーザによる操作に従って、ユーザプログラム1108のソースコードを生成する(ステップS400)。
 サポート装置200は、ユーザによる操作に従って、ユーザプログラム1108に関連付けられるデバイスの選択を受け付ける(ステップS402)。サポート装置200は、選択されたデバイスの種類を判断する(ステップS404)。選択されたデバイスが現実のデバイスであれば(ステップS404において「現実のデバイス」の場合)、サポート装置200は、選択されたデバイスのネットワークアドレスなどの特定情報とユーザプログラム1108とを関連付ける(ステップS406)。
 選択されたデバイスが仮想のデバイスであれば(ステップS404において「仮想のデバイス」の場合)、サポート装置200は、選択された仮想のデバイスに対応する模擬モジュールを構築する(ステップS408)。より具体的には、サポート装置200は、エミュレータ1424、物理シミュレータ1426およびビジュアライザ1428のうち1または複数に対して、選択されたデバイスの設定を反映することで、選択されたデバイスを模擬する模擬モジュールを構築する。続いて、サポート装置200は、構築した仮想のデバイスに対応する模擬モジュールとユーザプログラム1108とを関連付ける(ステップS410)。
 このように、サポート装置200(あるいは、制御装置100)は、仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する模擬モジュールを構築する。すなわち、サポート装置200(あるいは、制御装置100)は、ユーザ設定に従って、制御対象と、ロボットと、カメラとのうち少なくとも一部を模擬する模擬モジュールを構築することができる。
 サポート装置200は、デバイスの選択が終了したか否かを判断する(ステップS412)。デバイスの選択が終了していなければ(ステップS412においてNOの場合)、ステップS402以下の処理が繰り返される。
 一方、デバイスの選択が終了していれば(ステップS412においてYESの場合)、サポート装置200は、ユーザプログラム1108のソースコードから実行形式のプログラムを生成し(ステップS414)、デバイスの選択結果を反映したプログラム実行設定1110を生成する(ステップS416)。
 最終的に、サポート装置200は、生成したユーザプログラム1108(実行形式)およびプログラム実行設定1110を制御装置100へ転送する(ステップS416)。そして処理は終了する。このように、サポート装置200が構築した模擬モジュールを制御装置100へ提供するようにしてもよい。
 <I.変形例>
 上述の説明においては、制御装置100とサポート装置200とが分離した構成例を示すが、サポート装置200が提供する機能の一部または全部を制御装置100に組み入れてもよい。この場合、ユーザは、制御装置100が提供する統合開発環境を利用することで、ユーザプログラム1108を開発することができる。
 <J.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
 [構成1]
 制御対象(4)を制御するための制御装置(100)であって、
 シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、
 ロボット(600,650)を制御するためのロボットコントロールエンジン(1420)と、
 カメラ(20)からの画像に対して画像処理を実行する画像処理エンジン(1422)と、
 ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)とを備える、制御装置。
 [構成2]
 前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンの処理結果に基づいて、前記制御対象の状態を仮想空間で視覚化するビジュアライザ(1428)をさらに備える、構成1に記載の制御装置。
 [構成3]
 前記模擬モジュールは、前記ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現される、構成2に記載の制御装置。
 [構成4]
 前記模擬モジュールは、前記制御対象に含まれる装置または設備の挙動を模擬するエミュレータ(1424)を用いて実現される、構成1~3のいずれか1項に記載の制御装置。
 [構成5]
 前記模擬モジュールは、前記制御対象に含まれる物体の物理的な動作を模擬するシミュレータ(1426)を用いて実現される、構成1~4のいずれか1項に記載の制御装置。
 [構成6]
 前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイス(250)と、
 前記仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する前記模擬モジュールを構築する構築手段(2105)とをさらに備える、構成1~5のいずれか1項に記載の制御装置。
 [構成7]
 前記PLCエンジンは、ロボット(550)を駆動する1または複数のモータ(530)を制御するモーション制御命令(1384)をサイクリック実行し、
 前記ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成する、構成1~6のいずれか1項に記載の制御装置。
 [構成8]
 共通のハードウェアリソース(130)を管理するハイパーバイザ(132)をさらに備え、
 前記ハイパーバイザは、リアルタイムOS(134)および汎用OS(140)の実行環境を提供し、
 前記PLCエンジンは、前記リアルタイムOS上で実行され、
 前記ロボットコントロールエンジンおよび前記画像処理エンジンは、前記汎用OSで実行される、構成1~7のいずれか1項に記載の制御装置。
 [構成9]
 制御対象(4)を制御するための制御システム(1)であって、
 シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、ロボット(600,650)を制御するためのロボットコントロールエンジン(1420)と、カメラ(20)からの画像に対して画像処理を実行する画像処理エンジン(1422)とを含む制御装置(100)と、
 ユーザ設定に従って、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)を構築するとともに、当該構築した模擬モジュールを前記制御装置へ提供するサポート装置(200)とを備える、制御システム。
 [構成10]
 制御対象(4)を制御するための制御装置(100)を実現するためのプログラム(1102,1104,1106)であって、前記プログラムはコンピュータ(100)を、
 シーケンス命令(1382)を含むプログラムをサイクリック実行するPLCエンジン(136)と、
 ロボットを制御するためのロボットコントロールエンジン(1420)と、
 カメラからの画像に対して画像処理を実行する画像処理エンジン(1422)と、
 ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュール(148)として機能させる、プログラム。
 <K.利点>
 本実施の形態に係る制御システム1によれば、複雑な制御をより簡単な構成で実現できるとともに、プログラム開発を容易化することができる。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 制御システム、2 コンベアシステム、4 制御対象、6 コンベア、8 ワーク、10 ネットワークハブ、12 上位ネットワーク、14 フィールドネットワーク、20 カメラ、30 光電センサ、32 エンコーダ、100 制御装置、102,202 プロセッサ、104,204 メインメモリ、106,206 入力部、108,208 表示部、110,210 ストレージ、112,114,212 通信コントローラ、116,216 光学ドライブ、118,218 記憶媒体、120 メモリカードインターフェイス、122 メモリカード、124,224 USBコントローラ、128,228 プロセッサバス、130 ハードウェアリソース、132 ハイパーバイザ、134 RTOS、136 PLCエンジン、138 IECプログラム、140 汎用OS、142 アプリケーションエンジン、144 アプリケーションプログラム、148 模擬モジュール、200 サポート装置、250 設定画面、252 デバイス登録フィールド、254 デバイスプロパティフィールド、260 デバイス選択画面、262 現実のデバイスの一覧、264 仮想のデバイスの一覧、300 表示装置、400 サーバ装置、500 サーボドライバ、530 サーボモータ、550 カスタムロボット、600 ロボットコントローラ、650 産業用ロボット、700 安全コントローラ、750 安全デバイス、800 IOユニット、1102 OS、1104 プログラム、1106 アプリケーションエンジンプログラム、1108 ユーザプログラム、1110 プログラム実行設定、1320 スケジューラ、1322 変数マネジャ、1382 シーケンス命令、1384 モーション制御命令、1420 ロボットコントロールエンジン、1422 画像処理エンジン、1424 エミュレータ、1426 物理シミュレータ、1428 ビジュアライザ、1430 再現画像、1442 ロボットプログラム、1444 画像処理設定、2104 開発プログラム、2105 構築モジュール、14241 コンベア設定、14242 サーボドライバモデル、14243 ロボットコントローラモデル、14244 模擬画像群、14261,14282 カスタムロボットモデル、14262,14283 産業用ロボットモデル、14281 コンベアモデル、14284 オブジェクトライブラリ、14285 衝突検出設定、14286 仮想オブジェクト。

Claims (10)

  1.  制御対象を制御するための制御装置であって、
     シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、
     ロボットを制御するためのロボットコントロールエンジンと、
     カメラからの画像に対して画像処理を実行する画像処理エンジンと、
     ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールとを備える、制御装置。
  2.  前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンの処理結果に基づいて、前記制御対象の状態を仮想空間で視覚化するビジュアライザをさらに備える、請求項1に記載の制御装置。
  3.  前記模擬モジュールは、前記ビジュアライザによって視覚化された仮想空間における衝突検知の結果を利用して実現される、請求項2に記載の制御装置。
  4.  前記模擬モジュールは、前記制御対象に含まれる装置または設備の挙動を模擬するエミュレータを用いて実現される、請求項1~3のいずれか1項に記載の制御装置。
  5.  前記模擬モジュールは、前記制御対象に含まれる物体の物理的な動作を模擬するシミュレータを用いて実現される、請求項1~4のいずれか1項に記載の制御装置。
  6.  前記PLCエンジン、前記ロボットコントロールエンジンおよび前記画像処理エンジンのいずれかに関連付けられるデバイスを、現実のデバイスおよび仮想のデバイスを含む候補から任意に選択するユーザインターフェイスと、
     前記仮想のデバイスが選択されると、当該選択された仮想のデバイスに対応する前記模擬モジュールを構築する構築手段とをさらに備える、請求項1~5のいずれか1項に記載の制御装置。
  7.  前記PLCエンジンは、ロボットを駆動する1または複数のモータを制御するモーション制御命令をサイクリック実行し、
     前記ロボットコントロールエンジンは、ロボットプログラムに従って、ロボットを制御するための命令を順次生成する、請求項1~6のいずれか1項に記載の制御装置。
  8.  共通のハードウェアリソースを管理するハイパーバイザをさらに備え、
     前記ハイパーバイザは、リアルタイムOSおよび汎用OSの実行環境を提供し、
     前記PLCエンジンは、前記リアルタイムOS上で実行され、
     前記ロボットコントロールエンジンおよび前記画像処理エンジンは、前記汎用OSで実行される、請求項1~7のいずれか1項に記載の制御装置。
  9.  制御対象を制御するための制御システムであって、
     シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、ロボットを制御するためのロボットコントロールエンジンと、カメラからの画像に対して画像処理を実行する画像処理エンジンとを含む制御装置と、
     ユーザ設定に従って、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールを構築するとともに、当該構築した模擬モジュールを前記制御装置へ提供するサポート装置とを備える、制御システム。
  10.  制御対象を制御するための制御装置を実現するためのプログラムであって、前記プログラムはコンピュータを、
     シーケンス命令を含むプログラムをサイクリック実行するPLCエンジンと、
     ロボットを制御するためのロボットコントロールエンジンと、
     カメラからの画像に対して画像処理を実行する画像処理エンジンと、
     ユーザ設定に従って構築される、前記制御対象と、前記ロボットと、前記カメラとのうち少なくとも一部を模擬する模擬モジュールとして機能させる、プログラム。
PCT/JP2021/008668 2020-09-04 2021-03-05 制御装置、制御システムおよびプログラム WO2022049805A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/041,498 US20230341835A1 (en) 2020-09-04 2021-03-05 Control device, control system, and program
CN202180056383.2A CN116056842A (zh) 2020-09-04 2021-03-05 控制装置、控制系统以及程序
EP21863866.6A EP4209314A1 (en) 2020-09-04 2021-03-05 Control device, control system, and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-149365 2020-09-04
JP2020149365A JP2022043871A (ja) 2020-09-04 2020-09-04 制御装置、制御システムおよびプログラム

Publications (1)

Publication Number Publication Date
WO2022049805A1 true WO2022049805A1 (ja) 2022-03-10

Family

ID=80490858

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/008668 WO2022049805A1 (ja) 2020-09-04 2021-03-05 制御装置、制御システムおよびプログラム

Country Status (5)

Country Link
US (1) US20230341835A1 (ja)
EP (1) EP4209314A1 (ja)
JP (1) JP2022043871A (ja)
CN (1) CN116056842A (ja)
WO (1) WO2022049805A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133708A (ja) * 1996-10-31 1998-05-22 Mitsubishi Electric Corp 生産システム
US20120101613A1 (en) * 2010-10-22 2012-04-26 Agile Planet, Inc. Method and Apparatus for Integrated Simulation
JP2016042378A (ja) * 2015-11-12 2016-03-31 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム
JP2017097427A (ja) * 2015-11-18 2017-06-01 オムロン株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP2018069367A (ja) * 2016-10-27 2018-05-10 ファナック株式会社 ロボットシステムの動作のシミュレーションを行うシミュレーション装置、シミュレーション方法、およびコンピュータプログラムを記録する記録媒体
JP2019215635A (ja) 2018-06-11 2019-12-19 オムロン株式会社 制御システム、制御装置、画像処理装置およびプログラム
JP2020011340A (ja) * 2018-07-19 2020-01-23 オムロン株式会社 シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133708A (ja) * 1996-10-31 1998-05-22 Mitsubishi Electric Corp 生産システム
US20120101613A1 (en) * 2010-10-22 2012-04-26 Agile Planet, Inc. Method and Apparatus for Integrated Simulation
JP2016042378A (ja) * 2015-11-12 2016-03-31 オムロン株式会社 シミュレーション装置、シミュレーション方法、および、シミュレーションプログラム
JP2017097427A (ja) * 2015-11-18 2017-06-01 オムロン株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP2018069367A (ja) * 2016-10-27 2018-05-10 ファナック株式会社 ロボットシステムの動作のシミュレーションを行うシミュレーション装置、シミュレーション方法、およびコンピュータプログラムを記録する記録媒体
JP2019215635A (ja) 2018-06-11 2019-12-19 オムロン株式会社 制御システム、制御装置、画像処理装置およびプログラム
JP2020011340A (ja) * 2018-07-19 2020-01-23 オムロン株式会社 シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法

Also Published As

Publication number Publication date
JP2022043871A (ja) 2022-03-16
US20230341835A1 (en) 2023-10-26
EP4209314A1 (en) 2023-07-12
CN116056842A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
EP3171236B1 (en) Simulator, simulation method, and simulation program
JP6950347B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP6965798B2 (ja) 制御システムおよび制御方法
EP3441831B1 (en) Information processing device, information processing method, and information processing program
EP3441830B1 (en) Information processing device, information processing method, and information processing program
CN103477290A (zh) 控制器辅助装置、用于在该装置中执行的控制器辅助程序以及存储有该程序的记录介质
CN114488843A (zh) 工业网络通信仿真
US20230153486A1 (en) Method and device for simulation
JP2019061523A (ja) 情報処理装置、情報処理方法およびプログラム
CN114329801A (zh) 统一多个模拟模型
WO2019202934A1 (ja) 情報処理システム、情報処理方法、および情報処理プログラム
WO2022049805A1 (ja) 制御装置、制御システムおよびプログラム
JP2021144588A (ja) ロボット制御システムおよび制御方法
EP3467603B1 (en) Information processing device, information processing method, and information processing program
JP7390405B2 (ja) 統合された物理的環境および模擬された環境でロボットシステムを試験するための方法およびシステム
WO2021181800A1 (ja) ロボット制御システムおよび制御方法
JP3325397B2 (ja) プログラマブルコントローラで実行されるプログラムのシミュレーションシステム
JPH1139011A (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: 21863866

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021863866

Country of ref document: EP

Effective date: 20230404