ROBOT CONTROL AND ROBOT CONTROL METHOD

The robot control system addresses the challenge of sequential command execution by using a parallel call order execution unit to execute logic commands concurrently with movement commands, enhancing precision and efficiency in robot operations.

DE102020213732B4Active Publication Date: 2025-01-23FANUC LTD
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
DE102020213732
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-11-20
Filing Date
2020-11-02
Publication Date
2025-01-23
Estimated Expiration
2040-11-02

AI Technical Summary

Technical Problem

Existing robot control systems face challenges in executing movement and logic commands sequentially, leading to potential delays and inaccuracies in processing due to time constraints, especially in applications requiring simultaneous execution of multiple tasks with high precision.

Method used

A robot control system that incorporates a parallel call order execution unit, allowing logic commands to be executed concurrently with movement commands, using a parallel call order detection unit to identify and execute subroutine calls in parallel with movement commands, and a control unit to manage these processes with high accuracy.

Benefits of technology

Enables precise and timely execution of multiple tasks in parallel, improving the accuracy and efficiency of robot operations by minimizing the need for sequential execution and reducing the risk of delays or inaccuracies.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Robot control (10), including: a motion command interpretation unit (121) which interprets a motion command program that describes a teaching movement and teaching position of a robot and generates a motion command; a movement command execution unit (122) that executes the movement command; a parallel call instruction detection unit (123) which pre-reads the motion instruction program and detects a line where a parallel call instruction is taught; and a parallel call instruction execution unit (124) that executes a program designated by a parallel call instruction at a designated time, wherein the parallel call instruction execution unit (124) advances or rewinds a line number in the motion instruction program from the line where the parallel call instruction is taught, and executes the parallel call instruction in parallel with the execution of the motion instruction when the execution of the motion instruction reaches the line number forward or rewind.
Need to check novelty before this filing date? Find Prior Art

Description

Field of invention

[0001] The present invention relates to a robot control system and a robot control method.

[0002] When a robot is in use, processes are executed using I / O signals exchanged between peripheral equipment, such as a tool or welder held by one end of a manipulator. Therefore, the robot's program contains both motion commands for moving the manipulator and logic commands for calculations and communication with the peripheral equipment.

[0003] In current controllers, when motion commands for the manipulator and logic processing commands (or subroutine calls) for output / input and calculations are both present in the robot's program, a method of sequential execution of the commands is used.

[0004] Fig. Figure 5 shows an example of a program used to execute instructions sequentially. As in Fig. As shown in Figure 5, each line of the program can be referred to as a single movement instruction or a single logic processing instruction, and when the controller executes the program, the instructions are executed sequentially, with the execution of one instruction line having to be completed before the next line is executed.

[0005] In this regard, a technology (for example, Japanese patent no. JP 6 067 905 B1) is known which, via a cloud terminal connected to a web server, generates a script of operating information for synchronizing an image displayed on a screen and a robot's touch panel, a text output using speech synthesis via a loudspeaker, and an operating setting of a predetermined part of the robot and sequential operation of the robot.

[0006] See also patent documents 2-7. Patent document 1: JP 6 067 905 B1 Patent document 2: DE 10 2016 006 761 A1 Patent document 3: DE 10 2014 108 964 B4 Patent document 4: DE 11 2012 006 379 B4 Patent document 5: EP 3 482 886 A1 Patent document 6: EP 3 462 255 A1 Patent document 7: EP 3 338 968 A2

[0007] Depending on the application in which the robot is used, processing logic instructions can take time. If the instructions are executed sequentially, processing may not be completed in time. In other words, if the execution of a movement instruction must end before the next logic instruction line is executed, and too much time is spent on the logic instruction, the processing of peripheral equipment may occur after the manipulator has passed the position (or time) where the original processing should have taken place. This can negatively affect the quality of the processing result.

[0008] Logic instructions can also be executed at any moment during the acceleration / deceleration of a manipulator, while the manipulator's movement speed is essentially kept constant. However, if the execution of a logic instruction takes too long, the start of the execution of the next movement instruction will be delayed. This can create a risk that the movement speed cannot be maintained at a constant level.

