Control device

By generating the output signal of the virtual robot, the synchronization control problem caused by the deviation of the number of robots is solved, and appropriate synchronization control is achieved in the case of deviation, reducing the burden on users to correct the program.

CN114868091BActive Publication Date: 2025-08-08OMRON CORP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202080089025.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-01-16
Filing Date
2020-12-16
Publication Date
2025-08-08
Estimated Expiration
2040-12-16

AI Technical Summary

Technical Problem

In the synchronization control of multiple robots, when the number of robots deviates from the number actually connected to the control device, it is difficult to perform synchronous control appropriately, resulting in adverse control situations and increased workloads for users to correct the program.

Method used

The output signal of the virtual robot associated with the synchronization control is used to generate the output signal of the virtual robot, and the instruction value is calculated through the virtual robot to ensure the continuity and accuracy of the synchronization control, so that the synchronization control can be properly performed even when the number of robots deviates.

Benefits of technology

Even if the number of robots deviates from the actual number of connections, the synchronous control of the robot can be appropriately realized, reducing the workload of user correction programs, and maintaining the continuity and accuracy of control.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114868091B_ABST
    Figure CN114868091B_ABST
Patent Text Reader

Abstract

A control device comprises: a processing unit configured to calculate a prescribed instruction value for synchronously controlling one or more robots in each predetermined control cycle; an output unit configured to output the prescribed instruction value in each control cycle; and a generating unit configured to generate an output signal of a virtual robot virtually set in association with the synchronous control, wherein the processing unit uses the output signal of the virtual robot generated by the generating unit to calculate the prescribed instruction value.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a control device for synchronously controlling a plurality of robots. Background Art

[0002] Factory Automation (FA) technology, which uses control devices such as PLCs (Programmable Logic Controllers), is widely used in various production sites. Such control devices not only directly control the controlled object but also sometimes indirectly control the controlled object by providing control instructions to other devices. Furthermore, there is a demand to consolidate control systems that have previously been implemented using multiple dedicated devices into a smaller number of control devices. For example, in the technology disclosed in Patent Document 1, the motion calculation program and the user program are executed synchronously in the CPU unit of the PLC.

[0003] Patent Document 2 discloses a technique for implementing control operations for multiple programs in different execution modes using a single control device. This technique employs a structure in which, for example, command value operations are performed for a program that executes the entire program in each control cycle and for a program that sequentially executes intermediate code generated by partial interpretation, and the command values are output collectively in each control cycle.

[0004] Prior art literature

[0005] Patent Literature

[0006] Patent Document 1: Japanese Patent Application Laid-Open No. 2012-194662

[0007] Patent Document 2: Japanese Patent Application Publication No. 2019-36043 Summary of the Invention

[0008] Problems to be solved by the invention

[0009] Typically, to synchronize control of multiple robots using a single control device, a program required for synchronized control of the multiple robots is executed while the multiple robots are electrically connected to the control device, enabling communication between each robot and the control device. This ensures that control signals generated by the program are properly transmitted and received between the control device and the robots. If, in this control method, one of the multiple robots is removed for a specific purpose (e.g., maintenance), the number of robots included in the program deviates from the number of robots actually connected to the control device. Therefore, maintaining the program as it existed before the removal makes it difficult to properly execute the program.

[0010] Furthermore, even in situations other than those described above, there may be cases where the number of robots specified in the program for synchronous control deviates from the number of robots actually connected to the control device. For example, the number of robots specified in the program may be greater than the number of robots actually connected to the control device.

[0011] The present invention has been made in view of such problems, and its object is to provide a technology for appropriately achieving synchronous control of robots even when the number of robots in a program for synchronous control of robots deviates from the number of robots actually connected to a control device.

[0012] Means for solving problems

[0013] To address the aforementioned issues, the present invention employs a mechanism for generating output signals from virtual robots virtually configured in conjunction with the synchronous control, within a control device that performs synchronous control of one or more robots. This mechanism eliminates control problems caused by a discrepancy between the number of robots specified in the program for synchronous control of the robots and the number of robots actually connected to the control device.

