WO2021261018A1 - シミュレーション装置、制御システム、シミュレーション方法及びプログラム - Google Patents

シミュレーション装置、制御システム、シミュレーション方法及びプログラム Download PDF

Info

Publication number
WO2021261018A1
WO2021261018A1 PCT/JP2021/008011 JP2021008011W WO2021261018A1 WO 2021261018 A1 WO2021261018 A1 WO 2021261018A1 JP 2021008011 W JP2021008011 W JP 2021008011W WO 2021261018 A1 WO2021261018 A1 WO 2021261018A1
Authority
WO
WIPO (PCT)
Prior art keywords
simulation
simulator
communication
controller
control
Prior art date
Application number
PCT/JP2021/008011
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 EP21829261.3A priority Critical patent/EP4160334A1/en
Priority to CN202180044241.4A priority patent/CN115836258A/zh
Priority to JP2022532294A priority patent/JP7400104B2/ja
Publication of WO2021261018A1 publication Critical patent/WO2021261018A1/ja
Priority to US18/068,534 priority patent/US20230121498A1/en
Priority to JP2023206421A priority patent/JP2024015247A/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/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
    • 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
    • G05B17/00Systems involving the use of models or simulators of said systems
    • G05B17/02Systems involving the use of models or simulators of said systems electric
    • 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/406Numerical 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 monitoring or safety
    • G05B19/4069Simulating machining process on screen
    • 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/33Director till display
    • G05B2219/33274Integrated communication and control, transmission delay, sampling rate effect
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • This disclosure relates to a simulation device, a control system, a simulation method and a program.
  • Patent Document 1 describes a model storage unit that stores model information about a robot and an obstacle, and a path that can move the tip of the robot from a start position to an end position while avoiding a collision between the robot and the obstacle.
  • a robot simulator including an information processing unit that generates information based on information is disclosed.
  • the present disclosure provides a device effective for appropriate simulation of cooperative operation by a plurality of devices.
  • the simulation apparatus includes a first simulator that simulates control by a first controller for a first machine, a second simulator that simulates control by a second controller for a second machine, and control by a first controller.
  • a simulation manager that controls the progress of the simulation by the first simulator and the progress of the simulation by the second simulator is provided so as to correspond to the relationship between the progress of the simulation and the progress of the control by the second controller.
  • the control system is the above-mentioned simulation apparatus having a communication simulator having a communication simulator that causes a receiver-side simulator to acquire communication data generated by a transmission-side simulator at a timing based on a predetermined virtual delay time. And an actual control system including the first controller and the second controller, and a virtual delay setting unit for making the virtual delay time correspond to the communication delay time between the first controller and the second controller.
  • the control system includes the simulation device, the actual control system including the first controller, the second controller, the progress of control of the first machine by the first controller, and the second controller. It is provided with a comparative image generation unit that generates a comparative image that compares the progress of control of the second machine by the above, the progress of the simulation by the first simulator, and the progress of the simulation by the second simulator.
  • the simulation method is to simulate the control by the first controller for the first machine by the first simulator and the control by the second controller for the second machine by the second simulator. , Controlling the progress of the simulation by the first simulator and the progress of the simulation by the second simulator so as to correspond to the relationship between the progress of the control by the first controller and the progress of the control by the second controller.
  • the program according to still another aspect of the present disclosure is based on a first simulator that simulates control by a first controller for a first machine, a second simulator that simulates control by a second controller for a second machine, and a first controller.
  • the device is configured with a simulation manager that controls the progress of the simulation by the first simulator and the progress of the simulation by the second simulator so as to correspond to the relationship between the progress of the control and the progress of the control by the second controller. ..
  • the machine system 1 shown in FIG. 1 is a system in which a plurality of machines 3 are operated in cooperation with each other.
  • a specific example of the machine system 1 is a production system in which a plurality of machines 3 are operated in cooperation with each other so as to produce a work, but the operation purpose of the plurality of machines 3 is not necessarily limited to the production of the work.
  • Coordinating the operation of a plurality of machines 3 means, for example, sharing a plurality of operations for achieving the same purpose among a plurality of machines, and determining the operation result of any one of the machines. Depending on the situation, it may include operating other machines.
  • the machine system 1 may divide and perform a plurality of tasks for obtaining one workpiece among a plurality of machines 3, and a plurality of tasks for each of the plurality of workpieces. The work may be shared and carried out by a plurality of machines 3.
  • the machine system 1 includes a plurality of machines 3, an actual control system 5 that controls the plurality of machines 3, a simulation device 100, and a data collection device 200. There is no particular limit to the number of machines 3.
  • the plurality of machines 3 may include a robot. As an example of the plurality of machines 3, FIG. 1 shows a conveyor 3A and robots 3B and 3C.
  • the conveyor 3A conveys the work by the power of, for example, an electric motor.
  • Specific examples of the conveyor 3A include a belt conveyor, a roller conveyor, and the like.
  • the robots 3B and 3C work on the work transported by the conveyor 3A.
  • Specific examples of work on the work include assembling other works (for example, sub-parts) to the work (for example, base parts) conveyed by the conveyor 3A, and fastening parts (for example, bolts) in the work conveyed by the conveyor 3A. Joining (eg welding) and the like can be mentioned.
  • the operation of the conveyor 3A and the robots 3B and 3C may include a cooperative operation of the conveyor 3A and the robots 3B and 3C.
  • the robots 3B and 3C may execute work on the work at the timing when the work is arranged at a predetermined work position by the conveyor 3A.
  • the conveyor 3A may interrupt the transfer of the work during the execution of the work by the robots 3B and 3C, and restart the transfer of the work after the work by the robots 3B and 3C is completed.
  • the operation of the conveyor 3A and the robots 3B and 3C may include the cooperative operation of the robots 3B and 3C.
  • the robot 3B may arrange the sub-parts at a predetermined assembly position on the base part conveyed by the conveyor 3A, and the robot 3C may fasten or join the sub-parts arranged by the robot 3B to the base part.
  • the robots 3B and 3C may share the fastening or joining at the plurality of points.
  • FIG. 2 is a schematic diagram illustrating the schematic configuration of the robots 3B and 3C.
  • the robots 3B and 3C are 6-axis vertical articulated robots, and have a base 11, a swivel portion 12, a first arm 13, a second arm 14, a third arm 17, a tip portion 18, and an actuator. It has 41, 42, 43, 44, 45, 46 and so on.
  • the base 11 is installed around the conveyor 3A.
  • the swivel portion 12 is provided on the base portion 11 so as to swivel around the vertical axis 21.
  • the first arm 13 is connected to the swivel portion 12 so as to swing around the axis 22 intersecting (for example, orthogonal to) the axis 21.
  • the intersection also includes a case where there is a twisting relationship such as a so-called grade separation.
  • the second arm 14 is connected to the tip of the first arm 13 so as to swing around an axis 23 substantially parallel to the axis 22.
  • the second arm 14 includes an arm base 15 and an arm end 16.
  • the arm base 15 is connected to the tip of the first arm 13 and extends along an axis 24 that intersects (eg, is orthogonal to) the axis 23.
  • the arm end 16 is connected to the tip of the arm base 15 so as to swivel around the axis 24.
  • the third arm 17 is connected to the tip end portion of the arm end portion 16 so as to swing around the axis line 25 intersecting (for example, orthogonal to) the axis line 24.
  • the tip 18 is connected to the tip of the third arm 17 so as to swivel around an axis 26 that intersects (eg, is orthogonal) the axis 25.
  • the robots 3B and 3C have a joint 31 connecting the base 11 and the swivel portion 12, a joint 32 connecting the swivel portion 12 and the first arm 13, and the first arm 13 and the second arm 14. 33, a joint 34 connecting the arm base 15 and the arm end 16 in the second arm 14, a joint 35 connecting the arm end 16 and the third arm 17, and a third arm 17. It has a joint 36 that connects to the tip 18.
  • Actuators 41, 42, 43, 44, 45, 46 include, for example, an electric motor and a speed reducer, and drive joints 31, 32, 33, 34, 35, 36, respectively.
  • the actuator 41 swings the swivel portion 12 around the axis 21
  • the actuator 42 swings the first arm 13 around the axis 22
  • the actuator 43 swings the second arm 14 around the axis 23, and the actuator 44 swings.
  • the arm end 16 is swiveled around the axis 24, the actuator 45 swings the third arm 17 around the axis 25, and the actuator 46 swivels the tip 18 around the axis 26.
  • the robots 3B and 3C can be changed as appropriate.
  • the robots 3B and 3C may be a 7-axis redundant robot in which a 1-axis joint is further added to the 6-axis vertical articulated robot, or may be a so-called scalar type articulated robot.
  • the control system 4 controls a plurality of machines 3.
  • the control system 4 will be described in detail below.
  • the control system 4 includes an actual control system 5 and a simulation device 100.
  • the actual control system 5 controls a plurality of machines 3.
  • the actual control system 5 may have a plurality of controllers 7 that control each of the plurality of machines 3 and a controller 6 that can communicate with the plurality of controllers 7.
  • FIG. 1 shows a controller 7A that controls the conveyor 3A, a controller 7B that controls the robot 3B, a controller 7C that controls the robot 3C, and a controller 6 that can communicate with the controllers 7A, 7B, and 7C. Has been done.
  • the controller 7A is a motor controller, and repeatedly executes segment processing for operating the conveyor 3A in a predetermined control cycle in response to a control command.
  • segment processing means a processing assigned and defined per cycle, and the content is not particularly limited as long as it is a processing processed for each cycle.
  • control command for the controller 7A is referred to as a "transport control command”
  • segment processing executed by the controller 7A is referred to as “transport segment processing”
  • transport control cycle for executing the transport segment processing is referred to as a "transport control cycle”.
  • the transfer control command includes, for example, a transfer target position and a moving speed of the work to the transfer target position.
  • the transfer segment processing includes calculating the operation target value of the conveyor 3A for each transfer control cycle based on the transfer control command, and operating the conveyor 3A according to the operation target value.
  • the controller 7B is a robot controller, and segment processing for operating the robot 3B in a control command is repeatedly executed in a predetermined control cycle.
  • the control command for the controller 7B is referred to as a "first robot control command”
  • the segment processing executed by the controller 7B is referred to as a “first robot segment processing”
  • the control cycle for executing the first robot segment processing is referred to as a “first robot segment processing”. It is called "robot control cycle”.
  • the first robot control command includes, for example, a job program execution command.
  • a job program is an operation program including one or more operation instructions arranged in a time series.
  • the job program is prepared in advance and stored in the controller 7B.
  • Each of the one or more operation commands includes a target position / posture of the tip portion 18 and a target moving speed of the tip portion 18 to the target position / posture.
  • the target position / posture of the tip portion 18 is calculated for each first robot control cycle based on the first robot control command, and the tip portion 18 is moved to the calculated target position / posture.
  • the actuators 41, 42, 43, 44, 45, 46 are calculated by inverse kinematics calculation, and the actuators 41, 42, 43, 44, 45, 46 are calculated according to the calculated motion target values. Including to operate.
  • the controller 7C is a robot controller, and segment processing for operating the robot 3C in a control command is repeatedly executed in a predetermined control cycle.
  • the control command for the controller 7C is referred to as a "second robot control command”
  • the segment processing executed by the controller 7C is referred to as a “second robot segment processing”
  • the control cycle for executing the second robot segment processing is referred to as a “second robot segment processing”. It is called "robot control cycle”.
  • the second robot control command includes, for example, a job program execution command.
  • a job program is an operation program including one or more operation instructions arranged in a time series.
  • the job program is prepared in advance and stored in the controller 7C.
  • Each of the one or more operation commands includes a target position / posture of the tip portion 18 and a target moving speed of the tip portion 18 to the target position / posture.
  • the target position / posture of the tip portion 18 is calculated for each second robot control cycle based on the second robot control command, and the tip portion 18 is moved to the calculated target position / posture.
  • the actuators 41, 42, 43, 44, 45, 46 are calculated by inverse kinematics calculation, and the actuators 41, 42, 43, 44, 45, 46 are calculated according to the calculated motion target values. Including to operate.
  • the controller 6 is, for example, a programmable logic controller, and repeatedly executes segment processing for coordinating the operations of a plurality of machines 3 in a predetermined control cycle.
  • segment processing executed by the controller 6 is referred to as “system segment processing”
  • control cycle for executing the system segment processing is referred to as "system control cycle”.
  • the machine 3 In the system segment processing, the machine 3 to receive the status information of the plurality of machines 3 and the work from the plurality of controllers 7 and the like, and to start a new operation based on the predetermined system program and the status information. (Hereinafter referred to as "controlled machine"), it includes specifying a control command for starting a new operation and transmitting a control command to the controller 7 of the controlled machine 3. For example, when the conveyor 3A is a controlled machine, the controller 6 transmits a transfer control command for causing the conveyor 3A to execute a new operation to the controller 7A based on the system program.
  • the controller 6 transmits a first robot control command for causing the robot 3B to execute a new operation to the controller 7B based on the system program.
  • the controller 6 transmits a second robot control command for causing the robot 3C to execute a new operation to the controller 7C based on the system program.
  • the controller 6 confirms whether or not the work is placed at the work position for the robots 3B and 3C based on the status information, and when it is determined that the work is placed at the work position, the conveyor 3A is used.
  • a transfer control command for stopping the transfer of the work may be transmitted to the controller 7A, and a first robot control command and a second robot control command including an execution command of a work job program for the work may be transmitted to the controllers 7B and 7C, respectively. ..
  • the controller 6 confirms whether or not the work of the robots 3B and 3C on the work is completed based on the status information, and when it is determined that the work of the robots 3B and 3C on the work is completed, the conveyor 3A is used.
  • a transfer control command for restarting the transfer of the work may be transmitted to the controller 7A.
  • the controllers 7B and 7C cooperate with the operation of the conveyor 3A under the control of the controller 7A (first controller).
  • the robots 3B and 3C will be operated.
  • the controller 7A operates the conveyor 3A so as to cooperate with the operations of the robots 3B and 3C controlled by the controllers 7B and 7C (first controller).
  • the controller 6 confirms whether or not the first subpart has been placed at a predetermined first assembly position in the base part by the robot 3B, and the first subpart is set to the first assembly position.
  • a second robot control command including an execution command of a job program for fastening or joining the first sub-part to the base part may be transmitted to the robot 3C.
  • the controller 6 confirms whether or not the first subpart is fastened or joined to the base part by the robot 3C based on the status information, and determines that the first subpart is fastened or joined to the base part.
  • the first robot control command including the execution command of the job program for arranging the second subpart at a predetermined second assembly position in the base part may be transmitted to the robot 3B.
  • the controller 6 confirms whether or not the second subpart has been placed at the second assembly position by the robot 3B, and determines that the second subpart has been placed at the second assembly position.
  • a second robot control command including an execution command of a job program for fastening or joining the second sub-part to the base part may be transmitted to the robot 3C.
  • the controller 7C (second controller) cooperates with the operation of the robot 3B under the control of the controller 7B (first controller).
  • the robot 3C will be operated.
  • the controller 7B (second controller) operates the robot 3B so as to cooperate with the operation of the robot 3C under the control of the controller 7C (first controller).
  • controller 6 can communicate with a plurality of controllers 7, the controllers 7 can also indirectly communicate with each other via the controller 6.
  • the controllers 7 may be able to communicate directly with each other.
  • the fact that the controller 6 transmits a control command to the controller 7 corresponds to the controller 6 controlling the machine 2 including the controller 7 and the machine 3.
  • transmitting a control command to the controller 7A corresponds to the controller 6 controlling the machine 2A including the controller 7A and the conveyor 3A.
  • the controller 6 transmits a control command to the controller 7B it corresponds to the controller 6 controlling the machine 2B including the controller 7B and the robot 3B.
  • the controller 6 transmits a control command to the controller 7C, it corresponds to the controller 6 controlling the machine 2C including the controller 7C and the robot 3C.
  • the controller 6 corresponds to a controller that controls a plurality of machines 2A, 2B, 2C.
  • the controllers 7B and 7C (second controller) control the controller 6 (first controller). This corresponds to operating the robots 3B and 3C so as to cooperate with the operation of the machine 2A.
  • the controller 7A controls the machine 6 (first controller). This corresponds to operating the conveyor 3A so as to cooperate with the operations of 2B and 2C.
  • the controller 7C When the controller 7C operates the robot 3C so as to cooperate with the operation of the robot 3B under the control of the controller 7B, the controller 7C (second controller) causes the operation of the machine 2B under the control of the controller 6 (first controller). It corresponds to operating the robot 3C so as to cooperate.
  • the operation of the robot 3B so that the controller 7B cooperates with the operation of the robot 3C under the control of the controller 7C means that the controller 7B (second controller) operates the machine 2C under the control of the controller 6 (first controller). It corresponds to operating the robot 3B so as to cooperate.
  • the simulation device 100 simulates the control of a plurality of machines 3 by the actual control system 5. In such a simulation of the entire system, it is necessary to appropriately simulate the cooperative relationship between the plurality of machines 3. However, each simulation of the plurality of machines 3 is not always performed in real time. For example, in the simulation of the transfer segment processing by the controller 7A, the operation target value of the conveyor 3A for each transfer control cycle is calculated based on the transfer control command, and the operation amount of the conveyor 3A according to the operation target value is calculated. However, the calculation time of this simulation does not always match the transfer control cycle.
  • the simulation device 100 simulates the control of the first machine by the first controller by the first simulator, the control of the second machine by the second controller by the second simulator, and the first controller. It is configured to control the progress of the simulation by the first simulator and the progress of the simulation by the second simulator based on the relationship between the progress of the control by the second controller and the progress of the control by the second controller. ing.
  • the relationship between the progress of the simulation by the first simulator and the progress of the simulation by the second simulator is controlled by the first controller of the first machine. It is possible to easily correspond to the relationship between the progress of the control of the second machine and the progress of the control of the second machine by the second controller. Therefore, the cooperative relationship of the plurality of machines 3 can be easily reproduced in the simulation space.
  • the simulation device 100 has a plurality of simulators 101 and 102 and a simulation manager 110 as a functional configuration.
  • FIG. 3 shows simulators 102A, 102B, 102C corresponding to the controllers 7A, 7B, 7C, respectively.
  • the simulator 102A simulates the control of the conveyor 3A by the controller 7A.
  • the simulator 102A simulates the transport segment processing by the controller 7A described above.
  • the simulation of the transfer segment processing includes calculating the operation target value of the conveyor 3A for each transfer control cycle based on the transfer control command, and calculating the operation amount of the conveyor 3A corresponding to the operation target value.
  • the simulator 102B simulates the control of the robot 3B by the controller 7B.
  • the simulator 102B simulates the first robot segment processing by the controller 7B described above.
  • the target position / posture of the tip portion 18 is calculated for each first robot control cycle based on the first robot control command, and the tip portion 18 is moved to the calculated target position / posture.
  • the operating target values of the actuators 41, 42, 43, 44, 45, 46 are calculated by inverse kinematics calculation, and the operating amount of the actuators 41, 42, 43, 44, 45, 46 according to the calculated operating target values. Includes calculating.
  • the simulator 102C simulates the control of the robot 3C by the controller 7C.
  • the simulator 102C simulates the second robot segment processing by the controller 7C described above.
  • the target position / posture of the tip portion 18 is calculated for each second robot control cycle based on the second robot control command, and the tip portion 18 is moved to the calculated target position / posture.
  • the operating target values of the actuators 41, 42, 43, 44, 45, 46 are calculated by inverse kinematics calculation, and the operating amount of the actuators 41, 42, 43, 44, 45, 46 according to the calculated operating target values. Includes calculating.
  • the simulator 101 simulates the control of the machines 2A, 2B, and 2C by the controller 6.
  • the simulator 101 simulates the system segment processing by the controller 6 described above.
  • the simulation of system segment processing is based on acquiring virtual status information of a plurality of machines 3 and works based on simulation results of a plurality of simulators 102A, 102B, 102C, a predetermined system program, and virtual status information.
  • the machine 3 to start a new operation hereinafter referred to as "controlled machine" is specified, and the control command for starting the new operation is transmitted to the simulator 102 of the controlled machine 3. And include.
  • the simulators 102B and 102C (second simulator) generate simulation results of the operation of the robots 3B and 3C (second machine) with respect to the simulation results of the operation of the conveyor 3A (first machine) by the simulator 102A (first simulator).
  • the control by the controllers 7B and 7C (second controller) for the robots 3B and 3C (second machine) may be simulated so as to cooperate with each other.
  • the simulators 102B and 102C (second simulator) generate simulation results of the operation of the robots 3B and 3C (second machine) with respect to the simulation results of the operation of the machine 2A (first machine) by the simulator 101 (first simulator).
  • the control by the controllers 7B and 7C (second controller) for the robots 3B and 3C (second machine) may be simulated so as to cooperate with each other.
  • the simulator 102A (second simulator) displays the simulation result of the operation of the conveyor 3A (second machine) with respect to the simulation result of the operation of the robots 3B and 3C (first machine) by the simulators 102B and 102C (first simulator).
  • the control by the controller 7A (second controller) for the conveyor 3A (second machine) may be simulated so as to cooperate.
  • the simulator 102A (second simulator) coordinates the simulation result of the operation of the conveyor 3A (second machine) with the simulation result of the operation of the machines 2B and 2C (first machine) by the simulator 101 (first simulator). As described above, the control by the controller 7A (second controller) for the conveyor 3A (second machine) may be simulated.
  • the simulator 102C (second simulator) coordinates the simulation result of the operation of the robot 3C (second machine) with the simulation result of the operation of the robot 3B (first machine) by the simulator 102B (first simulator).
  • the control by the controller 7C (second controller) for the robot 3C (second machine) may be simulated.
  • the simulator 102C (second simulator) coordinates the simulation result of the operation of the robot 3C (second machine) with the simulation result of the operation of the machine 2B (first machine) by the simulator 101 (first simulator).
  • the control by the controller 7C (second controller) for the robot 3C (second machine) may be simulated.
  • the simulator 102B (second simulator) coordinates the simulation result of the operation of the robot 3B (second machine) with the simulation result of the operation of the robot 3C (first machine) by the simulator 102C (first simulator).
  • the control by the controller 7B (second controller) for the robot 3B (second machine) may be simulated.
  • the simulator 102B (second simulator) coordinates the simulation result of the operation of the robot 3B (second machine) with the simulation result of the operation of the machine 2C (first machine) by the simulator 101 (first simulator).
  • the control by the controller 7B (second controller) for the robot 3B (second machine) may be simulated.
  • the simulation manager 110 controls the progress of the simulation by the first simulator and the progress of the simulation by the second simulator so as to correspond to the relationship between the progress of the control by the first controller and the progress of the control by the second controller. ..
  • the simulation manager 110 determines the relationship between the progress of control by the controller 6 (first controller) and the progress of control by the controllers 7A, 7B, 7C (second controller) in the simulation by the simulator 101 (first simulator).
  • the simulator 101 By controlling the progress of the simulation by the simulator 101 and the progress of the simulation by the simulators 102A, 102B, 102C so as to correspond the relationship between the progress and the progress of the simulation by the simulators 102A, 102B, 102C (second simulator). It is also good.
  • the progress of the simulation by the simulator 101 and the simulation by the simulator 102A are related to the relationship between the progress of the control by the controller 6, the progress of the control by the controller 7A, the progress of the control by the controller 7B, and the progress of the control by the controller 7C.
  • the relationship between the progress of the simulation, the progress of the simulation by the simulator 102B, and the progress of the simulation by the simulator 102C corresponds to each other.
  • the simulation manager 110 has a first so as to correspond to the relationship between the execution timing of the first segment processing that is repeatedly executed under the control of the first controller and the execution timing of the second segment processing that is repeated under the control of the second controller.
  • the execution timing of the first segment processing repeated by the simulator and the execution timing of the second segment processing repeated by the second simulator may be controlled.
  • the simulation manager 110 has the execution timing of the system segment processing repeated under the control of the controller 6 (first controller), the transfer segment processing repeated under the control of the controllers 7A, 7B, and 7C, the first robot segment processing, and the first robot segment processing.
  • the execution timing of the system segment processing repeated by the simulator 101 and the transfer segment processing, the first robot segment processing, and the second robot segment processing repeated by the simulators 102A, 102B, 102C are related to the execution timing of the robot segment processing.
  • the execution timing of the system segment processing repeated by the simulator 101 and the transfer segment processing, the first robot segment processing, and the second robot segment processing repeated by the simulators 102A, 102B, 102C so as to correspond to the relation with the execution timing of You may control the execution timing of.
  • the simulation manager 110 is determined by the first simulator based on the first control cycle representing the repetition cycle of the first segment processing by the first controller and the second control cycle representing the repetition cycle of the second segment processing by the second controller.
  • the execution timing of the repeated first segment processing and the execution timing of the second segment processing repeated by the second simulator may be controlled.
  • the simulation manager 110 determines the execution timing of the system segment processing repeated by the simulator 101 based on the system control cycle, the transport control cycle, the first robot control cycle, and the second robot control cycle, and the simulator 102A.
  • the execution timings of the transfer segment processing, the first robot segment processing, and the second robot segment processing repeated by 102B and 102C may be controlled.
  • the simulation manager 110 has a counter 111, a periodic information storage unit 112, a selection unit 113, and an execution unit 114.
  • the counter 111 counts the number of simulation cycles.
  • the cycle information storage unit 112 stores a system control cycle, a transport control cycle, a first robot control cycle, and a second robot control cycle.
  • the selection unit 113 selects at least one of the simulator 101, the simulator 102A, 102B, and 102C based on the system control cycle, the transfer control cycle, the first robot control cycle, the second robot control cycle, and the number of simulation cycles. do. For example, the selection unit 113 selects the simulator 101 when the number of simulation cycles counted since the last execution of the system segment processing becomes the number of simulation cycles corresponding to the system control cycle.
  • the number of simulation cycles corresponding to the comparison target time such as the system control cycle means, for example, the number of simulation cycles in which the time obtained by multiplying the number of simulation cycles by a predetermined simulation reference time is equal to or longer than the comparison target time.
  • the selection unit 113 selects the simulator 102A when the number of simulation cycles counted since the last execution of the transfer segment processing becomes the number of simulation cycles corresponding to the transfer control cycle.
  • the selection unit 113 selects the simulator 102B when the number of simulation cycles counted since the first robot segment processing was executed last time becomes the number of simulation cycles corresponding to the first robot control cycle.
  • the selection unit 113 selects the simulator 102C when the number of simulation cycles counted since the last execution of the second robot segment processing becomes the number of simulation cycles corresponding to the second robot control cycle.
  • the number of simulation cycles corresponding to the system control cycle, the number of simulation cycles corresponding to the transfer control cycle, the number of simulation cycles corresponding to the first robot control cycle, and the number of simulation cycles corresponding to the second robot control cycle are all 1 or more. May be.
  • the length of the simulation reference time described above may be equal to or less than the length of the shortest control cycle among the system control cycle, the transfer control cycle, the first robot control cycle, and the second robot control cycle.
  • the execution unit 114 causes each of at least one simulator selected by the selection unit 113 to execute segment processing.
  • the execution unit 114 causes the simulator 101 to execute the system segment processing when the simulator 101 is selected by the selection unit 113, and executes the transfer segment processing to the simulator 102A when the simulator 102A is selected by the selection unit 113.
  • the simulator 102B is selected by the selection unit 113
  • the simulator 102B executes the first robot segment processing
  • the simulator 102C is selected by the selection unit 113
  • the simulator 102C executes the second robot segment processing.
  • the simulation manager 110 may select one individual execution simulator from the simulators 101 and 102 and execute the simulation by the individual execution simulator regardless of the progress of the simulation by the other simulators. good.
  • the simulation apparatus 100 is configured to simulate the operation of the first machine and the operation of the second machine based on the simulation result by the first simulator and the simulation result by the second simulator. good.
  • the simulation device 100 further includes a model storage unit 121 and an motion simulation unit 122.
  • the model storage unit 121 stores model information of a plurality of machines 3.
  • the model information of the machine 3 includes information on the structure of the machine 3 and the dimensions of each part.
  • the motion simulation unit 122 simulates the motion of a plurality of machines 3 based on the simulation results of the simulators 101 and 102. For example, the motion simulation unit 122 simulates the motion of the conveyor 3A based on the motion amount of the conveyor 3A calculated by the simulator 102A and the model information of the conveyor 3A stored in the model storage section 121. Further, the motion simulation unit 122 performs forward kinematics calculation based on the motion amount of the actuators 41, 42, 43, 44, 45, 46 calculated by the simulator 102B and the model information of the robot 3B stored in the model storage unit 121. Simulates the operation of the robot 3B.
  • the motion simulation unit 122 is a forward kinematics based on the motion amount of the actuators 41, 42, 43, 44, 45, 46 calculated by the simulator 102C and the model information of the robot 3C stored in the model storage unit 121. The operation of the robot 3C is simulated by calculation.
  • the motion simulation unit 122 may simulate the operation of the first machine and the operation of the second machine after both the simulation result by the first simulator and the simulation result by the second simulator are updated. For example, the motion simulation unit 122 may re-simulate the motion of the plurality of machines 3 at the timing when all of the simulators 101 and 102 execute segment processing for one cycle or more after simulating the motion of the plurality of machines 3. .. The motion simulation unit 122 may generate simulation images of the motions of the plurality of machines 3 based on the simulation results of the motions of the plurality of machines 3 and display them on a display device 196 or the like described later.
  • the simulation device 100 transfers communication data between the first simulator and the second simulator so as to reproduce the communication directly or indirectly performed between the first controller and the second controller. It may be configured.
  • the simulation device 100 further includes a communication simulator 130 and a communication data storage unit 141.
  • the communication data storage unit 141 includes at least one communication buffer 150.
  • the communication buffer 150 is used for temporarily storing communication data for transfer between the first simulator and the second simulator.
  • the communication buffer 150 may include a plurality of storage areas arranged from upstream to downstream in the data transfer direction. The communication data temporarily stored in the communication buffer 150 is sequentially transferred from upstream to downstream in the data transfer direction.
  • the communication simulator 130 transfers communication data between the first simulator and the second simulator so as to reproduce the communication directly or indirectly performed between the first controller and the second controller.
  • the communication simulator 130 reproduces the communication directly or indirectly performed between the controller on the transmitting side and the controller on the receiving side in the controllers 6, 7A, 7B, 7C, so that the simulators 101, 102A, 102B, Communication data is exchanged between the simulator on the transmitting side and the simulator on the receiving side in 102C.
  • the communication simulator 130 may have the simulator on the receiving side acquire the communication data generated by the simulator on the transmitting side at a timing based on a predetermined virtual delay time.
  • the communication simulator 130 has a communication counter 131, a communication data storage unit 133, a communication data transfer unit 132, and a communication data reading unit 134.
  • the communication counter 131 counts the number of communication cycles.
  • the communication data storage unit 133 stores the communication data generated by the simulator on the transmitting side in the communication buffer 150.
  • the communication data storage unit 133 stores the communication data generated by the simulator on the transmitting side in the most upstream storage area of the communication buffer 150.
  • the communication data transfer unit 132 transfers the communication data to the storage area one downstream in the communication buffer 150 each time the number of communication cycles is counted.
  • the communication data reading unit 134 reads out the communication data transferred to the most downstream storage area by the communication data transfer unit 132 and causes the simulator on the receiving side to acquire the communication data.
  • the communication data reading unit 134 is the communication data stored in the communication buffer 150 when the number of communication cycles counted after the communication data is stored in the communication buffer 150 becomes the number of communication cycles corresponding to the virtual delay time. Is read and acquired by the simulator on the receiving side.
  • the number of communication cycles corresponding to the virtual delay time means, for example, the number of communication cycles in which the time obtained by multiplying the number of communication cycles by a predetermined communication reference time is equal to or longer than the virtual delay time.
  • the communication buffer 150 may include a number of storage areas corresponding to the virtual delay time.
  • the number of storage areas corresponds to the virtual delay time
  • the communication cycle until the communication data stored in the most upstream storage area is transferred to the most downstream storage area is multiplied by the communication reference time. It means that the time taken corresponds to the virtual delay time.
  • the number of storage areas corresponds to the virtual delay time.
  • Number of storage areas virtual delay time / communication reference time + 1 ... (1)
  • the number of storage areas of the communication buffer 150 corresponds to the virtual delay time
  • the number of communication cycles until the communication buffer 150 reads out the communication data stored in the communication buffer 150 corresponds to the virtual delay time. Become.
  • the communication counter 131 may count the number of communication cycles in synchronization with the count of simulation cycles by the counter 111.
  • the communication counter 131 may count the number of communication cycles at a higher frequency than the simulation cycle count by the counter 111.
  • the communication counter 131 may count the number of communication cycles at a frequency that is an integral multiple of the count of the simulation cycles by the counter 111.
  • the communication reference time may be the same as the simulation reference time, or may be shorter than the simulation reference time.
  • the communication reference time may be an integral fraction of the simulation reference time.
  • FIG. 6 is a schematic diagram illustrating the transition between the communication data generated by the simulator on the transmitting side, the contents of the communication buffer 150, and the communication data acquired by the simulator on the receiving side.
  • the communication buffer 150 has four storage areas 151, 152, 153, and 154 arranged from upstream to downstream in the data transfer direction, but the number of communication data contained in the communication buffer 150 is limited to four. Not done.
  • the signal waveform TS is a graph illustrating one signal (hereinafter, referred to as “communication signal”) included in the communication data generated by the simulator on the transmitting side
  • the signal waveform RS is a communication signal acquired by the simulator on the receiving side. It is a graph exemplifying. In each graph, the horizontal axis represents the number of communication cycles and the vertical axis represents the value of the communication signal.
  • the signal waveforms TS and RS exemplify communication signals that represent information with two values of "OFF” or "ON”. A low value of the signal waveforms TS and RS indicates that the communication signal is "OFF", and a high value of the signal waveforms TS and RS means that the communication signal is "ON". Represents that.
  • the communication data transfer unit 132 transfers each of the communication data already stored in the communication buffer 150 to the storage area one downstream. For example, the communication data transfer unit 132 transfers the communication data stored in the storage area 153 to the storage area 154, transfers the communication data stored in the storage area 152 to the storage area 153, and communicates stored in the storage area 151. Transfer the data to the storage area 152. The communication data stored in the most downstream storage area 154 is overwritten by the communication data transferred from the storage area 153.
  • the communication data storage unit 133 stores "OFF", which is the current value of the signal waveform TS, in the most upstream storage area 151.
  • "OFF" is stored in all of the storage areas 151, 152, 153, and 154.
  • the communication data reading unit 134 reads "OFF” stored in the most downstream storage area 154 and causes the receiving simulator to acquire it. As a result, the current value of the signal waveform RS becomes "OFF".
  • the communication data transfer unit 132, the communication data storage unit 133, and the communication data reading unit 134 repeat the same processing every time the number of communication cycles is counted by the communication counter 131.
  • the current value of the signal waveform TS is “ON”, so that the storage area 151 is the most upstream. Is stored in "ON”, and "OFF” is stored in the other storage areas 152, 153, and 154. Since the communication data reading unit 134 reads "OFF" stored in the most downstream storage area 154 and causes the receiving simulator to acquire it, the current value of the signal waveform RS is maintained at "OFF".
  • the current value of the signal waveform TS is “OFF”, so that the storage area 151 is “OFF”. Is stored, "ON” is stored in the storage areas 152 and 153, and "OFF” is stored in the storage area 154. Since the communication data reading unit 134 reads "OFF” stored in the most downstream storage area 154 and causes the receiving simulator to acquire it, the current value of the signal waveform RS is still maintained at "OFF”.
  • the change in the signal waveform RS is delayed by the number of communication cycles until the communication data stored in the most upstream storage area 151 reaches the most downstream storage area 154. That is, the change in the signal waveform RS is delayed by the number of communication cycles obtained by subtracting 1 from the number of storage areas of the communication buffer 150.
  • the number of delayed communication cycles simulates the communication delay time of the time obtained by multiplying the number by the communication reference time.
  • the communication simulator 130 acquires communication data from the transmitting side simulator and receives communication data based on a plurality of communication definitions that associate the plurality of transmitting side simulators with the plurality of receiving side simulators. You may have the simulator on the side acquire the communication data and execute it for each of a plurality of communication definitions.
  • the simulation device 100 further has a communication map 142.
  • the communication map 142 stores a plurality of communication definitions.
  • Each of the plurality of communication definitions may include a virtual delay time.
  • the communication simulator 130 may have the receiving side simulator acquire the communication data generated by the transmitting side simulator for each of a plurality of communication definitions at a timing based on the virtual delay time.
  • the simulation device 100 may further include a communication buffer allocation unit 143.
  • the communication buffer allocation unit 143 allocates a communication buffer having a size corresponding to the virtual delay time for each of a plurality of communication definitions. For example, the communication buffer allocation unit 143 allocates a communication buffer including a number of storage areas corresponding to the virtual delay time for each of a plurality of communication definitions. As an example, the communication buffer allocation unit 143 allocates a communication buffer including a number of storage areas satisfying the above equation (1) for each of a plurality of communication definitions.
  • the communication simulator 130 may execute storing the communication data generated by the simulator on the transmitting side in the communication buffer 150 for each of a plurality of communication definitions.
  • the communication simulator 130 reads out the communication data stored in the communication buffer 150 when the number of communication cycles counted after the communication data is stored in the communication buffer 150 becomes the number of communication cycles corresponding to the virtual delay time. It may be executed for each of a plurality of communication definitions to be acquired by the simulator on the receiving side.
  • the communication data storage unit 133 refers to the communication map 142 and stores the communication data generated by the simulator on the transmitting side in the most upstream storage area of the communication buffer 150. It may be executed for each communication definition.
  • the communication data transfer unit 132 may execute the transfer of communication data to the storage area one downstream in the communication buffer 150 for each of a plurality of communication definitions each time the number of communication cycles is counted.
  • the communication data reading unit 134 refers to the communication map 142, reads the communication data transferred to the most downstream storage area by the communication data transfer unit 132, and causes the simulator on the receiving side to acquire the communication data for each of a plurality of communication definitions. You may do it.
  • FIG. 7 is a table illustrating a plurality of communication definitions stored in the communication map 142.
  • one row of the table represents one communication definition 160.
  • the communication definition 160 includes a sender definition 161, a receiver definition 162, and a virtual delay time 163.
  • the sender definition 161 includes the identification information of the simulator on the sender side and the address.
  • the address is an address of a storage area (hereinafter, referred to as “transmission storage area”) for writing communication data generated by a simulator on the transmitting side.
  • the receiving side definition 162 includes the identification information of the simulator on the receiving side and the address.
  • the address is an address of a storage area (hereinafter, referred to as “reception storage area”) from which the simulator on the receiving side reads communication data during simulation.
  • the communication data storage unit 133 reads out the communication data stored in the transmission storage area based on the communication definition 160 and stores it in the most upstream storage area of the communication buffer 150.
  • the communication data reading unit 134 reads the communication data stored in the most downstream storage area of the communication buffer 150 and stores it in the reception storage area based on the communication definition 160.
  • the simulation device 100 may be configured to change the progress speed of the simulation by the simulators 101 and 102 according to the designated reproduction speed. Further, the simulation device 100 may be configured to interrupt the simulation by the simulators 101 and 102 in response to the stop command. For example, the simulation device 100 further includes a traveling speed adjusting unit 171 and an interrupting unit 172.
  • the progress speed adjustment unit 171 acquires the designation of the reproduction speed from, for example, the input device 195 described later, and changes the progress speed of the simulation by the simulators 101 and 102 according to the designation of the reproduction speed. For example, the progress speed adjusting unit 171 counts the number of simulation cycles by the counter 111 in a predetermined simulation cycle, and changes the simulation cycle according to the designation of the reproduction speed. For example, the progress speed adjusting unit 171 increases the reproduction speed by shortening the simulation cycle, and slows down the reproduction speed by lengthening the simulation cycle.
  • the interruption unit 172 acquires, for example, a stop command from the input device 195 described later, and interrupts the simulation by the simulators 101 and 102 in response to the stop command. For example, the interruption unit 172 interrupts the counting of the number of simulation cycles by the counter 111.
  • the control system 4 may be configured to set the above-mentioned virtual delay time by comparing the simulation result by the simulation device 100 with the actual control result by the actual control system 5. Further, the control system 4 may be configured to detect an abnormality in the actual control system 5 by comparing the simulation result by the simulation device 100 with the actual control result by the actual control system 5.
  • control system 4 may further include a data acquisition device 200.
  • the data collecting device 200 collects virtual data representing the simulation result by the simulation device 100 and real data representing the control result by the actual control system 5.
  • the data collection device 200 has a real data storage unit 201, a virtual data storage unit 202, and a dissociation evaluation unit 203.
  • the real data storage unit 201 acquires and stores real data from the controller 6.
  • the virtual data storage unit 202 acquires and stores virtual data from the simulation device 100.
  • the divergence evaluation unit 203 evaluates the divergence between virtual data and real data. For example, the deviation evaluation unit 203 converts the number of simulation cycles into the elapsed time by multiplying the number of simulation cycles by the simulation reference time, and then generates various events in the virtual data and various events in the real data. Evaluate the deviation from the time.
  • the simulation device 100 may further include a data storage unit 181 and a virtual delay setting unit 144.
  • the data storage unit 181 acquires the simulation results of the simulators 101, 102A, 102B, 102C from the simulation manager 110, acquires the simulation results of the operations of the plurality of machines 3 from the operation simulation unit 122, and stores them in the virtual data storage unit 202. Let me.
  • the virtual delay setting unit 144 makes the virtual delay time correspond to the communication delay time in the actual control.
  • the virtual delay setting unit 144 may execute the virtual delay time to correspond to the communication delay time in the actual control for each of the plurality of communication definitions. For example, the virtual delay setting unit 144 obtains the evaluation result of the deviation by the deviation evaluation unit 203, and changes the virtual delay time for each of a plurality of communication definitions so as to reduce the evaluation result of the deviation. Repeat until the evaluation result is below the predetermined calibration level.
  • the data collection device 200 may further include an abnormality detection unit 204.
  • the abnormality detection unit 204 detects an abnormality in the actual control system 5 based on a comparison between the progress of the control by the controllers 6, 7A, 7B, 7C and the progress of the simulation by the simulators 101, 102A, 102B, 102C.
  • the abnormality detection unit 204 detects an abnormality in the actual control system 5 based on the deviation evaluation result by the deviation evaluation unit 203. For example, the abnormality detection unit 204 detects an abnormality in the actual control system 5 when the deviation evaluation result by the deviation evaluation unit 203 exceeds a predetermined abnormality detection level.
  • the data acquisition device 200 may further include a comparative image generation unit 205.
  • the comparison image generation unit 205 generates a comparison image that compares the progress of the control by the controllers 6 and 7 with the progress of the simulation by the simulators 101 and 102, and displays the comparison image on the display devices 196, 296 and the like described later.
  • the comparison image generation unit 205 generates a comparison image including a timing chart showing the occurrence time of various events in the virtual data and the occurrence time of various events in the real data.
  • FIG. 9 is a block diagram illustrating the hardware configurations of the simulation device 100 and the data acquisition device 200.
  • the simulation device 100 has a circuit 190.
  • the circuit 190 includes one or more processors 191 and a memory 192, a storage 193, a communication port 194, an input device 195, and a display device 196.
  • the storage 193 has a computer-readable storage medium, such as a non-volatile semiconductor memory.
  • the storage 193 includes a first simulator that simulates control by the first controller for the first machine, a second simulator that simulates control by the second controller for the second machine, progress of control by the first controller, and a second controller.
  • the memory 192 temporarily stores the program loaded from the storage medium of the storage 193 and the calculation result by the processor 191.
  • the processor 191 constitutes each functional block of the simulation apparatus 100 by executing the above program in cooperation with the memory 192.
  • the communication port 194 communicates with the data acquisition device 200 and the controller 6 via the network line NW according to the command from the processor 191.
  • the input device 195 and the display device 196 function as a user interface of the simulation device 100.
  • the input device 195 is, for example, a keypad or the like, and acquires input information by the user.
  • the display device 196 includes, for example, a liquid crystal monitor and is used for displaying information to the user.
  • the input device 195 and the display device 196 may be integrated like a so-called touch panel.
  • the input device 195 and the display device 196 may be incorporated in the simulation device 100, or may be provided in an external device connected to the simulation device 100.
  • the data acquisition device 200 has a circuit 290.
  • the circuit 290 includes one or more processors 291, a memory 292, a storage 293, a communication port 294, an input device 295, and a display device 296.
  • the storage 293 has a computer-readable storage medium, such as a non-volatile semiconductor memory.
  • the storage 293 has a real data storage unit 201 that acquires and stores real data from the controller 6, a virtual data storage unit 202 that acquires and stores virtual data from the simulation device 100, and a gap between the virtual data and the real data.
  • a program for configuring the data collection device 200 with the deviation evaluation unit 203 to be evaluated is stored.
  • the memory 292 temporarily stores the program loaded from the storage medium of the storage 293 and the calculation result by the processor 291.
  • the processor 291 constitutes each functional block of the data acquisition device 200 by executing the above program in cooperation with the memory 292.
  • the communication port 294 communicates with the simulation device 100 and the controller 6 via the network line NW according to the command from the processor 291.
  • the input device 295 and the display device 296 function as a user interface of the data acquisition device 200.
  • the input device 295 is, for example, a keypad or the like, and acquires input information by the user.
  • the display device 296 includes, for example, a liquid crystal monitor and is used for displaying information to the user.
  • the input device 295 and the display device 296 may be integrated like a so-called touch panel.
  • the input device 295 and the display device 296 may be incorporated in the data collection device 200, or may be provided in an external device connected to the data collection device 200.
  • circuit 190 and the circuit 290 are not necessarily limited to those that configure each function by a program.
  • the circuit 190 and the circuit 290 may be configured with at least a part of a function by a dedicated logic circuit or an ASIC (Application Specific Integrated Circuit) that integrates the logic circuit.
  • the simulation device 100 and the data collection device 200 do not necessarily have to be separated, and the simulation device 100 and the data collection device 200 may be configured by one computer.
  • Simulation procedure a simulation procedure executed by the simulation apparatus 100 will be illustrated.
  • This procedure consists of simulating the control of the first machine by the first controller by the first simulator, simulating the control of the second machine by the second controller by the second simulator, and the progress of the control by the first controller. , Controlling the progress of the simulation by the first simulator and the progress of the simulation by the second simulator based on the relationship with the progress of the control by the second controller.
  • the simulation apparatus 100 first executes steps S01, S02, S03, and S04.
  • step S01 the counter 111 starts counting the number of simulation cycles.
  • step S02 the selection unit 113 determines at least the simulator 101, the simulator 102A, 102B, and 102C based on the system control cycle, the transfer control cycle, the first robot control cycle, the second robot control cycle, and the number of simulation cycles. Select one.
  • step S03 the execution unit 114 causes each of at least one simulator selected by the selection unit 113 to execute the segment processing.
  • the motion simulation unit 122 confirms whether or not all of the simulators 101 and 102 have executed segment processing for one cycle or more.
  • step S05 the motion simulation unit 122 simulates the motion of the plurality of machines 3 based on the simulation results of the simulators 101 and 102.
  • step S06 the motion simulation unit 122 generates simulation images of the motions of the plurality of machines 3 based on the simulation results of the motions of the plurality of machines 3 and displays them on the display device 196 or the like.
  • step S07 the simulation device 100 executes step S07. If it is determined in step S04 that the simulators 101 and 102 that have not executed one or more cycles of segment processing remain, the simulation apparatus 100 executes step S07 without executing steps S05 and S06. In step S07, the simulation manager 110 confirms whether or not a series of control simulations in the actual control system 5 has been completed.
  • step S07 If it is determined in step S07 that the simulation of a series of controls in the actual control system 5 has not been completed, the simulation device 100 executes steps S08, S09, S11, S12, S13, and S14.
  • step S08 the communication data transfer unit 132 transfers the communication data to the storage area one downstream in the communication buffer 150.
  • step S09 the communication data storage unit 133 executes to store the communication data generated by the simulator on the transmitting side in the most upstream storage area of the communication buffer 150 for each of a plurality of communication definitions.
  • step S11 the communication data reading unit 134 reads the communication data transferred to the most downstream storage area by the communication data transfer unit 132 and causes the simulator on the receiving side to acquire the communication data for each of the plurality of communication definitions.
  • step S12 the data storage unit 181 acquires the simulation results of the simulators 101, 102A, 102B, 102C from the simulation manager 110, acquires the simulation results of the operations of the plurality of machines 3 from the operation simulation unit 122, and stores the virtual data. Accumulate in unit 202.
  • step S13 the progress speed adjustment unit 171 and the interruption unit 172 perform the reproduction speed adjustment process. The specific contents of step S13 will be described later.
  • the counter 111 counts up the number of simulation cycles. After that, the simulation apparatus 100 returns the process to step S02. The simulation device 100 repeats the above simulation cycle until the simulation of a series of controls in the actual control system 5 is completed.
  • step S07 If it is determined in step S07 that the simulation of a series of controls in the actual control system 5 is completed, the simulation procedure by the simulation device 100 is completed.
  • FIG. 11 is a flowchart illustrating the procedure of the reproduction speed adjustment process in step S13.
  • the simulation apparatus 100 first executes step S21.
  • the traveling speed adjusting unit 171 confirms whether or not the simulation cycle has elapsed after the number of simulation cycles has reached the current value.
  • step S21 If it is determined in step S21 that the simulation cycle has not elapsed, the simulation device 100 executes step S22.
  • step S22 the interruption unit 172 confirms whether or not a stop command has been input. If it is determined in step S22 that the stop command has been input, the simulation device 100 executes step S23.
  • step S23 the interruption unit 172 waits for the input of the restart command. As a result, the counting of the number of cycles by the counter 111 is interrupted until the restart command is input, and the simulation by the simulators 101 and 102 is interrupted.
  • step S24 the simulation device 100 executes step S24. If it is determined in step S22 that the stop command has not been input, the simulation device 100 executes step S24 without executing step S23. In step S24, the progress speed adjusting unit 171 confirms whether or not the designation of the reproduction speed has been input.
  • step S24 If it is determined in step S24 that the designation of the reproduction speed has been input, the simulation device 100 executes step S25.
  • step S25 the progress speed adjusting unit 171 changes the simulation cycle according to the designation of the reproduction speed. After that, the simulation apparatus 100 returns the process to step S21. If it is determined in step S24 that the designation of the reproduction speed is not input, the simulation apparatus 100 returns the process to step S21 without executing step S25. After that, the above processing is repeated until the simulation cycle elapses. If it is determined in step S21 that the simulation cycle has elapsed, the reproduction speed adjustment process is completed.
  • FIG. 12 is a flowchart showing a modified example of the simulation procedure. This modification illustrates a procedure in which the simulation device 100 selectively executes a cooperative simulation and an individual simulation. As shown in FIG. 12, the simulation apparatus 100 first executes step S31. In step S31, the simulation manager 110 confirms whether or not the instruction of the cooperative simulation is input to the input device 195 or the like.
  • step S31 If it is determined in step S31 that the instruction for cooperative simulation is not input to the input device 195 or the like, the simulation device 100 executes step S32.
  • step S32 the simulation manager 110 confirms whether or not the instruction for the individual simulation is input to the input device 195 or the like. If it is determined in step S32 that the instruction for the individual simulation has not been input to the input device 195 or the like, the simulation device 100 returns the process to step S31.
  • step S33 the simulation manager 110 cooperates to execute the simulations of the simulators 101 and 102.
  • the specific procedure of step S33 is as illustrated in steps S01 to S14 of FIG.
  • step S32 When it is determined in step S32 that the instruction for individual simulation is input to the input device 195 or the like, the simulation device 100 executes step S34.
  • step S34 the simulation manager 110 executes the individual simulation.
  • FIG. 13 is a flowchart illustrating the individual simulation procedure in step S34.
  • the simulation apparatus 100 first executes steps S41, S42, S43, S44, and S45.
  • the simulation manager 110 selects one individual execution simulator from the simulators 101 and 102 based on the instruction of the individual simulation.
  • step S42 the simulation manager 110 executes segment processing by the individual execution simulator.
  • step S43 the motion simulation unit 122 simulates the motion of the machine 3 corresponding to the individual execution simulator based on the simulation result of the individual execution simulator.
  • step S44 the motion simulation unit 122 generates a simulation image of the motion of the machine 3 based on the simulation result of the motion of the machine 3 corresponding to the individual execution simulator, and displays it on the display device 196 or the like.
  • step S45 the simulation manager 110 confirms whether or not the simulation of a series of controls by the controller corresponding to the individual execution simulator has been completed.
  • step S45 If it is determined in step S45 that the simulation of a series of controls by the controller corresponding to the individual execution simulator has not been completed, the simulation device 100 returns the process to step S42. If it is determined in step S45 that the simulation of a series of controls by the controller corresponding to the individual execution simulator is completed, the individual simulation is completed.
  • the data acquisition device 200 first executes steps S51 and S52.
  • step S51 the deviation evaluation unit 203 waits for the control by the actual control system 5 to be completed and the real data to be accumulated in the real data storage unit 201.
  • step S52 the dissociation evaluation unit 203 evaluates the dissociation between the virtual data and the real data.
  • step S53 the virtual delay setting unit 144 confirms whether or not the evaluation result of the degree of deviation by the deviation evaluation unit 203 is equal to or lower than the calibration level.
  • step S53 If it is determined in step S53 that the evaluation result of the degree of deviation is not equal to or lower than the calibration level, the simulation device 100 executes steps S54 and S55.
  • step S54 the virtual delay setting unit 144 changes the virtual delay time for each of the plurality of communication definitions so as to reduce the degree of deviation.
  • step S55 the virtual delay setting unit 144 causes the simulation device 100 to execute a series of control simulations by the actual control system 5 again. After that, the simulation apparatus 100 returns the process to step S52.
  • step S53 If it is determined in step S53 that the evaluation result of the degree of deviation is equal to or lower than the calibration level, the simulation device 100 executes step S56.
  • step S56 the communication buffer allocation unit 143 allocates a communication buffer having a size corresponding to the virtual delay time set by the virtual delay setting unit 144 for each of the plurality of communication definitions. This completes the procedure for adjusting the virtual delay time.
  • step S61 the deviation evaluation unit 203 waits for the control by the actual control system 5 to be completed and the real data to be accumulated in the real data storage unit 201.
  • step S62 the dissociation evaluation unit 203 evaluates the dissociation between the virtual data and the real data.
  • step S63 the abnormality detection unit 204 confirms whether or not the evaluation result of the deviation degree by the deviation evaluation unit 203 exceeds the abnormality detection level.
  • step S63 If it is determined in step S63 that the evaluation result of the degree of deviation does not exceed the abnormality detection level, the data acquisition device 200 returns the process to step S61. After that, until the evaluation result of the degree of deviation exceeds the abnormality detection level, the evaluation of the deviation between the virtual data and the real data is repeated.
  • step S63 If it is determined in step S63 that the evaluation result of the degree of deviation exceeds the abnormality detection level, the data acquisition device 200 executes steps S64 and S65.
  • step S64 the abnormality detection unit 204 detects an abnormality in the actual control system 5.
  • step S65 the abnormality detection unit 204 notifies the abnormality of the actual control system 5 by displaying on the display devices 196, 296 and the like.
  • the comparison image generation unit 205 generates a comparison image that compares the progress of the control by the controllers 6 and 7 with the progress of the simulation by the simulators 101 and 102, and displays the comparison image on the display devices 196, 296 and the like described later. You may.
  • the simulation device 100 includes a first simulator that simulates control by the first controller for the first machine, a second simulator that simulates control by the second controller for the second machine, and a first controller.
  • a simulation manager 110 for controlling the progress of the simulation by the first simulator and the progress of the simulation by the second simulator is provided so as to correspond to the relationship between the progress of the control and the progress of the control by the second controller.
  • the relationship between the progress of the simulation by the first simulator and the progress of the simulation by the second simulator is determined by the first controller. It is possible to easily correspond to the relationship between the progress of control of the first machine and the progress of control of the second machine by the second controller. Therefore, the relationship between the operation of the first machine and the operation of the second machine can be easily reproduced in the simulation space. Therefore, it is effective for appropriate simulation of cooperative operation by a plurality of devices.
  • the simulation manager 110 uses the first simulator so as to correspond to the relationship between the execution timing of the first segment processing repeated under the control of the first controller and the execution timing of the second segment processing repeated under the control of the second controller.
  • the execution timing of the repeated first segment processing and the execution timing of the second segment processing repeated by the second simulator may be controlled. In this case, the progress of the simulation can be adjusted more easily.
  • the simulation manager 110 is determined by the first simulator based on the first control cycle representing the repetition cycle of the first segment processing by the first controller and the second control cycle representing the repetition cycle of the second segment processing by the second controller.
  • the execution timing of the repeated first segment processing and the execution timing of the second segment processing repeated by the second simulator may be controlled. In this case, even when the first control cycle and the second control cycle are different, the progress of the simulation can be easily adjusted.
  • the simulation manager selects at least one of the first simulator and the second simulator based on the counter 111 that counts the number of simulation cycles, the first control cycle, the second control cycle, and the number of simulation cycles. And each of at least one simulator selected by the selection unit 113 may have an execution unit 114 for executing segment processing. In this case, it is possible to more easily adjust the progress of the simulation according to the difference between the first control cycle and the second control cycle.
  • the selection unit 113 selects the first simulator and performs the second segment processing when the number of simulation cycles counted since the first segment processing was executed last time becomes the number of simulation cycles corresponding to the first control cycle.
  • the second simulator may be selected when the number of simulation cycles counted since the previous execution is the number of simulation cycles corresponding to the second control cycle. In this case, it is possible to more easily adjust the progress of the simulation according to the difference between the first control cycle and the second control cycle.
  • the number of simulation cycles corresponding to the first control cycle and the number of simulation cycles corresponding to the second control cycle may both be 1 or more. In this case, the progress of the simulation can be adjusted with higher accuracy.
  • the simulation device 100 may further include an operation simulation unit 122 that simulates the operation of the first machine and the operation of the second machine based on the simulation result by the first simulator and the simulation result by the second simulator.
  • the simulation result can be effectively used for virtual operation confirmation of the first machine and the second machine.
  • the motion simulation unit 122 may simulate the operation of the first machine and the operation of the second machine after both the simulation result by the first simulator and the simulation result by the second simulator are updated. In this case, the simulation image can be efficiently generated.
  • the second simulator may simulate the control of the second machine by the second controller so that the simulation result of the operation of the second machine is coordinated with the simulation result of the operation of the first machine by the first simulator. .. In this case, adjusting the progress of the simulation is more effective.
  • the simulation device 100 is a communication simulator that transfers communication data between the first simulator and the second simulator so as to reproduce the communication directly or indirectly performed between the first controller and the second controller. 130 may be further provided. In this case, the relationship between the control of the first machine by the first controller and the control of the second machine by the second controller can be simulated more appropriately.
  • the communication simulator 130 may have the simulator on the receiving side acquire the communication data generated by the simulator on the transmitting side at a timing based on a predetermined virtual delay time. In this case, the relationship between the control of the first machine by the first controller and the control of the second machine by the second controller can be simulated more appropriately.
  • the communication simulator 130 has a communication counter 131 that counts the number of communication cycles, a communication data storage unit 133 that stores communication data generated by the simulator on the transmitting side in the communication buffer 150, and after the communication data is stored in the communication buffer 150.
  • a communication data reading unit 134 that reads the communication data stored in the communication buffer and causes the simulator on the receiving side to acquire the communication data. You may be doing it. In this case, the communication delay can be easily simulated even in the non-real-time simulation.
  • the communication buffer 150 includes a plurality of storage areas arranged from upstream to downstream in the data transfer direction, and the communication data storage unit 133 stores the communication data generated by the simulator on the transmitting side in the most upstream storage area of the communication buffer.
  • the communication simulator 130 further includes a communication data transfer unit 132 that transfers communication data to a storage area one downstream in the communication buffer each time the number of communication cycles is counted, and the communication data reading unit 134 transfers communication data. Communication data transferred to the most downstream storage area by unit 132 may be read out and acquired by a simulator on the receiving side. In this case, the communication delay can be simulated more easily.
  • the communication buffer 150 may include a plurality of storage areas 151, 152, 153, 154 corresponding to the virtual delay time. In this case, the communication delay can be simulated more appropriately.
  • the communication simulator 130 acquires communication data from a transmitting side simulator based on a plurality of communication definitions 160 that associate a plurality of transmitting side simulators with a plurality of receiving side simulators, and makes it a receiving side simulator. Acquiring communication data may be executed for each of a plurality of communication definitions 160. In this case, since a plurality of communications can be simulated together, control including a plurality of communications can be easily simulated.
  • Each of the plurality of communication definitions 160 includes a virtual delay time 163 from the transmitting side simulator to the receiving side simulator, and the communication simulator 130 displays the communication data generated by the transmitting side simulator for each of the plurality of communication definitions.
  • the simulator on the receiving side may acquire the information at a timing based on the virtual delay time 163. In this case, the control including a plurality of communications can be simulated more appropriately.
  • the simulation device 100 further includes a communication buffer allocation unit 143 that allocates a communication buffer having a size corresponding to the virtual delay time 163 for each of a plurality of communication definitions 160, and the communication simulator 130 includes a communication counter 131 that counts the number of communication cycles.
  • the communication data storage unit 133 that stores the communication data generated by the simulator on the transmitting side in the communication buffer 150 for each of the plurality of communication definitions 160 and the communication data in the communication buffer 150 for each of the plurality of communication definitions 160.
  • the communication data reading unit 134 that reads the communication data stored in the communication buffer 150 and causes the simulator on the receiving side to acquire the communication data May have. In this case, the communication delay for each of a plurality of communications can be easily simulated.
  • the simulation device 100 may further include a progress speed adjusting unit 171 that changes the progress speed of the simulation by the first simulator and the progress speed of the simulation by the second simulator according to the designated reproduction speed.
  • the simulation result can be used more effectively by freely adjusting the simulation speed.
  • the simulation device 100 may further include an interruption unit 172 that interrupts the simulation by the first simulator and the simulation by the second simulator in response to the stop command.
  • the simulation result can be used more effectively by making the simulation freely interruptable.
  • the simulation manager 110 When the simulation manager 110 receives an instruction for individual simulation, it selects one individual execution simulator from the first simulator and the second simulator, and executes the simulation by the individual execution simulator regardless of the progress of the simulation by the other simulators. You may let me. In this case, it is effective for stepwise simulation of individual motion and cooperative motion.
  • the control system 4 includes a simulation device 100 having a communication simulator 130 that causes a simulator on the receiving side to acquire communication data generated by the simulator on the transmitting side at a timing based on a predetermined virtual delay time, and a first controller.
  • the actual control system 5 including the second controller, and the virtual delay setting unit 144 that makes the virtual delay time 163 correspond to the communication delay time between the first controller and the second controller may be provided. In this case, it is possible to more easily reproduce the relationship between the operation of the first machine and the operation of the second machine in the simulation space.
  • the progress of the control of the first machine by the first controller, the progress of the control of the second machine by the second controller, the progress of the simulation by the first simulator, and the progress of the simulation by the second simulator are compared.
  • the abnormality detection unit 204 for detecting the abnormality of the actual control system 5 may be further provided based on the above. In this case, the abnormality of the actual control system 5 can be quickly detected by comparing with the simulation tuned according to the actual control system 5.
  • the control system 4 includes a simulation device 100, a first controller, an actual control system 5 including a second controller, progress of control of the first machine by the first controller, and control of the second machine by the second controller. It may include a comparative image generation unit 205 that generates a comparative image that compares the progress, the progress of the simulation by the first simulator, and the progress of the simulation by the second simulator. In this case, the relationship between the progress of the control of the first machine by the first controller, the progress of the control of the second machine by the second controller, the progress of the simulation by the first simulator, and the progress of the simulation by the second simulator. By providing an interface that is easy to visually confirm, it is possible to promote appropriate manual tuning of simulation conditions and quick visual abnormality detection.
  • Communication data read Unit 143 ... Communication buffer allocation unit, 144 ... Virtual delay setting unit, 150 ... Communication buffer, 151, 152, 153, 154 ... Storage area, 160 ... Communication definition, 163 ... Virtual delay time, 171 ... Progress speed adjustment unit, 172 ... Interruption unit, 204 ... Abnormality detection unit, 205 ... Comparative image generation unit.