[0009] Furthermore, depending on the application, detailed processing in several subdivided steps must be performed while the robot moves forward or backward in a teaching position, where some processing takes place. In this case, executing robot movements and logic commands sequentially can cause the robot to malfunction.

[0010] For example, for a painting task performed by a robot holding a paint spray gun, just before (about a second or less before) a manipulator arrives at the spraying position, the following processes must be executed sequentially with millisecond accuracy: (1) start the delivery of compressed air to atomize the paint material, (2) start applying voltage to electrically charge the paint material, (3) open the valve to dispense the paint material, and other processes. These processes must also be executed in parallel with the robot's movement. It is difficult for an application program to execute such processes in parallel with the manipulator's movement.

[0011] Fig. Figure 6A shows an example of a program for performing a spraying task. Fig. 6B shows an example of additional teaching points required to perform a spray start sequence. As demonstrated by the examples of Fig. 6A and Fig. As shown in Figure 6B, in the case where the teaching of the teaching points P

[51] and P

[52] , which are not originally necessary, must be added only for the purpose of carrying out the spray start sequence, there is a tendency for problems to arise with regard to timing accuracy and distance accuracy.

[0012] It is an object of the present invention to provide a robot control system that provides a simple method for performing application processing with high accuracy with respect to time and distance.

[0013] This task is solved by the robot control system according to claim 1.

[0014] According to this embodiment, processing with high accuracy with regard to time and distance can be carried out using a simple method. Fig. 1A is an overall configuration diagram of a robot control system of one embodiment; Fig. 1B is an overall configuration diagram of an example of a robot control system of one embodiment; Fig. 2 is a functional block diagram of a robot controller of one embodiment; Fig. 3A is an example of a motion command program used by a robot controller of one embodiment; Fig. 3B is an example of a screen that displays detailed information of a call command used by a robot controller of an embodiment; Fig. 3C is a diagram showing an example of the relationship between the teaching points, designated by a robot controller of an embodiment, and retrieval positions of “line number designated” calls and “position designated” calls; Fig. 4A is an example of a motion command program used by a robot controller of one embodiment; Fig. Figure 4B is an example of a screen that displays detailed information of a call command used by a robot controller of an embodiment. Fig. 4C is a diagram showing an example of a program executed by a robot controller of one embodiment; Fig. 4D is a flowchart that shows the processing by a program executed by a robot controller of an embodiment; Fig. 4E is a flowchart showing processing by a program executed by a robot controller of an embodiment; Fig. 4F is a flowchart showing processing by a program executed by a robot controller of an embodiment; Fig. 4G is a flowchart showing processing by a program executed by a robot controller of an embodiment; Fig. 4H is a diagram showing an example of the relationship between teaching points designated by a robot controller of an embodiment and retrieval positions of “row number-labeled” calls and “position-labeled” calls; Fig. 5 is an example of a motion command program used by a known robot controller; Fig. 6A is an example of a motion command program used by a known robot controller; and Fig. Figure 6B is a diagram showing an example of the relationship between teaching points, designated by a known robot controller, and retrieval positions of "row-number-labeled" calls and "position-labeled" calls.

[0015] An embodiment of the present invention is described below with reference to Fig. Described in sections 1A to 4H. 1. Design configuration

[0016] Fig. Figure 1A shows an overall configuration of a robot control system 1 according to an embodiment of the present invention. The robot control system 1 is provided with a robot controller 10, a robot 20, and an external peripheral device 30. The robot controller 10 and the robot 20 are also communicatively connected, as are the robot controller 10 and the external peripheral device 30. It should be noted that, although in Fig. 1A not shown, the robot controller 10, the robot 20 and the external peripheral device 30 can be communicatively connected via a network.

[0017] The robot controller 10 is a device that controls the robot 20. Specifically, the robot controller 10 stores a training program, training data, and a motion parameter for motion control and processing control of the robot 20 and controls the robot 20 by executing the training program based on the training data and the motion parameter.

