CONTROL SYSTEM, ROBOT CONTROLLER, AND CONTROL METHOD
Patent Information
- Application Number
- JP2021011175
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-01-27
- Publication Date
- 2025-01-15
- Estimated Expiration
- 2041-01-27
AI Technical Summary
【0017】 本発明によれば、ロボットの軌道に対する補正をより正確に実現できる。
Smart Images

Figure 0007613132000001 
Figure 0007613132000002 
Figure 0007613132000003
Abstract
Description
[Technical field]
[0001] The present invention relates to a control system, a robot controller, and a control method. [Background technology]
[0002] Factory automation (FA) technology using control devices such as programmable controllers (PLCs) is becoming widespread in various production sites. With the recent advances in information and communication technology (ICT), control devices are now capable of controlling not only conventional sequence control, but also robots, machine tools, and the like.
[0003] For example, Japanese Patent Application Laid-Open No. 2019-036043 (Patent Document 1) discloses a configuration in which control calculations according to multiple types of programs with different execution formats are realized by a single control device. [Prior art documents] [Patent documents]
[0004] [Patent Document 1] JP 2019-036043 A Summary of the Invention [Problem to be solved by the invention]
[0005] For example, assuming a configuration in which a robot performs some kind of processing on a workpiece placed on an XY stage, it is preferable to control the robot in accordance with the movement of the XY stage. One object of the present invention is to provide a technology for more accurately correcting the trajectory of the robot. [Means for solving the problem]
[0006] A control system according to an aspect of the present invention includes a control device for controlling a control target, a robot controller for controlling a robot, and a network for periodically updating data between the control device and the robot controller. The control device includes a means for periodically transmitting a correction amount for a trajectory of the robot. The robot controller includes a means for calculating a command value for each control period in accordance with an instruction received from the control device, and a means for calculating a corrected command value for each control period based on the command value and the correction amount periodically received from the control device.
[0007] According to this configuration, the robot controller calculates the original command value for each control cycle according to the command received from the control device, and calculates a corrected command value by reflecting the correction amount received from the control device to the command value calculated for each control cycle. This allows the calculation result of the correction amount by the control device to be reliably reflected without deviation from the control cycle when the robot trajectory is to be arbitrarily corrected. This allows for more precise control even when the robot trajectory is arbitrarily corrected.
[0008] The control device may further include means for periodically executing a first user program for calculating a correction amount according to an arbitrarily created command. With this configuration, the control device can arbitrarily calculate an arbitrary correction amount to be reflected in the robot.
[0009] The first user program may include a command for periodically transmitting a correction amount for the robot trajectory. With this configuration, the user can easily realize the correction for the robot by simply including a predetermined command in the first user program.
[0010] The command for periodically transmitting the amount of correction for the robot's trajectory may be written in the first user program in the form of a function. With this configuration, the command for implementing the process of periodically transmitting the amount of correction for the robot's trajectory can be easily written.
[0011] The control device may further include means for sequentially transmitting instructions to the robot controller by sequentially executing the second user program. With this configuration, the second user program includes instructions that define the original trajectory of the robot, so that the robot can be operated along an intended trajectory.
[0012] The execution period of the second user program may be set to be longer than the execution period of the first user program. With this configuration, the first user program for calculating the correction amount can be executed in a shorter period.
[0013] The robot controller may be configured to enable or disable the calculation of the corrected command values according to specific instructions received from the control device, allowing the corrections to the robot trajectory to be enabled for any period of time.
[0014] The robot controller may further include a means for periodically transmitting the state value of the robot. With this configuration, the control device can acquire the state value of the robot, and can reflect the acquired state value of the robot in the calculation of the correction amount, etc.
[0015] According to another aspect of the present invention, there is provided a robot controller for controlling a robot. The robot controller includes an interface for connecting to a control device for controlling a control target via a network. The network is configured so that data is periodically updated between the control device and the robot controller. The robot controller includes a means for receiving a correction amount for a robot trajectory periodically transmitted from the control device, a means for calculating a command value for each control period according to an instruction received from the control device, and a means for calculating a corrected command value for each control period based on the command value and the correction amount periodically received from the control device.
[0016] According to yet another aspect of the present invention, there is provided a control method for a control system including a control device for controlling a control target, a robot controller for controlling a robot, and a network for periodically updating data between the control device and the robot controller, the control method including a step of the control device periodically transmitting a correction amount for the trajectory of the robot, a step of the robot controller calculating a command value for each control period in accordance with an instruction received from the control device, and a step of the robot controller calculating a corrected command value for each control period based on the command value and the correction amount periodically received from the control device. Effect of the Invention
[0017] According to the present invention, correction to the robot trajectory can be achieved more accurately. [Brief description of the drawings]
[0018] [Figure 1] 1 is a schematic diagram showing an example of a system configuration of a control system according to an embodiment of the present invention; [Diagram 2] FIG. 1 is a diagram illustrating an application example of a control system according to an embodiment of the present invention. [Diagram 3] 2 is a schematic diagram illustrating an example of a hardware configuration of a control device that constitutes the control system according to the present embodiment. FIG. [Figure 4] FIG. 2 is a schematic diagram showing an example of a hardware configuration of a robot controller that constitutes the control system according to the present embodiment. [Diagram 5] 2 is a schematic diagram showing an example of a hardware configuration of a servo controller constituting the control system according to the present embodiment; FIG. [Figure 6] FIG. 2 is a schematic diagram illustrating an example of a hardware configuration of a support device that constitutes the control system according to the present embodiment. [Figure 7] FIG. 4 is a schematic diagram showing an example of program execution in the control device according to the present embodiment. [Figure 8] FIG. 2 is a diagram showing an example of trajectory control of a robot by the control system according to the present embodiment. [Figure 9]This is a diagram showing an example of processing when a correction instruction is included in an application program in the control system according to this embodiment. [Figure 10] This is a diagram showing an example of processing for realizing target trajectory correction of a robot in the control system according to this embodiment. [Figure 11] This is a schematic diagram showing a system configuration corresponding to a program example of the control system according to this embodiment. [Figure 12] This is a schematic diagram showing an example of an application using the robot shown in FIG. 11. [Figure 13] This is a diagram showing an example of an application program for realizing the application shown in FIG. 12. [Figure 14] This is a diagram showing an example of an IEC program for realizing the application shown in FIG. 12. [Figure 15] This is a diagram showing an example of a function indicating a correction amount reflection instruction of the control system according to this embodiment. [Figure 16] This is a flowchart showing a processing procedure executed by a control device of the control system according to this embodiment. [Figure 17] This is a flowchart showing a processing procedure executed by a robot controller of the control system according to this embodiment.
Embodiments for Carrying Out the Invention
[0019] Embodiments of the present invention will be described in detail with reference to the drawings. For the same or corresponding parts in the drawings, the same reference numerals are attached and the description thereof will not be repeated.
[0020] <A. Application Examples> First, a system configuration example of the control system 1 according to this embodiment will be described.
[0021] Fig. 1 is a schematic diagram showing an example of a system configuration of a control system 1 according to the present embodiment. Referring to Fig. 1, the control system 1 includes a control device 100 for controlling a control target, a robot controller 250 and a servo controller 350 which are network-connected to the control device 100 via a field network 10.
[0022] The control device 100 periodically exchanges data with devices connected to the field network 10 and executes processes as described below. The control device 100 may typically be realized by a PLC (Programmable Logic Controller).
[0023] The robot controller 250 is responsible for controlling the robot 200. More specifically, the robot controller 250 functions as an interface with the robot 200, and outputs commands to drive the robot 200 in accordance with commands from the control device 100, and also acquires status information of the robot 200 and outputs the information to the control device 100.
[0024] The robot 200 may be any robot, such as a vertical articulated robot, a horizontal articulated (SCARA) robot, a parallel link robot, or a Cartesian robot.
[0025] The servo controller 350 is responsible for controlling the servo motor 300. More specifically, the servo controller 350 drives the servo motor 300 in accordance with commands from the control device 100, and also acquires status information of the servo motor 300 and outputs the information to the control device 100.
[0026] EtherCAT (registered trademark) or EtherNet / IP, which are protocols for industrial networks, can be used for the field network 10. When EtherCAT is adopted as the protocol, data can be updated between the control device 100 and devices connected to the field network 10 at regular intervals of, for example, several hundred microseconds to several milliseconds.
[0027] The control device 100 may be connected to the display device 500 and the server device 600 via the upper-level network 20. For the upper-level network 20, a protocol for industrial networks such as EtherNet / IP can be used.
[0028] A support device 400 for installing and performing various settings of a user program (IEC program 150 and application program 160, described later) executed by the control device 100 may be connected to the control device 100.
[0029] FIG. 2 is a diagram showing an application example of the control system 1 according to the present embodiment. Referring to FIG. 2, commands for generating the trajectory of the robot 200 are sequentially transmitted from the control device 100 to the robot controller 250.
[0030] The robot controller 250 calculates command values for the robot 200 for each control cycle according to the commands received from the control device 100. In parallel, the control device 100 transmits a correction amount for the trajectory of the robot 200 to the robot controller 250 for each control cycle. The robot controller 250 calculates corrected command values for each control cycle based on the command values and the correction amount periodically received from the control device 100. Then, the robot controller 250 outputs the corrected command values to the robot 200.
[0031] <B. Hardware configuration example> Next, a hardware configuration example of the main devices constituting the control system 1 shown in FIGS. 1 and 2 will be described.
[0032] (b1: Control device 100) Fig. 3 is a schematic diagram showing an example of a hardware configuration of a control device 100 constituting a control system 1 according to the present embodiment. Referring to Fig. 3, the control device 100 includes a processor 102, a main memory 104, a storage 110, a memory card interface 112, a host network controller 106, a field network controller 108, a local bus controller 116, and a USB controller 120 providing a USB (Universal Serial Bus) interface. These components are connected via a processor bus 118.
[0033] The processor 102 corresponds to an arithmetic processing unit that executes control calculations, and is composed of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), etc. Specifically, the processor 102 reads out a program stored in the storage 110, expands it in the main memory 104, and executes it to realize control calculations for a control target.
[0034] The main memory 104 is configured with a volatile storage device such as a dynamic random access memory (DRAM) or a static random access memory (SRAM). The storage 110 is configured with a non-volatile storage device such as a solid state drive (SSD) or a hard disk drive (HDD).
[0035] The storage 110 stores a system program 1102 for implementing basic functions, an IEC program 150 created according to the object to be controlled, and an application program 160.
[0036] The IEC program 150 includes instructions for implementing main controls other than the control of the robot 200 in the control system 1. The IEC program 150 may typically include sequence instructions and motion instructions. The IEC program 150 may be written in any language defined in IEC 61131-3 established by the International Electrotechnical Commission (IEC). However, the IEC program 150 may include a program written in a manufacturer-specific language other than the language defined in IEC 61131-3.
[0037] The application program 160 includes instructions for controlling the operation of the robot 200. The application program 160 may include instructions written in a predetermined programming language (for example, a programming language for robot control such as the V+ language, or a programming language related to NC control such as G-code).
[0038] The memory card interface 112 accepts a memory card 114, which is an example of a removable storage medium. The memory card interface 112 is capable of reading and writing any data from and to the memory card 114.
[0039] The upper network controller 106 exchanges data with any information processing device (such as the display device 500 and the server device 600 shown in FIGS. 1 and 2) via the upper network 20.
[0040] The field network controller 108 exchanges data with each device via the field network 10. In the example system configuration shown in FIGS.
[0041] The local bus controller 116 exchanges data with any functional unit 130 included in the control device 100 via the local bus 122. The functional unit 130 may be, for example, an analog I / O unit responsible for input and / or output of analog signals, a digital I / O unit responsible for input and / or output of digital signals, a counter unit that receives pulses from an encoder or the like, and the like.
[0042] The USB controller 120 exchanges data with any information processing device (such as the support device 400) via a USB connection.
[0043] (b2: Robot Controller 250) 4 is a schematic diagram showing an example of a hardware configuration of a robot controller 250 constituting the control system 1 according to the present embodiment. Referring to FIG. 4, the robot controller 250 The robot controller 250 includes a field network controller 252 and a control processing circuit 260 .
[0044] The field network controller 252 mainly exchanges data with the control device 100 via the field network 10. In other words, the field network controller 252 corresponds to an interface for connecting with the control device 100 via the field network 10.
[0045] The control processing circuit 260 executes calculation processing required to drive the robot 200. As an example, the control processing circuit 260 includes a processor 262, a main memory 264, a storage 266, and an interface circuit 270.
[0046] The processor 262 executes control calculations for driving the robot 200. The main memory 264 is composed of, for example, a volatile storage device such as a DRAM or an SRAM. The storage 266 is composed of, for example, a non-volatile storage device such as an SSD or an HDD.
[0047] The storage 266 stores a system program 268 for implementing control for driving the robot 200. The system program 268 includes instructions for executing control calculations related to the operation of the robot 200, and instructions related to the interface with the robot 200.
[0048] The interface circuit 270 exchanges data with the robot 200 . (b3: Servo controller 350) 5 is a schematic diagram showing an example of a hardware configuration of a servo controller 350 constituting the control system 1 according to the present embodiment. Referring to FIG. 5, the servo controller 350 includes a field network controller 352, a control processing circuit 360, and a drive circuit 370.
[0049] The field network controller 352 mainly exchanges data with the control device 100 via the field network 10 .
[0050] The control processing circuit 360 executes arithmetic processing required for controlling the servo motor 300. As an example, the control processing circuit 360 includes a processor 362, a main memory 364, and a storage 366.
[0051] The processor 362 executes control calculations related to the servo motor 300. The main memory 364 is formed of, for example, a volatile storage device such as a DRAM or an SRAM. The storage 366 is formed of, for example, a non-volatile storage device such as an SSD or an HDD.
[0052] The storage 366 stores a system program 368 for implementing drive control of the servo motor 300. The system program 368 includes instructions for executing control calculations related to the operation of the servo motor 300, and instructions related to the interface with the servo motor 300.
[0053] The drive circuit 370 includes a converter circuit, an inverter circuit, and the like, and generates power of a specified voltage, current, and phase according to a command calculated by the control processing circuit 360 , and supplies it to the servo motor 300 .
[0054] The servo motor 300 is not limited to being called a servo motor, and any of an induction motor, a synchronous motor, a permanent magnet motor, and a reluctance motor may be used, and not only a rotary motor but also a linear motor may be used.
[0055] (b4: Support device 400) The support device 400 constituting the control system 1 according to the present embodiment may be realized, for example, by using a general-purpose personal computer.
[0056] Fig. 6 is a schematic diagram showing an example of a hardware configuration of a support device 400 constituting the control system 1 according to the present embodiment. With reference to Fig. 6, the support device 400 includes a processor 402 such as a CPU or an MPU, a main memory 404, an input unit 406, a display unit 408, a storage 410, a network controller 416, a USB controller 418, and an optical drive 420. These components are connected via a bus 424.
[0057] The processor 402 provides processing such as development of user programs (IEC program 150 and application program 160) to be executed by the control device 100 by reading various programs stored in the storage 410, expanding them into the main memory 404, and executing them.
[0058] The storage 410 is composed of, for example, a non-volatile storage device such as an SSD or HDD. The storage 410 typically stores an OS 412 and a development program 414 for creating a user program to be executed in the control device 100, debugging the created user program, defining a system configuration, setting various parameters, and the like. The storage 410 may store necessary programs other than the programs shown in FIG.
[0059] The input unit 406 is made up of a keyboard, a mouse, etc., and accepts user operations. The display unit 408 is made up of a display, various indicators, a printer, etc., and outputs the processing results from the processor 402, etc.
[0060] A network controller 416 controls data transfer to and from other devices over any network. A USB controller 418 controls data transfer to and from the control device 100 over a USB connection.
[0061] The support device 400 has an optical drive 420, and a program stored therein is read from a recording medium 422 (e.g., an optical recording medium such as a DVD (Digital Versatile Disc)) that non-transiently stores a computer-readable program, and the program is installed in storage 410, etc.
[0062] Various programs executed by the support device 400 may be installed via a computer-readable recording medium 422, or may be installed by downloading from a server device on a network. In addition, the functions provided by the support device 400 according to the present embodiment may be realized by using some of the modules provided by the OS 412.
[0063] (b5:Display device 500) The display device 500 constituting the control system 1 according to the present embodiment may be realized, for example, by using a general-purpose personal computer. A basic hardware configuration example of the display device 500 is well known, and therefore will not be described in detail here.
[0064] (b6: server device 600) The server device 600 constituting the control system 1 according to the present embodiment may be realized by using a general-purpose personal computer, for example. A basic hardware configuration example of the server device 600 is well known, so a detailed description will not be given here.
[0065] (b7: Other forms) Figures 3 to 6 show configuration examples in which one or more processors provide necessary functions by executing a program. However, some or all of these provided functions may be implemented using dedicated hardware circuits (for example, ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array), etc.).
[0066] <Execution of C.IEC Program and Application Program> Next, the execution of the IEC program 150 and the application program 160 in the control device 100 according to the present embodiment will be described.
[0067] Figure 7 is a schematic diagram showing an example of program execution in the control device 100 according to the present embodiment. In Figure 7, as an example, a plurality of tasks are set according to priority, and an example is shown in which each task shares the resources of the processor 102 according to its respective priority.
[0068] In the example shown in Figure 7, an example is shown in which two types of tasks, a high-priority task and a low-priority task, are executed. More specifically, the input / output refresh process 140, the execution process 142 of the IEC program 150, the execution process 144 of the motion command included in the IEC program 150, and the execution process 146 after interpretation of the application program 160 are executed as high-priority tasks with a control period T1.
[0069] On the other hand, the process of sequentially interpreting the application program 160 is executed as a low-priority task with an application period T2 (> control period T1).
[0070] The high-priority task is repeatedly executed every control period T1. The low-priority task is executed each time during the period when the high-priority task is not being executed. That is, for each control period, the execution time of the high-priority task is allocated, and the low-priority task is executed during the time other than the execution time of the high-priority task.
[0071] The application program 160 is sequentially interpreted by an interpreter (not shown). The intermediate code generated by the interpreter interpreting the application program 160 is sequentially queued (enqueued) in the buffer 148. The intermediate code queued in the buffer 148 is referred to each time in the execution process 146 to generate instructions. In this way, the control device 100 includes a function of sequentially transmitting commands to the robot controller 250 by sequentially executing the application program 160 (the second user program).
[0072] As shown in FIG. 7, the interpretation (interpreter) of the application program 160 is executed in a long cycle with respect to the control period T1, and sufficient timing is not ensured. That is, the execution cycle (application cycle T2) of the application program 160 (the second user program) is set longer compared to the execution cycle (control period T1) of the IEC program 150 (the first user program). However, usually, since the robot controller 250 (FIGS. 1 and 2) calculates the command value for each control cycle of the robot controller 250 based on the command transmitted from the control device 100, no problem in terms of accuracy occurs.
[0073] <D. Problem> Next, the problems that can occur in the program execution shown in FIG. 7 will be described. As an example, assume a process of performing an arbitrary correction (hereinafter also referred to as "target trajectory correction") on the trajectory of the robot controller 250.
[0074] Fig. 8 is a diagram showing an example of trajectory control of the robot 200 by the control system 1 according to the present embodiment. Fig. 8 shows tracking correction of the robot 200 as an example of target trajectory correction. More specifically, there is a case where a fluctuation occurring in the XY stage is corrected when the robot 200 performs a predetermined processing on a workpiece placed on the XY stage.
[0075] In this case, in a configuration in which the robot 200 is controlled according to a predetermined robot trajectory, the trajectory of the robot 200 is corrected by an amount of correction according to the movement of the XY stage.
[0076] Next, an example of a method for achieving target trajectory correction for the robot 200 as shown in FIG. 8 will be described.
[0077] FIG. 9 is a diagram showing an example of processing when a correction command is included in an application program 160 in the control system 1 according to the present embodiment. With reference to FIG. 9, the application program 160 is executed in the control device 100. FIG. 9 shows, as an example, the code of a robot program written in the V+ language. In the V+ language, each command is called a "keyword." In the following, a case where a "keyword" is used as an example of a "command" will be described, but the command is not limited to a "keyword" and any command according to the language system can be used.
[0078] More specifically, the application program 160 includes a MOVES keyword 161, which is a command for moving to specified coordinates, and a WHILE command 162, which is a command for specifying a repeat process. The WHILE command 162 includes a command 163 for calculating a correction amount, and an ALTER keyword 164 for instructing correction of the specified correction amount. That is, after the transmission of the MOVES keyword 161, the calculation of the correction amount and the command for correcting the correction amount are repeatedly executed until the execution of the MOVES keyword 161 is completed.
[0079] When the control device 100 executes the application program 160, first, the MOVES keyword 161 is sent to the robot controller 250, and then the ALTER keyword 164 is repeatedly sent.
[0080] On the other hand, when the robot controller 250 receives the MOVES keyword 161, since it is an instruction that requires one or more control cycles T3, the command value calculation 281 and the command value output 283 are repeatedly executed for each control cycle T3 of the robot controller 250. The command value calculation 281 is a process (interpolation process) of calculating a trajectory for the target position p1 associated with the MOVES keyword 161. By this process, a command value is output from the robot controller 250 to the robot 200 for each control cycle T3. That is, the robot controller 250 calculates a command value for each control cycle T3 according to the keyword (an example of an instruction) received from the control device 100.
[0081] In addition, when the robot controller 250 receives the ALTER keyword 164, it executes the correction amount addition 282 using the correction amount 284 included in the ALTER keyword 164. As a result, a command value with the correction amount 284 added (or subtracted) is output. Note that the ALTER keyword 164 is an instruction that is completed in one control cycle T3. Therefore, the correction process for the command value is executed each time the ALTER keyword 164 is received.
[0082] However, since the execution cycle of the application program 160 is non-periodic, the transmission cycle of the ALTER keyword 164 is not constant and is not necessarily synchronized with the control cycle T1 of the control device. Therefore, the execution timing of the correction process in the robot controller 250 may vary.
[0083] <E. Solution means> Next, a configuration for solving the above-described problems will be described.
[0084] Fig. 10 is a diagram showing an example of a process for achieving target trajectory correction of robot 200 in control system 1 according to the present embodiment. With reference to Fig. 10, in control device 100, IEC program 150 and application program 160 are executed.
[0085] 10, the IEC program 150 includes a correction amount calculation command 151 and a correction amount reflection command 152. The application program 160 includes a MOVES keyword 161 which is a command for moving to specified coordinates.
[0086] 9, when the control device 100 executes the application program 160, first, a MOVES keyword 161 is transmitted to the robot controller 250. When the robot controller 250 receives the MOVES keyword 161, the robot controller 250 repeatedly executes a command value calculation 281 and a command value output 283 for each control period T3 of the robot controller 250.
[0087] Meanwhile, the control device 100 executes the IEC program 150 for each control period T1. By executing the IEC program 150, a correction amount 286 is calculated according to a correction amount calculation command 151, and the correction amount 286 is transmitted to the robot controller 250 according to a correction amount reflection command 152. That is, the correction amount calculation command 151 corresponds to an element for calculating a correction amount for the trajectory of the robot 200. Moreover, the correction amount reflection command 152 corresponds to an element for periodically transmitting a correction amount for the trajectory of the robot 200.
[0088] In this manner, the control device 100 periodically executes the IEC program 150 (first user program) for calculating the correction amount 286 according to an arbitrary created command. The IEC program 150 (first user program) includes a correction amount reflection command 152 as a command for periodically transmitting the correction amount 286 for the trajectory of the robot 200.
[0089] The control device 100 and the robot controller 250 are connected via a field network 10 in which data is transmitted (updated) every communication cycle T4. Therefore, data can be exchanged between the control device 100 and the robot controller 250 every communication cycle T4.
[0090] Normally, the control period T1 and the communication period T4 are set to be the same (control period T1=communication period T4), so that the robot controller 250 can receive the correction amount 286 calculated by the control device 100 every control period T1 (or communication period T4).
[0091] Typically, the control period T3 of the robot controller 250 is set to be equal to or longer than the control period T1 and the communication period T4 (control period T3 ≧ control period T1, communication period T4), so that the correction amount 286 is updated at a period that is sufficiently shorter than the control period T3 of the robot controller 250.
[0092] Therefore, the robot controller 250 can receive a correction amount 286 for the trajectory of the robot 200 that is periodically transmitted from the control device 100. Then, the robot controller 250 executes a correction amount addition 282 using the correction amount 286 that the control device 100 calculates for each control cycle. As a result, a command value to which a correction amount 284 has been added (or subtracted) is output. That is, the robot controller 250 calculates a corrected command value for each control cycle T3 based on the command value and the correction amount 286 that is periodically received from the control device 100.
[0093] An enable / disable switch 287 is provided on the path along which the correction amount 286 is input to the correction amount addition 282, and is enabled or disabled by an ALTON keyword and an ALTOFF keyword, which will be described later. That is, the robot controller 250 enables or disables the calculation of the corrected command value according to a specific keyword (an example of a command) received from the control device 100.
[0094] In this way, in the control system 1 according to the present embodiment, the target trajectory correction by the robot controller 250 can be surely performed every predetermined control period T3, and the correction amount 286 calculated by the control device 100 can be reflected in the target trajectory correction without substantial delay.
[0095] The robot controller 250 periodically transmits state information 288 (the position of each axis of the robot 200, the input / output values of the robot 200, the execution state of commands, etc.) to the control device 100. That is, the robot controller 250 has an element that periodically transmits the state value of the robot 200. The state information 288 will also be transmitted every communication cycle T4. Therefore, the control device 100 can also perform the calculation of the correction amount every control period T1 based on the state information 288 periodically received from the robot controller 250. Therefore, the correction amount can be calculated with higher accuracy.
[0096] <F. Program Example> Next, a program example of the control system 1 according to the present embodiment will be described.
[0097] FIG. 11 is a schematic diagram showing a system configuration corresponding to a program example of the control system 1 according to the present embodiment. Referring to FIG. 11, a robot controller 250 for controlling the robot 200 and a distance sensor 50 attached to the end effector 210 of the robot 200 are connected to the control device 100 via the field network 10.
[0098] The control device 100 can transmit a command value to the robot controller 250 and can acquire state information from the robot controller 250. In addition, the control device 100 can acquire the distance measured by the distance sensor 50.
[0099] FIG. 12 is a schematic diagram showing an example of an application using the robot 200 shown in FIG. 11.
[0100] 12(A), a process is assumed in which the distance between the end effector 210 of the robot 200 and the workpiece 40 placed on the base 42 is kept constant. Such a process is necessary, for example, for applications such as inspection of the workpiece 40 and coating of the workpiece 40.
[0101] 12(B), it is assumed that the distance between the end effector 210 of the robot 200 and an exposed surface of the workpiece 40 or the like is maintained at a reference distance. In this case, the correction amount is calculated so that the result of adding or subtracting the correction amount to or from the distance measured by the distance sensor 50 coincides with the reference distance. In other words, the correction amount is calculated for each control cycle so that "reference distance = distance measured by the distance sensor 50 + correction amount".
[0102] Fig. 13 is a diagram showing an example of an application program 160 for realizing the application shown in Fig. 12. Referring to Fig. 13, the application program 160 includes an enabling unit 165 for instructing the robot controller 250 to enable the target trajectory correction, an initial position moving unit 166 for moving the robot 200 to an initial position, an execution enabling unit 167 for enabling the execution of the correction amount reflection command 152 in the IEC program, an execution waiting unit 168 for waiting for the execution of the correction amount reflection command 152 in the IEC program, a trajectory target command unit 169 for operating the robot 200 on a predetermined trajectory, and a termination processing unit 170 for terminating the processing.
[0103] The validation unit 165 includes an ALTON keyword, which is a command for validating the target trajectory correction. Upon receiving the ALTON keyword, the robot controller 250 validates the correction amount addition 282 of the target trajectory correction shown in FIG.
[0104] The initial position moving unit 166 includes a MOVES keyword, which is a command for moving to the specified coordinates. Note that the initial position is stored in the object loc.init.
[0105] The execution enabler 167 includes an instruction to set the Boolean variable ebool_sp1 to "TRUE."
[0106] The execution waiting unit 168 includes an instruction to wait for processing until the Boolean variable gStartComp becomes "TRUE" in the IEC program 150. The Boolean variable gStartComp corresponds to the correction preparation completion flag 158 shown in FIG.
[0107] The trajectory target command section 169 includes three MOVES keywords, which specify sequential movement to target positions p1, p2, and p3, respectively.
[0108] The finalization processing unit 170 includes an ALTOFF keyword, which is a command for disabling the target trajectory correction.
[0109] Fig. 14 is a diagram showing an example of an IEC program 150 for realizing the application shown in Fig. 12. Referring to Fig. 14, the IEC program 150 includes a start monitoring instruction 159 for starting and monitoring an application program 160, a correction amount calculation instruction 151, and a correction amount reflection instruction 152.
[0110] The start-up monitoring command 159 starts the application program 160 and monitors the execution state of the application program 160 when a predetermined condition for operating the robot 200 is satisfied.
[0111] The correction amount calculation command 151 includes a command to calculate the difference between a reference distance 156 (cBaseDiff) and a current distance 157 (E002_input_Data_1) measured by the distance sensor 50, as the second element (Offset[2]) of a structure Offset indicating the correction amount 155. The calculation of the correction amount 155 is executed on the condition that an application program execution flag 154 indicating that an application program 160 is being executed is "TRUE."
[0112] A correction amount 155 (Offset) calculated in the correction amount calculation command 151 is input to the correction amount reflection command 152. When the correction amount reflection command 152 is executed, the correction amount 155 is transmitted to the robot controller 250. Furthermore, if the correction amount 155 can be transmitted, the correction amount reflection command 152 sets a correction preparation completion flag 158 to "TRUE."
[0113] The correction amount reflection command 152 may be in any format, but may adopt, for example, a function format as shown in FIG.
[0114] Fig. 15 is a diagram showing an example of a function indicating a correction amount reflection command 152 of the control system 1 according to this embodiment. Referring to Fig. 15, the correction amount reflection command 152 includes, as inputs, a robot designation 1521, an execution designation 1522, and a correction amount designation 1523. In addition, the correction amount reflection command 152 includes, as outputs, a selected robot 1524, a correction preparation completion flag 1525, a busy flag 1526, an abort flag 1527, an error flag 1528, and an error ID 1529.
[0115] A variable for specifying the target robot 200 is set in the robot designation 1521. A Boolean variable for instructing the execution of the correction amount reflection command 152 is set in the execution designation 1522. A variable indicating the correction amount to be transmitted to the robot controller 250 of the target robot 200 is set in the correction amount designation 1523.
[0116] When a structure is used as a variable indicating the correction amount, for example, a structure that stores the X-axis correction amount [mm], the Y-axis correction amount [mm], the Z-axis correction amount [mm], the X-axis correction amount [deg], the Y-axis correction amount [deg], the Z-axis correction amount [deg], etc., can be used. In other words, the correction amount may include not only a correction value for a specific axis, but also correction values for each of multiple axes.
[0117] From the selected robot 1524, information for identifying the selected robot 200 is output. The correction preparation completion flag 1525 outputs information indicating whether target trajectory correction for the selected robot 200 is executable. From the busy flag 1526, abort flag 1527, and error flag 1528, the presence or absence of a busy state, the occurrence of an abort, the occurrence of an error, etc. are output. From the error ID 1529, information for identifying the occurred error is output.
[0118] Thus, the correction amount reflection command 152, which is a command for periodically transmitting the correction amount 286 for the trajectory of the robot 200, may be described in the IEC program 150 (first user program) in a function format.
[0119] By using the IEC program 150 and the application program 160 as described above, the application shown in FIG. 12 can be controlled.
[0120] <G. Processing Procedure> Next, the processing executed by the control device 100 and the robot controller 250 of the control system 1 according to the present embodiment will be described.
[0121] FIG. 16 is a flowchart showing the processing procedure executed by the control device 100 of the control system 1 according to the present embodiment. FIG. 16(A) shows the processing in which the control device 100 executes the IEC program 150, and FIG. 16(B) shows the processing in which the control device 100 executes the application program 160. Each step shown in FIGS. 16(A) and 16(B) may be realized by the processor 102 of the control device 100 executing a program.
[0122] The process shown in Fig. 16(A) is repeatedly executed for each control cycle T1 of the control device 100. Referring to Fig. 16(A), the control device 100 first executes an input / output refresh process 140. More specifically, the control device 100 outputs a command value calculated in the previous control cycle (step S100), and acquires an input value to be used in the current control cycle (step S102). The command value output from the control device 100 includes a correction amount 286 used for target trajectory correction. The input value acquired by the control device 100 includes state information 288 from the robot controller 250.
[0123] The control device 100 determines whether or not it is in a state in which it can execute the target trajectory correction, based on the acquired input values and the internally held state values (step S104).
[0124] If the target trajectory correction can be executed (YES in step S104), the control device 100 calculates the correction amount 284 to be used for the target trajectory correction according to the correction amount calculation command 151 (step S106), and sets the calculated correction amount 284 according to the correction amount reflection command 152 (step S108). The set correction amount 284 becomes the command value in the next control cycle T1. Through such a procedure, the control device 100 periodically transmits the correction amount 284 for the trajectory of the robot 200.
[0125] The process shown in Fig. 16(B) is executed sequentially so that one execution falls within the application cycle T2. Referring to Fig. 16(B), the control device 100 executes the application program 160 sequentially and determines whether the content of the target line is a keyword (step S150). If the content of the target line is a keyword (YES in step S150), the control device 100 transmits the target keyword to the robot controller 250 (step S152).
[0126] If the content of the target line is not a keyword (NO in step S150), the control device 100 executes the content of the target line and stores the execution result in the target variable (step S154). For example, the target line includes a control command such as a DO-WHILE statement or an IF statement.
[0127] Fig. 17 is a flowchart showing a processing procedure executed by the robot controller 250 of the control system 1 according to this embodiment. The processing shown in Fig. 17 is repeatedly executed for each control period T3 of the robot controller 250. Each step shown in Fig. 17 may be realized by the processor 262 of the robot controller 250 executing a program.
[0128] 17, the robot controller 250 first executes an input / output refresh process. More specifically, the robot controller 250 outputs a command value calculated in the previous control cycle (step S200), and acquires an input value to be used in the current control cycle (step S202). The output of the command value from the robot controller 250 includes the output of a command to drive the robot 200, and the transmission of state information 288 including a state value in the previous control cycle to the control device 100. The input values acquired by the robot controller 250 include state values of the robot 200 (such as the position of each axis of the robot 200 and input / output values of the robot 200).
[0129] Next, the robot controller 250 judges whether or not any keyword has been received from the control device 100 (step S204). If any keyword has been received from the control device 100 (YES in step S204), the robot controller 250 stores the received keyword in a buffer (step S206). If no keyword has been received from the control device 100 (NO in step S204), the process of step S206 is skipped.
[0130] Next, the robot controller 250 judges whether or not any keyword is being executed (step S208). If any keyword is being executed (YES in step S208), the robot controller 250 calculates a command value for the current control cycle according to the keyword being executed (step S210). In this way, the robot controller 250 calculates a command value for each control cycle T3 according to the keyword (an example of a command) received from the control device 100.
[0131] If no keyword is being executed (NO in step S208), the robot controller 250 judges whether or not a keyword is stored in the buffer (step S212). If a keyword is stored in the buffer (YES in step S212), the robot controller 250 reads the keyword from the buffer (step S214) and calculates a command value according to the read keyword (step S216).
[0132] The robot controller 250 determines whether the target trajectory correction is enabled (step S218). If the target trajectory correction is enabled (YES in step S218), the robot controller 250 adds the correction amount acquired in step S202 to the command value to calculate the corrected command value (step S220). In this way, the robot controller 250 calculates the corrected command value for each control period T3 based on the command value and the correction amount 286 periodically received from the control device 100.
[0133] If the target trajectory correction is not enabled (NO in step S218), the process of step S220 is skipped.
[0134] Finally, the robot controller 250 outputs the command value or the corrected command value to the robot 200 (step S222).
[0135] If no keyword is stored in the buffer (NO in step S212), the processes in steps S214 to S222 are skipped.
[0136] <H. Supplementary Note> The present embodiment as described above includes the following technical ideas.
[0137] [Configuration 1] A control device (100) for controlling a control target, A robot controller (250) for controlling a robot (200), And a network (10) for periodically updating data between the control device and the robot controller, The control device includes means (102, 152) for periodically transmitting a correction amount (161) for the trajectory of the robot, The robot controller, Means (262, 281) for calculating a command value for each control cycle according to a command received from the control device, And means (262, 282) for calculating a corrected command value for each control cycle based on the command value and the correction amount periodically received from the control device, a control system.
[0138] [Configuration 2] The control device further includes means for periodically executing a first user program (150) for calculating the correction amount according to an arbitrarily created command, the control system according to Configuration 1.
[0139] [Configuration 3] The first user program includes a command (152) for periodically transmitting a correction amount for the trajectory of the robot, the control system according to Configuration 2.
[0140] [Configuration 4] The command for periodically transmitting a correction amount for the trajectory of the robot is described in the first user program in a function format, the control system according to Configuration 3.
[0141] [Configuration 5] The control system according to any one of configurations 2 to 4, wherein the control device further comprises means (102, 160) for sequentially transmitting commands to the robot controller by sequentially executing a second user program.
[0142] [Configuration 6] 6. The control system according to configuration 5, wherein an execution period (T2) of the second user program is set to be longer than an execution period (T1) of the first user program.
[0143] [Configuration 7] The control system according to any one of configurations 1 to 6, wherein the robot controller is configured to enable or disable calculation of the corrected command value according to a specific command received from the control device (287).
[0144] [Configuration 8] The control system according to any one of configurations 1 to 7, wherein the robot controller further comprises means for periodically transmitting a state value (288) of the robot.
[0145] [Configuration 9] A robot controller (250) for controlling a robot (200), a control device (100) for controlling a control target and an interface (252) for connecting via a network (10), said network being configured so that data is periodically updated between said control device and said robot controller; a means for receiving a correction amount (161) for the trajectory of the robot periodically transmitted from the control device; A means (262, 281) for calculating a command value for each control period according to a command received from the control device; a means (262, 282) for calculating a corrected command value for each control period based on the command value and a correction amount periodically received from the control device.
[0146] [Configuration 10] A control method in a control system (1) comprising a control device (100) for controlling a control target, a robot controller (250) for controlling a robot (200), and a network (10) for periodically updating data between the control device and the robot controller, the method comprising: The step (S108) in which the control device periodically transmits a correction amount for the trajectory of the robot; The steps (S210, S216) in which the robot controller calculates a command value for each control cycle according to a command received from the control device; And the step (S220) in which the robot controller calculates a corrected command value for each control cycle based on the command value and the correction amount periodically received from the control device. A control method.
[0147] <I. Advantages> In the control system 1 according to the present embodiment, the robot controller 250 calculates an original command value for each control cycle according to a command received from the control device 100, and reflects the correction amount received from the control device 100 on the command value calculated for each control cycle, thereby calculating a corrected command value. As a result, when attempting to arbitrarily correct the trajectory of the robot 200, the calculation result of the correction amount in the control device can be surely reflected without deviating from the control cycle. Thus, even when arbitrarily correcting the trajectory of the robot, more accurate control can be performed.
[0148] The embodiments disclosed this time should be considered illustrative in all respects and not restrictive. The scope of the present invention is shown not by the above description but by the claims, and is intended to include all modifications within the meaning and scope equivalent to the claims.
Explanation of Reference Numerals
[0149] 1 control system, 10 field network, 20 upper network, 40 work, 42 base, 50 distance sensor, 100 control device, 102, 262, 362, 402 processor, 104, 264, 364, 404 main memory, 106 upper network controller, 108, 252, 352 field network controller, 110, 266, 366, 410 storage, 112 memory card interface, 114 memory card, 116 local bus controller, 118 processor bus, 120, 418 USB controller, 122 local bus, 130 functional unit, 140 input / output refresh processing, 142, 144, 146 execution processing, 148 buffer, 150 IEC program, 151 correction amount calculation command, 152 correction amount reflection command, 154 application program execution flag, 155, 284, 286 Correction amount, 156 Reference distance, 157 Current distance, 158 Correction preparation completion flag, 159 Start monitoring command, 160 Application program, 161 MOVES keyword, 162 WHILE command, 163 Calculation command, 164 ALTER keyword, 165 Activation section, 166 Initial position movement section, 167 Execution activation section, 168 Execution waiting section, 169 Trajectory target command section, 170 End processing section, 200 Robot, 210 End effector, 250 Robot controller, 260, 360 Control processing circuit, 268, 368, 1102 System program, 270 Interface circuit, 281 Command value calculation, 282 Correction amount addition, 283 Command value output, 287 Disable switch, 288 Status information, 300 Servo motor, 350 Servo controller, 370 Drive circuit, 400 Support device, 406 Input unit, 408 display unit, 412 OS, 414 development program, 416 network controller, 420 optical drive, 422 recording medium, 424 bus, 500 display device, 600 server device, 1521 robot designation, 1522 execution designation, 1523 correction amount designation, 1524 selected robot, 1525 correction preparation completion flag, 1526 busy flag, 1527 abort flag, 1528 error flag, 1529 error ID, T1,T3 is the control period, T2 is the application period, and T4 is the communication period.
Claims
1. A control device for controlling a control target; a robot controller for controlling the robot; a network for periodically updating data between the control device and the robot controller; The control device includes: means for sequentially transmitting commands to the robot controller; means for periodically transmitting a correction amount to the trajectory of the robot; The robot controller means for calculating a command value for each control period according to a command received from the control device; a means for calculating a corrected command value for each control period based on the command value and a correction amount periodically received from the control device.
2. 2. The control system of claim 1, wherein the control device further comprises means for periodically executing a first user program for calculating the correction amounts according to arbitrarily created instructions.
3. The control system of claim 2 , wherein the first user program includes instructions for periodically transmitting corrections to a trajectory of the robot.
4. 4. The control system according to claim 3, wherein the command for periodically transmitting a correction amount for the trajectory of the robot is written in the first user program in the form of a function.
5. The control system according to any one of claims 2 to 4, wherein the means for sequentially transmitting instructions sequentially transmits instructions to the robot controller by sequentially executing a second user program.
6. 6. The control system according to claim 5, wherein an execution period of the second user program is set to be longer than an execution period of the first user program.
7. The control system according to any one of claims 1 to 6, wherein the robot controller is configured to enable or disable calculation of a corrected command value according to a specific instruction received from the control device.
8. The control system according to any one of claims 1 to 7, wherein the robot controller further comprises means for periodically transmitting a state value of the robot.
9. A robot controller for controlling a robot, The robot controller is provided with an interface for connecting to a control device for controlling a control target via a network, and data is periodically updated between the control device and the robot controller in the network, A means for receiving instructions sequentially transmitted from the control device; a means for receiving a correction amount for the trajectory of the robot, the correction amount being periodically transmitted from the control device; means for calculating a command value for each control period according to a command received from the control device; a means for calculating a corrected command value for each control period based on the command value and a correction amount periodically received from the control device.
10. A control method for a control system including a control device for controlling a control target, a robot controller for controlling a robot, and a network for periodically updating data between the control device and the robot controller, comprising: the control device sequentially transmitting commands to the robot controller; the controller periodically transmitting a correction to the trajectory of the robot; the robot controller calculating a command value for each control period according to an instruction received from the control device; The control method includes a step of the robot controller calculating a corrected command value for each control period based on the command value and a correction amount periodically received from the control device.
Citation Information
Patent Citations
Control device
JP2006260434A
Control device
JP2019036043A
Controller and control method
JP2019049947A
Control system, relay device, and relay program
JP2020149631A
Control system
JP2020201584A