Abstract

シミュレーション装置100は、第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャ110と、を備える。

Description

シミュレーション装置、制御システム、シミュレーション方法及びプログラム
 本開示は、シミュレーション装置、制御システム、シミュレーション方法及びプログラムに関する。
 特許文献1には、ロボット及び障害物に関するモデル情報を記憶したモデル記憶部と、ロボットと障害物との衝突を回避しつつ、ロボットの先端部を開始位置から終了位置まで移動させ得るパスをモデル情報に基づいて生成する情報処理部と、を備えるロボットシミュレータが開示されている。
特開2018-134703号公報
 本開示は、複数の装置による協調動作の適切なシミュレーションに有効な装置を提供する。
 本開示の一側面に係るシミュレーション装置は、第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャと、を備える。
 本開示の他の側面に係る制御システムは、送信側のシミュレータが生成した通信データを、予め定められた仮想遅延時間に基づいたタイミングで、受信側のシミュレータに取得させる通信シミュレータを有する上記シミュレーション装置と、第1コントローラと、第2コントローラとを含む実制御システムと、仮想遅延時間を、第1コントローラと第2コントローラとの間の通信遅延時間に対応させる仮想遅延設定部と、を備える。
 本開示の更に他の側面に係る制御システムは、上記シミュレーション装置と、第1コントローラと、第2コントローラとを含む実制御システムと、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行と、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とを対比する比較画像を生成する比較画像生成部と、を備える。
 本開示の更に他の側面に係るシミュレーション方法は、第1マシンに対する第1コントローラによる制御を第1シミュレータによりシミュレーションすることと、第2マシンに対する第2コントローラによる制御を第2シミュレータによりシミュレーションすることと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールすることと、を含む。
 本開示の更に他の側面に係るプログラムは、第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャと、を装置に構成させる。
 本開示によれば、複数の装置による協調動作の適切なシミュレーションに有効な装置を提供することができる。