[0018] Robot 20, for example, is an articulated robot, such as a 6-axis or 4-axis articulated robot. However, no restriction is intended, and Robot 20 could be a Cartesian coordinate robot, a scalar robot, a parallel link robot, or the like.

[0019] The external peripheral device 30 is a programmable logic controller (PLC), a laser oscillator or a similar application controller.

[0020] In the Fig. In the robot control system 1 shown in 1A, for example in the case where the external peripheral device 30 is a controller of a laser oscillator, the robot controller 10 controls the robot 20 via I / O signals and serial communication with the robot 20 and the external peripheral device 30 and controls the laser processing process carried out by the robot 20.

[0021] Fig. Figure 1B is an overall configuration diagram of an example of the robot control system 1, in which the robot 20 performs a painting task together with the external peripheral device 30, which is an example of a painting machine. The robot 20 is equipped with a spray nozzle 21, and the painting task is carried out by supplying painting material from the external peripheral device 30, i.e., a painting machine, to the spray nozzle 21 via a painting material feed tube 22 and controlling the spray nozzle 21 via a manipulator provided on the robot 20. In the description below, the example of the painting task is described as shown in Figure 1B. Fig. 1B shows the performing robot 20 used as needed.

[0022] Fig. Figure 2 is a function block diagram of the robot controller 10. The robot controller 10 is equipped with a memory unit 11 and a control unit 12.

[0023] The memory unit 11 stores a motion command program that describes a teaching movement and a teaching position of the robot 20. A parallel call instruction, called in parallel to a motion command, is also written into the motion command program. This parallel call instruction can be called either as itself or as a subroutine in addition to the motion command. Furthermore, in a "parallel call" according to the present invention, a subroutine is executed separately from and in parallel with the execution context of the original program. It should be noted that an example of a motion command program is described below.

[0024] The control unit 12 includes a CPU, ROM, RAM, CMOS memory, and the like, with these components configured to communicate with each other via a bus. A configuration familiar to experts in the field can be used.

[0025] The CPU is a processor that controls the robot controller 10 in total. As in Fig. As shown in Figure 2, the control unit 12 is configured to realize the functions of a motion command interpretation unit 121, a motion command execution unit 122, a parallel call command detection unit 123 and a parallel call command execution unit 124 by having the CPU read a system program and an application program stored in the ROM via the bus and control the robot controller 10 as a whole according to the system program and the application program.

[0026] The motion command interpretation unit 121, as described above, interprets the motion command program, which describes a teaching movement and a teaching position of the robot 20, and generates a motion command.

[0027] When a training program is started, the motion command execution unit 122 activates the task processing by the motion command interpretation unit 121 and executes the motion command generated by the spray nozzle 21.

[0028] The parallel call command detection unit 123 reads the motion command program in advance and detects a line where the parallel call command is taught.

[0029] The parallel call instruction execution unit 124 (parallel call instruction execution unit 124a, parallel call instruction execution unit 124b, ..., parallel call instruction execution unit 124n) activates task processing by the parallel call instruction detection unit 123 and calls and executes the program specified by the parallel call instruction at the designated time. It should be noted that the program specified by the parallel call instruction is capable of parallel execution. To enable this, the parallel call instruction execution unit 124 includes a plurality of parallel call instruction execution units 124, parallel call instruction execution unit 124a, parallel call instruction execution unit 124b, ... and parallel call instruction execution unit 124n.

[0030] The Parallel Call Instruction Execution Unit 124 can specify how many lines before or after the line where the Parallel Call Instruction is taught in the motion instruction program, and can execute a calling procedure to retrieve a call when program execution reaches that line (hereafter also referred to as a "line-number-labeled call"). It should be noted that for a Parallel Call Instruction, a call can be "line-number-labeled" multiple times. Also, when a line number is specified, it is possible to select whether to consider all program statements or only manipulator motion instructions. Typically, since a manipulator movement takes some time, the "line-number-labeled call" can be used, this time for setting up the process, if there is a "position-labeled call" described below.

