Controller and system construction method
By designing a controller that can determine and respond to another controller to control the machine or a virtual machine, the operation problem of difficult to simulate a virtual machine replacement system in the prior art is solved, and the flexible and efficient operation of the system is achieved.
Patent Information
- Application Number
- CN202210894086.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-08-03
- Filing Date
- 2022-07-27
- Publication Date
- 2025-05-13
- Estimated Expiration
- 2042-07-27
AI Technical Summary
The prior art is difficult to effectively simulate the operation of a system that is at least partially replaced by a virtual machine.
A controller is designed, the controller including a determination unit and a processing unit. The determination unit is used to determine whether the other controller controls the machine or the virtual machine, and the processing unit performs real processing or virtual processing based on the determination result.
Effective simulation operations of systems that are at least partially replaced by virtual machines are realized, and the operational flexibility and efficiency of the system are improved.
Smart Images

Figure CN115705021B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to a controller and a system construction method. Background Art
[0002] Japanese Unexamined Patent Publication No. 2015-176340 discloses a controller including: a storage unit storing setting information specifying whether to use a real device or a virtual device program simulating the real device instead of the real device; and a program execution unit executing the virtual device program when the reference setting information specifies the use of the virtual device. Summary of the invention
[0003] The present disclosure provides a controller that is effective for easily simulating the operation of a system that is at least partially replaced by a virtual machine.
[0004] A controller according to one aspect of the present disclosure is a controller that can communicate with another controller, and the controller includes: a determination unit configured to determine whether the other controller controls a machine or a virtual machine corresponding to the machine; and a processing unit configured to perform predetermined real processing when the other controller controls the machine, and to perform virtual processing that is at least partially different from the real processing when the other controller controls the virtual machine.
[0005] A controller according to another aspect of the present disclosure is a controller that can communicate with another controller and is configured to control a control target, and the controller includes: a control target determination unit, configured to determine whether the control target is a machine or a virtual machine; and a sending unit, configured to send information to the other controller with the determination result of the control target determination unit attached.
[0006] According to another aspect of the present disclosure, a system construction method includes: based on information received from another controller, determining that the other controller controls a virtual machine corresponding to a machine; executing virtual processing and displaying the execution result; based on information received from the other controller, determining that a target controlled by the other controller changes from a virtual machine to a machine; in response to the target controlled by the other controller changing from a virtual machine to a machine, changing the virtual processing to a real processing that is at least partially different from the virtual processing; and executing the real processing and displaying the execution result.
[0007] According to the present disclosure, a controller effectively used to easily simulate the operation of a system at least partially replaced by a virtual machine can be provided. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Figure 1 is a schematic diagram showing an example configuration of a machine system.
[0009] Figure 2 is a schematic diagram showing an example configuration of a robot.
[0010] Figure 3 is a schematic diagram showing an example configuration of a robot.
[0011] Figure 4 is a schematic diagram showing an example configuration of a simulation device.
[0012] Figure 5 is a flow chart illustrating an example operation of a machine system.
[0013] Figure 6 is a schematic diagram showing a hybrid example of a machine and a virtual machine.
[0014] Figure 7 is a schematic diagram showing another hybrid example of a machine and a virtual machine.
[0015] Figure 8 is a schematic diagram showing another hybrid example of a machine and a virtual machine.
[0016] Fig. 9 is a block diagram illustrating an example functional configuration of a host controller.
[0017] Fig.10 is a block diagram showing an example functional configuration of a robot controller.
[0018] Fig.11 is a block diagram illustrating an example functional configuration of a virtual controller.
[0019] Fig.12 is a block diagram illustrating an example functional configuration of a virtual controller.
[0020] Fig.13 is a block diagram illustrating an example functional configuration of a setup controller.
[0021] Fig.14 is a schematic diagram illustrating an example process generation interface.
[0022] Fig.15 is a block diagram showing an example hardware configuration of a controller.
[0023] Fig.16 is a flow chart illustrating an example system building process.
[0024] Fig.17 is a flow chart illustrating an example system building process.
[0025] Fig.18 is a flow chart illustrating an example process for generating a virtual process.
[0026] Fig.19is a flowchart illustrating an example setting procedure of control conditions.
[0027] Fig. 20 is a flowchart illustrating an example processing procedure. DETAILED DESCRIPTION
[0028] Hereinafter, the embodiments will be described in detail with reference to the accompanying drawings. In the description, the same elements or elements having the same functions are denoted by the same reference numerals, and redundant descriptions will be omitted.
[0029] Machine system
[0030] Figure 1 The machine system 1 shown is a system that performs production of workpieces, etc. by cooperation of a plurality of machines. As an example, the machine system 1 includes a machine 2, machines 3A and 3B, a camera 5, controllers 100, 200A and 200B for control, a controller 300 for setting, and a simulation device 400.
[0031] The machine 2 is a conveying device for conveying a workpiece 90, and includes a loading platform 11, an automatic guided vehicle 12, and a load sensor 13. The loading platform 11 supports the workpiece 90 to be conveyed. The automatic guided vehicle 12 supports the loading platform 11 and travels a predetermined conveying route. The load sensor 13 detects whether the workpiece 90 is present on the loading platform 11, for example, based on the weight of the loading platform 11.
[0032] The machine 3A performs a screw-fastening operation on the workpiece 90. For example, the machine 3A is a so-called vertical articulated robot, and the position and posture of the tool 60A for screw-fastening are adjusted by an articulated arm, and the tool 60A performs the screw-fastening operation. The machine 3B arranges the workpiece 90 at the working position P1 where the machine 3A performs screw-fastening, and after the screw-fastening, transfers the workpiece 90 from the working position P1 to the loading station 11. For example, the machine 3B is a so-called vertical articulated robot, and the workpiece 90 is transferred by holding the workpiece 90 with the tool 60B for holding and changing the position and posture of the tool 60B with an articulated arm. The camera 5 detects the installation state of the workpiece 90 at the working position P1.
[0033] like Figure 2As shown, the machine 3A includes, for example, a base 21, a pivot 22, a first arm 23, a second arm 24, a wrist 25, a terminal 26, actuators 51, 52, 53, 54, 55 and 56, and a tool 60A. The base 21 is installed on a ground surface of a work area or the like. The pivot 22 is installed on the base 21 so as to be rotatable around a vertical axis 31. For example, the machine 3A has a joint 41 that mounts the pivot 22 to the base 21 so as to be rotatable around the axis 31. The first arm 23 is connected to the pivot 22 so as to be rotatable around an axis 32 that intersects (e.g., is orthogonal to) the axis 31. For example, the machine 3A has a joint 42 that connects the first arm 23 to the pivot 22 so as to be rotatable around the axis 32. The intersection includes a twisted relationship such as a so-called three-dimensional intersection. The same applies to the following description. The first arm 23 extends from the pivot portion 22 in a direction intersecting (eg, orthogonal) with the axis 32 .
[0034] The second arm 24 is connected to one end of the first arm 23 so as to be rotatable around an axis 33 parallel to the axis 32. For example, the machine 3A has a joint 43 that connects the second arm 24 to the first arm 23 so as to be rotatable around the axis 33. The second arm 24 includes an arm base 27 extending from one end of the first arm 23 in a direction intersecting (e.g., orthogonal) with the axis 33, and an arm end 28 further extending from one end of the arm base 27 in the same direction. The arm end 28 is rotatable around the axis 34 relative to the arm base 27. The axis 34 intersects (e.g., orthogonal) with the axis 33. For example, the machine 3A has a joint 44 that connects the arm end 28 to the arm base 27 so as to be rotatable around the axis 34.
[0035] The wrist 25 is connected to the end of the arm end 28 so as to be rotatable around an axis 35 intersecting (e.g., orthogonal) the axis 34. For example, the machine 3A has a joint 45 that connects the wrist 25 to the arm end 28 so as to be rotatable around the axis 35. The wrist 25 extends from the end of the arm end 28 in a direction intersecting (e.g., orthogonal) the axis 35. The terminal portion 26 is connected to the end of the wrist 25 so as to be rotatable around an axis 36 intersecting (e.g., orthogonal) the axis 35. For example, the machine 3A has a joint 46 that connects the terminal portion 26 to the wrist 25 so as to be rotatable around the axis 36.
[0036] Actuators 51, 52, 53, 54, 55, and 56 drive joints 41, 42, 43, 44, 45, and 46. Each of actuators 51, 52, 53, 54, 55, and 56 includes, for example, a motor and a transmission unit (e.g., a speed reducer) that transmits power of the motor to joints 41, 42, 43, 44, 45, and 46. For example, actuator 51 drives joint 41 to rotate pivot portion 22 around axis 31. Actuator 52 drives joint 42 to rotate first arm 23 around axis 32. Actuator 53 drives joint 43 to rotate second arm 24 around axis 33. Actuator 54 drives joint 44 to rotate arm end 28 around axis 34. Actuator 55 drives joint 45 to rotate wrist portion 25 around axis 35. Actuator 56 drives joint 46 to rotate tip portion 26 around axis 36.
[0037] The actuators 51, 52, 53, 54, 55, and 56 drive the joints 41, 42, 43, 44, 45, and 46 to freely adjust the position and posture of the distal end portion 26. The tool 60A is a tool for screw tightening, and is fixed to the distal end portion 26. Therefore, the position and posture of the tool 60A change with the change of the position and posture of the distal end portion 26. The tool 60A may include a torque sensor 61 for detecting torque for screw tightening.
[0038] like Figure 3 As shown, the machine 3B includes a base 21, a pivot 22, a first arm 23, a second arm 24, a wrist 25, a terminal 26, actuators 51, 52, 53, 54, 55 and 56, and a tool 60B. The base 21, the pivot 22, the first arm 23, the second arm 24, the wrist 25, the terminal 26, and the actuators 51, 52, 53, 54, 55 and 56 are similar to those of the machine 3A. In addition, in the machine 3B, the actuators 51, 52, 53, 54, 55 and 56 drive the joints 41, 42, 43, 44, 45 and 46 to freely adjust the position and posture of the terminal 26. The tool 60B is a robot hand that holds the workpiece 90, and is fixed to the terminal 26. Therefore, the position and posture of the tool 60B change as the position and posture of the terminal 26 change. The tool 60B may include a holding sensor 62 that detects whether the workpiece 90 is held.
[0039] return Figure 1, the controller 100 can communicate with other controllers (e.g., controllers 200A, 200B, and 300) via a communication network 900 such as a local area network. Although in the drawings, the controller 100, the controllers 200A, 200B, and 300, and the simulation device 400 are connected via one communication network 900, the controller 100 can be connected with the controllers 200A, 200B, and 300, and the simulation device 400 via a plurality of communication networks. For example, the controller 100 can be connected to the controllers 200A and 200B via a communication network for control, and can be connected to the controller 300 and the simulation device 400 via a communication network different from the communication network for control. The "connection" here includes a state in which wired communication can be performed and a state in which wireless communication can be performed.
[0040] For example, the controller 100 is a host controller, and controls the machines 3A and 3B (local machines) via a plurality of controllers 200A and 200B (local controllers).
[0041] The controller 100 further controls the machine 2. As in the case where the controllers 200A and 200B are interposed between the controller 100 and the machines 3A and 3B, a local controller that controls the machine 2 based on a command from the controller 100 may be interposed between the controller 100 and the machine 2.
[0042] The controller 200A can communicate with other controllers (e.g., controllers 100, 200B, and 300) via the communication network 900. The controller 200A controls the machine 3A based on the command from the controller 100. The controller 200B can communicate with other controllers (e.g., controllers 100, 200A, and 300) via the communication network 900. The controller 200B controls the machine 3B based on the command from the controller 100.
[0043] The controller 300 is a terminal device that performs various settings on the controllers 100, 200A, and 200B via the communication network 900. Specific examples of the various settings of the controllers 100, 200A, and 200B include settings of various control parameters such as control gains.
[0044] The simulation device 400 is a device that simulates the operation of the machine 2, the machine 3A and the machine 3B and the environmental changes based on the operation of these machines (for example, the movement of the workpiece 90). Simulation means simulating the operation of the machine 2 and the machine 3A and the machine 3B and the environmental changes based on the operation of these machines by numerical calculation without actually operating the machine 2 and the machine 3A and the machine 3B.
[0045] like Figure 4As shown, the simulation device 400 includes a model storage unit 410, a virtual controller 500, and virtual controllers 600A and 600B. The model storage unit 410 stores a three-dimensional model of the machine 2, the machine 3A and 3B and their surroundings. The three-dimensional model is numerical data that represents the three-dimensional structure of the machine 2, the machine 3A and 3B and their surroundings through three-dimensional coordinates in the virtual space VS. The virtual space VS is a virtual space where the machine 2 and the machine 3A and 3B do not actually exist. On the other hand, the space where the machine 2, the machine 3A and 3B actually exist will be referred to as the "real space RS" below.
[0046] The virtual controller 500 is a virtual host controller, and controls virtual machines V3A and V3B via a plurality of virtual controllers 600A and 600B (virtual local controllers), respectively. Virtual machines V3A and V3B are numerical values representing simulation results of the operation of machines 3A and 3B, respectively, and operate virtually in the virtual space VS to simulate the operation of machines 3A and 3B in the real space RS.
[0047] The virtual controller 500 also controls the virtual machine V2. The virtual machine V2 represents the simulation result of the operation of the machine 2, and operates virtually in the virtual space VS so as to simulate the operation of the machine 2 in the real space RS. As in the case where the virtual controllers 600A and 600B are inserted between the virtual controller 500 and the virtual machines V3A and V3B, a virtual local controller that controls the virtual machine V2 based on a command from the virtual controller 500 may be inserted between the virtual controller 500 and the virtual machine V2.
[0048] For example, the virtual controller 500 sequentially calculates the amount of operation of the movable part (automatic guided vehicle 12) of the machine 2 as time passes based on the program for causing the controller 100 to operate the machine 2. Each time the amount of operation of the movable part of the machine 2 is calculated, the virtual controller 500 calculates the virtual machine V2 after the operation of the movable part based on the amount of operation of the movable part of the machine 2 and the three-dimensional model.
[0049] The virtual controller 600A controls the virtual machine V3A based on the command from the virtual controller 500. For example, the virtual controller 600A operates the virtual machine V3A in the virtual space VS based on the command from the virtual controller 500. For example, the virtual controller 600A sequentially calculates the operation amount of the movable parts (joints 41, 42, 43, 44, 45, and 46) of the machine 3A according to the passage of time based on the command from the virtual controller 500 and the program for operating the machine 3A. Each time the operation amount of the movable part of the machine 3A is calculated, the virtual controller 600A calculates the virtual machine V3A after the operation of the movable part based on the operation amount of the movable part of the machine 3A and the three-dimensional model.
[0050] The virtual controller 600B controls the virtual machine V3B based on the command from the virtual controller 500. For example, the virtual controller 600B operates the virtual machine V3B in the virtual space VS based on the command from the virtual controller 500. For example, the virtual controller 600B sequentially calculates the operation amount of the movable parts (joints 41, 42, 43, 44, 45, and 46) of the machine 3B according to the passage of time based on the command from the virtual controller 500 and the program for operating the machine 3B. Each time the operation amount of the movable part of the machine 3B is calculated, the virtual controller 600B calculates the virtual machine V3B after the operation of the movable part based on the operation amount of the movable part of the machine 3B and the three-dimensional model.
[0051] Here, the machine system 1 is configured to be able to operate by replacing at least a part of the controllers 100, 200A and 200B with the virtual controllers 500, 600A and 600B. For example, each of the virtual controllers 500, 600A and 600B can communicate with the controllers 100, 200A and 200B (other controllers) via the communication network 900. Therefore, each of the controllers 100, 200A and 200B can also communicate with the virtual controllers 500, 600A and 600B (other controllers) via the communication network 900. Figure 4 As shown, the virtual controllers 500 , 600A, and 600B may be configured to communicate with each other via a communication network 900 .
[0052] The controller 100 is configured to be able to control the virtual machines V3A and V3B via the virtual controllers 600A and 600B, rather than controlling the machines 3A and 3B via the controllers 200A and 200B. The virtual controller 500 is configured to be able to control the machines 3A and 3B via the controllers 200A and 200B, rather than controlling the virtual machines V3A and V3B via the virtual controllers 600A and 600B.
[0053] As described above, when the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B can communicate with each other via the communication network 900, the controller 300 can be configured to perform various settings on the virtual controllers 500, 600A and 600B via the communication network 900 in the same manner as various settings are performed on the controllers 100, 200A and 200B via the communication network 900.
[0054] By replacing at least a portion of the controllers 100, 200A, and 200B with the configuration of the virtual controllers 500, 600A, and 600B, at least a portion of the operation of the machines 2, 3A, and 3B in the real space RS can be replaced by the operation of the virtual machines V2, V3A, and V3B in the virtual space VS to simulate the processing of the entire system. However, when at least a portion of the machines 2, 3A, and 3B are replaced by the virtual machines V2, V3A, and V3B, the operation of the machine system 1 may not continue. For example, even if the operation of the machines 2, 3A, and 3B can be simulated by the operation of the virtual machines V2, V3A, and V3B, because the real space does not change with the operation of the virtual machines V2, V3A, and V3B, the processing based on the state of the real space may not be performed in any of the controllers 100, 200A, and 200B, and the virtual controllers 500, 600A, and 600B.
[0055] On the other hand, each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B is configured to determine whether the other controller controls the machine or controls the virtual machine corresponding to the machine, and to perform a predetermined real process when the other controller controls the machine, and to perform a virtual process that is at least partially different from the real process when the other controller controls the virtual machine. As described above, according to the configuration of changing the processing content of the controller depending on whether the control target of the other controller is the machine or the virtual machine, the processing of the entire system can be easily simulated.
[0056] For example, the controllers 100, 200A, and 200B and the virtual controllers 500, 600A, and 600B may be configured to: perform processing to operate a control object (e.g., a first machine) in coordination with a second machine controlled by a second controller in a real space; modify the processing in response to determining that the second controller controls a virtual second machine that simulates the operation of the second machine in a virtual space instead of controlling the second machine; and perform the modified processing to operate the control object in coordination with the virtual second machine operating in the virtual space. Modifying the processing includes replacing the processing with the processing before the modification.
[0057] Each of the controllers 100 , 200A, and 200B and the virtual controllers 500 , 600A, and 600B may determine whether the second controller controls the second machine or controls the virtual second machine based on information received from the second controller.
[0058] For example, the information received from the second controller includes operation information of the second machine or the virtual second machine, and a flag indicating whether the other controller controls the second machine or the virtual second machine, and each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B can be configured to: determine whether the other controller controls the second machine or the virtual second machine based on the flag; and perform processing or modified processing based on the operation information.
[0059] The determination unit 111 may determine whether the other controller controls the machine or controls the virtual machine based on the communication conditions for receiving information from the other controller. For example, the other controller (the second controller) may be configured to: communicate with the controller 100 under the first communication conditions when controlling the machine (the second machine); and communicate with the controller 100 under the second communication conditions when controlling the virtual machine (the virtual second machine). The determination unit 111 may be configured to: determine that the second controller controls the second machine in response to determining that the controller 100 communicates with the second controller under the first communication conditions; and determine that the second controller controls the virtual machine in response to determining that the controller 100 communicates with the second controller under the second communication conditions.
[0060] Each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B may be configured to: perform processing based on a set of real data obtained from a real space; and modify the processing so that the modified processing is performed without a set of real data.
[0061] The control object and the second machine operate the workpiece, and a set of real data may include a state of the workpiece in the real space.
[0062] Each of the controllers 100 , 200A, and 200B and the virtual controllers 500 , 600A, and 600B may be configured to: modify a process to supplement a set of virtual data instead of obtaining a set of real data; and perform the modified process based on the supplemented set of virtual data.
[0063] Each of the controllers 100 , 200A, and 200B and the virtual controllers 500 , 600A, and 600B may be configured to modify a process by disregarding a set of real data.
[0064] Each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B may be configured to: extract a portion of a process performed based on a set of real data obtained from a real space; and modify the extracted portion of the process in response to determining that the second controller controls the virtual second machine.
[0065] Each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B can be configured to: extract a portion of a process performed based on a set of real data obtained from a real space; generate a user interface indicating the extracted portion of the process; and modify the process based on user input to modify the extracted portion of the process.
[0066] Each of controllers 100, 200A and 200B and virtual controllers 500, 600A and 600B can communicate with a third controller and can be configured to: perform processing to operate the first machine in coordination with the second machine and a third machine controlled by the third controller in real space; modify a first part of the processing in response to determining that the second controller controls the virtual second machine; modify a second part of the processing in response to determining that the third controller controls a virtual third machine that simulates operation of a third machine in virtual space rather than controlling the third machine; and perform the modified processing including the modified first part and the modified second part to operate the first machine in real space in coordination with the virtual second machine and the virtual third machine operating in virtual space.
[0067] The control object may be the first machine operating in the real space, or a virtual first machine simulating the operation of the first machine in the virtual space.
[0068] In addition, each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B can be configured to determine whether its own control target is a machine or a virtual machine corresponding to the machine, and perform real processing when controlling the machine and perform virtual processing when controlling the virtual machine.
[0069] Each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B can be configured to: modify a first part of a process in response to determining that the controller controls a virtual first machine; modify a second part of a process in response to determining that a second controller controls a virtual second machine; and execute the modified process including the modified first part and the modified second part to operate the virtual first machine in coordination with the virtual second machine in the virtual space.
[0070] Each of the controllers 100, 200A, and 200B and the virtual controllers 500, 600A, and 600B may be configured to send notification information to the second controller to notify the second controller whether the controller controls the first machine or controls the virtual first machine.
[0071] Hereinafter, examples of real processing and virtual processing will be described in detail. Figure 51 is a flowchart showing the process performed by the machines 2, 3A, and 3B in the machine system 1. First, the machine 3B arranges the workpiece 90 at the working position P1 (step S101). When the camera 5 confirms that the workpiece 90 is arranged at the working position P1, the machine 3A performs screw tightening on the workpiece 90 arranged at the working position P1 (step S102). Then the machine 3B transfers the workpiece 90 from the working position P1 to the loading table 11 (step S103). When the load sensor 13 confirms that the workpiece 90 is placed on the loading table 11, the machine 2 transfers the workpiece 90 (step S104).
[0072] Figure 6 The case where the controller 200B among the controllers 100, 200A and 200B is replaced by the virtual controller 600B and thus the machine 2, the machine 3A and the virtual machine V3B operate in a mixed manner is schematically shown. When the controller 200B controls the machine 3B, the controller 100 performs a real process including the following process 1.
[0073] Process 1) After the machine 3B completes the operation of placing the workpiece 90 at the working position P1 and the camera 5 detects the workpiece 90, a screw tightening start command is sent to the controller 200A (step S102)
[0074] exist Figure 6 In the case of, in the virtual space VS, the virtual controller 600B causes the virtual machine V3B to perform an operation of arranging the workpiece 90 at the working position P1, but in the real space RS, the workpiece 90 is not arranged at the working position P1, and thus the camera 5 does not detect the workpiece 90. Therefore, when the virtual controller 600B controls the virtual machine V3B, the controller 100 performs a virtual process including the following process 2 instead of process 1.
[0075] Process 2) After the virtual machine V3B completes the operation of placing the workpiece 90 at the working position P1, it sends a screw tightening start command to the controller 200A without waiting for the camera 5 to detect the workpiece 90 (by executing the process of skipping the waiting) (step S102)
[0076] Therefore, even in Figure 6 In this case, step S102 starts.
[0077] When the controller 200B controls the machine 3B, the controller 200A performs actual processing including the following procedure 2-1.
[0078] Process 2-1) After the control machine 3A starts screw tightening using the tool 60A (step S102), when the torque detected by the torque sensor 61 reaches a predetermined value, the control machine 3A completes screw tightening using the tool 60A.
[0079] exist Figure 6 In this case, since the workpiece 90 is not arranged at the working position P1 in the real space RS, the torque detected by the torque sensor 61 does not reach the predetermined value. Therefore, when the virtual controller 600B controls the virtual machine V3B, the controller 200A performs a virtual process including the following process 2-2 instead of process 2-1.
[0080] Process 2-2) After the control machine 3A starts screw tightening by the tool 60A (step S102), when a predetermined time has elapsed, the control machine 3A completes screw tightening by the tool 60A.
[0081] Therefore, even in Figure 6 In this case, step S102 is completed.
[0082] After step S102, the controller 200B executes the actual processing including the following procedure 3-1.
[0083] Process 3-1) After the control machine 3B performs the operation of holding the workpiece 90 at the working position P1 with the tool 60B, and after the holding sensor 62 detects the holding of the workpiece 90 by the tool 60B, the control machine 3B transfers the workpiece 90 from the working position P1 to the loading platform 11.
[0084] exist Figure 6 In the case of , in the virtual space VS, the virtual controller 600B causes the virtual machine V3B to perform an operation of holding the workpiece 90 at the working position P1 using the tool 60B. However, since the workpiece 90 is not held by the tool 60B in the real space RS, the holding sensor 62 does not detect the holding of the workpiece 90 by the tool 60B. Therefore, the virtual controller 600B performs a virtual process including the following process 3-2 instead of process 3-1.
[0085] Process 3-2) After the virtual machine V3B is controlled to perform the operation of holding the workpiece 90 at the working position P1 using the tool 60B, the control machine 3B transfers the workpiece 90 from the working position P1 to the loading platform 11 without waiting for the holding sensor 62 to detect the holding (by executing the process of skipping the waiting).
[0086] Therefore, even in Figure 6 In this case, step S103 is executed.
[0087] When the controller 200B controls the machine 3B, the controller 100 performs the actual processing including the following procedure 4-1 after step S103.
[0088] Process 4-1) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 and the load sensor 13 detects that the workpiece 90 is placed on the loading table 11, the control machine 2 starts transferring the workpiece 90 (step S104)
[0089] exist Figure 6 In the case of, in the virtual space VS, the virtual controller 600B controls the virtual machine V3B to perform an operation of transferring the workpiece 90 from the working position P1 to the loading table 11. However, since the workpiece 90 is not placed on the loading table 11 in the real space RS, and thus the load sensor 13 does not detect that the workpiece 90 is placed on the loading table 11. Therefore, the controller 100 performs a virtual process including the following process 4-2 instead of process 4-1.
[0090] Process 4-2) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, the machine 2 is controlled to start transferring the workpiece 90 (step S104) without waiting for the load sensor 13 to detect that the workpiece 90 is arranged on the loading table 11 (by executing the process of skipping the waiting),
[0091] Therefore, even in Figure 6 In this case, step S104 is executed.
[0092] Figure 7 The case where the controller 200A among the controllers 100, 200A and 200B is replaced by the virtual controller 600A and thus the machine 2, the virtual machine V3A and the machine 3B operate in a mixed manner is schematically shown. The controller 200A performs a real process including the following procedure 5-1.
[0093] Process 5-1) After the control machine 3A starts screw tightening using the tool 60A (step S102), when the torque detected by the torque sensor 61 reaches a predetermined value, the control machine 3A completes screw tightening using the tool 60A.
[0094] exist Figure 7 In the case of, in the virtual space VS, the virtual controller 600A causes the virtual machine V3A to perform the operation of screw tightening using the tool 60A. However, screw tightening using the tool 60A is not performed in the real space RS, and therefore the torque detected by the torque sensor 61 does not reach the predetermined value. Therefore, the virtual controller 600A performs a virtual process including the following process 5-2 instead of process 5-1.
[0095] Process 5-2) After the control machine 3A starts screw tightening by the tool 60A (step S102), when a predetermined time elapses, the control machine 3A completes screw tightening by the tool 60A.
[0096] Therefore, even in Figure 7 In this case, step S102 is completed.
[0097] When the controller 200A controls the machine 3A, the controller 200B executes the actual processing including the following procedure 6-1 after step S102.
[0098] Process 6-1) After the gripping sensor 62 detects that the tool 60B is gripping the workpiece 90, the machine 3B is controlled to transfer the workpiece 90 from the working position P1 to the loading platform 11, and after the machine 3B is controlled, the machine 3B is caused to perform an operation of gripping the workpiece 90 at the working position using the tool 60B.
[0099] exist Figure 7 In this case, since screw fastening by the tool 60A is not performed in the real space RS, the workpiece 90 may not be transferred integrally. Therefore, when the virtual controller 600A controls the virtual machine V3A, the controller 200B performs virtual processing including the following process 6-2 instead of process 6-1.
[0100] Process 6-2) Controlling the machine 3B to transfer the workpiece 90 from the working position P1 to the loading platform 11, without controlling the virtual machine V3B to perform the operation of holding the workpiece 90 at the working position P1 using the tool 60B (by executing the process of skipping the holding)
[0101] Therefore, even in Figure 7 In this case, step S103 is executed.
[0102] When the controller 200A controls the machine 3A, the controller 100 executes the actual processing including the following procedure 7-1 after step S103.
[0103] Process 7-1) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 and the load sensor 13 detects that the workpiece 90 is placed on the loading table 11, the control machine 2 starts transferring the workpiece 90 (step S104)
[0104] exist Figure 7 In the case of , since the workpiece 90 is not placed on the loading stage 11 in the real space RS, the load sensor 13 does not detect that the workpiece 90 is arranged on the loading stage 11. Therefore, the controller 100 performs a virtual process including the following process 7-2 instead of process 7-1.
[0105] Process 7-2) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, the machine 2 is controlled to start transferring the workpiece 90 without waiting for the load sensor 13 to detect that the workpiece 90 is placed on the loading table 11 (by executing the process of skipping the waiting process) (step S104).
[0106] Therefore, even in Figure 7 In this case, step S104 is executed.
[0107] Figure 8 The case where controller 100 among controllers 100, 200A and 200B is replaced by virtual controller 500 and thus virtual machine V2, machine 3A and machine 3B operate in a mixed manner is schematically shown. When controller 100 controls machine 2, controller 200B performs real processing including the following process 8-1 after step S102.
[0108] Process 8-1) After the control machine 3B performs the operation of holding the workpiece 90 at the working position P1 with the tool 60B, after the holding sensor 62 detects that the workpiece 90 is held by the tool 60B, the control machine 3B transfers the workpiece 90 from the working position P1 to the loading platform 11.
[0109] exist Figure 8 In this case, in the real space RS, the workpiece 90 cannot be placed on the loading stage 11. Therefore, when the virtual controller 500 controls the virtual machine V2, the controller 200B performs a virtual process including the following process 8-2 instead of the process 8-1.
[0110] Process 8-2) Controlling the machine 3B to transfer the workpiece 90 from the working position P1 to the loading platform 11, without controlling the virtual machine V3B to perform the operation of holding the workpiece 90 at the working position P1 with the tool 60B (by executing the process of skipping the holding)
[0111] Therefore, even in Figure 8 In this case, step S103 is executed.
[0112] After step S103, the controller 100 performs the actual processing including the following procedure 9-1.
[0113] Process 9-1) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading platform 11 and the load sensor 13 detects that the workpiece 90 is placed on the loading platform 11, the machine 2 is controlled to start transferring the workpiece 90 (step S104). The transfer of the workpiece 90 by the machine 2 (step S104) starts.
[0114] exist Figure 8In this case, since the workpiece 90 is not placed on the loading stage 11 in the real space RS, the load sensor 13 does not detect that the workpiece 90 is placed on the loading stage 11. Therefore, the virtual controller 500 performs a virtual process including the following process 9-2 instead of the above-mentioned process 9-1.
[0115] Process 9-2) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, the machine 2 is controlled to start transferring the workpiece 90 without waiting for the load sensor 13 to detect that the workpiece 90 is placed on the loading table 11 (by executing the process of skipping the waiting process) (step S104).
[0116] Therefore, even in Figure 8 In this case, step S104 is executed.
[0117] Hereinafter, example configurations of the controllers 100 , 200A, and 200B, the virtual controllers 500 , 600A, and 600B, and the controller 300 will be described in more detail.
[0118] Host Controller
[0119] The controller 100 is a host controller capable of communicating with a plurality of controllers 200A, 200B, 600A, and 600B (local controllers), and controls the machines 3A and 3B and the virtual machines V3A and V3B via the plurality of local controllers, respectively.
[0120] like Fig. 9 As shown, the controller 100 includes a determination unit 111, a program storage unit 112, and a processing unit 113 as a functional configuration (hereinafter referred to as a "functional block"). The determination unit 111 determines whether another controller controls a machine or controls a virtual machine corresponding to the machine. The determination unit 111 can determine whether another controller controls a machine or controls a virtual machine based on information received from another controller. The information received from another controller may include control information in another controller and a flag indicating whether another controller controls a machine or controls a virtual machine, and the determination unit 111 can determine whether another controller controls a machine or controls a virtual machine based on the flag.
[0121] An example of a flag is a numerical value that changes depending on whether another controller controls a machine or a virtual machine. In more detail, the flag may be "1" when another controller controls a machine, and the flag may be "0" when another controller controls a virtual machine. The flag may be "0" when another controller controls a machine, and the flag may be "1" when another controller controls a virtual machine. The same applies to flags in the following description of other controllers.
[0122] The case where the information includes a flag in only one of the case where another controller controls a machine and the case where another controller controls a virtual machine is an example of the case where the information includes a flag. In this case, the determination unit 111 determines whether the other controller controls the machine or controls the virtual machine based on whether the information includes a flag. As described above, determining whether the other controller controls the machine or controls the virtual machine based on whether the information includes a flag is also an example of determining whether the other controller controls the machine or controls the virtual machine based on a flag. The same applies to flags in the following description of other controllers.
[0123] The configuration of the control information may vary depending on whether the other controller controls the machine or controls the virtual machine. In this case, the determination unit 111 may determine whether the other controller controls the machine or controls the virtual machine based on the control information.
[0124] For example, in Figure 5 In the example of FIG. 1 , when the controller 200B controls the machine 3B, the information received by the controller 100 from the controller 200B may include the following control information.
[0125] Control information 1) Information indicating that the machine 3B has completed the operation of transferring the workpiece 90 to the working position P1, and the grip sensor 62 has detected the release of the grip of the workpiece 90 by the tool 60B
[0126] On the other hand, when the virtual controller 600B controls the virtual machine V3B, the information received by the controller 100 from the virtual controller 600B may include the following control information.
[0127] Control information V1) indicates that the virtual machine V3B has completed the operation of transferring the workpiece 90 to the working position P1
[0128] The control information 1 and the control information V1 differ from each other in whether or not "the grip sensor 62 has detected the release of the grip of the workpiece 90 by the tool 60B" is included. In this case, the determination unit 111 determines that the controller 200B controls the machine 3B based on the fact that the control information includes "the grip sensor 62 has detected the release of the grip of the workpiece 90 by the tool 60B". On the other hand, the determination unit 111 determines that the virtual controller 600B controls the virtual machine V3B based on the fact that the control information does not include "the grip sensor 62 has detected the release of the grip of the workpiece 90 by the tool 60B".
[0129] Furthermore, when the controller 200A controls the machine 3A, the information received by the controller 100 from the controller 200A may include the following control information.
[0130] Control information 2) Information indicating that the machine 3A has completed the screw tightening operation using the tool 60A and the torque detected by the torque sensor 61 when the screw tightening operation is completed
[0131] On the other hand, when the virtual controller 600A controls the virtual machine V3A, the information received by the controller 100 from the virtual controller 600A may include the following control information.
[0132] Control information V2) Information indicating that the machine 3A has completed the screw tightening operation using the tool 60A.
[0133] The control information 2 is different from the control information V2 in whether the "torque detected by the torque sensor 61" is included. In this case, the determination unit 111 determines that the controller 200A controls the machine 3A based on the fact that the "torque detected by the torque sensor 61" is included in the control information. On the other hand, the determination unit 111 determines that the virtual controller 600A controls the virtual machine V3A based on the fact that the "torque detected by the torque sensor 61" is not included in the control information.
[0134] It is conceivable that the control information is encrypted when the other controller controls the machine, and is not encrypted when the other controller controls the virtual machine. In this case, the determination unit 111 can determine whether the other controller controls the machine or the virtual machine based on whether the control information is encrypted.
[0135] The communication conditions for receiving information from another controller may differ depending on whether the other controller controls a machine or a virtual machine. Specific examples of the difference in communication conditions include a difference in communication delay time, a difference in ports used for communication, etc. When the communication conditions for receiving information from another controller differ depending on whether the other controller controls a machine or a virtual machine, the determination unit 111 may determine whether the other controller controls a machine or a virtual machine based on the communication conditions for receiving information from the other controller.
[0136] The program storage unit 112 stores a predetermined real program. The real program is a program that causes the controller 100 to perform a predetermined real process when another controller controls the machine and the own controller controls the machine. The program storage unit 112 also stores a virtual modification program that causes the controller 100 to perform a virtual process obtained by modifying at least a part of the real process when another controller controls the virtual machine.
[0137] exist Figure 5 In the example of , the actual program stored in the program storage unit 112 may include the following processing instructions.
[0138] Real processing instruction 1) After the machine 3B completes the operation of placing the workpiece 90 at the working position P1 and the camera 5 detects the workpiece 90, a screw tightening start instruction is sent to the controller 200A (step S102)
[0139] Real processing instruction 2) After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 and the load sensor 13 detects that the workpiece 90 is placed on the loading table 11, the control machine 2 starts transferring the workpiece 90 (step S104)
[0140] The virtual processing may include a supplementary processing to compensate for the difference between the real information obtained based on the operation of the machine and the virtual information obtained based on the operation of the virtual machine. The virtual processing may include a supplementary processing including a processing to supplement the difference between the real information and the virtual information with predetermined data.
[0141] For example, the virtual modification program may include the following supplementary processing instructions.
[0142] Supplementary processing instruction 1) When the virtual controller 600B controls the virtual machine V3B, the first supplementary data in the real processing instruction 1 is generated to simulate the indication that the camera 5 has detected the workpiece 90. Supplementary processing instruction 2) When the virtual controller 600B controls the virtual machine V3B, the second supplementary data in the real processing instruction 2 is generated to simulate the indication that the load sensor 13 has detected that the workpiece 90 is placed on the loading platform 11.
[0143] Supplementary processing instruction 3) When the virtual controller 600A controls the virtual machine V3A, the second supplementary data in the real processing instruction 2 is generated
[0144] Supplementary processing instruction 4) When the self-controller controls the virtual machine V2, the above second supplementary data in the real processing instruction 2 is generated
[0145] The real information includes information indicating that the camera 5 detects the workpiece 90 (first detection information) and information indicating that the load sensor 13 detects that the workpiece 90 is placed on the loading platform 11 (second detection information). When the virtual controller 600B controls the virtual machine V3B, the virtual information does not include the first detection information or the second detection information. On the other hand, the first detection information is supplemented by generating the first supplementary data according to the supplementary processing instruction 1. Further, the second detection information is supplemented by generating the second supplementary data according to the supplementary processing instruction 2.
[0146] When the virtual controller 600A controls the virtual machine V3A, the virtual information does not include the second detection information. On the other hand, the second detection information is supplemented by generating the second supplementary data according to the supplementary processing of the supplementary processing instruction 3 .
[0147] When the own controller controls the virtual machine V2, the virtual information does not include the second detection information. On the other hand, the second detection information is supplemented by generating the second supplementary data according to the supplementary processing of the supplementary processing instruction 4.
[0148] The virtual process may include a skip process for skipping at least a portion of the real process. For example, the virtual modification program may include the following skip process instruction.
[0149] Skip processing instruction 1) When the virtual controller 600B controls the virtual machine V3B, the first skip processing for skipping the process of waiting for the camera 5 to detect the workpiece 90 is executed in the real processing instruction 1.
[0150] Skip processing instruction 2) When the virtual controller 600B controls the virtual machine V3B, a second skip processing for skipping the process of waiting for the load sensor 13 to detect that the workpiece 90 is arranged on the loading table 11 is executed in the real processing instruction 2.
[0151] Skip processing instruction 3) When the virtual controller 600A controls the virtual machine V3A, the second skip processing is executed in the real processing instruction 2
[0152] Skip processing instruction 4) When the self-controller controls the virtual machine V2, the second skip processing is executed in the real processing instruction 2
[0153] The processing unit 113 performs a predetermined real process when another controller controls the machine, and performs a virtual process that is at least partially different from the real process when another controller controls the virtual machine. When the virtual controller 600A (first controller) controls the virtual machine V3A (first virtual machine) and the controller 200B (second controller) controls the machine 3B (second machine), the processing unit 113 can perform a virtual process in which a first part related to the operation of the machine 3A (first machine) is different from the real process. When the controller 200A (first controller) controls the machine 3A and the virtual controller 600B (second controller) controls the virtual machine V3B (second virtual machine), the processing unit 113 can perform a virtual process in which a second part related to the operation of the machine 3B (second machine) is different from the real process.
[0154] The processing unit 113 may perform virtual processing including a supplementary processing for compensating for a difference between real information and virtual information. The processing unit 113 may perform supplementary processing including a processing for compensating for a difference between real information and virtual information by predetermined information.
[0155] For example, when the controller 200A controls the machine 3A and the controller 200B controls the machine 3B, the processing unit 113 performs real processing based on the real program. In detail, after the machine 3B completes the operation of placing the workpiece 90 at the working position P1 according to the real processing instruction 1 and the camera 5 detects the workpiece 90, the processing unit 113 sends a start command for screw tightening to the controller 200A. After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 and the load sensor 13 detects that the workpiece 90 is placed on the loading table 11, the processing unit 113 causes the machine 2 to start transferring the workpiece 90 according to the real processing instruction 2.
[0156] When the virtual controller 600A replaces the controller 200A to control the virtual machine V3A, the processing unit 113 performs virtual processing in which the part related to the operation of the machine 3A is different from the real processing based on the real program and the virtual modified program. In detail, after the machine 3B completes the operation of placing the workpiece 90 at the working position P1 according to the real processing instruction 1 and the camera 5 detects the workpiece 90, the processing unit 113 sends a start command for screw tightening to the virtual controller 600A. After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, according to the real processing instruction 2 modified based on the supplementary processing instruction 3, the processing unit 113 generates second supplementary data, the second supplementary data indicates that the load sensor 13 detects that the workpiece 90 is placed on the loading table 11, and the processing unit 113 starts the transfer of the workpiece 90 by the machine 2 based on the second supplementary data.
[0157] When the virtual controller 600B replaces the controller 200B to control the virtual machine V3B, the processing unit 113 performs virtual processing in which the part related to the operation of the machine 3B is different from the real processing based on the real program and the virtual modified program. In detail, after the virtual machine V3B completes the operation of placing the workpiece 90 at the working position P1 according to the real processing instruction 1 modified based on the supplementary processing instruction 1, the processing unit 113 generates the first supplementary data indicating that the camera 5 detects the workpiece 90, and sends a start command for screw tightening to the controller 200A based on the first supplementary data. After the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 according to the real processing instruction 2 modified based on the supplementary processing instruction 2, the processing unit 113 generates the second supplementary data indicating that the load sensor 13 has detected that the workpiece 90 is arranged on the loading table 11, and starts the transfer of the workpiece 90 by the machine 2 based on the second supplementary data.
[0158] The processing unit 113 may perform virtual processing including a skip processing instruction for skipping at least a portion of the real processing. As an example, when the virtual controller 600A controls the virtual machine V3A instead of the controller 200A, after the machine 3B completes the operation of arranging the workpiece 90 at the working position P1 according to the real processing instruction 1 and the camera 5 detects the workpiece 90, the processing unit 113 sends a start command for screw tightening to the virtual controller 600A. In addition, after the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, according to the real processing instruction 2 modified based on the skip processing instruction 3, the processing unit 113 causes the machine 2 to start transferring the workpiece 90 without waiting for the load sensor 13 to detect that the workpiece 90 is placed on the loading table 11.
[0159] When the virtual controller 600B replaces the controller 2B to control the virtual machine V3B, according to the real processing instruction 1 modified based on the skip processing instruction 1, after the virtual machine V3B completes the operation of placing the workpiece 90 at the working position P1, the processing unit 113 sends a start command for screw tightening to the controller 200A without waiting for the camera 5 to detect the workpiece 90. In addition, after the machine 3B completes the operation of transferring the workpiece 90 from the working position P1 to the loading table 11, according to the real processing instruction 2 modified based on the skip processing instruction 2, the processing unit 113 causes the machine 2 to start transferring the workpiece 90 without waiting for the load sensor 13 to detect that the workpiece 90 is placed on the loading table 11.
[0160] The controller 100 may be configured to generate a virtual process based on an input to a user interface. For example, the controller 100 further includes an interface generation unit 121 , a substitute target designation unit 122 , and a process generation unit 123 .
[0161] The interface generation unit 121 generates a user interface including a display section indicating one or more non-executable parts that cannot be executed when another controller controls the virtual machine in the real process, and an input section for inputting an alternative process to each of the one or more non-executable parts. In the present embodiment, the interface generation unit 121 causes the controller 300 to display the user interface. A specific example of the user interface will be described later in the description of the controller 300.
[0162] The alternative target designation unit 122 designates one or more non-executable parts based on the difference between the real information and the virtual information. For example, when the virtual controller 600A controls the virtual machine V3A, based on the fact that the second detection information is not included in the virtual information, the alternative target designation unit 122 designates the part waiting for the second detection information as a non-executable part. Similarly, when the virtual controller 600B controls the virtual machine V3B, based on the fact that the first detection information and the second detection information are not included in the virtual information, the alternative target designation unit 122 designates the part waiting for the first detection information and the second detection information as a non-executable part. The interface generation unit 121 causes the display unit to display the one or more non-executable parts designated by the alternative target designation unit 122.
[0163] The process generation unit 123 generates a virtual process based on the input to the input unit of the user interface. For example, the process generation unit 123 generates the above-mentioned supplementary process instruction or skip process instruction based on the input to the input unit, and causes the program storage unit 112 to store the supplementary process instruction or skip process instruction.
[0164] The controller 100 may be configured to generate a supplementary process based on the difference between the real information and the virtual information. For example, the process generation unit 123 may be configured to generate a supplementary process based on the difference between the real information and the virtual information.
[0165] For example, when the virtual controller 600A controls the virtual machine V3A, based on the fact that the second detection information is not included in the virtual information, the process generation unit 123 generates a supplementary processing instruction 3, and stores the generated supplementary processing instruction 3 in the program storage unit 112. Similarly, when the virtual controller 600B controls the virtual machine V3B, based on the fact that the first detection information and the second detection information are not included in the virtual information, the process generation unit 123 generates a supplementary processing instruction 1 and a supplementary processing instruction 2, and stores the generated supplementary processing instruction 1 and the supplementary processing instruction 2 in the program storage unit 112.
[0166] The controller 100 may be configured to perform virtual processing even when the control target of the own controller is a virtual machine. For example, the controller 100 further includes a control target determination unit 131 and a sending unit 132. The control target determination unit 131 unit determines whether the control target of the own controller is a machine (slave machine) or a virtual machine (slave virtual machine). For example, the control target determination unit 131 determines whether the control target of the own controller is machine 2 or virtual machine V2. For example, the control target determination unit 131 determines whether the control target of the own controller is machine 2 or virtual machine V2 based on whether the own controller is a virtual controller configured in the simulation device 400.
[0167] As will be described later, the controller 100 itself may be configured to execute a real mode for actually controlling the machine 2 and a virtual mode for controlling the virtual machine V2. In this case, the control target determination unit 131 determines whether the control target of the own controller is the machine 2 or the virtual machine V2 based on which of the real mode and the virtual mode is selected.
[0168] The processing unit 113 performs real control processing when the control target of the own controller is a machine, and performs virtual control processing that is at least partially different from the real control processing when the control target of the own controller is a virtual machine. For example, when another controller controls a virtual machine and the own controller controls a slave machine, the processing unit performs virtual processing in which the external dependent part related to the operation of the machine (machine controlled by the other controller) is different from the real processing. The virtual processing is included in the above-mentioned real control processing. When another controller controls a machine and the own controller controls a slave virtual machine, the processing unit 113 can perform virtual processing in which the slave part related to the operation of the slave machine is different from the real processing. The virtual processing is included in the above-mentioned virtual control processing.
[0169] The transmission unit 132 transmits information to which the determination result of the control target determination unit 131 is attached to another controller. For example, the transmission unit 132 transmits information obtained by adding the determination result (e.g., flag) of the control target determination unit 131 to the command (control information) for operating the machine 3A to the controller 200A or the virtual controller 600A. In addition, the transmission unit 132 transmits information obtained by adding the determination result of the control target determination unit 131 to the instruction (control information) for operating the machine 3B to the controller 200B or the virtual controller 600B.
[0170] The controller 100 may be configured to collect and store control data of the machine 2 and the machines 3A, 3B, V3A, and V3B. The control data includes control information sent from the controllers 200A and 200B or the virtual controllers 600A and 600B to the controller 100, control commands sent from the controller 100 to the controllers 200A and 200B or the virtual controllers 600A and 600B, control commands sent from the controller 100 to the machine 2, detection results of the camera 5, detection results of the torque sensor 61, detection results of the grip sensor 62, and the like. For example, the controller 100 includes a data accumulation unit 141, a database 142, and a data display unit 143. The data accumulation unit 141 accumulates the control data of the machine 2 and the machines 3A, 3B, V3A, and V3B in the database 142 in a time series. The data display unit 143 displays the control data accumulated in the database 142 on the controller 300 and the like.
[0171] The data accumulation unit 141 may include a determination result indicating whether the control target of the own controller is a slave machine or a slave virtual machine and a determination result indicating whether the control target of another controller is a machine or a virtual machine in the control data, and accumulate the control data in the database 142. In this case, data obtained in the real space RS and data obtained in the virtual space VS can be easily distinguished, and the usability of the accumulated control data can be improved.
[0172] Robot Controller
[0173] The controller 200A is a robot controller that controls the machine 3A based on commands from the controller 100, and the controller 200B is a robot controller that controls the machine 3B based on commands from the controller 100. Fig.10 As shown, the controller 200A includes a power circuit 280 that supplies driving power to the machine 3A and a control circuit 290 that controls the power circuit 280. The control circuit 290 includes a determination unit 211, a program storage unit 212, and a processing unit 213 as functional blocks.
[0174] The determination unit 211 determines whether another controller controls the machine or controls a virtual machine corresponding to the machine. The determination unit 211 may determine whether another controller controls the machine or controls the virtual machine based on information received from another controller. The information received from another controller may include control information in another controller and a flag indicating whether another controller controls the machine or controls the virtual machine, and the determination unit 211 may determine whether another controller controls the machine or controls the virtual machine based on the flag.
[0175] The configuration of the control information may vary depending on whether the other controller controls the machine or controls the virtual machine. In this case, the determination unit 211 may determine whether the other controller controls the machine or controls the virtual machine based on the control information.
[0176] It is conceivable that the control information is encrypted when the other controller controls the machine, and is not encrypted when the other controller controls the virtual machine. In this case, the determination unit 211 can determine whether the other controller controls the machine or the virtual machine based on whether the control information is encrypted.
[0177] The communication conditions for receiving information from another controller may differ depending on whether the other controller controls a machine or a virtual machine. Specific examples of the difference in communication conditions include a difference in communication delay time, a difference in ports used for communication, etc. When the communication conditions for receiving information from another controller differ depending on whether the other controller controls a machine or a virtual machine, the determination unit 211 may determine whether the other controller controls a machine or a virtual machine based on the communication conditions for receiving information from the other controller.
[0178] The program storage unit 212 stores a predetermined real program. The real program is a program that causes the controller 200A to execute a predetermined real process when another controller controls the machine and the own controller controls the machine. The program storage unit 212 also stores a virtual modification program that causes the machine 200 to execute a virtual process obtained by modifying at least a part of the real process when another controller controls the virtual machine.
[0179] exist Figure 5 In the example of , the actual program stored in the program storage unit 212 may include the following processing instructions.
[0180] Real processing instruction 2-1) After the machine 3A starts screw tightening using the tool 60A, when the torque detected by the torque sensor 61 reaches a predetermined value, control the machine 3A to complete the screw tightening using the tool 60A.
[0181] The virtual processing may include a supplementary processing to compensate for the difference between the real information obtained based on the operation of the machine and the virtual information obtained based on the operation of the virtual machine. The virtual processing may include a supplementary processing including a processing to supplement the difference between the real information and the virtual information with predetermined data.
[0182] For example, the virtual modification program may include the following supplementary processing instructions.
[0183] Supplementary processing instruction 2-1) When the virtual controller 600B controls the virtual machine V3B, at the moment when a predetermined time has elapsed after the start of screw tightening by the tool 60A in the real processing instruction 2-1, supplementary data is generated to simulate the torque detected by the torque sensor 61 has reached a predetermined value
[0184] Supplementary processing instruction 2-2) When the own controller controls the virtual machine V3A, the above-mentioned supplementary data is generated at the time when a predetermined time has passed after the screw tightening by the tool 60A in the real processing instruction 2-1 starts.
[0185] The real information includes information (detection information) indicating that the torque detected by the torque sensor 61 has reached a predetermined value. The detection information when the virtual controller 600B controls the virtual machine V3B and when the self controller controls the virtual machine V3A is not included in the virtual information. On the other hand, the detection information is supplemented by generating supplementary data according to the supplementary processing of the supplementary processing instruction 2-1 or the supplementary processing instruction 2-2.
[0186] The virtual process may include a skip process for skipping at least a portion of the real process. For example, the virtual modification program may include the following skip process instruction.
[0187] Skip processing instruction 2-1) When the virtual controller 600B controls the virtual machine V3B, at the moment when a predetermined time has elapsed after the start of screw tightening by the tool 60A in the real processing instruction 2-1 (skip processing instruction), skip the processing of waiting for the torque detected by the torque sensor 61 to reach a predetermined value
[0188] Skip processing instruction 2-2) When the own controller controls the virtual machine V3A, the above skip processing is executed at the moment when a predetermined time has elapsed after the screw tightening by the tool 60A in the real processing instruction 2-1 is started.
[0189] The processing unit 213 performs a predetermined real process when another controller controls the machine, and performs a virtual process that is at least partially different from the real process when another controller controls the virtual machine. When the virtual controller 600B (first controller) controls the virtual machine V3B (first virtual machine) and the controller 100 (second controller) controls the machine 2 (second machine), the processing unit 213 can perform a virtual process in which the first part related to the operation of the machine 3B (first machine) is different from the real process. When the controller 200B (first controller) controls the machine 3B and the virtual controller 500 (second controller) controls the virtual machine V2 (second virtual machine), the processing unit 213 can perform a virtual process in which the second part related to the operation of the machine 2 (second machine) is different from the real process.
[0190] The processing unit 213 may perform virtual processing including supplementary processing for compensating for the difference between the real information and the virtual information. The processing unit 213 may perform supplementary processing including processing for compensating for the difference between the real information and the virtual information by predetermined information. The processing unit 213 may perform virtual processing including a skip processing instruction for skipping at least a part of the real processing.
[0191] For example, when the controller 200B controls the machine 3B and the controller 100 controls the machine 2, the processing unit 213 performs real processing based on the real program. Specifically, the processing unit 213 controls the machine 3A to start screw tightening using the tool 60A according to the real processing instruction 2-1, and then controls the machine 3A to complete screw tightening using the tool 60A when the torque detected by the torque sensor 61 reaches a predetermined value.
[0192] When the virtual controller 600B controls the virtual machine V3B instead of the controller 200B, the processing unit 213 performs virtual processing related to the operation of the machine 3B, which is partially different from the real processing based on the real program and the virtual modified program. In detail, the processing unit 213 controls the machine 3A to start screw tightening by the tool 60A according to the real processing instruction 2-1 modified based on the supplementary processing instruction 2-1, generates supplementary data at the moment when a predetermined time elapses, and controls the machine 3A to complete screw tightening by the tool 60A based on the supplementary data.
[0193] The processing unit 213 can control the machine 3A to start screw tightening using the tool 60A according to the real processing instruction 2-1 modified based on the skip processing instruction 2-1, and then control the machine 3A to complete the screw tightening using the tool 60A without waiting for the torque detected by the torque sensor 61 to reach a predetermined value when the predetermined time has elapsed.
[0194] The controller 200A may be configured to generate a virtual process based on an input to a user interface. For example, the machine 200 further includes an interface generation unit 221 , a substitute target designation unit 222 , and a process generation unit 223 .
[0195] The interface generation unit 221 generates a user interface including a display section indicating one or more non-executable parts that cannot be executed when another controller controls the virtual machine in the real process, and an input section for inputting an alternative process to each of the one or more non-executable parts. In the present embodiment, the interface generation unit 221 causes the controller 300 to display the user interface. A specific example of the user interface will be described later in the description of the controller 300.
[0196] The substitute target designation unit 222 designates one or more non-executable parts based on the difference between the real information and the virtual information. For example, when the virtual controller 600B controls the virtual machine V3B, the substitute target designation unit 222 designates the part waiting for the detection information as a non-executable part based on the fact that the detection information is not included in the virtual information. The interface generation unit 221 causes the display unit to display the one or more non-executable parts designated by the substitute target designation unit 222.
[0197] The process generation unit 223 generates a virtual process based on the input to the input unit of the user interface. For example, the process generation unit 223 generates the above-mentioned supplementary process instruction or skip process instruction based on the input to the input unit, and causes the program storage unit 112 to store the supplementary process instruction or skip process instruction.
[0198] The controller 200A may be configured to generate a supplementary process based on the difference between the real information and the virtual information. For example, the process generation unit 223 may be configured to generate a supplementary process based on the difference between the real information and the virtual information. For example, the process generation unit 223 generates a supplementary process instruction 2-1 based on the fact that the detection information is not included in the virtual information when the virtual controller 600B controls the virtual machine V3B, and stores the supplementary process instruction 2-1 in the program storage unit 112.
[0199] The controller 200A may be configured to perform virtual processing even when the control target of the own controller is a virtual machine. For example, the controller 200A further includes a control target determination unit 231 and a sending unit 232. The control target determination unit 231 determines whether the control target of the own controller is a machine (slave machine) or a virtual machine (slave virtual machine). For example, the control target determination unit 231 determines whether the control target of the own controller is a machine 3A or a virtual machine V3A. For example, the control target determination unit 231 determines whether the control target of the own controller is a machine 3A or a virtual machine V3A based on whether the own controller is a virtual controller configured in the simulation device 400.
[0200] As will be described later, the controller 200A itself can be configured to execute a real mode for actually controlling the machine 3A and a virtual mode for controlling the virtual machine V3A. In this case, the control target determination unit 231 determines whether the control target of the self controller is the machine 3A or the virtual machine V3A based on which of the real mode and the virtual mode is selected.
[0201] The processing unit 213 performs real control processing when the control target of the own controller is a machine, and performs virtual control processing that is at least partially different from the real control processing when the control target of the own controller is a virtual machine. For example, when another controller controls a virtual machine and the own controller controls a slave machine, the processing unit performs virtual processing in which the external dependent part related to the operation of the machine (the machine controlled by the other controller) is different from the real processing. The virtual processing is included in the above-mentioned real control processing. When another controller controls a machine and the own controller controls a slave virtual machine, the processing unit 213 can perform virtual processing in which the slave part related to the operation of the slave machine is different from the real processing. The virtual processing is included in the above-mentioned virtual control processing.
[0202] As an example, when the self-controller controls the slave virtual machine, the processing unit 213 controls the machine 3A to start screw tightening using the tool 60A according to the real processing instruction 2-1 modified based on the supplementary processing instruction 2-2, generates supplementary data at the moment when a predetermined time has passed, and controls the machine 3A to complete screw tightening using the tool 60A based on the supplementary data.
[0203] The processing unit 213 can control the machine 3A to start screw tightening using the tool 60A according to the real processing instruction 2-1 modified based on the skip processing instruction 2-2, and then control the machine 3A to complete the screw tightening using the tool 60A without waiting for the torque detected by the torque sensor 61 to reach a predetermined value when the predetermined time has elapsed.
[0204] The sending unit 232 sends information to another controller to which the determination result of the control target determination unit 231 is attached. For example, the sending unit 232 sends information obtained by adding the determination result (e.g., a flag) of the control target determination unit 231 to the information (control information) indicating the operation result of the machine 3A to the controller 100 or the virtual controller 500.
[0205] Similar to the controller 200A, the controller 200B includes a power supply circuit 280 and a control circuit 290. Figure 5 In the example of FIG. 1 , the actual program stored in the program storage unit 212 of the controller 200B may include the following processing instructions.
[0206] The actual processing instruction 3-1) controls the machine 3B to execute the operation of holding the workpiece 90 at the working position P1 with the tool 60B, and then controls the machine 3B to execute the operation of transferring the workpiece 90 from the working position P1 to the loading platform 11 after the holding sensor 62 detects that the tool 60B holds the workpiece 90
[0207] Furthermore, the virtual modification program may include the following supplementary processing instructions.
[0208] Supplementary processing instruction 3-1) When the virtual controller 600A controls the virtual machine V3A, the supplementary data which simulates and indicates that the gripping sensor 62 detects the gripping workpiece 90 is generated in the real processing instruction 2-1.
[0209] Supplementary processing instruction 3-2) When the virtual controller 500 controls the virtual machine V2, the above-mentioned supplementary data is generated in the real processing instruction 2-1
[0210] Supplementary processing instruction 3-3) When the self-controller controls the virtual machine V3B, the above-mentioned supplementary data is generated in the real processing instruction 2-1
[0211] The real information includes information (detection information) indicating that the gripping sensor 62 has detected the gripping workpiece 90. The detection information is not included in the virtual information when the virtual controller 600A controls the virtual machine V3A, when the virtual controller 500 controls the virtual machine V2, and when the self controller controls the virtual machine V3B. On the other hand, the detection information is supplemented by generating supplementary data according to the supplementary processing of the supplementary processing instruction 3-1, the supplementary processing instruction 3-2, or the supplementary processing instruction 3-3.
[0212] The virtual process may include a skip process instruction for skipping at least a portion of the real process. For example, the virtual modification program may include the following skip process instruction.
[0213] Skip processing instruction 3-1) When the virtual controller 600A controls the virtual machine V3A, skip the processing of controlling the machine 3B to execute the operation of holding the workpiece 90 at the working position P1 with the tool 60B in the real processing instruction 3-1 (first skip processing)
[0214] Skip processing instruction 3-2) When the virtual controller 600A controls the virtual machine V3A, wait for the skip processing (the second skip processing in the real processing instruction 3-1 after the first skip processing) in which the gripping sensor 62 detects that the workpiece 90 is gripped.
[0215] Skip Processing Instruction 3-3) When the virtual controller 500 controls the virtual machine V2, the first skip processing in the real processing instruction 3-1 is executed.
[0216] Skip processing instruction 3-4) When the virtual controller 500 controls the virtual machine V2, the second skip processing is executed after the first skip processing in the real processing instruction 3-1.
[0217] Skip processing instruction 3-5) When the own controller controls the virtual machine V3B, execute the second skip processing in the real processing instruction 3-1
[0218] When the controller 200B controls the machine 3B and the controller 100 controls the machine 2, the processing unit 213 performs real processing based on the real program. In detail, the processing unit 213 controls the machine 3B to perform an operation of holding the workpiece 90 at the working position P1 using the tool 60B according to the real processing instruction 3-1, and then controls the machine 3B to transfer the workpiece 90 from the working position P1 to the loading station 11 after the holding sensor 62 detects that the tool 60B holds the workpiece 90.
[0219] When the virtual controller 600A controls the virtual machine V3A instead of the controller 200A, the processing unit 213 executes virtual processing in which the part related to the operation of the machine 3A is different from the real processing based on the real program and the virtual modified program. In detail, according to the real processing instruction 3-1 modified based on the skip processing instruction 3-1 and the supplementary processing instruction 3-1, the processing unit 213 generates supplementary data without controlling the machine 3B to perform the operation of holding the workpiece 90 at the working position P1 with the tool 60B, and controls the machine 3B to perform the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 based on the supplementary data.
[0220] According to the real processing instruction 3-1 modified based on the skip processing instruction 3-1 and the skip processing instruction 3-2, the processing unit 213 can transfer the workpiece 90 from the working position P1 to the loading table 11 without causing the machine 3B to perform the operation of holding the workpiece 90 of the machine 3B by the tool 60B and without waiting for the holding sensor 62 to detect the holding of the workpiece 90.
[0221] When the virtual controller 500 controls the virtual machine V2 instead of the controller 100, the processing unit 213 performs virtual processing in which the part related to the operation of the machine 2 is different from the real processing based on the real program and the virtual modified program. Specifically, the processing unit 213 generates supplementary data based on the real processing instruction 3-1 modified based on the skip processing instruction 3-3 and the supplementary processing instruction 3-2, without causing the machine 3B to perform the operation of holding the workpiece 90 at the working position P1 by the tool 60B, and causes the machine 3B to perform the operation of transferring the workpiece 90 from the working position P1 to the loading table 11 based on the supplementary data.
[0222] According to the real processing instruction 3-1 modified based on the skip processing instruction 3-3 and the skip processing instruction 3-4, the processing unit 213 can transfer the workpiece 90 from the working position P1 to the loading table 11 without causing the machine 3B to perform the operation of holding the workpiece 90 of the machine 3B by the tool 60B and without waiting for the holding sensor 62 to detect the holding of the workpiece 90.
[0223] For example, in the case where the virtual controller 600A controls the virtual machine V3A and in the case where the virtual controller 500 controls the virtual machine V2, the process generation unit 223 can generate supplementary processing instructions 3-1 and supplementary processing instructions 3-2 based on the fact that the detection information is not included in the virtual information, and store the generated virtual information in the program storage unit 112.
[0224] The control target determination unit 231 of the controller 200B determines whether the control target of the controller is the machine 3B or the virtual machine V3B. For example, the control target determination unit 231 can determine whether the control target of the controller is the machine 3B or the virtual machine V3B based on whether the controller is a virtual controller configured as the simulation device 400.
[0225] As will be described later, the controller 200B itself can be configured to execute a real mode for actually controlling the machine 3B and a virtual mode for controlling the virtual machine V3B. In this case, the control target determination unit 231 determines whether the control target of the own controller is the machine 3B or the virtual machine V3B based on which of the real mode and the virtual mode is selected.
[0226] The processing unit 213 performs actual control processing when the control target of the own controller is a machine, and performs virtual control processing that is at least partially different from the real control processing when the control target of the own controller is a virtual machine. For example, when another controller controls a virtual machine and the own controller controls a slave machine, an external dependent part related to the operation of the machine (machine controlled by another controller) performs virtual processing that is different from the real processing in the processing unit 213. The virtual processing is included in the above-mentioned real control processing. When another controller controls a machine and the own controller controls a slave virtual machine, the processing unit 213 can perform virtual processing in which the slave part related to the operation of the slave machine is different from the real processing. The virtual processing is included in the above-mentioned virtual control processing.
[0227] As an example, when the self-controller controls the slave virtual machine, the processing unit 213 enables the machine 3B to execute the operation of holding the workpiece 90 at the working position P1 by the tool 60B according to the real processing instruction 3-1 modified based on the supplementary processing instruction 3-3, generates supplementary data, and based on the supplementary data, enables the machine 3B to execute the operation of transferring the workpiece 90 from the working position P1 to the loading table 11.
[0228] The processing unit 213 can cause the machine 3B to perform an operation of holding the workpiece 90 at the working position P1 by the tool 60B according to the real processing instruction 3-1 modified based on the skip processing instruction 3-5, and then cause the machine 3B to perform an operation of transferring the workpiece 90 from the working position P1 to the loading table 11 without waiting for the holding sensor 62 to detect the holding of the workpiece 90.
[0229] The sending unit 232 sends information to another controller to which the determination result of the control target determination unit 231 is attached. For example, the sending unit 232 sends information obtained by adding the determination result (e.g., a flag) of the control target determination unit 231 to the information (control information) indicating the operation result of the machine 3B to the controller 100 or the virtual controller 500.
[0230] Virtual Controller
[0231] like Fig.11 As shown, the virtual controller 500 includes a determining unit 511, a program storage unit 512, and a processing unit 513 as functional blocks, which correspond to the determining unit 111, the program storage unit 112, and the processing unit 113 of the controller 100, respectively. Similar to the determining unit 111, the determining unit 511 determines whether another controller controls the machine or controls a virtual machine corresponding to the machine. The program storage unit 512 stores a program that is the same as the real program and the virtual modified program stored in the program storage unit 112. The processing unit 513 simulates the real processing of the processing unit 113 when another controller controls the machine, and simulates the virtual processing of the processing unit 113 when another controller controls the virtual machine.
[0232] The processing performed by the processing unit 513 differs from the processing performed by the processing unit 113 mainly in that the virtual machine V2 is operated in the virtual space VS based on the three-dimensional model stored in the model storage unit 410, instead of operating the machine 2 in the real space RS. In other respects, the processing performed by the processing unit 513 is substantially similar to the processing performed by the processing unit 113.
[0233] The virtual controller 500 may further include an interface generation unit 521, an alternative target designation unit 522, and a process generation unit 523, which correspond to the interface generation unit 121, the alternative target designation unit 122, and the process generation unit 123 of the controller 100, respectively. The interface generation unit 521 generates a user interface similar to the user interface generated by the interface generation unit 121. In the present embodiment, the interface generation unit 521 causes the controller 300 to display a user interface. A specific example of the user interface will be described later in the description of the controller 300.
[0234] The alternative target specifying unit 522 specifies one or more non-executable parts based on the difference between the real information and the virtual information, similarly to the alternative target specifying unit 122. The interface generating unit 521 causes the display unit to display the one or more non-executable parts specified by the alternative target specifying unit 522.
[0235] Similar to the process generation unit 123, the process generation unit 523 generates a virtual process based on the input to the input section of the user interface. For example, the process generation unit 523 generates the above-mentioned supplementary process instruction or skip process instruction based on the input to the input section, and causes the program storage unit 512 to store the supplementary process instruction or skip process instruction.
[0236] The virtual controller 500 may further include a control target determination unit 531 and a sending unit 532 respectively corresponding to the control target determination unit 131 and the sending unit 132 of the controller 100. Similar to the control target determination unit 131, the control target determination unit 531 determines whether the control target of the own controller is a machine (slave machine) or a virtual machine (slave virtual machine).
[0237] The processing unit 513 performs real control processing when the control target of the own controller is a machine, and performs virtual control processing that is at least partially different from the real control processing when the control target of the own controller is a virtual machine. For example, when another controller controls a virtual machine and the own controller controls a slave machine, the processing unit 513 performs virtual processing in which the external dependent part related to the operation of the machine (the machine controlled by the other controller) is different from the real processing. The virtual processing is included in the above-mentioned real control processing. When another controller controls a machine and the own controller controls a slave virtual machine, the processing unit 513 can perform virtual processing in which the slave part related to the operation of the slave machine is different from the real processing. The virtual processing is included in the above-mentioned virtual control processing.
[0238] Similar to the transmission unit 132, the transmission unit 532 transmits information to which the determination result of the control target determination unit 531 is attached to another controller. For example, the transmission unit 532 transmits information obtained by adding the determination result (e.g., flag) of the control target determination unit 531 to the command (control information) for operating the machine 3A to the controller 200A or the virtual controller 600A. The transmission unit 532 transmits information obtained by attaching the determination result of the control target determination unit 531 to the instruction (control information) for operating the machine 3B to the controller 200B or the virtual controller 600B.
[0239] The virtual controller 500 may further include a data accumulation unit 541, a database 542, and a data display unit 543, which respectively correspond to the data accumulation unit 141, the database 142, and the data display unit 143 of the controller 100. Similar to the data accumulation unit 141, the data accumulation unit 541 accumulates the control data of the machine 2, the machine 3A, 3B, V3A, and V3B in a time series in the database 542. The data display unit 543 displays the control data accumulated in the database 542 on the controller 300 or the like.
[0240] like Fig.12 As shown, the virtual controller 600A includes a determining unit 611, a program storage unit 612, and a processing unit 613 as functional blocks, which correspond to the determining unit 211, the program storage unit 212, and the processing unit 213 of the controller 200A, respectively. Similar to the determining unit 211, the determining unit 611 determines whether another controller controls the machine or controls a virtual machine corresponding to the machine. The program storage unit 612 stores a program that is the same as the real program and the virtual modified program stored in the program storage unit 212. The processing unit 613 simulates the real processing of the processing unit 213 when another controller controls the machine, and simulates the virtual processing of the processing unit 213 when another controller controls the virtual machine.
[0241] The processing performed by the processing unit 613 differs from the processing performed by the processing unit 213 mainly in that the virtual machine V3A is operated in the virtual space VS instead of operating the machine 3A in the real space RS based on the three-dimensional model stored in the model storage unit 410. In other respects, the processing performed by the processing unit 613 is substantially similar to the processing performed by the processing unit 213.
[0242] The virtual controller 600A may further include an interface generation unit 621, an alternative target designation unit 622, and a process generation unit 623 corresponding to the interface generation unit 221, the alternative target designation unit 222, and the process generation unit 223 of the controller 200A, respectively. The interface generation unit 621 generates a user interface similar to the user interface generated by the interface generation unit 221. In the present embodiment, the interface generation unit 621 causes the controller 300 to display a user interface. A specific example of the user interface will be described later in the description of the controller 300.
[0243] Similar to the substitute target specifying unit 222 , the substitute target specifying unit 622 specifies one or more non-executable parts based on the difference between the real information and the virtual information. The interface generating unit 621 causes the display unit to display the one or more non-executable parts specified by the substitute target specifying unit 622 .
[0244] Similar to the process generation unit 223, the process generation unit 623 generates a virtual process based on the input to the input unit of the user interface. For example, the process generation unit 623 generates the above-mentioned supplementary process instruction or skip process instruction based on the input to the input unit, and causes the program storage unit 612 to store the supplementary process instruction or skip process instruction.
[0245] The virtual controller 600A may further include a control target determination unit 631 and a sending unit 632 corresponding to the control target determination unit 231 and the sending unit 232 of the controller 200A, respectively. Similar to the control target determination unit 231, the control target determination unit 631 determines whether the control target of the own controller is a machine (slave machine) or a virtual machine (slave virtual machine).
[0246] The processing unit 613 performs real control processing when the control target of the own controller is a machine, and performs virtual control processing that is at least partially different from the real control processing when the control target of the own controller is a virtual machine. For example, when another controller controls a virtual machine and the own controller controls a slave machine, the processing unit 613 performs virtual processing in which the external dependency part related to the operation of the machine (machine controlled by the other controller) is different from the real processing. The virtual processing is included in the above-mentioned real control processing. When another controller controls a machine and the own controller controls a slave virtual machine, the processing unit 613 can perform virtual processing in which the slave part related to the operation of the slave machine is different from the real processing. The virtual processing is included in the above-mentioned virtual control processing.
[0247] Similar to the transmission unit 232, the transmission unit 632 transmits information to which the determination result of the control target determination unit 631 is attached to another controller. For example, the transmission unit 632 transmits information obtained by adding the determination result (e.g., a flag) of the control target determination unit 631 to the information (control information) indicating the operation result of the virtual machine V3A to the controller 100 or the virtual controller 500.
[0248] Similar to the virtual controller 600A, the virtual controller 600B includes a determination unit 611, a program storage unit 612, and a processing unit 613 corresponding to the determination unit 211, the program storage unit 212, and the processing unit 213 of the controller 200B, respectively. The processing performed by the processing unit 613 differs from the processing performed by the processing unit 213 mainly in that the virtual machine V3B is operated in the virtual space VS based on the three-dimensional model stored in the model storage unit 410, instead of operating the machine 3B in the real space RS. In other respects, the processing performed by the processing unit 613 is substantially similar to the processing performed by the processing unit 213.
[0249] Similar to the virtual controller 600A, the virtual controller 600B may further include an interface generation unit 621, an alternative target designation unit 622, and a process generation unit 623 corresponding to the interface generation unit 221, the alternative target designation unit 222, and the process generation unit 223 of the controller 200B, respectively. Similar to the virtual controller 600A, the virtual controller 600B may further include a control target determination unit 631 and a sending unit 632 corresponding to the control target determination unit 231 and the sending unit 232 of the controller 200B, respectively. The sending unit 632 sends information obtained by appending a determination result (e.g., a flag) of the control target determination unit 631 to information (control information) indicating an operation result of the virtual machine V3B to the controller 100 or the virtual controller 500.
[0250] Setting up the controller
[0251] The controller 300 is a setting controller that sets control conditions of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B. Specific examples of the control conditions include, in addition to the control gain, the above-mentioned predetermined value of the torque detected by the torque sensor 61 in screw tightening by the grip sensor 62. The controller 300 is a controller that can communicate with each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B (other controllers).
[0252] like Fig.13 As shown, the controller 300 includes a determination unit 311, a program storage unit 312, and a condition setting processing unit 313 as functional blocks. The determination unit 311 determines whether another controller controls the machine or controls a virtual machine corresponding to the machine. The determination unit 311 can determine whether another controller controls the machine or controls the virtual machine based on information received from another controller. The information received from another controller may include control information in another controller and a flag indicating whether another controller controls the machine or the virtual machine, and the determination unit 311 can determine whether another controller controls the machine or controls the virtual machine based on the flag.
[0253] The configuration of the control information may vary depending on whether the other controller controls the machine or controls the virtual machine. In this case, the determination unit 311 may determine whether the other controller controls the machine or controls the virtual machine based on the control information.
[0254] It is conceivable that when another controller controls a machine, the control information is encrypted, and when another controller controls a virtual machine, the control information is not encrypted. In this case, the determination unit 311 can determine whether the other controller controls a machine or a virtual machine based on whether the control information is encrypted.
[0255] The communication conditions for receiving information from another controller may differ depending on whether the other controller controls a machine or a virtual machine. Specific examples of the difference in communication conditions include a difference in communication delay time, a difference in ports used for communication, etc. When the communication conditions for receiving information from another controller differ depending on whether the other controller controls a machine or a virtual machine, the determination unit 311 may determine whether the other controller controls a machine or a virtual machine based on the communication conditions for receiving information from the other controller.
[0256] The program storage unit 312 stores a predetermined real program. The real program is a program that causes the machine to execute a predetermined real process when another controller controls the controller 300. The program storage unit 312 also stores a virtual modification program that causes the controller 300 to execute a virtual process obtained by modifying at least a part of the real process when another controller controls the virtual machine.
[0257] The real program stored in the program storage unit 312 includes the following real setting processing instructions.
[0258] Real setting processing instruction 1) Generates a user interface for setting the control conditions of the controller 100 (hereinafter referred to as "real interface"), and sets the control conditions of the controller 100 based on the input to the real interface
[0259] Real setting processing instruction 2) Generates a real interface for the controller 200A, and sets control conditions for the controller 200A based on the input to the real interface
[0260] Real setting processing instruction 3) Generates a real interface for the controller 200B, and sets control conditions for the controller 200B based on the input of the real interface
[0261] The virtual processing may include generating a virtual interface having different configurable items than configurable items of a real interface generated by the real setting processing instructions.
[0262] For example, the virtual modification program may include the following project change instructions.
[0263] Item change instruction 1) When the virtual controller 500 replaces the controller 100 as the setting target of the control condition, a part of the setting items in the real interface of the controller 100 is invalidated
[0264] Item change instruction 2) When the virtual controller 600A replaces the controller 200A as the setting target of the control condition, a part of the setting items in the real interface of the controller 200A is invalidated
[0265] Item change instruction 3) When the virtual controller 600B replaces the controller 200B as the setting target of the control condition, a part of the setting items in the real interface of the controller 200B is invalidated
[0266] The condition setting processing unit 313 performs a predetermined real process when another controller controls a machine, and performs a virtual process that is at least partially different from the real process when another controller controls a virtual machine. As an example, when the other controller for which the control condition is set is the controller 100 that controls the machine 2, the condition setting processing unit 313 sets the control condition for the controller 100 based on the real setting processing instruction 1. When the other controller is a virtual controller 500 that controls the virtual machine V2, the condition setting processing unit 313 generates a virtual interface according to the real setting processing instruction 1 modified based on the item change instruction 1, in which a part of the setting items in the real interface of the controller 100 is invalid, and sets the control condition of the virtual controller 500 based on the input to the virtual interface.
[0267] When the other controller for which the control condition is set is the controller 200A controlling the machine 3A, the condition setting processing unit 313 sets the control condition for the controller 200A based on the real setting processing instruction 2. When the other controller is the virtual controller 600A controlling the virtual machine V3A, the condition setting processing unit 313 generates a virtual interface according to the real setting processing instruction 2 modified based on the item change instruction 2, in which a part of the setting items in the real interface of the controller 200A is invalid, and sets the control condition of the virtual controller 600A based on the input to the virtual interface.
[0268] When the other controller for which the control condition is set is the controller 200B controlling the machine 3B, the condition setting processing unit 313 sets the control condition for the controller 200B based on the real setting processing instruction 3. When the other controller is the virtual controller 600B controlling the virtual machine V3B, the condition setting processing unit 313 generates a virtual interface according to the real setting processing instruction 3 modified based on the item change instruction 3, in which a part of the setting items in the real interface of the controller 200B is invalid, and sets the control condition of the virtual controller 600B based on the input to the virtual interface.
[0269] The controller 300 may be configured to generate a virtual process based on an input to a user interface. For example, the controller 300 further includes an interface generation unit 321 and a process generation unit 322 .
[0270] The interface generation unit 321 generates a user interface through which items in the setting items in the real interface that are to be disabled in the virtual interface can be input for each controller. Hereinafter, the user interface is referred to as the "item setting interface". The process generation unit 322 generates item change instruction 1, item change instruction 2, and item change instruction 3 based on the input to the item setting interface, and stores them in the program storage unit 312.
[0271] The interface generation unit 321 can also generate a user interface for selectively displaying a user interface generated by each of the controllers 100, 200A and 200B and the virtual controllers 500, 600A and 600B. Hereinafter, the user interface is referred to as a "processing generation interface" and is distinguished from the above-mentioned real interface, virtual interface and project setting interface.
[0272] Fig.14 is a schematic diagram showing an example process generation interface generated by the interface generation unit 321. Fig.14 As shown, the process generation interface 350 includes a controller selection section 351 , a machine selection section 352 , a display section 353 , an input section 354 , and a registration instruction unit 355 .
[0273] The controller selection section 351 is an input interface for selecting one of the controllers 100 , 200A, and 200B and the virtual controllers 500 , 600A, and 600B.
[0274] The machine selection section 352 is an input interface for selecting a machine controlled by another controller based on the controller selected by the controller selection section 351. For example, when the controller 100 is selected in the controller selection section 351, one of the machines 3A or 3B corresponds to the machine controlled by the other controller. When the controller 200A is selected in the controller selection section 351, one of the machines 2 or 3B is the machine controlled by the other controller. When the controller 200B is selected in the controller selection section 351, one of the machines 2 or 3A is the machine controlled by the other controller.
[0275] In the case where the virtual machine corresponding to the machine selected in the machine selection section 352 is controlled in the process executed by the controller selected in the controller selection section 351, the display section 353 displays the non-executable part 356. The input section 354 is a portion for inputting an alternative process to each non-executable part 356. For example, the input section 354 includes an input interface for inputting an alternative process corresponding to the non-executable part 356 selected in the display section 353. The display contents in the display section 353 and the input section 354 are generated by the interface generation unit (any one of the interface generation units 121, 221, 521, and 621) of the controller selected in the controller selection section 351.
[0276] The registration instruction unit 355 is an input interface for requesting generation and registration of a virtual process based on the alternative process input in the input section 354. When the registration instruction unit 355 requests generation and registration of a virtual process, the process generation unit (any one of the process generation units 123, 223, 523, and 623) of the controller selected in the controller selection section 351 generates and registers a virtual process based on the input content of the input section 354.
[0277] The controller 300 may further include a process command unit 331 and a data display unit 332. The process command unit 331 instructs the controller 100 or the virtual controller 500 to perform a predetermined process. The data display unit 332 displays control data accumulated in the controller 100 or the virtual controller 500 by performing the process.
[0278] In the above description, the virtual controller controlling the virtual machine is provided in the simulation device 400 separately from the controllers 100, 200A and 200B controlling the machine, but the configuration is not limited thereto. The controllers 100, 200A and 200B themselves may have the function of controlling the virtual machine (control of the simulation machine).
[0279] In this case, controllers 200A and 200B can perform real control processing including processing for causing the power supply circuit 280 to output driving power when the control target of the own controller is a machine, and can perform virtual control processing that does not include processing for causing the power supply circuit 280 to output driving power when the control target of the own controller is a virtual machine.
[0280] Hardware Configuration
[0281] Fig.15 1 is a block diagram showing an example hardware configuration of the controller 100, the controller 200A, the controller 200B, the simulation device 400, and the controller 300. The controller 100 includes a control circuit 190. The control circuit 190 includes one or more processors 191, a memory 192, a storage device 193, a communication port 194, a control port 195, and a machine system 196. The storage device 193 is a non-volatile storage medium, and stores a program for causing the control circuit 190 to perform the following operations: determine whether another controller controls a machine or controls a virtual machine corresponding to the machine; perform a predetermined real process when another controller controls the machine; and perform a virtual process that is at least partially different from the real process when another controller controls the virtual machine. For example, the storage device 193 stores a program for configuring the functional blocks of the controller 100 described above into the control circuit 190. Specific examples of the storage device 193 include a flash memory and a hard disk.
[0282] The memory 192 temporarily stores programs loaded from the storage device 193, etc. A specific example of the memory 192 includes a random access memory. The processor 191 repeatedly executes the program loaded in the memory 192 and temporarily stores the operation results generated by executing the program in the memory 192, thereby configuring the functional blocks in the control circuit 190.
[0283] The communication port 194 communicates with other controllers via the communication network 900 based on commands from the processor 191. The control port 195 controls the machine 2 based on commands from the processor 191.
[0284] As described above, each of the controller 200A and the controller 200B includes a power supply circuit 280 and a control circuit 290. The control circuit 290 includes one or more processors 291, a memory 292, a storage device 293, and a communication port 294. The storage device 293 is a non-volatile storage medium, and stores a program for causing the control circuit 290 to perform the following operations: determine whether another controller controls a machine or controls a virtual machine corresponding to the machine; perform a predetermined real process when another controller controls the machine; and perform a virtual process that is at least partially different from the real process when another controller controls the virtual machine. For example, the storage device 293 stores a program for configuring the functional blocks of the above-mentioned controller 200A or controller 200B into the control circuit 290. Specific examples of the storage device 293 include a flash memory and a hard disk.
[0285] The memory 292 temporarily stores programs loaded from the storage device 293, etc. A specific example of the memory 292 includes a random access memory. The processor 291 repeatedly executes the program loaded in the memory 292, and temporarily stores the operation results generated by executing the program in the memory 292, thereby configuring the functional blocks in the control circuit 290.
[0286] The communication port 294 communicates with other controllers via the communication network 900 based on a command from the processor 291. The power supply circuit 280 generates driving power for the machine 3A or the machine 3B based on a command from the processor 291.
[0287] The simulation device 400 includes a simulation circuit 490. The simulation circuit 490 includes one or more processors 491, a memory 492, a storage device 493, and a communication port 494. The storage device 493 is a non-volatile storage medium, and stores a program for causing the simulation circuit 490 to perform the following operations: determine whether another controller controls a machine or controls a virtual machine corresponding to the machine; perform a predetermined real process when another controller controls the machine; and perform a virtual process that is at least partially different from the real process when another controller controls the virtual machine. For example, the storage device 493 stores a program for configuring the functional blocks of the above-mentioned simulation device 400 into the simulation circuit 490. Specific examples of the storage device 493 include a flash memory and a hard disk.
[0288] The memory 492 temporarily stores programs loaded from the storage device 493, etc. Specific examples of the memory 492 include random access memory. The processor 491 repeatedly executes the program loaded in the memory 492, and temporarily stores the operation results generated by executing the program in the memory 492, thereby configuring the functional blocks in the analog circuit 490. The communication port 494 communicates with other controllers via the communication network 900 based on commands from the processor 291.
[0289] The controller 300 includes a setting circuit 390. The setting circuit 390 includes one or more processors 391, a memory 392, a storage device 393, a communication port 394, a display device 395, and an input device 396. The storage device 393 is a non-volatile storage medium, and stores a program for causing the setting circuit 390 to perform the following operations: determine whether another controller controls the machine or controls a virtual machine corresponding to the machine; perform a predetermined real process when another controller controls the machine; and perform a virtual process that is at least partially different from the real process when another controller controls the virtual machine. For example, the storage device 393 stores a program for configuring the functional blocks of the above-mentioned controller 300 into the setting circuit 390. Specific examples of the storage device 393 include a flash memory and a hard disk.
[0290] The memory 392 temporarily stores programs loaded from the storage device 393, etc. A specific example of the memory 392 includes a random access memory. The processor 391 repeatedly executes the program loaded in the memory 392, and temporarily stores the operation results generated by executing the program in the memory 392, thereby configuring the functional blocks in the setting circuit 390.
[0291] The communication port 394 communicates with other controllers via the communication network 900 based on commands from the processor 391. The display device 395 displays the above-mentioned various user interfaces based on commands from the processor 391. Specific examples of the display device 395 include a liquid crystal monitor. The input device 396 obtains inputs to various user interfaces. Specific examples of the input device 396 include a keyboard and a mouse. The input device 396 can be integrated with the display device 395 as a so-called touch panel.
[0292] System construction process
[0293] Next, as an example of a system construction method, an example system construction process performed by the machine system 1 will be described. Here, the system construction process refers to a process for constructing a system in which each of a plurality of controllers controls a machine by changing the control target of the plurality of controllers from a virtual machine to a machine in a stepwise manner.
[0294] The process includes: based on information received from another controller, determining that the other controller controls a virtual machine corresponding to the machine; executing virtual processing and displaying the execution result; based on information received from the other controller, determining that the control target of the other controller is changed from the virtual machine to the machine; in response to the machine target of the other controller being changed from the virtual machine to the machine, changing the virtual processing to a real processing that is at least partially different from the virtual processing; and executing the real processing and displaying the execution result.
[0295] The system building process is executed as a whole by, for example, the controller 300. Fig.16 As shown, the controller 300 first performs steps S01 and S02. In step S01, the controller 300 generates a virtual process for each of the other communicable controllers. The specific content of step S01 will be described later.
[0296] In step S02, the controller 300 sets a control condition for each of the other communicable controllers. The specific contents of step S02 will be described later.
[0297] Next, the controller 300 executes steps S03, S04, S05, and S06. In step S03, the processing command unit 331 waits for a trial request processed in the current system configuration input by the input device 396, etc. In step S04, the processing command unit 331 instructs the controller 100 or the virtual controller 500 to execute processing.
[0298] Thereafter, in each of the controller 100 or the virtual controller 500, the controller 200A or the virtual controller 500A, and the controller 200B or the virtual controller 500B, it is determined whether the other controller controls the machine or controls the virtual machine, and when it is determined that the other controller controls the virtual machine, a virtual process corresponding thereto is performed. In step S05, the data display unit 332 waits for the process in the controller 100 or the virtual controller 500 to be completed. In step S06, the data display unit 332 performs a process to display the control data (processing result) accumulated in the controller 100 or the virtual controller 500.
[0299] Next, the controller 300 executes step S07. In step S07, the processing command unit 331 confirms whether the trial request for processing is input again by the input device 396 or the like. If it is determined in step S07 that the trial request is input again, the controller 300 executes step S08. In step S08, the processing command unit 331 confirms whether the control target of any one of the other controllers is changed from the virtual machine to the machine. If it is determined in step S08 that the control target of any one of the other controllers is changed from the virtual machine to the machine, the controller 300 executes step S09 similar to step S02.
[0300] Thereafter, the controller 300 returns the process to step S04. When step S07 determines that the control target has not changed from the virtual machine to the machine, the controller 300 returns the process to step S04 without executing step S09. As described above, the trial of the execution process and the display of the control data (execution result of the process) are repeated. In this repeated process, when the control target of another controller changes from the virtual machine to the machine, the virtual process associated with the machine is replaced by the real process, and the control data of the real process is displayed.
[0301] By repeating this process, a system in which each of the plurality of controllers controls the machine is constructed, and when appropriate control data is displayed, the system construction process is completed.
[0302] When it is determined in step S07 that the trial request is not input again, the controller 300 executes the following steps: Fig.17 In step S11, the process command unit 331 confirms whether a change request of the virtual process is inputted by the input device 396 or the like. If it is determined in step S11 that a request to change the virtual process is inputted, the controller 300 executes step S12 similar to step S01.
[0303] If it is determined in step S11 that a request to change the virtual process is not input, the controller 300 executes step S13. In step S13, the process command unit 331 confirms whether a request to change the control condition is input by the input device 396, etc. When it is determined in step S13 that a request to change the control condition is input, the controller 300 executes step S14 similar to step S02.
[0304] After step S12 or S14, the controller 300 returns the process to step S07. If it is determined in step S13 that no change request for the control condition is input, the controller 300 returns the process to step S07 without executing steps S12 and S14. Thereafter, until a trial request is input again, the virtual process and the control condition are reset in response to the request.
[0305] Fig.18 is a flowchart showing the process of generating a virtual process in step S01. First, the controller 300 executes steps S21, S22, and S23. In step S21, the interface generation unit 321 generates the above-mentioned process generation interface 350, and displays the process generation interface 350 in the display device 395 or the like. In step S22, the interface generation unit 321 waits for a controller to be selected in the controller selection section 351. Hereinafter, the controller selected in the controller selection section 351 is referred to as the "selected controller". In step S23, the interface generation unit 321 waits for a machine to be selected in the machine selection section 352. Hereinafter, the machine selected in the machine selection section 352 is referred to as the "another machine", and the other machine selected in the machine selection section 352 is referred to as the "selected machine".
[0306] Next, the controller 300 executes step S24. In step S24, the alternative target specifying unit of the selected controller (any one of the alternative target specifying unit 122, the alternative target specifying unit 222, the alternative target specifying unit 522, and the alternative target specifying unit 622) specifies one or more non-executable parts corresponding to the selected machine based on the difference between the real information and the virtual information. The interface generation unit of the selected controller (any one of the interface generation units 121, 221, 521, and 621) displays the one or more non-executable parts 356 specified by the alternative target specifying unit in the display unit 353.
[0307] Next, the controller 300 executes steps S25 and S26. In step S25, the interface generation unit of the selected controller waits for the non-executable part 356 to be selected in the display part 353. In step S26, the interface generation unit of the selected controller displays the input part 354 for inputting an alternative process to the selected non-executable part 356.
[0308] Next, the controller 300 executes steps S27 and S28. In step S27, the process generation unit of the selected controller (any one of the process generation units 123, 223, 523, and 623) waits for input of a registration request from the registration instruction unit 355. In step S28, the process generation unit of the selected controller generates a virtual process based on the input to the registration instruction unit 355.
[0309] Next, the controller 300 executes step S31. In step S31, the interface generation unit 321 confirms whether generation of virtual processes for all other machines is completed.
[0310] If it is determined in step S31 that there is still a machine for which a virtual process has not been generated, the controller 300 returns the process to step S23. Thereafter, steps S23 to S31 are repeated until the generation of virtual processes is completed for all other machines.
[0311] When it is determined in step S31 that the generation of virtual processes is completed for all other machines, the controller 300 executes step S32. In step S32, it is checked whether the generation of virtual processes is completed for all controllers to be selected in the controller selection section 351. If it is determined in step S32 that there are machines for which virtual processes have not been generated, the controller 300 returns the process to step S22. Thereafter, steps S22 to S31 are repeated until the generation of virtual processes is completed for all controllers. When it is determined in step S32 that the generation of virtual processes is completed for all controllers, the controller 300 completes the generation process of virtual processes.
[0312] Fig.19 3 is a flowchart showing the setting process of the control condition in step S02. First, the controller 300 executes steps S41 and S42. In step S41, the condition setting processing unit 313 waits for another controller to set the control condition selected by the input device 396, etc. Hereinafter, the selected another controller is referred to as "the selected controller". In step S42, the condition setting processing unit 313 determines whether the control target of the selected controller is a machine or a virtual machine.
[0313] If it is determined in step S42 that the control target of the selected controller is a machine, the controller 300 executes step S43. If it is determined in step S42 that the control target of the selected controller is a virtual machine, the controller 300 executes step S44. In step S43, the condition setting processing unit 313 generates a real interface and displays the real interface on the display device 395, etc. In step S44, the condition setting processing unit 313 generates a virtual interface and displays the virtual interface on the display device 395, etc.
[0314] After step S43 or step S44, the controller 300 performs steps S45 and S46. In step S45, the condition setting processing unit 313 waits for a registration request of a control condition inputted by the input device 396, etc. In step S46, the control condition of the selected controller is set based on the inputted to the real interface or virtual interface.
[0315] Fig. 20 1 is a flowchart showing an example processing procedure performed in response to a request to perform processing in step S04 in each of the controller 100 or the virtual controller 500, the controller 200A or the virtual controller 500A, and the controller 200B or the virtual controller 500B. Hereinafter, the controller 100 or the virtual controller 500, the controller 200A or the virtual controller 500A, and the controller 200B or the virtual controller 500B are collectively referred to as "control controllers".
[0316] like Fig. 20 As shown, the control controller first executes step S51. In step S51, it is checked whether the self-controller controls the slave machine or the slave virtual machine. If it is determined in step S51 that the self-controller controls the slave machine, the control controller executes step S52. If it is determined in step S51 that the self-controller controls the slave virtual machine, the control controller executes step S53. In step S52, the processing unit generates a to-be-executed process that is the same as the real process. In step S53, the processing unit generates a to-be-executed process that is different from the real process in the slave part.
[0317] After step S52 or step S53, the controller is controlled to perform step S61. In step S61, the determination unit receives information including control information from another controller.
[0318] Next, the controller is controlled to execute step S62. In step S62, the determination unit checks whether the other controller controls a machine or a virtual machine based on information received from the other controller.
[0319] If it is determined in step S62 that another controller controls the machine, the controller is controlled to execute step S63. If it is determined in step S62 that another controller controls the virtual machine, the controller is controlled to execute step S64. In step S63, the processing unit matches the external dependency part of the process to be executed related to the operation of the machine with the real process. In step S64, the processing unit corrects the external dependency part of the process to be executed relative to the external dependency part of the real process based on the virtual modification program.
[0320] Next, the control controller executes step S65. In step S65, the processing unit executes the process to be executed. Next, the control controller executes step S66. In step S66, the processing unit confirms whether all predetermined processes have been completed. If it is determined in step S66 that there are unfinished processes, the control controller executes step S67. In step S67, the processing unit transfers the process to be executed to the next process. Thereafter, the control controller returns the process to step S61. Thereafter, until all processes are completed, the generation and execution of the process to be executed are repeated based on whether another controller controls a machine or a virtual machine. If it is determined in step S66 that all processes are completed, the control controller completes the processing process.
[0321] Effects of the Embodiments
[0322] As described above, the controllers 100, 200A, 200B, 500, 600A, 600B can communicate with other controllers 100, 200A, 200B, 500, 600A, 600B. The controllers 100, 200A, 200B, 500, 600A, 600B include: a determination unit 111, 211, 311, 511, 611 configured to determine whether other controllers 100, 200A, 200B, 500, 600A, 600B control the machine 2, 3A, 3B or control the virtual machine V2, V3A, V3B corresponding to the machine 2, 3A, 3B; and a processing unit 113 , 213, 313, 513, 613, are configured to perform predetermined real processing when other controllers 100, 200A, 200B, 500, 600A, 600B control machines 2, 3A, 3B, and to perform virtual processing that is at least partially different from the real processing when other controllers 100, 200A, 200B, 500, 600A, 600B control virtual machines V2, V3A, V3B.
[0323] In other controllers 100, 200A, 200B, 500, 600A and 600B, even if the operations of machines 2, 3A and 3B can be simulated by the operations of virtual machines V2, V3A and V3B, because the real space does not change with the operations of virtual machines V2, V3A and V3B, the process based on the real space state cannot be executed in controllers 100, 200A, 200B, 500, 600A and 600B, and the process of the entire system may not be simulated. On the other hand, in the controllers 100, 200A, 200B, 500, 600A, and 600B, it is determined whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or control the virtual machines V2, V3A, and V3B, and when the other controllers 100, 200A, 200B, 500, 600A, and 600B control the virtual machines V2, V3A, and V3B, virtual processing that is at least partially different from the real processing is performed. As described above, according to the configuration in which the processing content of the controllers 100, 200A, 200B, 500, 600A, and 600B is changed depending on whether the control target of the other controllers 100, 200A, 200B, 500, 600A, and 600B is the machine 2, 3A, 3B or the virtual machine V2, V3A, and V3B, the processing of the entire system can be easily simulated.
[0324] The determination units 111, 211, 311, 511, and 611 may be configured to determine whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or the virtual machines V2, V3A, and V3B based on the communication conditions for receiving information from the other controllers 100, 200A, 200B, 500, 600A, and 600B. Based on the information from the other controllers 100, 200A, 200B, 500, 600A, and 600B, it may be easily and appropriately determined whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or the virtual machines V2, V3A, and V3B.
[0325] The information received from other controllers 100, 200A, 200B, 500, 600A, and 600B may include control information in other controllers 100, 200A, 200B, 500, 600A, and 600B and a flag indicating whether other controllers 100, 200A, 200B, 500, 600A, and 600B control machines 2, 3A, and 3B or control virtual machines V2, V3A, and V3B. The determination units 111, 211, 311, 511, and 611 may be configured to determine whether other controllers 100, 200A, 200B, 500, 600A, and 600B control machines 2, 3A, and 3B or control virtual machines V2, V3A, and V3B based on the flag. The processing units 113, 213, 313, 513, and 613 may be configured to perform real processing or virtual processing based on the control information. It can be more easily determined whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or the virtual machines V2, V3A, and V3B.
[0326] The information received from other controllers 100, 200A, 200B, 500, 600A, and 600B may include control information in other controllers 100, 200A, 200B, 500, 600A, and 600B. Determination units 111, 211, 311, 511, and 611 may be configured to determine whether other controllers 100, 200A, 200B, 500, 600A, and 600B control machines 2, 3A, and 3B or control virtual machines V2, V3A, and V3B based on the control information. Processing units 113, 213, 313, 513, and 613 may be configured to perform real processing or virtual processing based on the control information. Since adding a flag becomes unnecessary, the processing in other controllers 100, 200A, 200B, 500, 600A, and 600B can be simplified.
[0327] The determination units 111, 211, 311, 511, and 611 may be configured to determine whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or control the virtual machines V2, V3A, and V3B based on the communication conditions for receiving information from the other controllers 100, 200A, 200B, 500, 600A, and 600B. Even in the case where there is no difference in the control information, it is possible to appropriately determine whether the other controllers 100, 200A, 200B, 500, 600A, and 600B control the machines 2, 3A, and 3B or control the virtual machines V2, V3A, and V3B.
[0328] The processing units 113, 213, 313, 513, and 613 may be configured to perform virtual processing, including supplementary processing for compensating for differences between real information obtained based on the operation of the machines 2, 3A, and 3B and virtual information obtained based on the operation of the virtual machines V2, V3A, and V3B, so that the operation of the system can be more appropriately simulated.
[0329] The processing units 113, 213, 313, 513, and 613 may be configured to perform a supplementary process including a process for supplementing predetermined data with respect to a difference between real information and virtual information. The operation of the system may be simulated more appropriately.
[0330] The processing units 113, 213, 313, 513 and 613 may be configured to perform virtual processing including a skip processing instruction for skipping at least a portion of the real processing. For example, by skipping the process of waiting for the real space change that does not occur in the operation of the virtual machines V2, V3A and V3B, simulation may be easily performed.
[0331] The controllers 100, 200A, 200B, 300, 500, 600A, and 600B may further include a process generation unit 123, 223, 322, 523, and 623 configured to generate a supplementary process based on the difference between the real information and the virtual information. The operation of the system may be simulated more appropriately.
[0332] The controllers 100, 200A, 200B, 300, 500, 600A, and 600B may include: interface generation units 121, 221, 321, 521, and 621, configured to generate a user interface, the user interface including a display portion indicating one or more non-executable parts that cannot be executed when other controllers 100, 200A, 200B, 500, 600A, and 600B control virtual machines V2, V3A, and V3B in real processing, and an input portion for inputting an alternative processing to each of the one or more non-executable parts; and process generation units 123, 223, 322, 523, and 623, configured to generate a virtual process based on an input to the input portion. Providing a user interface that supports the generation of virtual processes can improve the usability of the controllers 100, 200A, 200B, 500, 600A, and 600B.
[0333] The controllers 100, 200A, 200B, 500, 600A, and 600B may further include an alternative target designation unit 122, 222, 522, and 622 configured to designate one or more non-executable parts based on the difference between the real information obtained based on the operation of the machines 2, 3A, and 3B and the virtual information obtained based on the operation of the virtual machines V2, V3A, and V3B. The interface generation units 121, 221, 321, 521, and 621 may be configured to display the one or more non-executable parts designated by the alternative target designation unit 122, 222, 522, and 622 on the display unit. The usability of the controllers 100, 200A, 200B, 500, 600A, and 600B may also be improved.
[0334] Controllers 100, 200A, 200B, 500, 600A and 600B can be other controllers 100, 200A, 200B, 500, 600A and 600B, and can communicate with the first controller 100, 200A, 200B, 500, 600A and 600B and the second controller 100, 200A, 200B, 500, 600A and 600B, the first controller 100, 200A, 200B, 500, 600A and 600B controls the first machine 2, 3A and 3B as machine 2, 3A and 3B, and the second controller 100, 200A, 200B, 500, 600A and 600B controls the second machine 2, 3A and 3B. The determination units 111, 211, 311, 511 and 611 can be configured to determine whether the first controller 100, 200A, 200B, 500, 600A and 600B controls the first machines 2, 3A and 3B or controls the first virtual machines V2, V3A and V3B which are virtual machines V2, V3A and V3B, and whether the second controller 100, 200A, 200B, 500, 600A and 600B controls the second machines 2, 3A and 3B or controls the second virtual machines V2, V3A and V3B corresponding to the second machines 2, 3A and 3B. The processing units 113, 213, 313, 513, and 613 may be configured to: when the first controllers 100, 200A, 200B, 500, 600A, and 600B control the first virtual machines V2, V3A, and V3B, and the second controllers 100, 200A, 200B, 500, 600A, and 600B control the second machines 2, 3A, and 3B, execute the first part related to the operation of the first machines 2, 3A, and 3B; and when the first controller 100, 200A, 200B, 500, 600A and 600B controls the first machine 2, 3A and 3B, and the second controller 100, 200A, 200B, 500, 600A and 600B controls the second machine 2, 3A and 3B, a second portion of virtual processing different from the real processing related to the operation of the second virtual machine V2, V3A and V3B is executed. Since the processing units 113, 213, 313, 513 and 613 execute the virtual processing appropriately adjusted according to the fact that the controllers 100, 200A, 200B, 500, 600A and 600B are virtual, the operation of the system can be more appropriately simulated.
[0335] Controllers 100, 200A, 200B, 500, 600A and 600B can be host controllers that can communicate with multiple local controllers 100, 200A, 200B, 500, 600A and 600B including other controllers 100, 200A, 200B, 500, 600A and 600B, and can be configured to control multiple local machines 2, 3A and 3B including machines 2, 3A and 3B via each of the local controllers 100, 200A, 200B, 500, 600A and 600B.
[0336] The controllers 100, 200A, 200B, 500, 600A, and 600B may be controllers 100, 200A, 200B, 500, 600A, and 600B configured to control the slave machines 2, 3A, and 3B or the slave virtual machines V2, V3A, and V3B corresponding to the slave machines 2, 3A, and 3B. The controllers 100, 200A, 200B, 500, 600A, and 600B may also include control target determination units 131, 231, 531, and 631 configured to determine whether the control target is the slave machines 2, 3A, and 3B or the slave virtual machines V2, V3A, and V3B. The processing units 113, 213, 313, 513 and 613 can also be configured to: when other controllers 100, 200A, 200B, 500, 600A and 600B control virtual machines V2, V3A and V3B and controllers 100, 200A, 200B, 500, 600A and 600B control slave machines 2, 3A and 3B, execute virtual processing in which the external dependent part related to the operation of machines 2, 3A and 3B is different from the real processing; and when other controllers 100, 200A, 200B, 500, 600A and 600B control machines and controllers 100, 200A, 200B, 500, 600A and 600B control slave virtual machines V2, V3A and V3B, execute virtual processing in which the slave part related to the operation of slave machines 2, 3A and 3B is different from the real processing. By configuring the processing contents of controllers 100, 200A, 200B, 500, 600A and 600B to change depending on whether the controllers 100, 200A, 200B, 500, 600A and 600B themselves control slave machines 2, 3A and 3B or control slave virtual machines V2, V3A and V3B, it is possible to more easily simulate the processing of the entire system.
[0337] The controllers 100, 200A, 200B, 500, 600A, and 600B may further include sending units 132, 232, 532, and 632 configured to send information attached with the determination result of the control target determination unit 131, 231, 531, and 631 to the other controllers 100, 200A, 200B, 500, 600A, and 600B. This makes it easy to change the processing contents of the other controllers 100, 200A, 200B, 500, 600A, and 600B depending on whether the control target is the slave machines 2, 3A, and 3B or the slave virtual machines V2, V3A, and V3B, and it is easier to simulate the processing of the entire system.
[0338] The controller 100, 200A, 200B, 500, 600A and 600B according to another aspect of the present disclosure is a controller 100, 200A, 200B, 500, 600A and 600B which can communicate with other controllers 100, 200A, 200B, 500, 600A and 600B and is configured to control a control target. Controllers 100, 200A, 200B, 500, 600A and 600B include: control target determination units 131, 231, 531 and 631, which are configured to determine whether the control target is machine 2, 3A, 3B or virtual machine V2, V3A, V3B; and sending units 132, 232, 532 and 632, which are configured to send information to other controllers 100, 200A, 200B, 500, 600A and 600B with the determination results of the control target determination units 131, 231, 531 and 631 attached.
[0339] According to the controllers 100, 200A, 200B, 500, 600A and 600B, it is easy to determine whether the controllers 100, 200A, 200B, 500, 600A and 600B control the control machines 2, 3A, 3B or the control virtual machines V2, V3A and V3B in the other controllers 100, 200A, 200B, 500, 600A and 600B. This makes it easy to change the processing contents in the other controllers 100, 200A, 200B, 500, 600A and 600B according to whether the control target is the slave machines 2, 3A and 3B or the slave virtual machines V2, V3A and V3B, and it is easier to simulate the processing of the entire system involving the slave machines 2, 3A and 3B.
[0340] The controllers 100, 200A, 200B, 500, 600A, and 600B may further include processing units 113, 213, 313, 513, and 613 that perform real control processing when the control target is the machines 2, 3A, and 3B, and that perform virtual control processing that is at least partially different from the real control processing when the control target is the virtual machines V2, V3A, and V3B. Therefore, the determination result indicating whether the control target is the slave machines 2, 3A, and 3B or the slave virtual machines V2, V3A, and V3B can be effectively used for switching between the real control processing and the virtual control processing.
[0341] The controllers 100, 200A, 200B, 500, 600A, and 600B may further include a power supply circuit configured to output driving power to the machines 2, 3A, and 3B. The processing units 113, 213, 313, 513, and 613 may perform a real control process including a process for causing the power supply circuit to output driving power when the control target is the machines 2, 3A, and 3B, and may perform a virtual control process not including a process for causing the power supply circuit to output driving power when the control target is the virtual machines V2, V3A, and V3B.
[0342] Although the embodiments have been described above, the present invention is not limited to the above embodiments, and appropriate modifications can be made without departing from the scope of the present invention.
Claims
1. A controller capable of communicating with a second controller, the controller comprising: a processing unit configured to perform processing to operate the first machine in cooperation with a second machine controlled by the second controller in the real space; as well as a determining unit configured to determine whether the second controller controls the second machine operating in the real space or controls a virtual second machine simulating the operation of the second machine in the virtual space, The processing unit is configured as follows: in response to the determining unit determining that the second controller controls the virtual second machine instead of controlling the second machine, modifying the process; as well as A modified process is performed to operate the first machine in the real space in cooperation with the virtual second machine operating in the virtual space.
2. The controller according to claim 1, wherein: The determination unit is configured to determine whether the second controller controls the second machine or the virtual second machine based on information received from the second controller.
3. The controller according to claim 2, wherein: the information received from the second controller includes operation information of the second machine or the virtual second machine and a flag indicating whether the second controller controls the second machine or the virtual second machine, The determining unit is configured to determine whether the second controller controls the second machine or the virtual second machine based on the flag, and The processing unit is configured to perform the processing or modified processing based on the operation information.
4. The controller according to claim 1, wherein: The second controller is configured to: communicating with the controller under a first communication condition when controlling the second machine; and communicating with the controller under a second communication condition while controlling the virtual second machine; and The determining unit is configured as follows: In response to determining that the controller communicates with the second controller under the first communication condition, determining that the second controller controls the second machine; as well as In response to determining that the controller communicates with the second controller under the second communication condition, it is determined that the second controller controls the virtual second machine.
5. The controller according to claim 1, wherein: The processing unit is configured to: performing the processing based on a set of real data obtained from the real space; as well as The process is modified so that the modified process is performed in the absence of the set of real data.
6. The controller according to claim 5, wherein: The first machine and the second machine operate on a workpiece, and The set of real data includes the state of the workpiece in the real space.
7. The controller according to claim 5 or 6, wherein: The processing unit is configured to: modifying the processing to supplement a set of virtual data instead of obtaining the set of real data; as well as Based on the supplemented set of virtual data, modified processing is performed.
8. The controller according to any one of claims 5 to 7, wherein: The processing unit is configured to modify the processing by disregarding the set of real data.
9. The controller according to any one of claims 1 to 6, further comprising: an extraction unit configured to extract a portion of the processing performed based on a set of real data obtained from the real space; as well as a process generation unit configured to generate a virtual process by modifying the extracted portion of the process, Therein, the processing unit is configured to modify the process by replacing the process with the virtual process.
10. The controller according to any one of claims 1 to 6, further comprising: an extraction unit configured to extract a portion of the processing performed based on a set of real data obtained from the real space; an interface generation unit configured to generate a user interface indicating the processed extracted portion; as well as a process generation unit configured to generate a virtual process based on a user input to modify the extracted portion of the process, Therein, the processing unit is configured to modify the process by replacing the process with the virtual process.
11. The controller according to any one of claims 1 to 6, wherein: The controller may communicate with a third controller, wherein the determining unit is configured to determine whether the third controller controls a third machine operating in the real space or controls a virtual third machine simulating the operation of the third machine in the virtual space, and The processing unit is configured as follows: performing the processing to operate the first machine in cooperation with the second machine and a third machine controlled by the third controller in the real space; modifying a first portion of the process in response to determining that the second controller controls the virtual second machine; in response to determining that the third controller controls a virtual third machine that simulates operation of the third machine in the virtual space, rather than controlling the third machine, modifying the second portion of the process; and The modified process including the modified first part and the modified second part is performed to operate the first machine in the real space in cooperation with the virtual second machine and the virtual third machine operating in the virtual space.
12. The controller according to any one of claims 1 to 6, wherein: The controller is a host controller that can communicate with a plurality of local controllers, the plurality of local controllers including the second controller, and The processing unit is configured to perform the processing to control the first machine and the second machine via the plurality of local controllers.
13. The controller according to any one of claims 1 to 6, wherein: The controller is configured to: controlling the first machine; and A virtual first machine is controlled that simulates the operation of the first machine in the virtual space.
14. The controller according to claim 13, wherein: The processing unit is configured to: responsive to determining that the controller controls the virtual first machine, modifying a first portion of the process; responsive to determining that the second controller controls the virtual second machine, modifying a second portion of the process; as well as A modified process including the modified first portion and the modified second portion is executed to operate the virtual first machine in cooperation with the virtual second machine in the virtual space. 15 . The controller according to claim 13 , further comprising a sending unit configured to send notification information to the second controller to notify the second controller whether the controller controls the first machine or the virtual first machine.
16. A controller, the controller being communicable with a second controller, the controller comprising a circuit, the circuit being configured to: determining whether the control target is a machine operating in a real space or a virtual machine simulating the operation of the machine in a virtual space; Sending notification information to the second controller to notify the second controller whether the control target is the machine or the virtual machine; In response to determining that the control target is the machine, controlling the control target to operate in the real space; and In response to determining that the control target is the virtual machine, the control target is controlled to operate in the virtual space.
17. The controller according to claim 16, wherein: The second controller is configured to control a second machine operating in cooperation with the control target based on the notification information, The circuit is configured to control the control target in cooperation with the second machine that operates based on the notification information.
18. The controller according to claim 17, wherein: The circuit is configured as: When the control target is controlled in the real space, the control target is controlled by outputting driving power to the control target; and When the control target is controlled in the virtual space, the control target is controlled without outputting the driving power to the control target.
19. A method comprising: determining whether the second controller controls a machine operating in real space or a virtual machine simulating operation of the machine in virtual space; in response to determining that the second controller controls the machine, performing a real process; In response to determining that the second controller controls the virtual machine, a virtual process that is at least partially different from the real process is performed.
20. The method according to claim 19, wherein: The real processing includes controlling a control target to operate in coordination with the machine operating in the real space, and The virtual processing includes controlling the control target in cooperation with the virtual machine operating in the virtual space.
Citation Information
Patent Citations
System for dynamic control with interactive visualization to optimize energy consumption
CN106597863A
Control system, CONTROLLER and control method
CN112847328A