マシンシステムの構成を例示する模式図である。 ロボットの構成を例示する模式図である。 シミュレーション装置の構成を例示するブロック図である。 シミュレーションマネジャの構成を例示するブロック図である。 通信シミュレータの構成を例示するブロック図である。 送信側のシミュレータが生成する通信データと、通信バッファの内容と、受信側のシミュレータが取得する通信データとの推移を例示する模式図である。 通信定義を例示するテーブルである。 データ収集装置の構成を例示するブロック図である。 シミュレーション装置及びデータ収集装置のハードウェア構成を例示するブロック図である。 シミュレーション手順を例示するフローチャートである。 再生速度調節手順を例示するフローチャートである。 シミュレーション手順の変形例を示すフローチャートである。 個別シミュレーション手順を例示するフローチャートである。 仮想遅延時間の調節手順を例示するフローチャートである。 異常監視手順を例示するフローチャートである。
 以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
〔マシンシステム〕
 図1に示すマシンシステム1は、複数のマシン3を協調して動作させるシステムである。マシンシステム1の具体例としては、ワークを生産するように、複数のマシン3を協調して動作させる生産システムが挙げられるが、複数のマシン3の動作目的は必ずしもワークの生産に限られない。
 複数のマシン3を協調して動作させるとは、例えば、同一の目的を達成するための複数の動作を複数のマシンに分担して遂行させることを意味し、いずれか一つのマシンの動作結果に応じて、他のマシンを動作させることを含んでいてもよい。「同一の目的」がワークの生産である場合に、マシンシステム1は、一つのワークを得るための複数の作業を複数のマシン3に分担して遂行させてもよく、複数のワークごとの複数の作業を複数のマシン3に分担して遂行させてもよい。
 マシンシステム1は、複数のマシン3と、複数のマシン3を制御する実制御システム5と、シミュレーション装置100と、データ収集装置200とを備える。マシン3の数に特に制限はない。複数のマシン3は、ロボットを含んでいてもよい。複数のマシン3の一例として、図1には、コンベヤ3Aと、ロボット3B,3Cとが示されている。
 コンベヤ3Aは、例えば電動モータ等の動力によりワークを搬送する。コンベヤ3Aの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット3B,3Cは、コンベヤ3Aが搬送するワークに対する作業を行う。ワークに対する作業の具体例としては、コンベヤ3Aが搬送するワーク(例えばベースパーツ)に対する他のワーク(例えばサブパーツ)の組付け、コンベヤ3Aが搬送するワークにおけるパーツ同士の締結(例えばボルト締結)・接合(例えば溶接)等が挙げられる。
 コンベヤ3Aと、ロボット3B,3Cの動作は、コンベヤ3Aとロボット3B,3Cとの協調動作を含んでいてもよい。例えばロボット3B,3Cは、コンベヤ3Aによって、ワークが所定の作業位置に配置されたタイミングで、ワークに対する作業を実行してもよい。コンベヤ3Aは、ロボット3B,3Cによる作業の実行中にはワークの搬送を中断し、ロボット3B,3Cによる作業の完了後にワークの搬送を再開してもよい。
 コンベヤ3Aと、ロボット3B,3Cの動作は、ロボット3B,3Cの協調動作を含んでいてもよい。例えばロボット3Bは、コンベヤ3Aが搬送するベースパーツにおける所定の組付け位置にサブパーツを配置し、ロボット3Cは、ロボット3Bにより配置されたサブパーツをベースパーツに締結又は接合してもよい。サブパーツが、複数箇所においてベースパーツに締結又は接合される場合に、複数箇所における締結又は結合をロボット3B,3Cが分担してもよい。
 図2は、ロボット3B,3Cの概略構成を例示する模式図である。例えばロボット3B,3Cは、6軸の垂直多関節ロボットであり、基部11と、旋回部12と、第1アーム13と、第2アーム14と、第3アーム17と、先端部18と、アクチュエータ41,42,43,44,45,46とを有する。基部11は、コンベヤ3Aの周囲に設置されている。旋回部12は、鉛直な軸線21まわりに旋回するように基部11上に設けられている。第1アーム13は、軸線21に交差(例えば直交)する軸線22まわりに揺動するように旋回部12に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第2アーム14は、軸線22に実質的に平行な軸線23まわりに揺動するように第1アーム13の先端部に接続されている。第2アーム14は、アーム基部15とアーム端部16とを含む。アーム基部15は、第1アーム13の先端部に接続され、軸線23に交差(例えば直交)する軸線24に沿って延びている。アーム端部16は、軸線24まわりに旋回するようにアーム基部15の先端部に接続されている。第3アーム17は、軸線24に交差(例えば直交)する軸線25まわりに揺動するようにアーム端部16の先端部に接続されている。先端部18は、軸線25に交差(例えば直交)する軸線26まわりに旋回するように第3アーム17の先端部に接続されている。
 このように、ロボット3B,3Cは、基部11と旋回部12とを接続する関節31と、旋回部12と第1アーム13とを接続する関節32と、第1アーム13と第2アーム14とを接続する関節33と、第2アーム14においてアーム基部15とアーム端部16とを接続する関節34と、アーム端部16と第3アーム17とを接続する関節35と、第3アーム17と先端部18とを接続する関節36とを有する。
 アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、関節31,32,33,34,35,36をそれぞれ駆動する。例えばアクチュエータ41は軸線21まわりに旋回部12を旋回させ、アクチュエータ42は軸線22まわりに第1アーム13を揺動させ、アクチュエータ43は軸線23まわりに第2アーム14を揺動させ、アクチュエータ44は軸線24まわりにアーム端部16を旋回させ、アクチュエータ45は軸線25まわりに第3アーム17を揺動させ、アクチュエータ46は軸線26まわりに先端部18を旋回させる。
 なお、ロボット3B,3Cの具体的な構成は適宜変更可能である。例えばロボット3B,3Cは、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
 制御システム4は、複数のマシン3を制御する。制御システム4については以下に詳述する。