[0031] Alternatively, the parallel call instruction execution unit 124 can call a command in the motion instruction program at a time specified by a position or time of the manipulator contained in the robot 20, or by both position and time, using the teach position of the line where the parallel call instruction is taught as a reference (hereinafter also referred to as a "position-labeled call"). It should be noted that for a parallel call instruction, a call can be designated multiple times by a "position label". When executing the application of the robot 20, many processes must be carried out with high precision, accurately within milliseconds. These calls can be used to execute such processes.

[0032] Fig. Figure 3A shows an example of a motion command program in which a parallel call command is described. In the Fig. In the motion command program shown in Figure 3A, a parallel call instruction “CONC CALL” PROG6 (10,3,5) is added to the motion command in the sixth line. Here, “CONC_CALL” (concurrent call) is a parallel call instruction for calling a program named “PROG6”. “(10,3,5)” is also an example of an argument passed to “PROG6”.

[0033] The parallel call command detection unit 123 reads this in Fig. 3A shows the motion command program in advance and detects line number 6, where the parallel call command is taught.

[0034] Fig. 3B shows an example of a screen displaying detailed information about the Fig. 3A displays the “CONC_CALL” icon and shows detailed information that is displayed when the event is triggered. Fig. The program shown in Figure 3A is displayed, and, for example, the "Enter" key is pressed with the cursor over the "CONC_CALL" command. It should be noted that for the program shown in Figure 3A, the following applies: Fig. The data shown in 3B can be internally allocated to a data area with the detailed information associated with the “CONC CALL” command and stored as information; or it can be stored in the robot controller 10 as a data file, such as an XML file.

[0035] In the “CONC_CALL command detail information” series by Fig. 3B refers in line number 6 to the “CONC CALL” command with the cursor over the command, a command to call the program “PROG6”.

[0036] The “line number-labeled” call definition line is also a call list in which the call procedure is labelled by line number.

[0037] "Program name" is the name of the called program. If nothing is specified, "Default" is displayed, and the pre-defined program is called via the "CONC_CALL" command. Alternatively, a different program can be specified, in which case the specified program is called at the time indicated by the specified program. Note that if an argument is specified, the argument is passed to the subroutine.

[0038] "Trigger position" is a designation indicating which teaching point, that is, how many teaching points before and after the position where the command is taught, must be reached for the program specified in the "program name" to be called. In the Fig. The example shown in 3B is the “trigger position” of “PROG6” “-5”. Referring to the example in Fig. In the example program shown in 3A, this designation means that “PROG6” is called at position [1], which is 5 points before position [6], where the movement command to which “CONC CALL” “PROG6(10,3,5)” is appended is taught.

[0039] The “position-labeled” call definition line is also a call list in which the call procedure is labelled by position.

[0040] "Relative distance (mm)" specifies the relative position, forward or backward, from the position where the "CONC CALL" instruction is taught, that the robot manipulator must approach for the program named by the "program name" to be called. A negative value indicates before the teaching point, and a positive value indicates after the teaching point. The unit is "mm". It should be noted that if the manipulator does not pass over the teaching point due to a rounded corner, the relative distance is defined as the distance from the point of closest approach of the manipulator.

[0041] "Relative time (ms)" refers to the time offset forward or backward from the trigger position, which is specified in "Relative distance (mm)". For example, in the case where "-10" is specified, the "position-specific" call is made 10 ms earlier, when the position is reached where the original "position-specific" call would be made. A negative value indicates before, and a positive value indicates after.

[0042] The parallel call instruction execution unit 124 calls and executes the “PROG6” program, which was designated by the “CONC_CALL” parallel call instruction at position [1], as by the “trigger position” of “-5”, that is, at a line number 5 before the position [6] designated by line number 6.

[0043] It should be noted that the same program can be called any number of times at different times. A function is then prepared to distinguish which calling method is used and at what point in the called program. Based on the value from this function, the program can differentiate whether it is called by the "line number" or the "position" reference, and can further distinguish from which line number it is called in the case of "line number" and from which position in the case of "position." This allows for processing appropriate to the current state.