[0014] Specifically, the present invention is a control device comprising: a processing unit configured to calculate a prescribed instruction value for synchronously controlling one or more robots in each predetermined control cycle; an output unit configured to output the prescribed instruction value in each of the control cycles; and a generating unit configured to generate an output signal of a virtual robot virtually set in association with the synchronous control, the processing unit using the output signal of the virtual robot generated by the generating unit to calculate the prescribed instruction value.

[0015] The virtual robot described above is not an actual robot, but rather a virtual robot configured for the synchronous control performed by the control device. Therefore, even if the number of robots in the program for synchronous control of the robots deviates from the number of robots actually connected to the control device, the control problems caused by this discrepancy can be eliminated by incorporating the virtual robot into the calculation process of the specified command values for synchronous control. Therefore, the control device configured as described above employs a generator configured to generate output signals for the virtual robot.

[0016] As a more detailed first method, the above-mentioned control device may also include: an acquisition unit, which acquires the output signal of one of the one or more robots when the one or more robots are synchronously controlled by executing a program; and a detection unit, which detects a situation where the one of the one or more robots is excluded from the synchronous control. In this case, the generation unit generates the output signal of the one robot acquired by the acquisition unit in the synchronous control that has been executed as the output signal of the virtual robot. When the exclusion of the one robot is detected by the detection unit, the processing unit continues to execute the program for controlling the one or more robots in the state where the one robot is excluded, and calculates the specified instruction value.

[0017] In the above-mentioned manner, if one of the one or more robots that are the objects of synchronous control is excluded from the synchronous control, the "object" of the synchronous control actually no longer exists. The "exclusion" mentioned here means that it is no longer the control object of the control device, and its purpose is not limited. "Exclusion" includes, for example, a state where the electrical connection with the control device is cut off, a state where the robot itself fails and cannot operate, etc. Due to the non-existence of such an object of synchronous control, even if the prescribed instruction value for synchronous control calculated based on its actual existence is output through the output unit, synchronous control cannot be properly performed, and as a result, a control error may occur. Therefore, in order to avoid the control error, the user has to correct the program used for synchronous control, and the workload is not small.

[0018] Therefore, as described above, when the detection unit detects that a robot has been excluded from synchronous control, the processing unit utilizes the output signal of the virtual robot generated by the generation unit to calculate the predetermined command value. In this case, the output signal of the virtual robot is the output signal of the robot acquired by the acquisition unit during a previously executed synchronous control, that is, during a synchronous control executed when the robot was not excluded. In other words, the virtual robot can be considered identical to the excluded robot, and therefore the output signal of the virtual robot can be considered identical to the output signal of the robot. Therefore, by utilizing the output signal of the virtual robot by the processing unit, a state can be created as if the robot had not been excluded, thereby preventing control errors, allowing the synchronous control program to continue executing, and calculating the predetermined command value. As a result, synchronous control can be performed on one or more robots, including the virtual robot, without requiring program modifications, thereby reducing the user's workload. Furthermore, since the output signal of the virtual robot can be considered identical to the output signal of the robot, even when synchronous control is performed on one or more robots, including the virtual robot, in place of the robot, synchronous control can continue regardless of individual differences between the robots, that is, differences between the robot and the virtual robot. This helps maintain proper synchronization control even if one robot is excluded.

[0019] In addition, as a detailed second embodiment, in the control device described above, the generation unit may generate an output signal of the virtual robot that is distinct from the one or more robots, and the processing unit may use the output signal of the virtual robot generated by the generation unit to calculate the prescribed command value for synchronously controlling the one or more robots, such that the movement of the virtual robot is synchronized with the movement of the one or more robots. This embodiment corresponds to a situation where the number of robots under control is greater than the number of robots actually connected to the control device. To achieve synchronous control of multiple robots, the virtual robot serves as a reference for such synchronous control. By setting the virtual robot as a reference for control in this manner, it is possible to easily generate a program for synchronous control.

[0020] Here, in the control device described above, the processing unit may be configured to calculate the prescribed command value for each control cycle according to an intermediate code generated by executing a program that follows a prescribed execution method that is executed sequentially and interpreting at least a portion of the program via an interpreter. The processing unit may also be configured to execute a program that follows another execution method that is executed in its entirety during each execution, for each control cycle, and calculate other command values for controlling other controlled objects. The output unit may output the prescribed command value calculated by the processing unit for synchronous control of the one or more robots and the other controlled objects. In this way, the control device includes programs with different execution methods, making it possible to utilize programs with different execution methods, allowing a user to appropriately select a program suitable for controlling the robot or other controlled objects, thereby improving the convenience of the control device.