(制御システム)
 制御システム4は、実制御システム5と、シミュレーション装置100とを備える。実制御システム5は、複数のマシン3を制御する。実制御システム5は、複数のマシン3をそれぞれ制御する複数のコントローラ7と、複数のコントローラ7と通信可能なコントローラ6とを有してもよい。一例として、図1には、コンベヤ3Aを制御するコントローラ7Aと、ロボット3Bを制御するコントローラ7Bと、ロボット3Cを制御するコントローラ7Cと、コントローラ7A,7B,7Cと通信可能なコントローラ6とが示されている。
 コントローラ7Aは、モータコントローラであり、制御指令に応じてコンベヤ3Aを動作させるセグメント処理を所定の制御周期で繰り返し実行する。本実施形態において「セグメント処理」とは、1サイクルあたりに割り当てられて定められている処理を意味し、サイクル毎に処理される処理であれば、その内容は特に限定されるものではない。以下、コントローラ7Aに対する制御指令を「搬送制御指令」といい、コントローラ7Aが実行するセグメント処理を、「搬送セグメント処理」といい、搬送セグメント処理を実行する制御周期を「搬送制御周期」という。
 搬送制御指令は、例えば、搬送目標位置と、搬送目標位置までのワークの移動速度とを含む。例えば、搬送セグメント処理は、搬送制御指令に基づいて、搬送制御周期ごとのコンベヤ3Aの動作目標値を算出することと、動作目標値に応じてコンベヤ3Aを動作させることとを含む。
 コントローラ7Bは、ロボットコントローラであり、制御指令においてロボット3Bを動作させるセグメント処理を所定の制御周期で繰り返し実行する。以下、コントローラ7Bに対する制御指令を「第1ロボット制御指令」といい、コントローラ7Bが実行するセグメント処理を「第1ロボットセグメント処理」といい、第1ロボットセグメント処理を実行する制御周期を「第1ロボット制御周期」という。
 第1ロボット制御指令は、例えば、ジョブプログラムの実行指令を含む。ジョブプログラムは、時系列に並ぶ1以上の動作命令を含む動作プログラムである。ジョブプログラムは予め準備され、コントローラ7B内に記憶されている。1以上の動作命令のそれぞれは、先端部18の目標位置・姿勢と、目標位置・姿勢までの先端部18の目標移動速度とを含む。
 第1ロボットセグメント処理は、第1ロボット制御指令に基づいて、第1ロボット制御周期ごとの先端部18の目標位置・姿勢を算出することと、算出した目標位置・姿勢に先端部18を移動させるためのアクチュエータ41,42,43,44,45,46の動作目標値を逆運動学演算により算出することと、算出した動作目標値に応じてアクチュエータ41,42,43,44,45,46を動作させることとを含む。
 コントローラ7Cは、ロボットコントローラであり、制御指令においてロボット3Cを動作させるセグメント処理を所定の制御周期で繰り返し実行する。以下、コントローラ7Cに対する制御指令を「第2ロボット制御指令」といい、コントローラ7Cが実行するセグメント処理を「第2ロボットセグメント処理」といい、第2ロボットセグメント処理を実行する制御周期を「第2ロボット制御周期」という。
 第2ロボット制御指令は、例えば、ジョブプログラムの実行指令を含む。ジョブプログラムは、時系列に並ぶ1以上の動作命令を含む動作プログラムである。ジョブプログラムは予め準備され、コントローラ7C内に記憶されている。1以上の動作命令のそれぞれは、先端部18の目標位置・姿勢と、目標位置・姿勢までの先端部18の目標移動速度とを含む。
 第2ロボットセグメント処理は、第2ロボット制御指令に基づいて、第2ロボット制御周期ごとの先端部18の目標位置・姿勢を算出することと、算出した目標位置・姿勢に先端部18を移動させるためのアクチュエータ41,42,43,44,45,46の動作目標値を逆運動学演算により算出することと、算出した動作目標値に応じてアクチュエータ41,42,43,44,45,46を動作させることとを含む。
 コントローラ6は、例えばプログラマブルロジックコントローラであり、複数のマシン3の動作を協調させるセグメント処理を所定の制御周期で繰り返し実行する。以下、コントローラ6が実行するセグメント処理を、「システムセグメント処理」といい、システムセグメント処理を実行する制御周期を「システム制御周期」という。
 システムセグメント処理は、複数のマシン3及びワークのステータス情報を複数のコントローラ7等から受信することと、予め定められたシステムプログラムと、ステータス情報とに基づいて、新たな動作を開始させるべきマシン3(以下、「制御対象マシン」という。)を特定することと、新たな動作を開始させるための制御指令を制御対象マシン3のコントローラ7に送信することとを含む。例えばコンベヤ3Aが制御対象マシンである場合、コントローラ6は、システムプログラムに基づいて、コンベヤ3Aに新たな動作を実行させるための搬送制御指令をコントローラ7Aに送信する。ロボット3Bが制御対象マシンである場合、コントローラ6は、システムプログラムに基づいて、ロボット3Bに新たな動作を実行させるための第1ロボット制御指令をコントローラ7Bに送信する。ロボット3Cが制御対象マシンである場合、コントローラ6は、システムプログラムに基づいて、ロボット3Cに新たな動作を実行させるための第2ロボット制御指令をコントローラ7Cに送信する。
 一例として、コントローラ6は、ステータス情報に基づいて、ワークがロボット3B,3C用の作業位置に配置されたか否かを確認し、ワークが当該作業位置に配置されたと判断した場合に、コンベヤ3Aによるワークの搬送を停止させる搬送制御指令をコントローラ7Aに送信し、ワークに対する作業のジョブプログラムの実行指令を含む第1ロボット制御指令及び第2ロボット制御指令をコントローラ7B,7Cにそれぞれ送信してもよい。また、コントローラ6は、ステータス情報に基づいて、ワークに対するロボット3B,3Cの作業が完了したか否かを確認し、ワークに対するロボット3B,3Cの作業が完了したと判断した場合に、コンベヤ3Aによるワークの搬送を再開させる搬送制御指令をコントローラ7Aに送信してもよい。
 このようにコントローラ6が搬送制御指令及び第1ロボット制御指令を送信することによって、コントローラ7B,7C(第2コントローラ)は、コントローラ7A(第1コントローラ)の制御によるコンベヤ3Aの動作に協調するようにロボット3B,3Cを動作させることとなる。また、コントローラ7A(第2コントローラ)は、コントローラ7B,7C(第1コントローラ)の制御によるロボット3B,3Cの動作に協調するようにコンベヤ3Aを動作させることとなる。
 コントローラ6は、ステータス情報に基づいて、ロボット3Bにより、ベースパーツにおける所定の第1組付け位置に第1サブパーツが配置されたか否かを確認し、第1サブパーツが第1組付け位置に配置されたと判断した場合に、第1サブパーツをベースパーツに締結又は接合する作業のジョブプログラムの実行指令を含む第2ロボット制御指令をロボット3Cに送信してもよい。
 コントローラ6は、ステータス情報に基づいて、ロボット3Cにより、第1サブパーツがベースパーツに締結又は接合されたか否かを確認し、第1サブパーツがベースパーツに締結又は接合されたと判断した場合に、ベースパーツにおける所定の第2組付け位置に第2サブパーツを配置するジョブプログラムの実行指令を含む第1ロボット制御指令をロボット3Bに送信してもよい。
 コントローラ6は、ステータス情報に基づいて、ロボット3Bにより、第2組付け位置に第2サブパーツが配置されたか否かを確認し、第2サブパーツが第2組付け位置に配置されたと判断した場合に、第2サブパーツをベースパーツに締結又は接合する作業のジョブプログラムの実行指令を含む第2ロボット制御指令をロボット3Cに送信してもよい。
 このようにコントローラ6が第1ロボット制御指令及び第2ロボット制御指令を送信することによって、コントローラ7C(第2コントローラ)は、コントローラ7B(第1コントローラ)の制御によるロボット3Bの動作に協調するようにロボット3Cを動作させることとなる。また、コントローラ7B(第2コントローラ)は、コントローラ7C(第1コントローラ)の制御によるロボット3Cの動作に協調するようにロボット3Bを動作させることとなる。
 以上のように、コントローラ6が複数のコントローラ7と通信可能であるため、コントローラ7同士も、コントローラ6を介して間接的に通信可能となっている。コントローラ7同士が直接的に通信可能となっていてもよい。
 コントローラ6がコントローラ7に制御指令を送信することは、コントローラ7とマシン3とを含むマシン2をコントローラ6が制御することに相当する。例えば、コントローラ6がコントローラ7Aに制御指令を送信することは、コントローラ7Aとコンベヤ3Aとを含むマシン2Aをコントローラ6が制御することに相当する。コントローラ6がコントローラ7Bに制御指令を送信することは、コントローラ7Bとロボット3Bとを含むマシン2Bをコントローラ6が制御することに相当する。コントローラ6がコントローラ7Cに制御指令を送信することは、コントローラ7Cとロボット3Cとを含むマシン2Cをコントローラ6が制御することに相当する。
 このため、コントローラ6は、複数のマシン2A,2B,2Cを制御するコントローラに相当する。コントローラ7B,7Cが、コントローラ7Aの制御によるコンベヤ3Aの動作に協調するようにロボット3B,3Cを動作させることは、コントローラ7B,7C(第2コントローラ)が、コントローラ6(第1コントローラ)の制御によるマシン2Aの動作に協調するようにロボット3B,3Cを動作させることに相当する。
 コントローラ7Aが、コントローラ7B,7Cの制御によるロボット3B,3Cの動作に協調するようにコンベヤ3Aを動作させることは、コントローラ7A(第2コントローラ)が、コントローラ6(第1コントローラ)の制御によるマシン2B,2Cの動作に協調するようにコンベヤ3Aを動作させることに相当する。
 コントローラ7Cが、コントローラ7Bの制御によるロボット3Bの動作に協調するようにロボット3Cを動作させることは、コントローラ7C(第2コントローラ)が、コントローラ6(第1コントローラ)の制御によるマシン2Bの動作に協調するようにロボット3Cを動作させることに相当する。
 コントローラ7Bが、コントローラ7Cの制御によるロボット3Cの動作に協調するようにロボット3Bを動作させることは、コントローラ7B(第2コントローラ)が、コントローラ6(第1コントローラ)の制御によるマシン2Cの動作に協調するようにロボット3Bを動作させることに相当する。
 シミュレーション装置100は、複数のマシン3に対する実制御システム5による制御をシミュレーションする。このような、システム全体のシミュレーションにおいては、複数のマシン3同士の協調関係も適切にシミュレーションする必要がある。しかしながら、複数のマシン3のそれぞれのシミュレーションは、必ずしもリアルタイムで行われるわけではない。例えば、コントローラ7Aによる搬送セグメント処理のシミュレーションは、搬送制御指令に基づいて、搬送制御周期ごとのコンベヤ3Aの動作目標値を算出し、動作目標値に応じたコンベヤ3Aの動作量を算出することを含むが、このシミュレーションの演算時間が搬送制御周期と一致するとは限らない。このため、コントローラ6及び複数のコントローラ7による制御を個別にシミュレーションすると、コントローラ6による制御の進行とコントローラ7による制御の進行との関係、及びコントローラ7による制御の進行とコントローラ7による制御の進行との関係を、適切にシミュレーションすることができず、複数のマシン3の協調関係をシミュレーション空間において再現することができない。
 これに対し、シミュレーション装置100は、第1マシンに対する第1コントローラによる制御を第1シミュレータによりシミュレーションすることと、第2マシンに対する第2コントローラによる制御を第2シミュレータによりシミュレーションすることと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に基づいて、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールすることと、を実行するように構成されている。
 これにより、実時間とは異なる経過時間で実行されるノンリアルタイムシミュレーションにおいても、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行との関係を、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行との関係に容易に対応させることができる。このため、複数のマシン3の協調関係をシミュレーション空間において容易に再現することができる。
 例えばシミュレーション装置100は、図3に示すように、機能上の構成として、複数のシミュレータ101,102と、シミュレーションマネジャ110とを有する。
 複数のシミュレータ102の一例として、図3には、コントローラ7A,7B,7Cにそれぞれ対応するシミュレータ102A,102B,102Cが示されている。シミュレータ102Aは、コンベヤ3Aに対するコントローラ7Aによる制御をシミュレーションする。例えばシミュレータ102Aは、上述したコントローラ7Aによる搬送セグメント処理をシミュレーションする。搬送セグメント処理のシミュレーションは、搬送制御指令に基づいて、搬送制御周期ごとのコンベヤ3Aの動作目標値を算出し、動作目標値に対応するコンベヤ3Aの動作量を算出することを含む。
 シミュレータ102Bは、ロボット3Bに対するコントローラ7Bによる制御をシミュレーションする。例えばシミュレータ102Bは、上述したコントローラ7Bによる第1ロボットセグメント処理をシミュレーションする。第1ロボットセグメント処理のシミュレーションは、第1ロボット制御指令に基づいて、第1ロボット制御周期ごとの先端部18の目標位置・姿勢を算出し、算出した目標位置・姿勢に先端部18を移動させるためのアクチュエータ41,42,43,44,45,46の動作目標値を逆運動学演算により算出し、算出した動作目標値に応じたアクチュエータ41,42,43,44,45,46の動作量を算出することを含む。
 シミュレータ102Cは、ロボット3Cに対するコントローラ7Cによる制御をシミュレーションする。例えばシミュレータ102Cは、上述したコントローラ7Cによる第2ロボットセグメント処理をシミュレーションする。第2ロボットセグメント処理のシミュレーションは、第2ロボット制御指令に基づいて、第2ロボット制御周期ごとの先端部18の目標位置・姿勢を算出し、算出した目標位置・姿勢に先端部18を移動させるためのアクチュエータ41,42,43,44,45,46の動作目標値を逆運動学演算により算出し、算出した動作目標値に応じたアクチュエータ41,42,43,44,45,46の動作量を算出することを含む。
 シミュレータ101は、マシン2A,2B,2Cに対するコントローラ6による制御をシミュレーションする。例えばシミュレータ101は、上述したコントローラ6によるシステムセグメント処理をシミュレーションする。システムセグメント処理のシミュレーションは、複数のシミュレータ102A,102B,102Cのシミュレーション結果に基づく複数のマシン3及びワークの仮想ステータス情報を取得することと、予め定められたシステムプログラムと、仮想ステータス情報とに基づいて、新たな動作を開始させるべきマシン3(以下、「制御対象マシン」という。)を特定することと、新たな動作を開始させるための制御指令を制御対象マシン3のシミュレータ102に送信することとを含む。
 シミュレータ102B,102C(第2シミュレータ)は、シミュレータ102A(第1シミュレータ)によるコンベヤ3A(第1マシン)の動作のシミュレーション結果に対して、ロボット3B,3C(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3B,3C(第2マシン)に対するコントローラ7B,7C(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102B,102C(第2シミュレータ)は、シミュレータ101(第1シミュレータ)によるマシン2A(第1マシン)の動作のシミュレーション結果に対して、ロボット3B,3C(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3B,3C(第2マシン)に対するコントローラ7B,7C(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102A(第2シミュレータ)は、シミュレータ102B,102C(第1シミュレータ)によるロボット3B,3C(第1マシン)の動作のシミュレーション結果に対して、コンベヤ3A(第2マシン)の動作のシミュレーション結果を協調させるように、コンベヤ3A(第2マシン)に対するコントローラ7A(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102A(第2シミュレータ)は、シミュレータ101(第1シミュレータ)によるマシン2B,2C(第1マシン)の動作のシミュレーション結果に対して、コンベヤ3A(第2マシン)の動作のシミュレーション結果を協調させるように、コンベヤ3A(第2マシン)に対するコントローラ7A(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102C(第2シミュレータ)は、シミュレータ102B(第1シミュレータ)によるロボット3B(第1マシン)の動作のシミュレーション結果に対して、ロボット3C(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3C(第2マシン)に対するコントローラ7C(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102C(第2シミュレータ)は、シミュレータ101(第1シミュレータ)によるマシン2B(第1マシン)の動作のシミュレーション結果に対して、ロボット3C(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3C(第2マシン)に対するコントローラ7C(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102B(第2シミュレータ)は、シミュレータ102C(第1シミュレータ)によるロボット3C(第1マシン)の動作のシミュレーション結果に対して、ロボット3B(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3B(第2マシン)に対するコントローラ7B(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレータ102B(第2シミュレータ)は、シミュレータ101(第1シミュレータ)によるマシン2C(第1マシン)の動作のシミュレーション結果に対して、ロボット3B(第2マシン)の動作のシミュレーション結果を協調させるように、ロボット3B(第2マシン)に対するコントローラ7B(第2コントローラ)による制御をシミュレーションしてもよい。
 シミュレーションマネジャ110は、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールする。例えば、シミュレーションマネジャ110は、コントローラ6(第1コントローラ)による制御の進行と、コントローラ7A,7B,7C(第2コントローラ)による制御の進行との関係に、シミュレータ101(第1シミュレータ)によるシミュレーションの進行と、シミュレータ102A,102B,102C(第2シミュレータ)によるシミュレーションの進行との関係を対応させるように、シミュレータ101によるシミュレーションの進行と、シミュレータ102A,102B,102Cによるシミュレーションの進行とをコントロールしてもよい。これにより、コントローラ6による制御の進行と、コントローラ7Aによる制御の進行と、コントローラ7Bによる制御の進行と、コントローラ7Cによる制御の進行との関係に、シミュレータ101によるシミュレーションの進行と、シミュレータ102Aによるシミュレーションの進行と、シミュレータ102Bによるシミュレーションの進行と、シミュレータ102Cによるシミュレーションの進行との関係が対応することとなる。
 シミュレーションマネジャ110は、第1コントローラによる制御で繰り返し実行される第1セグメント処理の実行タイミングと、第2コントローラによる制御で繰り返される第2セグメント処理の実行タイミングとの関係に対応するように、第1シミュレータによって繰り返される第1セグメント処理の実行タイミングと、第2シミュレータによって繰り返される第2セグメント処理の実行タイミングとをコントロールしてもよい。
 例えば、シミュレーションマネジャ110は、コントローラ6(第1コントローラ)による制御で繰り返されるシステムセグメント処理の実行タイミングと、コントローラ7A,7B,7Cによる制御で繰り返される搬送セグメント処理、第1ロボットセグメント処理、及び第2ロボットセグメント処理の実行タイミングとの関係に、シミュレータ101によって繰り返されるシステムセグメント処理の実行タイミングと、シミュレータ102A,102B,102Cによって繰り返される搬送セグメント処理、第1ロボットセグメント処理、及び第2ロボットセグメント処理の実行タイミングとの関係を対応させるように、シミュレータ101によって繰り返されるシステムセグメント処理の実行タイミングと、シミュレータ102A,102B,102Cによって繰り返される搬送セグメント処理、第1ロボットセグメント処理、及び第2ロボットセグメント処理の実行タイミングとをコントロールしてもよい。
 シミュレーションマネジャ110は、第1コントローラによる第1セグメント処理の繰り返し周期を表す第1制御周期と、第2コントローラによる第2セグメント処理の繰り返し周期を表す第2制御周期とに基づいて、第1シミュレータによって繰り返される第1セグメント処理の実行タイミングと、第2シミュレータによって繰り返される第2セグメント処理の実行タイミングとをコントロールしてもよい。例えば、シミュレーションマネジャ110は、システム制御周期と、搬送制御周期と、第1ロボット制御周期と、第2ロボット制御周期とに基づいて、シミュレータ101によって繰り返されるシステムセグメント処理の実行タイミングと、シミュレータ102A,102B,102Cによって繰り返される搬送セグメント処理、第1ロボットセグメント処理、及び第2ロボットセグメント処理の実行タイミングとをコントロールしてもよい。
 一例として、シミュレーションマネジャ110は、図4に示すように、カウンタ111と、周期情報記憶部112と、選択部113と、実行部114とを有する。カウンタ111は、シミュレーションサイクル数をカウントする。周期情報記憶部112は、システム制御周期と、搬送制御周期と、第1ロボット制御周期と、第2ロボット制御周期とを記憶する。
 選択部113は、システム制御周期、搬送制御周期、第1ロボット制御周期、及び第2ロボット制御周期と、シミュレーションサイクル数とに基づいて、シミュレータ101,シミュレータ102A,102B,102Cの少なくとも一つを選択する。例えば選択部113は、システムセグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、システム制御周期に対応するシミュレーションサイクル数となった場合に、シミュレータ101を選択する。ここで、システム制御周期等の比較対象時間に対応するシミュレーションサイクル数とは、例えば、シミュレーションサイクル数に所定のシミュレーション基準時間を乗算した時間が比較対象時間以上となるシミュレーションサイクル数を意味する。
 選択部113は、搬送セグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、搬送制御周期に対応するシミュレーションサイクル数となった場合に、シミュレータ102Aを選択する。選択部113は、第1ロボットセグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、第1ロボット制御周期に対応するシミュレーションサイクル数となった場合に、シミュレータ102Bを選択する。選択部113は、第2ロボットセグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、第2ロボット制御周期に対応するシミュレーションサイクル数となった場合に、シミュレータ102Cを選択する。
 システム制御周期に対応するシミュレーションサイクル数、搬送制御周期に対応するシミュレーションサイクル数、第1ロボット制御周期に対応するシミュレーションサイクル数、及び第2ロボット制御周期に対応するシミュレーションサイクル数は、いずれも1以上であってもよい。例えば、上述のシミュレーション基準時間の長さは、システム制御周期、搬送制御周期、第1ロボット制御周期、及び第2ロボット制御周期のうち最短の制御周期の長さと同等以下であってもよい。
 実行部114は、選択部113が選択した少なくとも一つのシミュレータのそれぞれに、セグメント処理を実行させる。例えば実行部114は、選択部113によりシミュレータ101が選択された場合にはシミュレータ101にシステムセグメント処理を実行させ、選択部113によりシミュレータ102Aが選択された場合にはシミュレータ102Aに搬送セグメント処理を実行させ、選択部113によりシミュレータ102Bが選択された場合にはシミュレータ102Bに第1ロボットセグメント処理を実行させ、選択部113によりシミュレータ102Cが選択された場合にはシミュレータ102Cに第2ロボットセグメント処理を実行させる。
 シミュレーションマネジャ110は、個別シミュレーションの指示を受けた場合に、シミュレータ101,102から一つの個別実行シミュレータを選択し、他のシミュレータによるシミュレーションの進行に無関係に、個別実行シミュレータによるシミュレーションを実行させてもよい。
 図3に戻り、シミュレーション装置100は、第1シミュレータによるシミュレーション結果と、第2シミュレータによるシミュレーション結果とに基づいて、第1マシンの動作及び第2マシンの動作をシミュレーションするように構成されていてもよい。
 例えばシミュレーション装置100は、モデル記憶部121と、動作シミュレーション部122とを更に有する。モデル記憶部121は、複数のマシン3のモデル情報を記憶する。マシン3のモデル情報は、マシン3の構造及び各部の寸法に関する情報を含む。
 動作シミュレーション部122は、シミュレータ101,102によるシミュレーション結果に基づいて、複数のマシン3の動作をシミュレーションする。例えば動作シミュレーション部122は、シミュレータ102Aにより算出されたコンベヤ3Aの動作量と、モデル記憶部121が記憶するコンベヤ3Aのモデル情報とに基づいて、コンベヤ3Aの動作をシミュレーションする。また、動作シミュレーション部122は、シミュレータ102Bにより算出されたアクチュエータ41,42,43,44,45,46の動作量と、モデル記憶部121が記憶するロボット3Bのモデル情報とに基づく順運動学演算によって、ロボット3Bの動作をシミュレーションする。同様に、動作シミュレーション部122は、シミュレータ102Cにより算出されたアクチュエータ41,42,43,44,45,46の動作量と、モデル記憶部121が記憶するロボット3Cのモデル情報とに基づく順運動学演算によって、ロボット3Cの動作をシミュレーションする。
 動作シミュレーション部122は、第1シミュレータによるシミュレーション結果と、第2シミュレータによるシミュレーション結果との両方が更新された後に、第1マシンの動作及び第2マシンの動作をシミュレーションしてもよい。例えば動作シミュレーション部122は、複数のマシン3の動作をシミュレーションした後、シミュレータ101,102の全てが1サイクル以上のセグメント処理を実行したタイミングで、複数のマシン3の動作を再度シミュレーションしてもよい。動作シミュレーション部122は、複数のマシン3の動作のシミュレーション結果に基づいて、複数のマシン3の動作のシミュレーション画像を生成し、後述の表示デバイス196等に表示させてもよい。
 シミュレーション装置100は、第1コントローラと第2コントローラとの間で直接的又は間接的に行われる通信を再現するように、第1シミュレータと第2シミュレータとの間における通信データの受け渡しを行うように構成されていてもよい。例えばシミュレーション装置100は、通信シミュレータ130と、通信データ記憶部141とを更に有する。
 通信データ記憶部141は、少なくとも一つの通信バッファ150を含む。通信バッファ150は、第1シミュレータと第2シミュレータとの間における受け渡し用の通信データの一時格納に用いられる。通信バッファ150は、データ転送方向の上流から下流に並ぶ複数の記憶領域を含んでいてもよい。通信バッファ150内に一時的に格納された通信データは、データ転送方向の上流から下流に向かって順次転送される。
 通信シミュレータ130は、第1コントローラと第2コントローラとの間で直接的又は間接的に行われる通信を再現するように、第1シミュレータと第2シミュレータとの間における通信データの受け渡しを行う。例えば通信シミュレータ130は、コントローラ6,7A,7B,7Cにおける送信側のコントローラと受信側のコントローラとの間で直接的又は間接的に行われる通信を再現するように、シミュレータ101,102A,102B,102Cにおける送信側のシミュレータと受信側のシミュレータとの間における通信データの受け渡しを行う。通信シミュレータ130は、送信側のシミュレータが生成した通信データを、予め定められた仮想遅延時間に基づいたタイミングで、受信側のシミュレータに取得させてもよい。
 例えば通信シミュレータ130は、図5に示すように、通信カウンタ131と、通信データ格納部133と、通信データ転送部132と、通信データ読出部134とを有する。
 通信カウンタ131は、通信サイクル数をカウントする。通信データ格納部133は、送信側のシミュレータが生成した通信データを通信バッファ150に格納する。例えば通信データ格納部133は、送信側のシミュレータが生成した通信データを、通信バッファ150の最上流の記憶領域に格納する。通信データ転送部132は、通信サイクル数がカウントされる度に、通信データを通信バッファ150において一つ下流の記憶領域に転送する。通信データ読出部134は、通信データ転送部132により最下流の記憶領域まで転送された通信データを読み出して受信側のシミュレータに取得させる。
 通信データ読出部134は、通信バッファ150に通信データが格納されてからカウントされた通信サイクル数が、仮想遅延時間に対応する通信サイクル数となった場合に、通信バッファ150に格納された通信データを読み出して受信側のシミュレータに取得させる。仮想遅延時間に対応する通信サイクル数とは、例えば、通信サイクル数に所定の通信基準時間を乗算した時間が仮想遅延時間以上となる通信サイクル数を意味する。
 一例として、通信バッファ150が、上記仮想遅延時間に対応する数の記憶領域を含んでいてもよい。記憶領域の数が仮想遅延時間に対応するとは、例えば、最上流の記憶領域に格納された通信データが、最下流の記憶領域に転送されるまでの通信サイクル数に、上記通信基準時間を乗算した時間が、仮想遅延時間に対応することを意味する。例えば、次式を満たすことは、記憶領域の数が仮想遅延時間に対応することの一例である。
記憶領域の数=仮想遅延時間/通信基準時間+1・・・(1)
 通信バッファ150の記憶領域の数が、仮想遅延時間に対応していれば、通信バッファ150に格納された通信データを通信バッファ150が読み出すまでの通信サイクル数が、仮想遅延時間に対応することとなる。
 通信カウンタ131は、カウンタ111によるシミュレーションサイクルのカウントに同期して通信サイクル数をカウントしてもよい。通信カウンタ131は、カウンタ111によるシミュレーションサイクルのカウントよりも高い頻度で通信サイクル数をカウントしてもよい。例えば通信カウンタ131は、カウンタ111によるシミュレーションサイクルのカウントの整数倍の頻度で通信サイクル数をカウントしてもよい。
 例えば、上記通信基準時間は、上記シミュレーション基準時間と同じであってもよく、シミュレーション基準時間より短くてもよい。通信基準時間は、シミュレーション基準時間の整数分の1であってもよい。
 図6は、送信側のシミュレータが生成する通信データと、通信バッファ150の内容と、受信側のシミュレータが取得する通信データとの推移を例示する模式図である。図6において、通信バッファ150は、データ転送方向の上流から下流に並ぶ四つの記憶領域151,152,153,154を有しているが、通信バッファ150が有する通信データの数は四つに限定されない。
 信号波形TSは、送信側のシミュレータが生成する通信データが含む一つの信号(以下、「通信信号」という。)を例示するグラフであり、信号波形RSは、受信側のシミュレータが取得する通信信号を例示するグラフである。いずれのグラフにおいても、横軸が通信サイクル数を表し、縦軸が通信信号の値を示している。
信号波形TS,RSは、「OFF」又は「ON」の2値で情報を表す通信信号を例示している。信号波形TS,RSが低い値となっていることは、通信信号が「OFF」であることを表し、信号波形TS,RSが高い値となっていることは、通信信号が「ON」であることを表す。
 通信サイクルCS1において、通信データ転送部132は、通信バッファ150に既に格納されている通信データのそれぞれを一つ下流の記憶領域に転送する。例えば通信データ転送部132は、記憶領域153に格納された通信データを記憶領域154に転送し、記憶領域152に格納された通信データを記憶領域153に転送し、記憶領域151に格納された通信データを記憶領域152に転送する。最下流の記憶領域154に格納されていた通信データは、記憶領域153から転送された通信データによって上書きされる。
 次に、通信データ格納部133が、信号波形TSの現在値である「OFF」を、最上流の記憶領域151に格納する。これにより、通信サイクルCS1においては、記憶領域151,152,153,154の全てに「OFF」が格納された状態となっている。通信データ読出部134は、最下流の記憶領域154に格納された「OFF」を読み出して受信用のシミュレータに取得させる。これにより、信号波形RSの現在値が「OFF」となる。
 通信データ転送部132、通信データ格納部133、及び通信データ読出部134は、通信カウンタ131により通信サイクル数がカウントされる度に、同様の処理を繰り返す。通信サイクルCS1の後、通信カウンタ131により、通信サイクル数が二つカウントアップされた通信サイクルCS3においては、信号波形TSの現在値が「ON」となっているため、最上流の記憶領域151には「ON」が格納され、他の記憶領域152,153,154には「OFF」が格納された状態となる。通信データ読出部134は、最下流の記憶領域154に格納された「OFF」を読み出して受信用のシミュレータに取得させるので、信号波形RSの現在値は「OFF」のままに維持される。
 通信サイクルCS3の後、通信カウンタ131により通信サイクル数が二つカウントアップされた通信サイクルCS5においては、信号波形TSの現在値が「OFF」となっているため、記憶領域151には「OFF」が格納され、記憶領域152,153には「ON」が格納され、記憶領域154には「OFF」が格納された状態となる。通信データ読出部134は、最下流の記憶領域154に格納された「OFF」を読み出して受信用のシミュレータに取得させるので、信号波形RSの現在値は依然として「OFF」のままに維持される。
 通信サイクルCS5の次の通信サイクルCS6においては、通信サイクルCS3において記憶領域151に格納された「ON」が記憶領域154に達する。これを通信データ読出部134が読み出し、受信用のシミュレータに取得させるので、信号波形RSの現在値は「ON」に変化する。
 通信サイクルCS6の後、通信カウンタ131により、通信サイクル数が二つカウントアップされた通信サイクルCS8においては、通信サイクルCS5において記憶領域151に格納された「OFF」が記憶領域154に達する。これを通信データ読出部134が読み出し、受信用のシミュレータに取得させるので、信号波形RSの現在値は「OFF」に変化する。
 このように、信号波形RSの変化には、最上流の記憶領域151に格納された通信データが最下流の記憶領域154に達するまでの通信サイクル数で遅れが生じる。つまり、信号波形RSの変化には、通信バッファ150の記憶領域の数から1を減算した通信サイクル数で遅れが生じる。遅れの通信サイクル数は、その数に上記通信基準時間を乗算した時間の通信遅延時間をシミュレーションしている。
 図3に戻り、通信シミュレータ130は、複数の送信側のシミュレータと、複数の受信側のシミュレータとをそれぞれ対応付ける複数の通信定義に基づいて、送信側のシミュレータから通信データを取得することと、受信側のシミュレータに通信データを取得させることと、を複数の通信定義ごとに実行してもよい。
 例えばシミュレーション装置100は、通信マップ142を更に有する。通信マップ142は、複数の通信定義を記憶する。複数の通信定義のそれぞれが、仮想遅延時間を含んでいてもよい。この場合、通信シミュレータ130は、複数の通信定義ごとに、送信側のシミュレータが生成した通信データを、仮想遅延時間に基づいたタイミングで受信側のシミュレータに取得させてもよい。
 シミュレーション装置100は、通信バッファ割当部143を更に有してもよい。通信バッファ割当部143は、仮想遅延時間に対応するサイズの通信バッファを複数の通信定義ごとに割り当てる。例えば通信バッファ割当部143は、仮想遅延時間に対応する数の記憶領域を含む通信バッファを、複数の通信定義ごとに割り当てる。一例として、通信バッファ割当部143は、上記式(1)を満たす数の記憶領域を含む通信バッファを、複数の通信定義ごとに割り当てる。
 通信シミュレータ130は、送信側のシミュレータが生成した通信データを通信バッファ150に格納することを複数の通信定義ごとに実行してもよい。通信シミュレータ130は、通信バッファ150に通信データが格納されてからカウントされた通信サイクル数が、仮想遅延時間に対応する通信サイクル数となった場合に、通信バッファ150に格納された通信データを読み出して受信側のシミュレータに取得させることを、複数の通信定義ごとに実行してもよい。
 例えば、図5に示すように、通信データ格納部133は、通信マップ142を参照し、送信側のシミュレータが生成した通信データを通信バッファ150の最上流の記憶領域に格納することを、複数の通信定義ごとに実行してもよい。通信データ転送部132は、通信サイクル数がカウントされる度に、通信データを通信バッファ150において一つ下流の記憶領域に転送することを、複数の通信定義ごとに実行してもよい。通信データ読出部134は、通信マップ142を参照し、通信データ転送部132により最下流の記憶領域まで転送された通信データを読み出して受信側のシミュレータに取得させることを、複数の通信定義ごとに実行してもよい。
 図7は、通信マップ142に格納される複数の通信定義を例示するテーブルである。図7においては、テーブルの1行が、一つの通信定義160を表している。通信定義160は、送信側定義161と、受信側定義162と、仮想遅延時間163とを含む。
 送信側定義161は、送信側のシミュレータの識別情報と、アドレスとを含む。アドレスは、送信側のシミュレータが生成した通信データを書き込む記憶領域(以下、「送信用記憶領域」という。)のアドレスである。受信側定義162は、受信側のシミュレータの識別情報と、アドレスとを含む。アドレスは、受信側のシミュレータがシミュレーションに際して通信データを読み出す記憶領域(以下、「受信用記憶領域」という。)のアドレスである。
 通信データ格納部133は、通信定義160に基づいて、送信用記憶領域に格納された通信データを読み出し、通信バッファ150の最上流の記憶領域に格納する。通信データ読出部134は、通信バッファ150の最下流の記憶領域に格納された通信データを読み出し、通信定義160に基づいて受信用記憶領域に格納する。
 シミュレーション装置100は、指定された再生速度に応じてシミュレータ101,102によるシミュレーションの進行速度を変更するように構成されていてもよい。また、シミュレーション装置100は、停止指令に応じて、シミュレータ101,102によるシミュレーションを中断するように構成されていてもよい。例えばシミュレーション装置100は、進行速度調節部171と、中断部172とを更に有する。
 進行速度調節部171は、例えば後述の入力デバイス195から再生速度の指定を取得し、再生速度の指定に応じてシミュレータ101,102によるシミュレーションの進行速度を変更する。例えば進行速度調節部171は、カウンタ111によるシミュレーションサイクル数のカウントを、所定のシミュレーション周期で実行させ、再生速度の指定に応じてシミュレーション周期を変更する。例えば進行速度調節部171は、シミュレーション周期を短くすることで再生速度を高くし、シミュレーション周期を長くすることで再生速度を遅くする。
 中断部172は、例えば後述の入力デバイス195から停止指令を取得し、停止指令に応じて、シミュレータ101,102によるシミュレーションを中断する。例えば中断部172は、カウンタ111によるシミュレーションサイクル数のカウントを中断させる。
 制御システム4は、シミュレーション装置100によるシミュレーション結果と、実制御システム5による実際の制御結果とを比較して、上述の仮想遅延時間を設定するように構成されていてもよい。また、制御システム4は、シミュレーション装置100によるシミュレーション結果と、実制御システム5による実際の制御結果とを比較して、実制御システム5における異常を検知するように構成されていてもよい。
 例えば制御システム4は、データ収集装置200を更に備えてもよい。データ収集装置200は、シミュレーション装置100によるシミュレーション結果を表すバーチャルデータと、実制御システム5による制御結果を表すリアルデータとを収集する。
 図8に示すように、データ収集装置200は、リアルデータ記憶部201と、バーチャルデータ記憶部202と、乖離評価部203とを有する。リアルデータ記憶部201は、リアルデータをコントローラ6から取得して蓄積する。バーチャルデータ記憶部202は、バーチャルデータをシミュレーション装置100から取得して蓄積する。
 乖離評価部203は、バーチャルデータとリアルデータとの乖離を評価する。例えば乖離評価部203は、シミュレーションサイクル数に上記シミュレーション基準時間を乗算することで、シミュレーションサイクル数を経過時間に換算した上で、バーチャルデータにおける各種イベントの発生時刻と、リアルデータにおける各種イベントの発生時刻との乖離を評価する。
 制御システム4がデータ収集装置200を更に備える場合に、シミュレーション装置100は、データ蓄積部181と、仮想遅延設定部144とを更に有してもよい。データ蓄積部181は、シミュレータ101,102A,102B,102Cによるシミュレーション結果をシミュレーションマネジャ110から取得し、複数のマシン3の動作のシミュレーション結果を動作シミュレーション部122から取得し、バーチャルデータ記憶部202に蓄積させる。
 仮想遅延設定部144は、仮想遅延時間を、実際の制御における通信遅延時間に対応させる。仮想遅延設定部144は、仮想遅延時間を実際の制御における通信遅延時間に対応させることを、上記複数の通信定義ごとに実行してもよい。例えば仮想遅延設定部144は、乖離評価部203による乖離の評価結果を取得することと、乖離の評価結果を縮小するように複数の通信定義ごとの仮想遅延時間を変更することとを、乖離の評価結果が所定のキャリブレーションレベル以下となるまで繰り返す。
 データ収集装置200は、異常検知部204を更に有してもよい。異常検知部204は、コントローラ6,7A,7B,7Cによる制御の進行と、シミュレータ101,102A,102B,102Cによるシミュレーションの進行との比較に基づいて、実制御システム5の異常を検知する。
 例えば異常検知部204は、乖離評価部203による乖離の評価結果に基づいて、実制御システム5の異常を検知する。例えば異常検知部204は、乖離評価部203による乖離の評価結果が所定の異常検知レベルを超えた場合に、実制御システム5の異常を検知する。
 データ収集装置200は、比較画像生成部205を更に有してもよい。比較画像生成部205は、コントローラ6,7による制御の進行と、シミュレータ101,102によるシミュレーションの進行とを対比する比較画像を生成し、後述の表示デバイス196,296等に表示させる。例えば比較画像生成部205は、バーチャルデータにおける各種イベントの発生時刻と、リアルデータにおける各種イベントの発生時刻とを示すタイミングチャートを含む比較画像を生成する。
 図9は、シミュレーション装置100及びデータ収集装置200のハードウェア構成を例示するブロック図である。図9に示すように、シミュレーション装置100は、回路190を有する。回路190は、一つ又は複数のプロセッサ191と、メモリ192と、ストレージ193と、通信ポート194と、入力デバイス195と、表示デバイス196とを含む。ストレージ193は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ193は、第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応させるように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャ110と、をシミュレーション装置100に構成させるプログラムを記憶している。
 メモリ192は、ストレージ193の記憶媒体からロードしたプログラム及びプロセッサ191による演算結果を一時的に記憶する。プロセッサ191は、メモリ192と協働して上記プログラムを実行することで、シミュレーション装置100の各機能ブロックを構成する。通信ポート194は、プロセッサ191からの指令に従って、ネットワーク回線NWを介して、データ収集装置200及びコントローラ6との間で通信を行う。入力デバイス195及び表示デバイス196は、シミュレーション装置100のユーザインタフェースとして機能する。入力デバイス195は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス196は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス195及び表示デバイス196は、所謂タッチパネルのように一体化されていてもよい。入力デバイス195及び表示デバイス196は、シミュレーション装置100に組み込まれていてもよいし、シミュレーション装置100に接続される外部機器に設けられていてもよい。
 データ収集装置200は、回路290を有する。回路290は、一つ又は複数のプロセッサ291と、メモリ292と、ストレージ293と、通信ポート294と、入力デバイス295と、表示デバイス296とを含む。ストレージ293は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ293は、リアルデータをコントローラ6から取得して蓄積するリアルデータ記憶部201と、バーチャルデータをシミュレーション装置100から取得して蓄積するバーチャルデータ記憶部202と、バーチャルデータとリアルデータとの乖離を評価する乖離評価部203とをデータ収集装置200に構成させるプログラムを記憶している。
 メモリ292は、ストレージ293の記憶媒体からロードしたプログラム及びプロセッサ291による演算結果を一時的に記憶する。プロセッサ291は、メモリ292と協働して上記プログラムを実行することで、データ収集装置200の各機能ブロックを構成する。通信ポート294は、プロセッサ291からの指令に従って、ネットワーク回線NWを介して、シミュレーション装置100及びコントローラ6との間で通信を行う。入力デバイス295及び表示デバイス296は、データ収集装置200のユーザインタフェースとして機能する。入力デバイス295は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス296は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス295及び表示デバイス296は、所謂タッチパネルのように一体化されていてもよい。入力デバイス295及び表示デバイス296は、データ収集装置200に組み込まれていてもよいし、データ収集装置200に接続される外部機器に設けられていてもよい。
 なお、回路190及び回路290は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路190及び回路290は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。ハードウェア上において、シミュレーション装置100とデータ収集装置200とは必ずしも分かれていなくてもよく、シミュレーション装置100及びデータ収集装置200が一つのコンピュータによって構成されていてもよい。
〔シミュレーション手順〕
 続いて、シミュレーション方法の一例として、シミュレーション装置100が実行するシミュレーション手順を例示する。この手順は、第1マシンに対する第1コントローラによる制御を第1シミュレータによりシミュレーションすることと、第2マシンに対する第2コントローラによる制御を第2シミュレータによりシミュレーションすることと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に基づいて、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールすることと、を含む。
 図10に示すように、シミュレーション装置100は、まずステップS01,S02,S03,S04を実行する。ステップS01では、カウンタ111が、シミュレーションサイクル数のカウントを開始する。ステップS02では、選択部113が、システム制御周期、搬送制御周期、第1ロボット制御周期、及び第2ロボット制御周期と、シミュレーションサイクル数とに基づいて、シミュレータ101,シミュレータ102A,102B,102Cの少なくとも一つを選択する。
 ステップS03では、実行部114が、選択部113が選択した少なくとも一つのシミュレータのそれぞれに、セグメント処理を実行させる。ステップS04では、動作シミュレーション部122が、シミュレータ101,102の全てが1サイクル以上のセグメント処理を実行したか否かを確認する。
 ステップS04において、シミュレータ101,102の全てが1サイクル以上のセグメント処理を実行したと判定した場合、シミュレーション装置100はステップS05,S06を実行する。ステップS05では、動作シミュレーション部122が、シミュレータ101,102によるシミュレーション結果に基づいて、複数のマシン3の動作をシミュレーションする。ステップS06では、動作シミュレーション部122が、複数のマシン3の動作のシミュレーション結果に基づいて、複数のマシン3の動作のシミュレーション画像を生成し、表示デバイス196等に表示させる。
 次に、シミュレーション装置100は、ステップS07を実行する。ステップS04において、1サイクル以上のセグメント処理を実行していないシミュレータ101,102が残っていると判定した場合、シミュレーション装置100は、ステップS05,S06を実行することなくステップS07を実行する。ステップS07では、シミュレーションマネジャ110が、実制御システム5における一連の制御のシミュレーションが完了したか否かを確認する。
 ステップS07において、実制御システム5における一連の制御のシミュレーションが完了していないと判定した場合、シミュレーション装置100はステップS08,S09,S11,S12,S13,S14を実行する。ステップS08では、通信データ転送部132が、通信データを通信バッファ150において一つ下流の記憶領域に転送する。ステップS09では、通信データ格納部133が、送信側のシミュレータが生成した通信データを、通信バッファ150の最上流の記憶領域に格納することを、複数の通信定義ごとに実行する。ステップS11では、通信データ読出部134が、通信データ転送部132により最下流の記憶領域まで転送された通信データを読み出して受信側のシミュレータに取得させることを、複数の通信定義ごとに実行する。
 ステップS12では、データ蓄積部181が、シミュレータ101,102A、102B,102Cによるシミュレーション結果をシミュレーションマネジャ110から取得し、複数のマシン3の動作のシミュレーション結果を動作シミュレーション部122から取得し、バーチャルデータ記憶部202に蓄積させる。ステップS13では、進行速度調節部171、中断部172が、再生速度の調節処理を行う。ステップS13の具体的内容については後述する。ステップS14では、カウンタ111が、シミュレーションサイクル数をカウントアップする。その後、シミュレーション装置100は処理をステップS02に戻す。シミュレーション装置100は、実制御システム5における一連の制御のシミュレーションが完了するまで、以上のシミュレーションサイクルを繰り返す。
 ステップS07において、実制御システム5における一連の制御のシミュレーションが完了したと判定した場合、シミュレーション装置100によるシミュレーション手順が完了する。
 図11は、ステップS13における再生速度の調節処理の手順を例示するフローチャートである。図11に示すように、シミュレーション装置100は、まずステップS21を実行する。ステップS21では、進行速度調節部171が、シミュレーションサイクル数が現在の値になった後、上記シミュレーション周期が経過したか否かを確認する。
 ステップS21においてシミュレーション周期が経過していないと判定した場合、シミュレーション装置100はステップS22を実行する。ステップS22では、中断部172が、停止指令が入力されているか否かを確認する。ステップS22において停止指令が入力されたと判定した場合、シミュレーション装置100はステップS23を実行する。ステップS23では、中断部172が再開指令の入力を待機する。これにより、再開指令が入力されるまでは、カウンタ111によるサイクル数のカウントが中断し、シミュレータ101,102によるシミュレーションが中断することとなる。
 次に、シミュレーション装置100は、ステップS24を実行する。ステップS22において停止指令が入力されていないと判定した場合、シミュレーション装置100は、ステップS23を実行することなくステップS24を実行する。ステップS24では、進行速度調節部171が、再生速度の指定が入力されているか否かを確認する。
 ステップS24において再生速度の指定が入力されていると判定した場合、シミュレーション装置100はステップS25を実行する。ステップS25では、進行速度調節部171が、再生速度の指定に応じてシミュレーション周期を変更する。その後、シミュレーション装置100は処理をステップS21に戻す。ステップS24において再生速度の指定が入力されていないと判定した場合、シミュレーション装置100は、ステップS25を実行することなく、処理をステップS21に戻す。以後、シミュレーション周期が経過するまでは、以上の処理が繰り返される。ステップS21においてシミュレーション周期が経過したと判定した場合、再生速度の調節処理が完了する。
 図12は、シミュレーション手順の変形例を示すフローチャートである。この変形例は、シミュレーション装置100が、協調シミュレーションと、個別シミュレーションとを選択的に実行する手順を例示している。図12に示すように、シミュレーション装置100は、まずステップS31を実行する。ステップS31では、シミュレーションマネジャ110が、協調シミュレーションの指示が入力デバイス195等に入力されているか否かを確認する。
 ステップS31において協調シミュレーションの指示が入力デバイス195等に入力されていないと判定した場合、シミュレーション装置100はステップS32を実行する。ステップS32では、シミュレーションマネジャ110が、個別シミュレーションの指示が入力デバイス195等に入力されているか否かを確認する。ステップS32において、個別シミュレーションの指示が入力デバイス195等に入力されていないと判定した場合、シミュレーション装置100は処理をステップS31に戻す。
 ステップS31において協調シミュレーションの指示が入力デバイス195等に入力されていると判定した場合、シミュレーション装置100はステップS33を実行する。ステップS33では、シミュレーションマネジャ110が、シミュレータ101,102のシミュレーションを協調して実行させる。ステップS33の具体的手順は、図10のステップS01~S14に例示したとおりである。
 ステップS32において個別シミュレーションの指示が入力デバイス195等に入力されていると判定した場合、シミュレーション装置100はステップS34を実行する。ステップS34では、シミュレーションマネジャ110が、個別シミュレーションを実行する。
 図13は、ステップS34における個別シミュレーション手順を例示するフローチャートである。図13に示すように、シミュレーション装置100は、まずステップS41,S42,S43,S44,S45を実行する。ステップS41では、シミュレーションマネジャ110が、個別シミュレーションの指示に基づいて、シミュレータ101,102から一つの個別実行シミュレータを選択する。
 ステップS42では、シミュレーションマネジャ110が、個別実行シミュレータによるセグメント処理を実行させる。ステップS43では、動作シミュレーション部122が、個別実行シミュレータによるシミュレーション結果に基づいて、個別実行シミュレータに対応するマシン3の動作をシミュレーションする。
 ステップS44では、動作シミュレーション部122が、個別実行シミュレータに対応するマシン3の動作のシミュレーション結果に基づいて、当該マシン3の動作のシミュレーション画像を生成し、表示デバイス196等に表示させる。ステップS45では、シミュレーションマネジャ110が、個別実行シミュレータに対応するコントローラによる一連の制御のシミュレーションが完了したか否かを確認する。
 ステップS45において、個別実行シミュレータに対応するコントローラによる一連の制御のシミュレーションが完了していないと判定した場合、シミュレーション装置100は処理をステップS42に戻す。ステップS45において、個別実行シミュレータに対応するコントローラによる一連の制御のシミュレーションが完了したと判定した場合、個別シミュレーションが完了する。
〔仮想遅延時間の調節手順〕
 続いて、シミュレーション結果に基づき行われる仮想遅延時間の調節手順を例示する。図14に示すように、データ収集装置200はまずステップS51,S52を実行する。ステップS51では、乖離評価部203が、実制御システム5による制御が完了し、リアルデータ記憶部201にリアルデータが蓄積されるのを待機する。ステップS52では、乖離評価部203が、バーチャルデータとリアルデータとの乖離を評価する。
 次に、シミュレーション装置100は、ステップS53を実行する。ステップS53では、乖離評価部203による乖離度の評価結果が、上記キャリブレーションレベル以下になっているか否かを、仮想遅延設定部144が確認する。
 ステップS53において、乖離度の評価結果がキャリブレーションレベル以下になっていないと判定した場合、シミュレーション装置100はステップS54,S55を実行する。ステップS54では、仮想遅延設定部144が、乖離度を縮小するように、複数の通信定義ごとの仮想遅延時間を変更する。ステップS55では、仮想遅延設定部144が、実制御システム5による一連の制御のシミュレーションをシミュレーション装置100に再度実行させる。その後、シミュレーション装置100は処理をステップS52に戻す。
 ステップS53において、乖離度の評価結果がキャリブレーションレベル以下になっていると判定した場合、シミュレーション装置100はステップS56を実行する。ステップS56では、通信バッファ割当部143が、仮想遅延設定部144により設定された仮想遅延時間に対応するサイズの通信バッファを複数の通信定義ごとに割り当てる。以上で仮想遅延時間の調節手順が完了する。
〔異常検知手順〕
 続いて、データ収集装置200による異常検知手順を例示する。図15に示すように、データ収集装置200は、まずステップS61,S62,S63を実行する。ステップS61では、乖離評価部203が、実制御システム5による制御が完了し、リアルデータ記憶部201にリアルデータが蓄積されるのを待機する。ステップS62では、乖離評価部203が、バーチャルデータとリアルデータとの乖離を評価する。ステップS63では、乖離評価部203による乖離度の評価結果が、上記異常検知レベルを超えているか否かを、異常検知部204が確認する。
 ステップS63において、乖離度の評価結果が異常検知レベルを超えていないと判定した場合、データ収集装置200は処理をステップS61に戻す。以後、乖離度の評価結果が異常検知レベルを超えるまでは、バーチャルデータとリアルデータとの乖離の評価が繰り返される。
 ステップS63において、乖離度の評価結果が異常検知レベルを超えていると判定した場合、データ収集装置200はステップS64,S65を実行する。ステップS64では、異常検知部204が実制御システム5の異常を検知する。ステップS65では、異常検知部204が、表示デバイス196,296への表示などによって、実制御システム5の異常を報知する。この際に、比較画像生成部205が、コントローラ6,7による制御の進行と、シミュレータ101,102によるシミュレーションの進行とを対比する比較画像を生成し、後述の表示デバイス196,296等に表示させてもよい。
〔本実施形態の効果〕
 以上に説明したように、シミュレーション装置100は、第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、第1コントローラによる制御の進行と、第2コントローラによる制御の進行との関係に対応するように、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャ110と、を備える。
 このシミュレーション装置100によれば、実時間とは異なる経過時間で実行されるノンリアルタイムシミュレーションにおいても、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行との関係を、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行との関係に容易に対応させることができる。このため、第1マシンの動作と第2マシンの動作との関係をシミュレーション空間において容易に再現することができる。従って、複数の装置による協調動作の適切なシミュレーションに有効である。
 シミュレーションマネジャ110は、第1コントローラによる制御で繰り返される第1セグメント処理の実行タイミングと、第2コントローラによる制御で繰り返される第2セグメント処理の実行タイミングとの関係に対応するように、第1シミュレータによって繰り返される第1セグメント処理の実行タイミングと、第2シミュレータによって繰り返される第2セグメント処理の実行タイミングとをコントロールしてもよい。この場合、シミュレーションの進行調節を更に容易に行うことができる。
 シミュレーションマネジャ110は、第1コントローラによる第1セグメント処理の繰り返し周期を表す第1制御周期と、第2コントローラによる第2セグメント処理の繰り返し周期を表す第2制御周期とに基づいて、第1シミュレータによって繰り返される第1セグメント処理の実行タイミングと、第2シミュレータによって繰り返される第2セグメント処理の実行タイミングとをコントロールしてもよい。この場合、第1制御周期と第2制御周期とが異なる場合においても、シミュレーションの進行調節を容易に行うことができる。
 シミュレーションマネジャは、シミュレーションサイクル数をカウントするカウンタ111と、第1制御周期及び第2制御周期と、シミュレーションサイクル数とに基づいて、第1シミュレータ及び第2シミュレータの少なくとも一つを選択する選択部113と、選択部113が選択した少なくとも一つのシミュレータのそれぞれに、セグメント処理を実行させる実行部114とを有していてもよい。この場合、第1制御周期と第2制御周期との違いに応じたシミュレーションの進行調節を更に容易に行うことができる。
 選択部113は、第1セグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、第1制御周期に対応するシミュレーションサイクル数となった場合に、第1シミュレータを選択し、第2セグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、第2制御周期に対応するシミュレーションサイクル数となった場合に、第2シミュレータを選択してもよい。この場合、第1制御周期と第2制御周期との違いに応じたシミュレーションの進行調節を更に容易に行うことができる。
 第1制御周期に対応するシミュレーションサイクル数及び第2制御周期に対応するシミュレーションサイクル数がいずれも1以上であってもよい。この場合、シミュレーションの進行調節をより高精度に行うことができる。
 シミュレーション装置100は、第1シミュレータによるシミュレーション結果と、第2シミュレータによるシミュレーション結果とに基づいて、第1マシンの動作及び第2マシンの動作をシミュレーションする動作シミュレーション部122を更に備えていてもよい。この場合、シミュレーション結果を、第1マシン及び第2マシンの仮想的な動作確認に有効活用することができる。
 動作シミュレーション部122は、第1シミュレータによるシミュレーション結果と、第2シミュレータによるシミュレーション結果との両方が更新された後に、第1マシンの動作及び第2マシンの動作をシミュレーションしてもよい。この場合、シミュレーション画像を効率よく生成することができる。
 第2シミュレータは、第1シミュレータによる第1マシンの動作のシミュレーション結果に対して、第2マシンの動作のシミュレーション結果を協調させるように、第2マシンに対する第2コントローラによる制御をシミュレーションしてもよい。この場合、シミュレーションの進行調節が更に有効である。
 シミュレーション装置100は、第1コントローラと第2コントローラとの間で直接的又は間接的に行われる通信を再現するように、第1シミュレータと第2シミュレータとの間における通信データの受け渡しを行う通信シミュレータ130を更に備えていてもよい。この場合、第1コントローラによる第1マシンの制御と、第2コントローラによる第2マシンの制御との関係を、より適切にシミュレーションすることができる。
 通信シミュレータ130は、送信側のシミュレータが生成した通信データを、予め定められた仮想遅延時間に基づいたタイミングで、受信側のシミュレータに取得させてもよい。この場合、第1コントローラによる第1マシンの制御と、第2コントローラによる第2マシンの制御との関係を、より適切にシミュレーションすることができる。
 通信シミュレータ130は、通信サイクル数をカウントする通信カウンタ131と、送信側のシミュレータが生成した通信データを通信バッファ150に格納する通信データ格納部133と、通信バッファ150に通信データが格納されてからカウントされた通信サイクル数が、仮想遅延時間に対応する通信サイクル数となった場合に、通信バッファに格納された通信データを読み出して受信側のシミュレータに取得させる通信データ読出部134と、を有していてもよい。この場合、ノンリアルタイムシミュレーションにおいても、通信遅延を容易に模擬することができる。
 通信バッファ150は、データ転送方向の上流から下流に並ぶ複数の記憶領域を含み、通信データ格納部133は、送信側のシミュレータが生成した通信データを通信バッファの最上流の記憶領域に格納し、通信シミュレータ130は、通信サイクル数がカウントされる度に、通信データを通信バッファにおいて一つ下流の記憶領域に転送する通信データ転送部132を更に有し、通信データ読出部134は、通信データ転送部132により最下流の記憶領域まで転送された通信データを読み出して受信側のシミュレータに取得させてもよい。この場合、通信遅延を更に容易に模擬することができる。
 通信バッファ150は、仮想遅延時間に対応する数の複数の記憶領域151,152,153,154を含んでいてもよい。この場合、通信遅延をより適切に模擬することができる。
 通信シミュレータ130は、複数の送信側のシミュレータと、複数の受信側のシミュレータとをそれぞれ対応付ける複数の通信定義160に基づいて、送信側のシミュレータから通信データを取得することと、受信側のシミュレータに通信データを取得させることと、を複数の通信定義160ごとに実行してもよい。この場合、複数の通信をまとめてシミュレーションできるため、複数の通信を含む制御を容易に模擬することができる。
 複数の通信定義160のそれぞれは、送信側のシミュレータから受信側のシミュレータへの仮想遅延時間163を含み、通信シミュレータ130は、複数の通信定義ごとに、送信側のシミュレータが生成した通信データを、仮想遅延時間163に基づいたタイミングで受信側のシミュレータに取得させてもよい。この場合、複数の通信を含む制御をより適切に模擬することができる。
 シミュレーション装置100は、仮想遅延時間163に対応するサイズの通信バッファを複数の通信定義160ごとに割り当てる通信バッファ割当部143を更に備え、通信シミュレータ130は、通信サイクル数をカウントする通信カウンタ131と、複数の通信定義160ごとに、送信側のシミュレータが生成した通信データを通信バッファ150に格納する通信データ格納部133と、複数の通信定義160ごとに、通信バッファ150に通信データが格納されてからカウントされた通信サイクル数が、仮想遅延時間163に対応する通信サイクル数となった場合に、通信バッファ150に格納された通信データを読み出して受信側のシミュレータに取得させる通信データ読出部134と、を有していてもよい。この場合、複数の通信ごとの通信遅延を容易に模擬することができる。
 シミュレーション装置100は、指定された再生速度に応じて第1シミュレータによるシミュレーションの進行速度及び第2シミュレータによるシミュレーションの進行速度を変更する進行速度調節部171を更に備えていてもよい。この場合、シミュレーション速度を自在に調節することで、シミュレーション結果をより有効に活用することができる。
 シミュレーション装置100は、停止指令に応じて、第1シミュレータによるシミュレーション及び第2シミュレータによるシミュレーションを中断する中断部172を更に備えていてもよい。この場合、シミュレーションを自在に中断可能にすることで、シミュレーション結果をより有効に活用することができる。
 シミュレーションマネジャ110は、個別シミュレーションの指示を受けた場合に、第1シミュレータ及び第2シミュレータから一つの個別実行シミュレータを選択し、他のシミュレータによるシミュレーションの進行に無関係に、個別実行シミュレータによるシミュレーションを実行させてもよい。この場合、個別の動作と、協調動作との段階的なシミュレーションに有効である。
 制御システム4は、送信側のシミュレータが生成した通信データを、予め定められた仮想遅延時間に基づいたタイミングで、受信側のシミュレータに取得させる通信シミュレータ130を有するシミュレーション装置100と、第1コントローラと、第2コントローラとを含む実制御システム5と、仮想遅延時間163を、第1コントローラと第2コントローラとの間の通信遅延時間に対応させる仮想遅延設定部144と、を備えていてもよい。この場合、第1マシンの動作と第2マシンの動作との関係をシミュレーション空間においてより適切に再現することを、更に容易に行うことができる。
 制御システム4は、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行と、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行との比較に基づいて、実制御システム5の異常を検知する異常検知部204を更に備えていてもよい。この場合、実制御システム5に合わせてチューニングされたシミュレーションとの対比によって、実制御システム5の異常を迅速に検知することができる。
 制御システム4は、シミュレーション装置100と、第1コントローラと、第2コントローラとを含む実制御システム5と、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行と、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行とを対比する比較画像を生成する比較画像生成部205と、を備えていてもよい。この場合、第1コントローラによる第1マシンの制御の進行と、第2コントローラによる第2マシンの制御の進行と、第1シミュレータによるシミュレーションの進行と、第2シミュレータによるシミュレーションの進行と、の関係を目視確認し易いインタフェースを提供することで、シミュレーション条件の適切なマニュアルチューニングと、目視による迅速な異常検知とを促すことができる。
 以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
 3A…コンベヤ(第1マシン、第2マシン)、3B,3C…ロボット(第1マシン、第2マシン)、4…制御システム、5…実制御システム、6…コントローラ(第1コントローラ)、7A,7B,7C…コントローラ(第1コントローラ、第2コントローラ)、100…シミュレーション装置、101…シミュレータ(第1シミュレータ)、102A,102B,102C…シミュレータ(第1シミュレータ、第2シミュレータ)、110…シミュレーションマネジャ、111…カウンタ、113…選択部、114…実行部、122…動作シミュレーション部、130…通信シミュレータ、131…通信カウンタ、132…通信データ転送部、133…通信データ格納部、134…通信データ読出部、143…通信バッファ割当部、144…仮想遅延設定部、150…通信バッファ、151,152,153,154…記憶領域、160…通信定義、163…仮想遅延時間、171…進行速度調節部、172…中断部、204…異常検知部、205…比較画像生成部。

Claims (25)

  1.  第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、
     第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、
     前記第1コントローラによる制御の進行と、前記第2コントローラによる制御の進行との関係に対応するように、前記第1シミュレータによるシミュレーションの進行と、前記第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャと、
    を備える、シミュレーション装置。
  2.  前記シミュレーションマネジャは、前記第1コントローラによる制御で繰り返される第1セグメント処理の実行タイミングと、前記第2コントローラによる制御で繰り返される第2セグメント処理の実行タイミングとの関係に対応するように、前記第1シミュレータによって繰り返される前記第1セグメント処理の実行タイミングと、前記第2シミュレータによって繰り返される前記第2セグメント処理の実行タイミングとをコントロールする、請求項1記載のシミュレーション装置。
  3.  前記シミュレーションマネジャは、前記第1コントローラによる前記第1セグメント処理の繰り返し周期を表す第1制御周期と、前記第2コントローラによる前記第2セグメント処理の繰り返し周期を表す第2制御周期とに基づいて、前記第1シミュレータによって繰り返される前記第1セグメント処理の実行タイミングと、前記第2シミュレータによって繰り返される前記第2セグメント処理の実行タイミングとをコントロールする、請求項2記載のシミュレーション装置。
  4.  前記シミュレーションマネジャは、
     シミュレーションサイクル数をカウントするカウンタと、
     前記第1制御周期及び前記第2制御周期と、前記シミュレーションサイクル数とに基づいて、前記第1シミュレータ及び前記第2シミュレータの少なくとも一つを選択する選択部と、
     前記選択部が選択した少なくとも一つのシミュレータのそれぞれに、セグメント処理を実行させる実行部とを有する、請求項3記載のシミュレーション装置。
  5.  前記選択部は、
     前記第1セグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、前記第1制御周期に対応するシミュレーションサイクル数となった場合に、前記第1シミュレータを選択し、
     前記第2セグメント処理が前回実行されてからカウントされたシミュレーションサイクル数が、前記第2制御周期に対応するシミュレーションサイクル数となった場合に、前記第2シミュレータを選択する、請求項4記載のシミュレーション装置。
  6.  前記第1制御周期に対応するシミュレーションサイクル数及び前記第2制御周期に対応するシミュレーションサイクル数がいずれも1以上である、請求項5記載のシミュレーション装置。
  7.  前記第1シミュレータによるシミュレーション結果と、前記第2シミュレータによるシミュレーション結果とに基づいて、前記第1マシンの動作及び前記第2マシンの動作をシミュレーションする動作シミュレーション部を更に備える、請求項1~6のいずれか一項記載のシミュレーション装置。
  8.  前記動作シミュレーション部は、前記第1シミュレータによるシミュレーション結果と、前記第2シミュレータによるシミュレーション結果との両方が更新された後に、前記第1マシンの動作及び前記第2マシンの動作をシミュレーションする、請求項7記載のシミュレーション装置。
  9.  前記第2シミュレータは、前記第1シミュレータによる前記第1マシンの動作のシミュレーション結果に対して、前記第2マシンの動作のシミュレーション結果を協調させるように、前記第2マシンに対する前記第2コントローラによる制御をシミュレーションする、請求項1~8のいずれか一項記載のシミュレーション装置。
  10.  前記シミュレーション装置は、
     前記第1コントローラと前記第2コントローラとの間で直接的又は間接的に行われる通信を再現するように、前記第1シミュレータと前記第2シミュレータとの間における通信データの受け渡しを行う通信シミュレータを更に備える、請求項1~8のいずれか一項記載のシミュレーション装置。
  11.  前記通信シミュレータは、送信側のシミュレータが生成した通信データを、予め定められた仮想遅延時間に基づいたタイミングで、受信側のシミュレータに取得させる、請求項10記載のシミュレーション装置。
  12.  前記通信シミュレータは、
     通信サイクル数をカウントする通信カウンタと、
     前記送信側のシミュレータが生成した通信データを通信バッファに格納する通信データ格納部と、
     前記通信バッファに通信データが格納されてからカウントされた通信サイクル数が、前記仮想遅延時間に対応する通信サイクル数となった場合に、前記通信バッファに格納された通信データを読み出して受信側のシミュレータに取得させる通信データ読出部と、を有する請求項11記載のシミュレーション装置。
  13.  前記通信バッファは、データ転送方向の上流から下流に並ぶ複数の記憶領域を含み、
     前記通信データ格納部は、前記送信側のシミュレータが生成した通信データを前記通信バッファの最上流の記憶領域に格納し、
     前記通信シミュレータは、前記通信サイクル数がカウントされる度に、前記通信データを前記通信バッファにおいて一つ下流の記憶領域に転送する通信データ転送部を更に有し、
     前記通信データ読出部は、前記通信データ転送部により最下流の記憶領域まで転送された前記通信データを読み出して前記受信側のシミュレータに取得させる、請求項12記載のシミュレーション装置。
  14.  前記通信バッファは、前記仮想遅延時間に対応する数の前記複数の記憶領域を含む、請求項13記載のシミュレーション装置。
  15.  前記通信シミュレータは、複数の送信側のシミュレータと、複数の受信側のシミュレータとをそれぞれ対応付ける複数の通信定義に基づいて、送信側のシミュレータから通信データを取得することと、受信側のシミュレータに通信データを取得させることと、を前記複数の通信定義ごとに実行する、請求項10記載のシミュレーション装置。
  16.  前記複数の通信定義のそれぞれは、送信側のシミュレータから受信側のシミュレータへの仮想遅延時間を含み、
     前記通信シミュレータは、前記複数の通信定義ごとに、前記送信側のシミュレータが生成した通信データを、前記仮想遅延時間に基づいたタイミングで前記受信側のシミュレータに取得させる、請求項15記載のシミュレーション装置。
  17.  前記仮想遅延時間に対応するサイズの通信バッファを前記複数の通信定義ごとに割り当てる通信バッファ割当部を更に備え、
     前記通信シミュレータは、
     通信サイクル数をカウントする通信カウンタと、
     前記複数の通信定義ごとに、前記送信側のシミュレータが生成した通信データを前記通信バッファに格納する通信データ格納部と、
     前記複数の通信定義ごとに、前記通信バッファに前記通信データが格納されてからカウントされた通信サイクル数が、前記仮想遅延時間に対応する通信サイクル数となった場合に、前記通信バッファに格納された前記通信データを読み出して前記受信側のシミュレータに取得させる通信データ読出部と、を有する、請求項16記載のシミュレーション装置。
  18.  指定された再生速度に応じて前記第1シミュレータによるシミュレーションの進行速度及び前記第2シミュレータによるシミュレーションの進行速度を変更する進行速度調節部を更に備える、請求項1~17のいずれか一項記載のシミュレーション装置。
  19.  停止指令に応じて、前記第1シミュレータによるシミュレーション及び前記第2シミュレータによるシミュレーションを中断する中断部を更に備える、請求項1~18のいずれか一項記載のシミュレーション装置。
  20.  前記シミュレーションマネジャは、個別シミュレーションの指示を受けた場合に、前記第1シミュレータ及び前記第2シミュレータから一つの個別実行シミュレータを選択し、他のシミュレータによるシミュレーションの進行に無関係に、前記個別実行シミュレータによるシミュレーションを実行させる、請求項1~19のいずれか一項記載のシミュレーション装置。
  21.  請求項11~14のいずれか一項記載のシミュレーション装置と、
     前記第1コントローラと、前記第2コントローラとを含む実制御システムと、
     前記仮想遅延時間を、前記第1コントローラと前記第2コントローラとの間の通信遅延時間に対応させる仮想遅延設定部と、を備える、制御システム。
  22.  前記第1コントローラによる前記第1マシンの制御の進行と、前記第2コントローラによる前記第2マシンの制御の進行と、前記第1シミュレータによるシミュレーションの進行と、前記第2シミュレータによるシミュレーションの進行との比較に基づいて、前記実制御システムの異常を検知する異常検知部を更に備える、請求項21記載の制御システム。
  23.  請求項1~20のいずれか一項記載のシミュレーション装置と、
     前記第1コントローラと、前記第2コントローラとを含む実制御システムと、
     前記第1コントローラによる前記第1マシンの制御の進行と、前記第2コントローラによる前記第2マシンの制御の進行と、前記第1シミュレータによるシミュレーションの進行と、前記第2シミュレータによるシミュレーションの進行とを対比する比較画像を生成する比較画像生成部と、を備える、制御システム。
  24.  第1マシンに対する第1コントローラによる制御を第1シミュレータによりシミュレーションすることと、
     第2マシンに対する第2コントローラによる制御を第2シミュレータによりシミュレーションすることと、
     前記第1コントローラによる制御の進行と、前記第2コントローラによる制御の進行との関係に対応するように、前記第1シミュレータによるシミュレーションの進行と、前記第2シミュレータによるシミュレーションの進行とをコントロールすることと、を含む、シミュレーション方法。
  25.  第1マシンに対する第1コントローラによる制御をシミュレーションする第1シミュレータと、
     第2マシンに対する第2コントローラによる制御をシミュレーションする第2シミュレータと、
     前記第1コントローラによる制御の進行と、前記第2コントローラによる制御の進行との関係に対応するように、前記第1シミュレータによるシミュレーションの進行と、前記第2シミュレータによるシミュレーションの進行とをコントロールするシミュレーションマネジャと、を装置に構成させるプログラム。
PCT/JP2021/008011 2020-06-23 2021-03-02 シミュレーション装置、制御システム、シミュレーション方法及びプログラム WO2021261018A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP21829261.3A EP4160334A1 (en) 2020-06-23 2021-03-02 Simulation device, control system, simulation method, and program
CN202180044241.4A CN115836258A (zh) 2020-06-23 2021-03-02 模拟装置、控制系统、模拟方法以及程序
JP2022532294A JP7400104B2 (ja) 2020-06-23 2021-03-02 シミュレーション装置、制御システム、シミュレーション方法及びプログラム
US18/068,534 US20230121498A1 (en) 2020-06-23 2022-12-20 Simulated collaboration of multiple controllers
JP2023206421A JP2024015247A (ja) 2020-06-23 2023-12-06 シミュレーション装置、制御システム、シミュレーション方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063042566P 2020-06-23 2020-06-23
US63/042,566 2020-06-23

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/068,534 Continuation US20230121498A1 (en) 2020-06-23 2022-12-20 Simulated collaboration of multiple controllers

Publications (1)

Publication Number Publication Date
WO2021261018A1 true WO2021261018A1 (ja) 2021-12-30

Family

ID=79282306

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/008011 WO2021261018A1 (ja) 2020-06-23 2021-03-02 シミュレーション装置、制御システム、シミュレーション方法及びプログラム

Country Status (5)

Country Link
US (1) US20230121498A1 (ja)
EP (1) EP4160334A1 (ja)
JP (2) JP7400104B2 (ja)
CN (1) CN115836258A (ja)
WO (1) WO2021261018A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330970A (ja) * 1999-05-18 2000-11-30 Mitsubishi Electric Corp シミュレーション装置及びシミュレーション方法
JP2005014150A (ja) * 2003-06-26 2005-01-20 Yaskawa Electric Corp ロボットシステム
JP2017094407A (ja) * 2015-11-18 2017-06-01 オムロン株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP2018134703A (ja) 2017-02-21 2018-08-30 株式会社安川電機 ロボットシミュレータ、ロボットシステム及びシミュレーション方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330970A (ja) * 1999-05-18 2000-11-30 Mitsubishi Electric Corp シミュレーション装置及びシミュレーション方法
JP2005014150A (ja) * 2003-06-26 2005-01-20 Yaskawa Electric Corp ロボットシステム
JP2017094407A (ja) * 2015-11-18 2017-06-01 オムロン株式会社 シミュレーション装置、シミュレーション方法、およびシミュレーションプログラム
JP2018134703A (ja) 2017-02-21 2018-08-30 株式会社安川電機 ロボットシミュレータ、ロボットシステム及びシミュレーション方法

Also Published As

Publication number Publication date
US20230121498A1 (en) 2023-04-20
CN115836258A (zh) 2023-03-21
EP4160334A1 (en) 2023-04-05
JP2024015247A (ja) 2024-02-01
JP7400104B2 (ja) 2023-12-18
JPWO2021261018A1 (ja) 2021-12-30

Similar Documents

Publication Publication Date Title
US20220001537A1 (en) Control system, robot system and control method
WO2021229842A1 (ja) マシン制御システム、プログラム、マシン、システム及びデバイス
JP2017117332A (ja) 製造セルの作業の遅れを修正する製造管理装置
US20220072703A1 (en) Suspended robot recovery
US20230107431A1 (en) Comparison between real control and virtual control of robot
KR102525831B1 (ko) 제어 시스템, 컨트롤러 및 제어 방법
WO2021261018A1 (ja) シミュレーション装置、制御システム、シミュレーション方法及びプログラム
US20230099602A1 (en) Device control based on execution command and updated environment information
US20220281111A1 (en) Interference check for robot operation
JP2004151976A (ja) シミュレーション装置
JP7374867B2 (ja) 制御システム、ローカルコントローラ及び制御方法
JP7314824B2 (ja) ロボットシステム、復帰プログラム生成装置、制御支援装置、制御装置、プログラム、復帰プログラムの生成方法及び復帰プログラムの出力方法
JP6915759B1 (ja) マシン制御システム、プログラム、マシン、システム及びデバイス
EP4130901A1 (en) Controller and system construction method
WO2023276506A1 (ja) プランニングシステム、ロボットシステム、プランニング方法、およびプランニングプログラム
US20230249347A1 (en) Path planning during execution of robot control
WO2023157889A1 (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: 21829261

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022532294

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2021829261

Country of ref document: EP

Effective date: 20221229

NENP Non-entry into the national phase

Ref country code: DE