[0044] A method for sharing data between a series of programs called by a single "CONC_CALL" is also provided. For example, data pre-configured in a program called by a line-numbered call can be referenced by a program subsequently called by a position-numbered call. For instance, an operation is enabled in which, when the configuration is performed in response to a line-numbered call, an analog voltage value is pre-calculated and the calculated result is temporarily stored in a shared region. Then, within a position-numbered call that occurs when the manipulator reaches an environment of a blanking region, the calculated result stored in the shared region is used to quickly set an analog output (without recalculating an output voltage value).

[0045] Fig. 3C is a diagram illustrating the relationship between the blank points and the call positions of line-numbered and position-named calls. The solid line arrows indicate the call position of a program when called by a line-numbered call. In cases where programs are called by a line-numbered call, the call positions of the programs correspond to the line numbers where movement instructions are written. Thus, the programs are called at the blank points. In the Fig. In the example shown in 3C, programs are called at P[1], P[2] and P[7].

[0046] Specifically, using the example of detailed information that is in Fig. As shown in Figure 3B, in the case where the program "PROG6" is called "CONC_CALL" in line 6, the trigger position is "-5". Thus, the parallel call instruction execution unit 124 executes "PROG6" at position [1] (P[1]), designated by line number 1, which is "-5" from line number 6 onwards. Similarly, in the case where the program "PreProg3" is called "CONC_CALL" in line 6, the trigger position is "-4". Thus, the parallel call instruction execution unit 124 executes "PreProg3" at position [2] (P[2]), designated by line number 2, which is "-4" from position 6, designated by line number 6 onwards. Similarly, in the case where the program named "CONC_CALL" is "PostProg1" at line number 6, the trigger position is "1". Thus, the parallel call instruction execution unit 124 executes "PostProg1" at position [7] (P[7]), designated by line number 7, which is "1" at line number 6.It should be noted that this "CONC_CALL" can be written on a line with any line number, and the parallel call instruction execution unit 124 "PROG6" executes at a position designated by line number "-5" starting from any line number. Similarly, the parallel call instruction execution unit 124 "PreProg3" executes at a position designated by line number "-4" starting from any line number. Similarly, the parallel call instruction execution unit 124 "PostProgl" executes at a position designated by line number "1" starting from any line number.

[0047] The dashed line arrow indicates the call positions of a program when the program is called by a position-labeled command. In cases where programs are called by a position-labeled command, the called positions of the programs correspond to the forward or backward positions from a teaching point where a movement command is taught. In the Fig. In the example shown in 3C, programs are called forwards and backwards from P[6].

[0048] Specifically, using the example of in Fig. In the detailed information shown in Figure 3B, where the program "Prox7" is called "CONC_CALL" in line 6, the "relative distance (mm)" is "-40.0" and the "relative time (ms)" is "0". Therefore, the parallel call instruction execution unit 124 executes "Prox7" at a position -40.0 (mm) from position [6], which is the position designated by line 6. Similarly, in the case where the program named "CONC_CALL" in line 6 is "Prox8", the "relative distance (mm)" is "-30.0" and the "relative time (ms)" is "-40". Thus, the parallel call instruction execution unit 124 executes "Prox8" at time m40 (ms) from the time when the manipulator arrives at a position -30.0 mm from position [6], which is a position designated by line 6. Similarly, in the case where the program named "CONC_CALL" in line 6 is "Prox9", the "relative distance (mm)" is "-20.0" and the "relative time (ms)" is "+20".Thus, “Prox9” is executed at a time +20 (ms) from the time the manipulator arrives at a position -20.0 mm from position [6], which is a position designated by line number 6. Similarly, in the case where the program “CONC_CALL” of line number 6 is “Prox10”, the “relative distance (mm)” is “-10.0” and the “relative time (ms)” is “0”. Thus, the parallel call instruction execution unit 124 executes “Prox10” at a position -10.0 (mm) from position [6], which is a position designated by line number 6. It should be noted that this “CONC_CALL” can be written on a line with any line number and the parallel call command execution unit 124 “PROG7” executes at a position -40.0 (mm) from the teaching position designated by the arbitrary line number.Similarly, the parallel call instruction execution unit 124 “Prox8” executes at time -40 ms from the time the manipulator arrives at position -30.0 mm from a blank position designated by the discrete line number. Similarly, the parallel call instruction execution unit 124 “Prox9” executes at time +20 ms from the time the manipulator arrives at position -20.0 mm from a position designated by any line number. Similarly, the parallel call instruction execution unit 124 “Prox10” executes at position -10.0 mm from a position designated by the discrete line number.