[0021] Effects of the Invention

[0022] Even when the number of robots in the program for synchronous control of the robots deviates from the number of robots actually connected to the control device, synchronous control of the robots can be appropriately achieved. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] [ Figure 1 ] is a diagram showing the schematic structure of a control system including an integrated controller.

[0024] [ Figure 2 ] is a functional block diagram that visualizes the functions of the integrated controller.

[0025] [ Figure 3 ] is a diagram showing the flow of processing executed in the integrated controller according to the control cycle.

[0026] [ Figure 4 ] is the first flow chart related to the robot control performed by the integrated controller.

[0027] [ Figure 5 ] is a second flow chart related to robot control performed by the integrated controller.

[0028] [ Figure 6 ] is the third flow chart related to the robot control performed by the integrated controller.

[0029] [ Figure 7 ] is a diagram used to illustrate synchronous control between robots. DETAILED DESCRIPTION

[0030] <Application Examples>

[0031] based on Figure 1 as well as Figure 2An application example of the control device according to the embodiment will be described. Figure 1 is a schematic structural diagram of a control system 1 to which the control device 100 is applied. Figure 2 This is a diagram illustrating a graphic representation of functional units formed in the control device 100 .

[0032] The control device 100 is equivalent to an industrial controller that controls various equipment, devices and other control objects. The control device 100 is a computer that performs control operations as described later. The control device 100 can also be connected to various field devices via the field network 2. Field devices include actuators that give certain physical effects to manufacturing equipment, production lines, etc. (hereinafter also collectively referred to as "field"), and input and output devices that exchange information with the field. Figure 1 In the figure, as field devices, a robot 210, a servo driver 220, and a motor 222 are exemplified. The servo driver 220 drives the motor 222 according to the command value (such as position command, speed command, etc.) from the control device 100. In addition, as the robot 210, a parallel robot, a SCARA robot, and a multi-joint robot can be exemplified. In this way, the control device 100 is configured to be able to comprehensively control the robot 210, the servo driver 220, and the motor 222, and its details will be described later. Figure 1 As shown, the control device 100 may control only the plurality of robots 210 or may control a combination of the robots 210, the servo driver 220, and the motor 222.

[0033] The control device 100 exchanges data with one or more field devices via the field network 2 or the like. While a "field network" is often referred to as a "fieldbus," for simplicity of explanation, it is collectively referred to as the "field network" in this application. The control device 100 performs processing (input processing) to collect data collected or generated by various field devices (hereinafter referred to as "input data"), generates data such as commands for the field devices (hereinafter referred to as "output data") (computation processing), and transmits the generated output data to the target field devices (output processing).

[0034] Here, the field network 2 preferably employs a bus or network that performs fixed-cycle communication and guarantees data arrival time. EtherCAT (registered trademark) and other known fixed-cycle communication buses and networks are known. Furthermore, the data exchanged between the control device 100 and the field devices via the field network 2 is updated in extremely short cycles, ranging from several hundred μsec to several tens of msec. This process of updating exchanged data is also referred to as input / output refresh processing.

[0035] In addition, the control device 100 is also connected to other devices via the upper network 6. The upper network 6 may also adopt Ethernet (registered trademark) or EtherNet / IP (registered trademark) as general network protocols. More specifically, one or more server devices 10 may also be connected to the upper network 6. As the server device 10, a database system, a manufacturing execution system (MES: Manufacturing Execution System), etc. are envisioned. The manufacturing execution system obtains information from the manufacturing devices and equipment of the controlled objects, monitors and manages the entire production, and can also process order information, quality information, shipping information, etc. Without being limited to this, a device that provides information services may also be connected to the upper network 6.

[0036] Here, based on Figure 2 The structure of the control device 100 is described. The control device 100 is a computer that performs the prescribed control operation as described above, and is equipped with a processor and memory required for the control operation. The processor is composed of a CPU (Central Processing Unit), an MPU (Micro Processing Unit), a GPU (Graphics Processing Unit), etc. As a processor, a structure with multiple cores can be adopted, or multiple processors can be configured. As the memory, it is composed of volatile storage devices such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory), and non-volatile storage devices such as HDD (Hard Disk Drive) and SSD (Solid State Drive). Moreover, the processor realizes the control corresponding to the control object and the various processes described later by reading and executing various programs stored in the memory. In addition to the system program for realizing the basic functions, the memory also stores user programs (IEC program 51 and application program 52) made according to the manufacturing device and equipment that are the control objects.

