The present invention relates to a controller and a control method having an interlock function for avoiding interference relating to a robot.
In a system where multiple robots operate in a shared working area, it is a well-known technic to set an interlock using a robot program, etc., to control the motions of the robots movements so as to prevent the robots from interfering or colliding with each other (e.g., see Patent Literature 1 and 2). Further, a technique is known that performs forward execution processing of a robot motion program and backward execution processing based on execution history data regarding the forward execution (see Patent Literature 3).
[PTL 1] JP 1998 (H10)-260714 A
[PTL 2] JP 1996 (H08)-071979 A
[PTL 3] JP 1998 (H10)-011124 A
Execution of a robot program may include not only forward execution in which the program is executed from the lowest line number to the highest line number, but also backward execution in which the program is executed from the highest line number to the lowest line number. Further, during the backward execution, settings may be made to ignore a logic statement in the program. However, when the ignored logic statement includes a process associated with an interlock signal, the interlock signal may not be switched appropriately and a problem such as robots colliding with each other may occur. In order to avoid such a problem, it is conceivable that an operator, etc., can manually switch the interlock signal or modify the program, but both of these tasks are time-consuming.
One aspect of the present disclosure provides a controller for avoiding interference between a plurality of industrial machines including at least one industrial robot, based on an interlock signal transmitted between the plurality of industrial machines, the controller comprising: a program execution unit configured to execute a robot program for operating the robot, and, during backward execution of the robot program, ignore at least one logic statement which is included in the robot program and associated with the interlock signal; and an interlock setting unit configured to automatically enable interlocking associated with a pre-registered interlock signal, during backward execution of the robot program for operating the robot.
Another aspect of the present disclosure provides a control method for avoiding interference between a plurality of industrial machines including at least one industrial robot, based on an interlock signal transmitted between the plurality of industrial machines, the method comprising the steps of: executing a robot program for operating the robot, and, during backward execution of the robot program, ignoring at least one logic statement which is included in the robot program and associated with the interlock signal; and automatically enabling interlocking associated with a pre-registered interlock signal, during backward execution of the robot program for operating the robot.
According to the present disclosure, the interlocking associated with the pre-registered interlock signal is automatically enabled during the backward execution of the robot program, so interference with the robot can be reliably avoided without requiring the operator to perform troublesome work such as modifying the program.
Since working areas (or movable ranges of the robot arms) of the first robot 12 and the second robot 14 are overlapped with or close to each other, the first robot 12 and the second robot 14 are configured so that interference between the two robots is avoided based on a signal (in this case, an interlock signal) transmitted between (the controllers of) the two robots. Specifically, at least one of the first controller 20 and the second controller 22 (in the illustrated example, the first controller 20) has a program execution unit 24 configured to execute a robot program (hereinafter, referred to as merely “program”) including at least one signal output command and at least one motion command for operating the robot, and, during backward execution of the program, ignore at least one logic statement which is included in the program and associated with the interlock signal; and an interlock setting unit 26 configured to automatically enable interlocking associated with a pre-registered interlock signal, during backward execution of the program for operating the robot.
Optionally, at least one of the first controller 20 and the second controller 22 (in the illustrated example, the first controller 20) has a storage unit 28 configured to store programs and/or calculation results of the program execution unit 24 and the interlock setting unit 26; and an input unit 30 by which an operator can register and input various settings and the like. As an example, the program execution unit 24 and the interlock setting unit 26 are a processor, the storage unit 28 is a memory such as a ROM or RAM, and the input unit 30 is a numeric keypad or a touch panel, etc. Note that the first controller 20 and the second controller 22 can also be made into a substantially integrated controller.
Next, with reference to
On the other hand, the second robot 14 is configured so that a representative point of its hand (or a tip of the arm 18) is movable between positions P[1], P[2] and P[3] indicated by circular marks in
In the present disclosure, “forward execution” of a program refers to executing each program from the smaller line number to the larger line number, as shown by arrows 36 and 38 in
The first program 32 and the second program 34 include settings relating to interlocking between the first robot 12 and the second robot 14. Here, as shown in
Concretely, in the first program 32, after the first robot 12 moves to position P[2] (line number 2), the interlock signal DO[1] is set to “OFF” (line number 3). On the other hand, in the second program 34, after the second robot 14 moves to position P[2] (line number 2), the robot 14 waits until the interlock signal becomes “ON” (line number 3), and thus the second robot 14 cannot move to position P[3] at this time point.
Next, the forward execution of the first program 32 progresses, and when the first robot 12 moves to position P[3] and returns to position P[2] again (line number 5), the interlock signal DO[1] is switched to “ON” (line number 6). Then, the second robot 14 moves toward position P[3] (line number 4). In this way, interference between the robots can be prevented by, for example, the interlocking using DO/DI signals transmitted between the robots.
In this embodiment, it is assumed that the first program 32 is executed forward to line number 7 and then backward executed from line number 7. However, during the backward execution, at least one logic statement such as a signal switching process is ignored and is not executed, and conversely, a motion statement for moving the robot is executed. The reason for such a setting is that it is difficult to determine whether the logic statement should also be executed during the backward execution, and in addition, there are many cases where the logic statement should not be processed. For example, when the logic statement is a process for counting the number of cycles, it is often inappropriate to change the number of cycles (or a register value) even during the backward execution. Therefore, in many cases, a setting is made to ignore all logic statements during the backward execution.
In view of the above, in this embodiment, the process illustrated in the flowchart of
There are several ways to register the interlock signal. For example, the operator who is creating or editing the program by teaching, etc., may manually register the interlock signal in the program which should be inverted when the backward execution is performed, by using the input unit 30, etc. Alternatively, when the program is prepared in advance in the form of a template, etc., all interlock signals in the program may be automatically registered when the controller reads the program. In that case, the operator may also delete from the registered interlock signals those interlock signals which should not be inverted during the backward execution.
Next, the program execution unit 24 executes the first program 32 and judges as to whether or not the back ward execution of the first program 32 is being performed (step S2). When the backward execution of the first program 32 is being performed, the program execution unit 24 judges as to whether or not the line in execution includes a logic statement associates with the interlock signal (step S3). As described above, when the line in execution during the backward execution includes the logic statement, this logic statement is ignored.
Next, the interlock setting unit 26 judges as to whether the ignored logic statement includes a process of the interlock signal registered in step S1 (specifically, stored in the storage unit 28, etc.) (step S4). When the ignored logic statement includes a process of the registered interlock signal, the interlock signal associated with the registered interlock signal is inverted (here, from ON to OFF) while the backward execution of the first program 32 is performed (step S5). In other words, the interlock setting unit 26 automatically enables an interlock which is associated with the previously registered interlock signal and is being invalid, when performing the backward execution of the program. Through such a process, even in the backward execution of the program, the interlock between the first robot 12 and the second robot 14 is appropriately set, and interference between the two robots is avoided. Note that the processes in steps S2 to S5 can be automatically performed by the program execution unit 24 or the interlock setting unit 26, etc.
Here, the process of enabling the interlock, specifically switching (inverting) the interlock signal, is not performed by an instruction of the operator or a command statement written in the program. Instead, the previously registered interlock signal is switched (e.g., inverted from ON to OFF, or from OFF to ON) by an internal process which is automatically executed as a specification of (the processor, etc.) of the controller. Therefore, the operator only needs to set and register in advance the signal to be inverted during the backward execution, and there is no need to perform troublesome tasks such as teaching or modifying the program. Further, it is preferable that the specifications of the controller prevent the operator from modifying the specific contents of such internal process. However, it is possible to provide a switch, etc., in the controller so that the operator can select whether or not the internal process should be performed.
In this regard, when the interlock signal is unconditionally inverted during the backward execution, there is a risk that undesirable results may occur, such as invalidating an interlock which should not actually be invalidated. Therefore, in the embodiment, by having the operator register in advance the interlock signal which should be inverted during the backward execution, it is possible to switch only the registered interlock signal during the backward execution, thereby an appropriate interlock can be set.
Although the above embodiment describes the interlock between the two robots, the present disclosure is also applicable to two industrial machines, such as a robot and a machine tool. Further, the number of the industrial machines is not limited to two, but may be three or more.
In the above embodiment, the program execution unit 24 has a function of performing forward execution and backward execution of a program including at least one motion command and at least one signal output command. In addition, the interlock setting unit 26 has a function as a signal processing unit for performing a process for the pre-registered signals during the backward execution, the process being the opposite of the signal output command during the forward execution (e.g., when the signal output command is from ON to OFF during the forward execution, the signal output command is from ON to OFF during the backward execution). In the prior art, a signal processing during backward execution is performed based on historical data of a target signal, and thus the process is not always the opposite of forward execution. On the other hand, in the embodiment, regardless of the execution history related to the signal processing, it is possible to perform the process (such as inverting process) during the backward execution, which is opposite to the signal output command during the forward execution. Therefore, in the embodiment, there is no need to save historical data or perform arithmetic processing.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2021/032899 | 9/7/2021 | WO |