[0049] Even when it is desired to prioritize the execution time of a parallel call instruction, the parallel call instruction execution unit 124 can execute the parallel call instruction as a separate task from the movement instruction. Conversely, when it is desired to prioritize the execution order, the parallel call instruction execution unit 124 can execute the parallel call instruction in the same task as the movement instruction.

[0050] To allow a line-numbered call and a position-named call to be executed in parallel with the program processing of robot 20, a multitude of tasks (internal execution processing subjects managed by the robot 20 operating system) must be called upon to be executed by the program's execution processing. For example, three tasks—a task to execute the robot 20's program body, a task to execute a line-numbered call, and a task to execute a position-named call—can run in parallel. In this case, if the next line-numbered call is called while the previous line-numbered call is executing, the later line-numbered call can be made to wait until the earlier call has finished. This also applies to position-named calls.

[0051] When a large number of processes are executed in parallel in this way, it is important to be able to prioritize execution. Typically, line-numbered calls can often be executed, allowing time to be spent on the setup of several lines beforehand, thus enabling them to be executed with low priority. However, position-numbered calls require application processing that must be executed with high accuracy synchronized to the robot's movement. Therefore, position-numbered calls must be executed with high priority. Accordingly, a priority order is typically predefined: the execution unit (task) of a line-numbered call has a low priority, the task of executing a position-numbered call has a high priority, and the task of executing the program body has an intermediate priority.

[0052] Consider implementing a system in which a task to execute a parallel call is internally and dynamically generated each time a line-numbered or position-named call is invoked. In this case, for example, if a position-named call is executed, processing such as starting the execution of the next position-named call without waiting for the first one to finish is possible. Each position-named call is assigned a priority, which is used to execute processing in order of highest priority when multiple execution processes are invoked concurrently.

[0053] Furthermore, in order to locate a call instruction several lines ahead during the program execution of robot 20, and to pre-execute a line-number-identified call, the program must be pre-read and program instructions scheduled for execution must be read in advance during program execution (especially during the execution of a movement instruction). Therefore, during the motion processing of robot 20, the program execution units (the movement instruction execution unit 122, the parallel call instruction execution unit 124) are on standby, and the available time is used for pre-reading and processing the program. <2. Effects of the design>

[0054] In the robot control 10 according to the present embodiment, a subroutine can be executed separately from and in parallel with the original program execution context.

[0055] In the robot control 10 according to the present embodiment, if, for example, a user teaches a logic command to control a processing process for laser welding or the like, a logic command can be executed independently of the movement command (teaching position) of the robot 20 at any position and / or at any timing.

[0056] Furthermore, in the robot controller 10 according to the present embodiment, the number of blanking points of the robot 20 can be minimized. This simplifies the motion plan processing of the robot 20 and allows the robot 20's original performance to be achieved. <3. Examples>

[0057] An example is described in which robot 20 performs a paint spraying task. When robot 20 performs a spraying task, the processing described below must be carried out with high accuracy, sequentially and parallel to the movement of robot 20 at or near the spraying start position. 1. Start the release of compressed air, which atomizes the coating material (according to the "Open Air" program described below). 2. Start applying voltage to electrostatically charge the coating material (according to the "Apply Static" program described below). 3. Open the value to dispense the paint material (according to the program “Trigger ON”, which is described below).