[0037] In addition, the IEC program 51 in this application refers to a program that is scanned in its entirety each time it is executed and calculates one or more command values each time it is executed. It typically includes one or more instructions described in accordance with the international standard IEC61131-3 specified by the International Electrotechnical Commission (IEC). The IEC program 51 includes instructions for sequential control and motion control. This IEC program 51 corresponds to an execution method in which all programs are executed (scanned) per control cycle, making it suitable for control that requires immediacy and high speed. On the other hand, the application program 52 in this application is a control program for using a robot to perform specific processing or motions. It includes a program composed of one or more instructions for implementing a robot-based control application and is distinguished from the IEC program 51. As an example, the application program 52 related to robot control uses an interpreter method in which it is written in a robot language and executed line by line. In addition, the control device 100 can also be configured to control the robot using the IEC program 51.

[0038] Moreover, if Figure 2 As shown, the control device 100 includes a control application processing unit 30, an IEC program processing unit 40, an upper-level network interface 20, and a lower-level network interface 60. The lower-level network interface 60 mediates data exchange between the IEC program processing unit 40 and the control application processing unit 30 and field devices connected via the field network 2. The upper-level network interface 20 mediates data exchange between the IEC program processing unit 40 and the control application processing unit 30 and a server device 10 connected via the upper-level network 6. For example, the control device 100 receives instructions such as the start / end of production from the server device 10 connected via the upper-level network 6. The server device 10 may also transmit application programs and recipe information (information such as parameters suitable for production) used to execute control applications to the control device 100.

[0039] The IEC program processing unit 40 executes (scans) the IEC program 51 for each predetermined control cycle to calculate one or more command values. That is, the IEC program processing unit 40 calculates command values for each control cycle according to the IEC program 51. In this application, the IEC program 51 is executed to control a predetermined device including the motor 222. Furthermore, the motion processing unit 42 provides a function for calculating command values for each control cycle based on the motion commands contained in the IEC program 51. Specifically, the motion commands contained in the IEC program 51 include commands that instruct behavior across multiple control cycles (for example, commands for causing the output of the predetermined device including the motor 222 to trace a certain trajectory). When executing such motion commands, the motion processing unit 42 calculates command values for each control cycle according to the instructions of the executed motion commands. Specifically, the motion processing unit 42 implements the action indicated by the motion commands by outputting command values to the predetermined device for each control cycle.

[0040] The IEC program processing unit 40 also includes a shared memory 41. A portion or all of the processing results of the IEC program processing unit 40 are stored in the shared memory 41, and the control application processing unit 30 can refer to the data stored in the shared memory 41 of the IEC program processing unit 40. Furthermore, data can be written from the control application processing unit 30 to the shared memory 41 of the IEC program processing unit 40, and the data written from the control application processing unit 30 can be referenced by the action processing unit 42.

[0041] Next, the control application processing unit 30 calculates the command value for controlling the control application based on the application 52 and the recipe information. Furthermore, in the present application, the control application processing unit 30 is assumed to execute the application 52 in order to control the robot 210. The control application processing unit 30 calculates and outputs the command value for the control application in synchronization with the calculation and output of the command value by the IEC program processing unit 40. That is, the control application processing unit 30 performs the calculation processing of the command value for controlling the robot 210 in synchronization with the calculation processing by the IEC program processing unit 40. The synchronization processing between the IEC program processing unit 40 and the control application processing unit 30 will be described later. In order to realize the calculation of the command value in synchronization with the calculation processing of the command value by the IEC program processing unit 40, the control application processing unit 30 includes an action processing unit 32, a buffer 33, an interpreter 34, and a generator 35.

