The present invention relates to a robot control system that controls a robot.
An industrial robot is generally controlled from a robot controller to make a motion by loading a motion program created using a teach pendant or a programming apparatus into the robot controller. In recent years, however, a system that controls an industrial robot by a PLC (Programmable Logic Controller) is also becoming prevalent (see, e.g., PTL 1).
[PTL 1] WO 2019/180916 A1
Nowadays, with the widespread use of, e.g., the PLCopen (registered trademark) standard, an improvement in development environment of a PLC program for controlling an industrial robot is also making progress. A robot control system using a PLC generally executes a PLC program so that a motion instruction to a robot is transmitted from the PLC to a robot controller, and uses the robot controller to generate a motion program based on the motion instruction issued from the PLC and control the robot. In such a robot control system, assuming that teaching setting of a robot using a PLC program and motion confirmation in PLC program development are performed, since the PLC program and the motion program generated by the robot controller have different program specifications, it is hard for the user to comprehend the correspondence between the PLC program and the motion program generated by the robot controller, and it therefore takes a long time for. e.g., a check upon the occurrence of an error.
One aspect of the present disclosure provides a robot control system including a host controller and a robot controller connected to the host controller, the host controller including a control execution unit that transmits, to the robot controller, instruction information representing a motion instruction to a robot and position data associated with the motion instruction, as well as name information representing a name of the position data, based on a control program for controlling the robot, and the robot controller including a program generation unit that generates a motion program for the robot, based on the received instruction information and the received position data, and a name information addition unit that adds the name represented by the received name information to the position data included in the motion program.
With the above-mentioned configuration, the user can easily comprehend how the control program generated by the host controller and the motion program generated by the robot controller correspond to each other. This makes it possible to efficiently perform an error check and a debug in teaching setting and programming.
These and other objects, features, and advantages of the present invention will become more apparent from the following detailed description of an exemplary embodiment thereof, as illustrated in the accompanying drawings.
An embodiment of the present disclosure will be described below with reference to the drawings. In the drawings to be referred to, the same or similar reference numerals denote the same or similar components or functional parts. To facilitate understanding, these drawings use different scales as appropriate. Further, the modes illustrated in the drawings are merely examples for carrying out the present invention, which is not limited to the modes illustrated in the drawings.
The host controller 20 may have the configuration of a general computer including, e.g., a CPU, a ROM, a RAM, a storage device, an operation unit, a display unit, an I/O interface, and a network interface. The host controller 20 is implemented as, e.g., a PLC (Programmable Logic Controller) or a CNC (Computerized Numerical Controller). As the host controller 20, not only a PLC or a CNC, but also various information processing devices such as a PC can be used. The robot controller 50 may have the configuration of a general computer including, e.g., a CPU, a ROM, a RAM, a storage device, an operation unit, a display unit, an I/O interface, and a network interface. To connect the host controller 20 and the robot controller 50 to each other, a fieldbus, a wired or wireless LAN, or various other networks can be used.
The host controller 20 holds, in the storage device, a control program 21, for controlling the robot 10, built in a software environment running on the host controller 20, as illustrated in
The robot controller 50 includes a program generation unit 51, a name information addition unit 52, a program execution unit 53, and a communication interface 54. In the robot controller 50, the program generation unit 51 generates a motion instruction to the robot 10 based on the instruction information transmitted from the host controller 20, and creates the motion instruction as a motion program 56. In this case, when position data associated with the motion instruction and name information associated with the position data have been transmitted, the name information addition unit 52 adds the name of the position data to the position data as, e.g., a comment text. The program execution unit 53 causes the robot 10 to make a motion by executing the motion program 56 generated by the program generation unit 51.
Specific configurations for two examples in which the host controller 20 is implemented as a PLC and a CNC, respectively, will be described below.
A configuration example when the host controller 20 is implemented as a PLC 20A will be described below with reference to
The variable definition 24 includes two structure variables HOME. POSITION and PICK.POSITION, each of which is formed by three variables X-, Y-, and Z-positions. The values of these variables are respectively set to HOME.POSITION.X=0, HOME.POSITION.Y=0, and HOME.POSITION.Z=0, and PICK.POSITION.X=30, PICK.POSITION.Y=20, and PICK.POSITION.Z=15.
The PLC program 21A includes a MoveLinear function describing an instruction to cause the robot to make a linear motion, and a MoveAxes function describing an instruction to cause the robot to make a joint motion. The motions described by the MoveLinear function and the MoveAxes function are defined in the function blocks (FBs) 25a and 25b, respectively. The MoveLinear function is used to input a structure HOME.POSITION of position data of the robot to an argument DestPos of a target position. With this operation, X=0, Y=0, and Z=0 are commanded as target position data of a MoveLinear instruction (linear motion) for the robot 10. In the function block 25a of the MoveLinear function, a numerical value of 1 is defined to be set as a command ID corresponding to the MoveLinear function. In this case, the control execution unit 22 interprets the function block 25a, transmits “Command ID=1” to the robot controller 50 as instruction information corresponding to the motion instruction MoveLinear, and further transmits the position data (DestPos) to the robot controller 50.
The control execution unit 22 includes ‘HOME.POSITION’ in the data to be transmitted as the variable name of the position data associated with the motion instruction MoveLinear. In other words, in this case, the control execution unit 22 transmits the following data to the robot controller:
The MoveAxes function is used to input a structure PICK.POSITION of position data of the robot to an argument DestPos of a target position. With this operation, X=30, Y=20, and Z=15 are commanded as target position data of a MoveAxes instruction (linear motion) for the robot 10. In the function block 25b of the MoveAxes function, a numerical value of 2 is defined to be set as a command ID corresponding to the MoveAxes function. In this case, the control execution unit 22 interprets the contents of the function block 25b, transmits “Command ID=2” to the robot controller 50 as instruction information corresponding to the motion instruction MoveAxes, and further transmits the position data (DestPos) to the robot controller 50.
The control execution unit 22 includes ‘PICK.POSITION’ in the data to be transmitted as the variable name of the position data associated with the motion instruction MoveAxes. In other words, in this case, the control execution unit 22 transmits the following data to the robot controller 50:
The data transmitted from the PLC 20 are stored in, e.g., a primary storage area 55 within the RAM of the robot controller 50. The program generation unit 51 generates a motion program for the robot 10 based on the data transmitted from the PLC 20A. As one example, the robot controller 50 may hold a table associating command IDs and motion instructions with each other, as presented in the following table 1. In this case, the program generation unit 51 can recognize a motion instruction, corresponding to the command ID transmitted from the PLC 20, by looking up this table. In this case, the PLC 20A also holds a table similar to table 1. In the table presented in the following table 1, a linear motion, a joint motion, a pause, and a motion restart are associated with command IDs=1, 2, 3, and 4, respectively.
Assume that the data transmitted from the PLC 20A indicate a command ID=1. In this case, the program generation unit 51 recognizes, from the command ID=1, that the motion instruction indicates a linear motion. The program generation unit 51 stores position data (0, 0, 0) transmitted together with the command ID=1 in a position register P[1], generates an instruction ‘L P[1]’ for a linear motion of the robot 10, and inserts a text HOME.POSITION representing the name of the position data (0, 0, 0) transmitted together with this position data to the position register P[1] as a comment text. With this operation, the program generation unit 51 generates
The program execution unit 53 is configured to execute a motion instruction every time a new statement is generated in a motion program 56A as one example, and when the above-mentioned ‘L P[1:HOME.POSITION]’ is inserted into the motion program 56A, the program execution unit 53 linearly moves a controlled portion set in a movable portion of the robot 10 to the target position (home position) set in the position register P[1].
When a command ID=2 is further transmitted from the PLC 20A, the program generation unit 51 recognizes, from the command ID=2, that the motion instruction indicates a joint motion. The program generation unit 51 stores position data (30, 20, 15) transmitted together with the command ID=2 in a position register P[2], generates an instruction ‘J P[2]’ for a joint motion of the robot 10, and inserts a text PICK.POSITION representing the name of the position data (30, 20, 15) transmitted together with this position data to the position register P[2] as a comment text. With this operation, the program generation unit 51 generates
When the above-mentioned instruction ‘J P[2:PICK.POSITION]’ is inserted into the motion program 56A, the program execution unit 53 moves the controlled portion of the robot 10 to the target position (pick position) set in the position register P[2].
In this manner, a variable name representing position data in the PLC program is inserted into the motion program generated by the robot controller 50 as a comment text representing the position data. In other words, text information assigned to position data in the PLC program is reflected as text information representing the position data in the motion program generated by the robot controller 50. Therefore, the user can easily comprehend how the PLC program and the motion program correspond to each other. Assume, for example, that the position data input from the PLC to the robot controller has an error. In this case, the user may notice the error of the input data as the robot stops at an unintended position, but when a large number of instructions have been input from the PLC to the robot controller, it is difficult to find a statement having the error in the motion program. Even in such a case, when a name common to the variable name in the PLC program has been added to the position data in the motion program, it is possible to easily search for and find position data having the error. In other words, it is possible to efficiently perform an error check and a debug in teaching setting and programming in the robot control system.
A configuration example when the host controller 20 is implemented as a CNC (Computerized Numerical Controller) 20B will be described below with reference to
G90: An absolute command for designating that coordinates are to be specified as absolute values.
G01: A command issued to make a linear motion. The motion is made at the following position and speed:
D001: A command for designating that a label (character information) located at position number ‘001’ in a specific area on the memory is to be transmitted to the robot controller 50 as name information for the position represented by X, Y, and Z.
M30: A command representing the end of the main program.
When the CNC program 21B illustrated in
The program generation unit 51 of the robot controller 50 recognizes, from the command ID=1, that the motion instruction indicates a linear motion. The program generation unit 51 stores position and posture data (X, Y, Z, A, B, C) and (10.0, 20.0, 30.0, 40.0, 50.0, 60.0) transmitted together with the command ID=1 in a position register P[1], generates an instruction ‘L P[1]’ for a linear motion of the robot 10 as a motion program 56B, and inserts a text HOME.POSITION representing the name of the position data transmitted together with the position and posture data to the position register P[1] as a comment text. With this operation, the program generation unit 51 generates ‘L P[1:HOME.POSITION]’
as a statement of a linear motion. The speed specified in the CNC program 21B may be added to the above-mentioned statement as a numerical value for specifying a speed override.
In this manner, a label representing position data in the CNC program 21B is inserted into the motion program 56B in the robot controller 50 as a comment text representing the position data. In other words, text information assigned to position data in the CNC program 21B is reflected as text information representing the position data in the motion program 56B generated by the robot controller 50. Therefore, the user can easily comprehend how the CNC program and the motion program correspond to each other. In other words, it is possible to efficiently perform an error check and a debug in teaching setting and programming, as in the case described above regarding the PLC program.
In the CNC program, since a label freely set by the user in a memory area specified by the instruction code ‘D001’ can be reflected as the name of the position data in the robot controller, user convenience can be improved more.
As described above, according to this embodiment, the user can easily comprehend how the control program generated by the host controller and the motion program generated by the robot controller correspond to each other. This makes it possible to efficiently perform an error check and a debug in teaching setting and programming.
Although the present invention has been described above with reference to exemplary embodiments, it will be appreciated by those skilled in the art that the foregoing and various other changes, omissions, or additions may be made to the above-described embodiments without departing from the scope of the present invention.
An example in which text information (a variable name or a label) itself is transmitted from the host controller to the robot controller as the name information has been given in the above-described embodiment, but in place of such a configuration, identification information (ID) representing a name may be transmitted as the name information. In this case, each of the host controller and the robot controller is configured to hold a table associating the identification information and the text information with each other.
The function (control execution unit) of the host controller illustrated in
Number | Date | Country | Kind |
---|---|---|---|
2020-139400 | Aug 2020 | JP | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2021/029930 | 8/16/2021 | WO |