[0058] Fig. 4A shows an example program from the example. In which in Fig. In the example program shown in Figure 4A, a parallel call instruction "CONC CALL" GUN_ON (10,3,5) is appended to the movement command in the sixth line. Here, "CONC_CALL" (simultaneous call) is a parallel call instruction for invoking a program named "GUN_ON". "(10,3,5)" is also an example of an argument that is passed to "GUN_ON". "GUN_ON" is a program for activating the painting process with paint, and the arguments "10,3,5" correspond to "paint material flow rate", "air pressure", and "electrostatic voltage".

[0059] Fig. 4B shows an example of a screen displaying detailed information about the Fig. 4A displays the “CONC_CALL” and shows detailed information that is displayed when the in Fig. 4A, the program shown is entered and the "ENTER" key is pressed, with the cursor over the "CONC CALL" command.

[0060] In the present example, a position-labeled call must be executed such that in an environment of the teaching position, a position-labeled call is called three times and the processing sequence of "Start compressed air", "Apply electrostatic voltage" and "Start spraying paint material" is executed.

[0061] The air delay time changes depending on the applied air pressure. Therefore, a fixed value for the distance and time of the position-specific call cannot be specified in advance. Instead, the program that is executed when "GUN_ON" is triggered is the "Dandori" program, which falls under the "Pre-Calls" category. The distance and time of a position-specific call can be dynamically set via the "Dandori" program.

[0062] In the Fig. 4A and Fig. In example 4B, the parallel call instruction detection unit 123 reads the data contained in Fig. 4A shows the motion command program in advance and detects line number 6, where the parallel call command is taught.

[0063] When the "GUN_ON(10,3,5)" program is executed with the designated "CONC_CALL" parallel call instruction, the parallel call instruction execution unit 124 makes a line-numbered call at position [2] (P[2]), designated by the line number, i.e., as designated by the "trigger position" of "-4", and the "Dandori" program is called. In the "Dandori" program, when three position-named calls are made for the "Open Air" program, the "Turn On Static" program and the "Trigger ON" program are defined.

[0064] Fig. Figure 4C shows an example of the inner workings of the "Dandori" program. The "Dandori" program calculates a delay time before air is blown in, based on a specified air pressure value, and calculates a point in time (distance and time) to call the "open air" program to adjust the analog output, again based on the specified air pressure value. Based on this result, the position-specific call to the "open air" program is defined.

[0065] A similar calculation determines the timing (distance and time) for calling, by position-specific reference, the "Turn on static" program to apply electrical voltage and the "Trigger ON" program to start spraying, and defines the position-specific call of the "Turn on static" program and the "Trigger ON" program.

[0066] It should be noted that a "Define Prox Call" function in Fig. 4C is defined as follows. Specifically, in the function "Define Prox Call (d,t,p)", d is a relative position (positive or negative value) that indicates the call time of the designated program, t is a time offset (positive or negative value) for adjusting the call time of the designated program, and p is the called program name.

[0067] Fig. 4D is a flowchart that shows processes executed by the "Dandori" program. In step S1, the “Dandori” program is started. In step S2, the air pressure value, the electrostatic voltage value and the paint flow rate value are read in as arguments. In step S3, a call time (distance and time) of the "Open Air" program is calculated based on the specified air pressure value, and a variable number for both "Dist1" and "tim1" is stored. In step S4, a call time (distance and time) of the "Turn on static" program is stored based on the electrostatic voltage value and a variable number for both "Dist2" and "tim2". In step S5, a call timing (distance and time) of the "Trigger On" program is calculated based on the specified electrostatic voltage value and a variable number for both "Dist3" and "tim3" is stored. In step S6, three position-named calls are defined using the calculated distance and time (Dist1, tim1, Dist2, tim2, Dist3, tim3). The “Dandori” program ends in step S7. Fig. 4E is a flowchart showing the processes executed by the "Open Air" program. The "Open Air" program starts in step S11. In step S12, the analog output is set based on the specified air pressure value. The "Open Air" program ends in step S13. Fig. 4F is a flowchart that shows the processes executed by the "Turn on statics" program. The "Turn on statics" program starts in step S21. In step S22, the analog output is set based on the specified electrostatic voltage value. The "Turn on statics" program ends in step S23. Fig. 4G is a flowchart showing processes executed by the "Trigger ON" program. In step S31, the "Trigger ON" program starts. In step S32, the analog output is set based on the specified paint material flow rate value. The “Trigger ON” program ends in step S33. Fig. 4H is a diagram showing the relationship between the teaching points and the call positions of the line-number-labeled calls and the position-labeled calls according to the present example. In the Fig. In example 4H, the "Dandori" program at P[2] is called by a line-numbered call to set up the spray start sequence at P[6]. Also, between P[5] and P[6], the "Open Air" program, the "Turn on Static" program, and the "Trigger ON" program are called in that order by position-numbered calls.