[0042] The interpreter 34 interprets at least a portion of the application 52 one by one to generate an intermediate code, and has a buffer 33 for storing the generated intermediate code. The intermediate code in this application is a concept that includes commands for calculating instruction values for each control cycle, and may also include one or more commands, or one or more functions. Then, the action processing unit 32 calculates the instruction value for each control cycle according to the intermediate code generated in advance by the interpreter 34 and stored in the buffer 33. Generally speaking, since the commands (codes) described in the application 52 are executed one by one, the calculation cycle of the instruction value cannot be guaranteed, but in the disclosure of this application, by using the intermediate code in this way, the action processing unit 32 can calculate the instruction value for each control cycle. The commands described in the intermediate code can also use the coordinate system corresponding to each control application.

[0043] Here, the control application processing unit 30 is not limited to driving and controlling a single robot 210; multiple robots 210 can be controlled. Furthermore, the motion processing unit 32 can synchronize and control these multiple robots 210. Details of this synchronized control will be described later. Furthermore, the generating unit 35 is a functional unit that generates output signals of a virtual robot, virtually set in association with synchronized control between the robots 210 and synchronized control between the robot 210 and the servo driver 220. In other words, the generating unit 35 is a functional unit that virtually generates output signals of the robot, even though the robot does not actually exist, for the purpose of synchronized control of the control device 100.

[0044] <Synchronous execution of programs>

[0045] In the control device 100, the IEC program 51 and the application program 52 are executed synchronously. By executing these programs synchronously, the robot 210 and the servo driver 220 are controlled synchronously. The interpreter 34 of the control application processing unit 30 executes the application program 52 sequentially at a cycle longer than the control cycle, for example, twice the control cycle. The motion processing unit 42 of the IEC program processing unit 40 and the motion processing unit 32 of the control application processing unit 30 both calculate command values for each identical control cycle. Therefore, the output of command values from the control device 100 is synchronized with the predetermined control cycle. In this way, the IEC program processing unit 40 and the control application processing unit 30 each have a motion processing unit for continuously controlling the motion of the actuator. These motion processing units synchronously calculate command values, thereby enabling both control according to the IEC program 51 and control according to the application program 52 to be executed synchronously with the control cycle, thereby achieving precise control per control cycle.