[0068] (1) A robot controller (for example, the “robot controller 10” described above) according to an embodiment of the present invention comprises: a motion command interpretation unit (for example, the “motion command interpretation unit 121” described above) which interprets a motion command program that describes a teaching movement and a teaching position of a robot and generates a motion command; a motion command execution unit (for example, the “motion command execution unit 122” described above) which executes the motion command; a parallel call command detection unit (for example, the “parallel call command detection unit 123” described above) which pre-reads the motion command program and detects a line at which a parallel call command is taught;and a parallel call instruction execution unit (for example, the "parallel call instruction execution unit 124" described above) that executes a program designated by a parallel call instruction at a specified time.

[0069] With this configuration, processing with high accuracy in terms of time and dispersion can be carried out using a simple procedure.

[0070] (2) In the robot controller (for example, the “Robot Controller 10” described above) according to (1), a line number indicates forward or backward in the motion command program, starting from the line when the parallel call command is taught and executes the parallel call command in parallel with the execution of the motion command when the execution of the motion command reaches the line number forward or backward.

[0071] With this configuration, the processing called by a position-specific call can be set up to use the time needed, for example, for the movement of a manipulator.

[0072] (3) In the robot controller (for example, the “Robot Controller 10” described above) according to (1), the parallel call command execution unit (for example, the “Parallel Call Command Execution Unit 124” described above) executes the parallel call command in parallel with the execution of the motion command at a time determined by a

[0073] The position and / or time of a manipulator contained in the robot is designated using a teaching position from the motion command line where the parallel call command is taught in the motion command program as a reference.

[0074] With this configuration, processing can be easily carried out with high accuracy, precisely within milliseconds, when executing an application of the robot. EXPLANATION OF REFERENCE MARKS 1 Robot control system 10 Robot control 11 storage unit 12 Control unit 20 robots 30 Peripheral device 121 Movement command interpretation unit 122 Movement command execution unit 123 Parallel Call Command Detection Unit 124 Parallel Call Command Execution Unit

Claims

[1] Robot control (10), comprising: a motion command interpretation unit (121) which interprets a motion command program describing a teaching motion and a teaching position of a robot and generates a motion command; a movement command execution unit (122) that executes the movement command; a parallel call command detection unit (123) which pre-reads the movement command program and detects a line at which a parallel call command is taught; and a parallel call instruction execution unit (124) which executes a program designated by a parallel call instruction at a designated time, wherein the parallel call instruction execution unit (124) designates a line number forward or backward in the move instruction program from the line where the parallel call instruction is taught, and executes the parallel call instruction in parallel with the execution of the move instruction when the execution of the move instruction reaches the line number forward or backward. [2] The robot controller (10) according to claim 1, wherein the parallel call command execution unit (124) executes the parallel call command in parallel with an execution of the movement command at a timing designated by a position and / or time of a manipulator included in the robot, using a teaching position in the movement command on the line where the parallel call command is taught in the movement command program as a reference.

Citation Information

Patent Citations

  • Control for the speed of program execution

    DE102014108964B4

  • numerical control device

    DE102016006761A1

  • Numerical control device

    DE112012006379B4

  • Control apparatus, robot and robot system

    EP3338968A2

  • Synchronization of control programs

    EP3462255A1