[0046] Then, based on Figure 3 The details of the execution timing of the IEC program 51 and the application program 52 in the control device 100 will be described. Figure 3 1 is a diagram showing an example of the execution timing of the program in the control device 100. In addition, in the control device 100, considering the resources of the processor, a high priority task ( Figure 3 The upper part of the processing) and low priority tasks with low priority ( Figure 3 Specifically, the execution of the lower-level network interface 60, the IEC program processing unit 40 and its action processing unit 42, and the execution of the action processing unit 32 of the control application processing unit 30 are set as high-priority tasks, and the execution of the interpreter 34 of the control application processing unit 30 is set as a low-priority task.

[0047] Specifically, the input / output refresh process B60 associated with the lower-level network interface 60, the execution process B40 of the IEC program 51, the command value calculation process B42 performed by the action processing unit 42 in accordance with the IEC program 51, and the command value calculation process B32 performed by the action processing unit 32 in accordance with the application program 52 are executed as high-priority tasks. On the other hand, the process B34 for sequentially interpreting the application program 52 is executed as a low-priority task.

[0048] Here, the high-priority task is repeatedly executed every predetermined control cycle T1. Low-priority tasks are executed each time during the period when the high-priority task is not executed within each control cycle. In other words, the execution time of the high-priority task is allocated to each control cycle, and the low-priority task is executed during the period outside the execution time of the high-priority task.

[0049] First, let's explain the high-priority tasks. When each control cycle arrives, after executing the input / output refresh process B60, the IEC program processing unit 40 executes (scans) the entire IEC program 51 and calculates one or more command values for sequential control (execution process B40). Furthermore, the motion processing unit 42 performs motion processing related to the motion commands contained in the IEC program 51, calculating one or more command values for the motion commands (execution process B42). Furthermore, the motion processing unit 32 of the control application processing unit 30 prepares motion commands for controlling the robot 210 based on the intermediate code stored in the buffer 33 (execution process B32). The same process is repeated for each control cycle. Furthermore, the timing at which the motion processing unit 32 reads the intermediate code from the buffer 33 does not need to be each control cycle. This is because, if the read intermediate code includes commands for which command values can be calculated across multiple control cycles T1, the intermediate code can be read once within those multiple control cycles T1.

[0050] In this way, when execution of a high-priority task in a given control cycle is completed, a set of command values for sequence control related to motor 222, its motion control, and control application command values related to robot 210 is prepared. These command values are essentially reflected to the field side when the next control cycle arrives. In other words, the IEC program processing unit 40 and the control application processing unit 30 calculate the command values corresponding to the input data in the same control cycle, thereby achieving output synchronized with the input.

[0051] Meanwhile, regarding low-priority tasks, the interpreter 34 of the control application processing unit 30 sequentially executes the application program 52. Specifically, the interpreter 34 reads and analyzes the application program 52 at a low priority level. The intermediate code generated by the interpreter 34 through analysis of the application program 52 is sequentially stored in the buffer 33, taking into account the capacity of the buffer 33. The intermediate code stored in the buffer 33 is sequentially referenced by the action processing unit 32 of the control application processing unit 30 and used to generate instruction values in the calculation process B32. At this time, the interpreter 34 generates enough intermediate code in advance to meet the calculation cycle of the high-priority task, that is, an integer multiple of the control cycle. This allows the calculation of instruction values for the control application for each control cycle without affecting the processing of the action processing unit 32.

[0052] In addition, the interpreter 34 temporarily stops interpreting the application 52 before the predetermined control application synchronization cycle (an integer multiple of the control cycle) arrives. At the timing of the temporary stop, data synchronization is performed between the IEC program processing unit 40 and the control application processing unit 30, thereby sharing matching data between the two. In this way, the interpreter 34 updates the data shared with the IEC program processing unit 40 in each synchronization cycle. Along with the update of the shared data, the input data and output data obtained from the field side can also be updated (data synchronization). Thus, on the control application processing unit 30 side, the data obtained by the IEC program processing unit 40 can also be used to control the robot 210. The control application synchronization cycle can be of any length as long as it is set to an integer multiple of the control cycle. It is appropriately set according to the control accuracy required in the control application.

[0053] like Figure 1As shown, when multiple robots 210 are connected to the control device 100 as control targets, synchronized control can be performed between the multiple robots 210. For example, when only three robots 210 are connected to the control device 100, synchronized control can be performed between the three robots 210. In this case, after the input / output refresh process B60 is executed as a high-priority task in control cycle T1, the motion processing unit 32 of the control application processing unit 30 calculates motion instructions for controlling the robots 210 according to the intermediate code stored in the buffer 33. This intermediate code is used to synchronize the multiple robots 210, and the calculated motion instructions also achieve synchronized control of the multiple robots 210.

[0054] <First Method>

[0055] Here, the first method of the generation unit 35 is described. When synchronous control is performed between a robot 210 and a servo driver 220, etc. (i.e., when the IEC program 51 and the application program 52 are executed synchronously), or when robots 210 are synchronously controlled with each other (i.e., when synchronous control is performed within the application program 52), a robot 210 included in the synchronous control may be excluded from the synchronous control for a certain purpose. For example, a case where a robot 210 is disconnected from the control device 100 for maintenance purposes can be exemplified. If a robot 210 is excluded from synchronous control in this manner, the actual control target no longer exists in the synchronous control, making it difficult to continue executing the application program 52 or the synchronously executed IEC program 51 that was previously executed. In order to continue synchronous execution, it is necessary to modify each program to reflect the exclusion of the robot 210, which places a considerable workload on the user.

[0056] Therefore, in order not to impose a special workload on the user in such a case, Figures 4 to 6 In addition, Figures 4 to 6 The processing of represents processing for coping with a case where one robot 210 is excluded from synchronous control when synchronous control is performed between the robot 210 and the servo driver 220 , etc. Figure 4 is a flowchart related to the processing of the above high priority tasks, Figure 5 This is a flowchart related to the processing of the above low priority tasks. Figure 6 This is a flowchart related to the process of excluding one robot 210 from synchronous control.

[0057] First, based on Figure 4, the processing flow of high-priority tasks is explained. When control cycle T1 arrives, the lower-level network interface 60 performs input and output refresh processing (processing of S101). As a result, the command values calculated in the immediately preceding control cycle T1 (based on the command values of B40, B42, B32, etc.) are output to the actuators of the field devices, etc., and input data from the field devices is obtained. Next, in S102, it is determined whether the current control cycle coincides with the timing of data synchronization. If the determination is positive, data synchronization is performed between the IEC program processing unit 40 and the control application processing unit 30 (processing of S103). On the other hand, if the determination is negative in S102, the process proceeds to S104.

[0058] Next, the execution process B40 is performed in S104, and the execution process B42 is performed in S105. Then, in S106, the robot execution process B32 is performed to prepare the motion command for controlling the robot 210. In the robot execution process B32, if one robot 210 is not excluded from the synchronous control, the application program 52 is directly executed. On the other hand, if one robot 210 is excluded from the synchronous control, the application program 52 is executed by the following method. Figure 6 The exclusion handling process shown is synchronously controlled so that the processing of the generation unit 35 interferes with the application 52 .

[0059] pass Figure 4 The command value calculated and prepared by the series of processing of the high priority task shown is output to the field when the next control cycle T1 arrives. Then, after the series of processing is completed and until the next control cycle T1 arrives, the execution Figure 5 Low priority tasks shown.

[0060] based on Figure 5The processing flow of the low-priority task will be explained. The low-priority task involves the interpretation of the application program 52 by the interpreter 34. First, in S201, the control application processing unit 30 determines whether any intermediate code remains in the buffer 33. This determination is made to prevent the generation of intermediate code that exceeds the capacity of the buffer 33. If the determination in S201 is positive, the low-priority task ends; if the determination is negative, the process proceeds to S202. In S202, the interpreter 34 reads a portion of the application program 52. For example, it reads a line of code that constitutes the application program 52. Then, in S203, the code read by the interpreter 34 is interpreted to generate intermediate code. The generated intermediate code is stored in the buffer 33 in S204. Note that the processes in S202-S204 are not performed if there is no application program to be executed. As a result, no intermediate code is stored in the buffer 33. The low-priority task, which performs this series of processes, repeats itself within the program's allocated execution time.

[0061] By doing so Figure 4 、 Figure 5 The series of processing shown in FIG. 1 is performed in the control device 100. Figure 3 IEC program 51 and application program 52 are executed at the execution timing shown. Figure 1 The control device 100 shown is connected to only a plurality of robots 210, and only executes the application program 52 when performing synchronous control among the robots 210. In a state where S104 and S105 are omitted in the high-priority task processing, the robot execution processing B32 for synchronous control is performed.

[0062] Next, based on Figure 6 , the processing associated with excluding a robot 210 from synchronous control (excluding processing) will be described. This exclusion processing is executed by the control application processing unit 30 as part of a high-priority task and a low-priority task. First, in S301, it is determined whether it is detected that a robot 210 has been excluded from the target of synchronous control. In the case where synchronous control has been performed between the robot 210 and the servo driver 220, etc., or in the case where synchronous control has been performed between multiple robots 210, the state in which a robot 210 originally included in the robot 210 is no longer the control target of the control device 100 is detected as an "exclusion state". As an example, the exclusion state is detected when the electrical connection between the robot 210 and the control device 100 is not maintained. If a negative determination is made in S301, the process proceeds to S302, and if a positive determination is made, the process proceeds to S304.

[0063] Here, the process proceeds to S302 . In S302 , it is determined whether the output of the robot 210 performing synchronous control has been acquired. The output of the robot 210 referred to here refers to the output signal from the robot 210 required for synchronous control during the entire execution of the application program 52 from the start to the end. Typically, the robot 210 has multiple driven joints. When signals related to the position, velocity, and other aspects of the actuators constituting each driven joint are used for feedback processing in synchronous control, these signals are used as the output signals of the robot 210. If a negative determination is made in S302 , the output signal of the robot 210 is acquired in S303 . For example, if multiple robots 210 are participating in synchronous control, the output signal of each robot 210 is acquired. If only one robot 210 is participating in synchronous control, the output signal of that robot 210 is acquired. The acquired output signal of the robot 210 is stored in a memory (not shown) within the control application processing unit 30 . If a positive determination is made in S302 , the elimination process ends.

[0064] The following describes a case where a positive determination is made in S301 and the process proceeds to S304. In S304, if the exclusion of one robot 210 is detected, the output signal of the robot 210 excluded from synchronous control, from among the output signals of the robot 210 acquired in the process of S303, is read. This output signal is read by the generator 35.

[0065] Next, in conjunction with the execution of the high-priority task, the generation unit 35 transmits the output of the excluded robot 210 read in S304, i.e., the output of the robot 210 previously under synchronous control, as the output of the virtual robot to the robot execution process B32. This means that, instead of the robot 210 that has actually been excluded from synchronous control, the generation unit 35 uses the obtained output signal to generate an output signal as if the robot 210 existed, i.e., the output of the virtual robot. As a result, even though the robot 210 has actually been excluded, the application program 52 that originally implemented synchronous control including the robot 210 continues to execute without any special modifications. Furthermore, the motion processing unit 32 can continue to calculate motion commands for the robot 210 under synchronous control, just as it did before the robot 210 was excluded.

[0066] Furthermore, as described above, the generator 35 generates the output signals of the virtual robot using the output signals of the actual robot 210. Therefore, even when the motion processing unit 32 uses the output signals of the virtual robot to calculate motion commands, it can still calculate commands that achieve synchronous control with the same degree of accuracy as before the robot 210 was removed.

[0067] <Second Method>

[0068] Next, based on Figure 7 The second embodiment of the generating unit 35 is described. Figure 1 When the robots 210 shown in FIG. 5 are synchronously controlled with each other (ie, when synchronous control is performed within the application 52), the generation unit 35 can generate an output signal of the virtual robot 210' as a reference for the synchronous control. Figure 7 As shown, if the virtual robot 210' is synchronized with each actual robot 210, all actual robots 210 are synchronized. This allows synchronization of multiple robots 210 with the virtual robot 210' and the individual robots 210, reducing the burden of creating the application program 52 for implementing synchronization. The application program 52 is a program for synchronized control of multiple robots, including the actual robots 210 and the virtual robot 210'.

[0069] <Note>

[0070] A control device (100) comprising:

[0071] A processing unit (30) configured to calculate a prescribed instruction value for synchronously controlling one or more robots (210) at each predetermined control cycle;

[0072] an output unit (60) that outputs the prescribed instruction value in each control cycle; and

[0073] a generating unit (35) for generating an output signal of a virtual robot that is virtually set in association with the synchronous control,

[0074] The processing unit (30) calculates the prescribed instruction value using the output signal of the virtual robot generated by the generating unit (35).

[0075] Label Description

[0076] 2: Field network; 6: Upper-level network; 10: Server device; 30: Control application processing unit; 32: Action processing unit; 35: Generation unit; 40: IEC program processing unit; 51: IEC program; 52: Application program; 100: Control device; 210: Robot; 210': Virtual robot; 220: Servo drive; 222: Motor.

Claims

1. A control device comprising: a processing unit configured to calculate a predetermined command value for synchronously controlling one or more robots at each predetermined control cycle; an output unit configured to output the predetermined command value in each control cycle; a generating unit that generates an output signal of a virtual robot that is virtually set in association with the synchronous control; an acquiring unit that acquires an output signal of one of the one or more robots when the one or more robots are synchronously controlled by executing a program; and a detection unit that detects that the one robot among the one or more robots is excluded from the synchronous control, The processing unit calculates the predetermined command value using the output signal of the virtual robot generated by the generating unit. The generating unit generates the output signal of the one robot acquired by the acquiring unit during the synchronous control that has been executed as the output signal of the virtual robot. When the detection unit detects the exclusion of the one robot, the processing unit continues to execute the program for controlling the one or more robots in a state where the one robot is excluded, and calculates the prescribed command value by using the output signal of the virtual robot.

2. The control device according to claim 1, wherein: The processing unit is configured to calculate the prescribed instruction value for each of the control cycles according to an intermediate code, the intermediate code being generated by executing a program that follows a prescribed execution method that is executed sequentially and interpreting at least a portion of the program by an interpreter, and the processing unit is further configured to execute a program that follows another execution method that is executed as a whole each time it is executed for each of the control cycles, and calculate other instruction values for controlling other controlled objects. The output unit outputs the predetermined command value calculated by the processing unit for synchronously controlling the one or more robots and the other control objects.

Citation Information

Patent Citations

  • CPU unit of PLC, system program for PLC and recording medium storing system program for PLC

    JP2012194662A

  • Control device

    JP2019036043A

  • Control device

    CN109388107A

  • Robot control device

    JP1998207517A