WO2021145124A1 - 制御装置 - Google Patents

制御装置 Download PDF

Info

Publication number
WO2021145124A1
WO2021145124A1 PCT/JP2020/046858 JP2020046858W WO2021145124A1 WO 2021145124 A1 WO2021145124 A1 WO 2021145124A1 JP 2020046858 W JP2020046858 W JP 2020046858W WO 2021145124 A1 WO2021145124 A1 WO 2021145124A1
Authority
WO
WIPO (PCT)
Prior art keywords
control
robot
processing unit
robots
program
Prior art date
Application number
PCT/JP2020/046858
Other languages
English (en)
French (fr)
Inventor
大谷 拓
大介 松永
Original Assignee
オムロン株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オムロン株式会社 filed Critical オムロン株式会社
Priority to US17/787,715 priority Critical patent/US20230022312A1/en
Priority to EP20913849.4A priority patent/EP4067016A4/en
Priority to CN202080089025.7A priority patent/CN114868091A/zh
Publication of WO2021145124A1 publication Critical patent/WO2021145124A1/ja

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1682Dual arm manipulator; Coordination of several manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the present invention relates to a control device for synchronously controlling a plurality of robots.
  • FA Vectory Automation
  • a control device such as a PLC (programmable controller)
  • PLC programmable controller
  • Such a control device not only directly controls the control target, but may also indirectly control the control target by giving a control command to another device.
  • Patent Document 2 discloses a technique for realizing a control operation according to a plurality of types of programs having different execution formats with a single control device.
  • a command value operation is performed for a program in which the entire program is executed for each control cycle and a program in which the entire program is executed sequentially according to an intermediate code generated by a part of interpretation.
  • a configuration is adopted in which each command value is output together for each control cycle.
  • a plurality of target robots are electrically connected to the control device, and communication is possible between each robot and the control device.
  • the program required for synchronous control of the plurality of robots is executed.
  • the transfer of control signals between the control device and each robot, which is generated by the execution of the program is preferably performed. If one of a plurality of robots is excluded for some purpose (for example, maintenance purpose) in such a control mode, the number of robots targeted in the program and the actual control device Since there is a discrepancy with the number of robots connected to, it is difficult to execute the program properly with the program before exclusion.
  • the number of robots in the program for synchronous control may be larger than the number of robots actually connected to the control device.
  • the present invention has been made in view of such a problem, and there is a case where the number of robots in the program for synchronous control of robots and the number of robots actually connected to the control device are different from each other.
  • the present invention uses a processing unit configured to be able to calculate a predetermined command value for synchronously controlling the one or more robots at a predetermined control cycle, and the predetermined command value.
  • a control device including an output unit that outputs each control cycle and a generation unit that generates an output signal of a virtual robot virtually set in connection with the synchronization control, and the processing unit is the generation unit.
  • the predetermined command value is calculated using the output signal of the virtual robot generated by the unit.
  • the above virtual robot is not an actual robot, but a virtual robot set on the synchronous control performed by the above control device. Therefore, even if there is a discrepancy between the number of robots in the program for synchronous control of robots and the number of robots actually connected to the control device, a predetermined command for synchronous control of the virtual robot is given. By incorporating it into the value calculation process, it is possible to eliminate the control inconvenience caused by the deviation. Therefore, in the control device configured as described above, it was decided to adopt a generation unit configured to generate an output signal of the virtual robot.
  • the above-mentioned control device 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.
  • the generation unit obtains the acquisition in the already executed synchronization control.
  • the output signal of the one robot acquired by the unit is generated as the output signal of the virtual robot, and when the detection unit detects the exclusion of the one robot, the processing unit generates the output signal of the virtual robot.
  • the "object" on the synchronous control does not actually exist.
  • the term “exclusion” as used herein means that the object is no longer controlled by the control device, and its purpose is irrelevant.
  • the “exclusion” includes, for example, a state in which the electrical connection with the control device is cut off, a state in which the robot itself fails and cannot operate, and the like. Due to the absence of such an object in synchronization control, even if a predetermined command value for synchronization control calculated on the premise of its existence is output by the output unit, synchronization control is not preferably performed, and as a result, synchronization control is not performed favorably. Control errors can occur. Therefore, the user has no choice but to modify the program for synchronous control in order to avoid the control error, and the workload is not small.
  • the processing unit when the detection unit detects exclusion from the synchronous control of one robot, the processing unit generates an output signal of the virtual robot generated by the generation unit for calculation of a predetermined command value.
  • the output signal of the virtual robot is the output signal of one robot acquired by the acquisition unit in the synchronous control executed in the past, that is, the synchronous control executed in the state where one robot is not excluded. be.
  • the virtual robot is a robot that can be identified with the excluded one robot, and therefore the output signal of the virtual robot can be identified with the output signal of one robot.
  • the processing unit can form a state in which one robot is not excluded, so that the execution of the program for synchronous control can be continued without causing a control error. It is possible to calculate a predetermined command value. As a result, it is possible to perform synchronous control on one or more robots including a virtual robot instead of one robot without modifying the program, and the workload of the user is reduced. Moreover, since the output signal of the virtual robot can be identified with the output signal of one robot, even if synchronous control is performed on one or more robots including the virtual robot instead of one robot, the individual robot Synchronous control can be continued without being affected by the difference, that is, without being affected by the difference between one robot and the virtual robot. This contributes to the maintenance of suitable synchronous control even when one robot is excluded.
  • the generation unit generates an output signal of the virtual robot that is distinguished from the one or more robots
  • the processing unit generates the output signal of the virtual robot.
  • the processing unit executes a program according to a predetermined execution format that is sequentially executed, and according to an intermediate code generated by interpreting at least a part of the program by an interpreter.
  • the predetermined command value can be calculated for each control cycle, and a program according to another execution format that is entirely executed for each execution is executed for each control cycle to execute another control target.
  • the output unit is configured to be able to calculate another command value for controlling the above-mentioned predetermined value calculated by the processing unit in order to synchronously control the one or more robots and the other control target.
  • the command value may be output. Since the control device has programs having different types of execution formats, the programs having different execution formats can be used, and the user can appropriately select and control a program suitable for controlling the robot or other controlled object. The convenience of the device is enhanced.
  • FIG. 1 is a schematic configuration diagram of a control system 1 to which the control device 100 is applied
  • FIG. 2 is an image of a functional unit formed in the control device 100.
  • the control device 100 corresponds to an industrial controller that controls a control target of various equipments and devices.
  • the control device 100 is a kind of computer that executes a control calculation as described later.
  • the control device 100 may be connected to various field devices via the field network 2.
  • Field equipment includes actuators that give some physical action to manufacturing equipment, production lines, etc. (hereinafter, also collectively referred to as "fields"), and input / output devices that exchange information with and from fields.
  • a robot 210, a servo driver 220, and a motor 222 are exemplified as field devices.
  • the servo driver 220 drives the motor 222 according to a command value (for example, a position command, a speed command, etc.) from the control device 100.
  • a command value for example, a position command, a speed command, etc.
  • the robot 210 examples include a parallel robot, a SCARA robot, and an articulated robot.
  • the control device 100 is a control device configured to be able to integrally control the robot 210, the servo driver 220, and the motor 222, and the details thereof will be described later. As shown in FIG. 1, the control device 100 may target only a plurality of robots 210, or may include the robot 210, the servo driver 220, and the motor 222 as control targets.
  • the control device 100 exchanges data with one or a plurality of field devices via the field network 2 or the like.
  • the "field network” is also referred to as a "field bus", but for the sake of simplicity of description, the term “field network” is collectively referred to in the present application.
  • the control device 100 collects data (hereinafter, also referred to as “input data”) collected or generated in various field devices (hereinafter, also referred to as “input data”), data such as a command to the field device (hereinafter, “output data”). (Also referred to as)) is generated (arithmetic processing), and the generated output data is transmitted to the target field device (output processing).
  • the field network 2 adopts a bus or network that performs constant periodic communication in which the arrival time of data is guaranteed.
  • EtherCAT registered trademark
  • the data exchanged between the control device 100 and the field device via the field network 2 is updated in a very short cycle of several hundred ⁇ sec order to several tens of msec order.
  • the data update process exchanged in this way is also referred to as an input / output refresh process.
  • the control device 100 is also connected to other devices via the upper network 6.
  • general network protocols such as Ethernet (registered trademark) and EtherNet / IP (registered trademark) may be adopted.
  • one or more server devices 10 may be connected to the upper network 6.
  • MES Manufacturing Execution System
  • the manufacturing execution system acquires information from the manufacturing equipment and facilities to be controlled, monitors and manages the entire production, and can also handle order information, quality information, shipping information, and the like.
  • a device that provides an information system service may be connected to the upper network 6.
  • the control device 100 is a kind of computer that executes a predetermined control calculation as described above, and includes a processor and a memory necessary for the control calculation.
  • the processor is composed of a CPU (Central Processing Unit), an MPU (Micro Processing Unit), a GPU (Graphics Processing Unit), and the like.
  • As the processor a configuration having a plurality of cores may be adopted, or a plurality of the processors may be arranged.
  • the memory includes a volatile storage device such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory), and a non-volatile storage device such as HDD (Hard Disk Drive) and SSD (Solid State Drive). Will be done.
  • the processor reads and executes various programs stored in the memory to realize control according to the control target and various processes as described later.
  • the memory stores user programs (IEC program 51 and application program 52) created according to the manufacturing equipment and equipment to be controlled.
  • the IEC program 51 in the present application is a program in which the entire program is scanned for each execution and one or a plurality of command values are calculated for each execution.
  • the International Electrotechnical Commission International Electrotechnical Commission: Includes a program consisting of one or more instructions written in accordance with the international standard IEC61131-3 specified by IEC).
  • the IEC program 51 includes sequence control and motion control instructions.
  • Such an IEC program 51 corresponds to an execution format in which all programs are executed (scanned) in each control cycle, and is suitable for control that requires immediacy and high speed.
  • the application program 52 in the present application is a control program for performing a specific machining or operation using a robot, and includes a program consisting of one or a plurality of instructions for realizing a control application by the robot, and IEC. Distinguished from program 51.
  • the application program 52 related to robot control adopts an interpreter method in which the application program 52 is described using a robot language and is sequentially executed line by line.
  • the control device 100 may be configured to control the robot using the IEC program 51.
  • the control device 100 has a control application processing unit 30, an IEC program processing unit 40, an upper network interface 20, and a lower network interface 60.
  • the lower network interface 60 mediates the exchange of data between the IEC program processing unit 40 and the control application processing unit 30 and the field equipment connected via the field network 2.
  • the upper network interface 20 mediates the exchange of data between the IEC program processing unit 40 and the control application processing unit 30 and the server device 10 connected via the upper network 6.
  • the control device 100 receives an instruction such as start / end of production from the server device 10 connected via the upper network 6.
  • the server device 10 may transmit an application program for operating the control application, recipe information (information such as parameters suitable for production), and the like to the control device 100.
  • the IEC program processing unit 40 executes (scans) the IEC program 51 at predetermined control cycles to calculate one or a plurality of command values. That is, the IEC program processing unit 40 calculates the command value for each control cycle according to the IEC program 51.
  • the IEC program 51 is executed in order to control a predetermined device including the motor 222.
  • the motion processing unit 42 provides a function of calculating a command value for each control cycle according to a motion command included in the IEC program 51. That is, the motion command included in the IEC program 51 includes a command for instructing the behavior over a plurality of control cycles (for example, a command for the output of a predetermined device composed of the motor 222 to draw some trajectory).
  • the motion processing unit 42 calculates a command value for each control cycle according to the instruction content of the executed motion command. That is, the motion processing unit 42 realizes the behavior instructed by the motion command by outputting the command value to the predetermined device for each control cycle.
  • the IEC program processing unit 40 has a shared memory 41.
  • the shared memory 41 a part or all of the processing result by the IEC program processing unit 40 is stored in the shared memory 41, and the control application processing unit 30 refers to the data stored in the shared memory 41 of the IEC program processing unit 40. can do. Further, it may be possible to write data 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 in this way is transmitted from the motion processing unit 42. It can be referred to.
  • the control application processing unit 30 calculates a command value for controlling the control application based on the application program 52, recipe information, and the like.
  • the control application processing unit 30 calculates and outputs a 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 executes 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 synchronous processing between the IEC program processing unit 40 and the control application processing unit 30 will be described later.
  • the control application processing unit 30 includes a motion processing unit 32, a buffer 33, an interpreter 34, and a generation unit 35. ..
  • the interpreter 34 has a buffer 33 that interprets at least a part of the sequential application program 52 to generate an intermediate code and stores the generated intermediate code.
  • the intermediate code in the present application is a concept including instructions for calculating a command value for each control cycle, and may include one or more instructions, or one or more functions.
  • the motion processing unit 32 calculates the command value for each control cycle according to the intermediate code generated in advance by the interpreter 34 and stored in the buffer 33.
  • the processing unit 32 can calculate the command value for each control cycle.
  • the coordinate system corresponding to each control application may be used for the instruction described in the intermediate code.
  • the number of robots 210 that are driven and controlled by the control application processing unit 30 is not limited to one, and a plurality of robots 210 can be controlled.
  • the motion processing unit 32 can also synchronously control the plurality of robots 210.
  • the details of the synchronization control will be described later.
  • the generation unit 35 is a functional unit that generates an output signal of a virtual robot virtually set in relation to synchronous control between the robots 210 and synchronous control between the robot 210 and the servo driver 220 and the like. That is, the generation unit 35 is a functional unit that virtually generates an output signal of the robot for synchronous control by the control device 100 even though the robot does not actually exist.
  • ⁇ Synchronous execution of programs> In the control device 100, synchronous execution of the IEC program 51 and the application program 52 is realized. By synchronously executing these programs, the robot 210 and the servo driver 220 and the like are synchronously controlled.
  • the interpreter 34 of the control application processing unit 30 sequentially executes the application program 52 at a cycle longer than the control cycle, for example, a cycle equal to 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 the same control cycle. Therefore, the output of the command value from the control device 100 is performed synchronously in a predetermined control cycle.
  • the IEC program processing unit 40 and the control application processing unit 30 each have a motion processing unit for continuously controlling the movement of the actuator, and these motion processing units synchronously output command values.
  • both the control according to the IEC program 51 and the control according to the application program 52 can be executed in synchronization with the control cycle, whereby precise control in the control cycle unit is realized.
  • FIG. 3 is a diagram showing an example of program execution timing in the control device 100.
  • a high-priority task (upper process in FIG. 3) and a low-priority task (lower process in FIG. 3) have a high priority.
  • the execution of the lower network interface 60, the IEC program processing unit 40 and its motion processing unit 42, and the execution of the motion processing unit 32 of the control application processing unit 30 are set as high-priority tasks, and the control application processing is performed.
  • the execution of the interpreter 34 of the unit 30 is set as a low priority task.
  • the command value calculation process B32 to be performed is executed as a high priority task.
  • the process B34 that sequentially interprets the application program 52 is executed as a low priority task.
  • the high priority task is repeatedly executed every predetermined control cycle T1.
  • the low priority task is executed each time the high priority task is not executed within each control cycle. That is, the execution time of the high-priority task is assigned to each control cycle, and the low-priority task is executed at a time other than the execution time of the high-priority task.
  • the high priority task will be described.
  • the input / output refresh process B60 is executed, and then the entire IEC program 51 is executed (scanned) by the IEC program processing unit 40, and the sequence control is performed.
  • One or more command values of (execution process B40) are calculated.
  • the motion processing unit 42 executes the motion processing related to the motion instruction included in the IEC program 51, and calculates one or a plurality of command values for the motion instruction (execution processing B42).
  • the motion processing unit 32 of the control application processing unit 30 prepares a motion command for controlling the robot 210 according to the intermediate code stored in the buffer 33 (execution process B32).
  • the same processing is repeated for each control cycle.
  • the timing at which the motion processing unit 32 reads the intermediate code from the buffer 33 does not have to be each control cycle. This is because when the read intermediate code includes an instruction capable of calculating a command value over a plurality of control cycles T1, the intermediate code can be read at once in the plurality of control cycles T1.
  • the command value for the sequence control related to the motor 222 and the like, the command value for the motion control thereof, and the command value for the control application related to the robot 210 are set. Be prepared. These command values are basically reflected on the field side when the next control cycle arrives. That is, since the IEC program processing unit 40 and the control application processing unit 30 calculate the command value according to the input data in the same control cycle, it is possible to realize an output synchronized with the input.
  • the interpreter 34 of the control application processing unit 30 sequentially executes the application program 52. That is, the interpreter 34 executes the reading and analysis of the application program 52 with low priority.
  • the intermediate code generated by the interpreter 34 analyzing the application program 52 is sequentially stored in the buffer 33 while considering the capacity of the buffer 33.
  • the intermediate code stored in the buffer 33 is sequentially referred to by the motion processing unit 32 of the control application processing unit 30, and is used for generating the command value in the arithmetic processing B32.
  • the interpreter 34 generates an extra intermediate code for an integral multiple of the control cycle, which is the calculation cycle of the high priority task, in advance so as not to affect the processing by the motion processing unit 32.
  • the command value for the control application can be calculated for each control cycle.
  • the interpreter 34 suspends the interpretation of the application program 52 before the predetermined control application synchronization cycle (integer multiple of the control cycle) arrives.
  • the interpreter 34 updates the data shared with the IEC program processing unit 40 every synchronization cycle.
  • the input data and the output data acquired from the field side may also be updated (data synchronization).
  • the control application processing unit 30 can also control the robot 210 by using the data acquired by the IEC program processing unit 40.
  • the control application synchronization cycle may be of any length as long as it is set to an integral multiple of the control cycle. It is appropriately set according to the control accuracy required in the control application.
  • synchronous control is possible between the plurality of robots 210.
  • synchronous control can be performed between the three robots 210.
  • the motion processing unit 32 of the control application processing unit 30 causes the robot 210 to follow the intermediate code stored in the buffer 33.
  • the motion command for control is calculated.
  • the intermediate code is a code for synchronously controlling a plurality of robots 210, and as a result, the calculated motion command also realizes the synchronous control of the plurality of robots 210.
  • Synchronous control is performed between the robot 210 and the servo driver 220 or the like (that is, when the IEC program 51 and the application program 52 are synchronously executed), or synchronous control is performed between the robots 210.
  • one robot 210 included in the synchronous control may be excluded from the synchronous control for some purpose. For example, a case where one robot 210 is disconnected from the control device 100 for maintenance purposes can be exemplified.
  • FIGS. 4 to 6 represent the processes corresponding to the case where one robot 210 is excluded from the synchronous control when the robot 210 and the servo driver 220 or the like are performing synchronous control.
  • FIG. 4 is a flowchart relating to the processing of the high priority task described above
  • FIG. 5 is a flowchart relating to the processing of the low priority task described above
  • FIG. 6 is a flowchart relating to the exclusion correspondence from the synchronous control of one robot 210.
  • the lower network interface 60 executes the input / output refresh process (process of S101).
  • the command value (command value by B40, B42, B32, etc.) calculated in the immediately preceding control cycle T1 is output to the actuator or the like of the field device, and the input data from the field device is acquired.
  • S102 it is determined whether or not the current control cycle coincides with the timing of data synchronization. If an affirmative determination is made there, data synchronization is executed between the IEC program processing unit 40 and the control application processing unit 30 (processing of S103). If a negative determination is made in S102, the process proceeds to S104.
  • the above-mentioned execution process B40 is performed, and then in S105, the above-mentioned execution process B42 is performed.
  • the above-mentioned robot execution process B32 for preparing a motion command for controlling the robot 210 is performed.
  • the robot execution process B32 if one robot 210 is not excluded from the synchronous control, the application program 52 is executed as it is.
  • the synchronization control is performed in such a way that the processing by the generation unit 35 interferes with the application program 52 by the exclusion handling process shown in FIG. 6, which will be described later. Will be interfered with.
  • the command value calculated and prepared by the series of processing of the high priority task shown in FIG. 4 is output to the field when the next control cycle T1 arrives. Then, the low priority task shown in FIG. 5 is executed in the period after the end of the series of processes until the next control cycle T1 arrives.
  • the processing flow of the low priority task relates to the interpretation process of the application program 52 by the interpreter 34.
  • the control application processing unit 30 determines whether or not the intermediate code remains in the buffer 33. The determination is made so as not to generate an intermediate code exceeding the capacity of the buffer 33. If the affirmative judgment is made in S201, the low priority task ends, and if the negative judgment is made, the process proceeds to S202.
  • S202 a part of the application program 52 is read by the interpreter 34. For example, one line of code constituting the application program 52 is read.
  • S203 the code read by the interpreter 34 is interpreted and an intermediate code is generated. The generated intermediate code is stored in the buffer 33 in S204.
  • the IEC program 51 and the application program 52 are executed in the control device 100 at the execution timing shown in FIG.
  • the IEC program 51 and the application program 52 are executed in the control device 100 at the execution timing shown in FIG.
  • the application program 52 is executed.
  • the robot execution process B32 for synchronous control is performed in a state where S104 and S105 are omitted in the high priority task process.
  • exclusion correspondence processing a process related to exclusion correspondence from synchronous control of one robot 210 (exclusion correspondence processing) will be described.
  • the exclusion handling process is executed by the control application processing unit 30 as a part of the high priority task and the low priority task.
  • S301 it is determined whether or not it is detected that one robot 210 is excluded from the target of synchronous control.
  • synchronous control is performed between the robot 210 and the servo driver 220 or the like, or when synchronous control is performed between a plurality of robots 210, one robot 210 included therein is included.
  • the output of the robot 210 referred to here means an output signal from the robot 210 required for synchronous control during a period in which the application program 52 executes everything from the beginning to the end of the program.
  • the robot 210 has a plurality of drive joints, and when a signal relating to the position, speed, etc. of the actuators constituting the drive joint is used for feedback processing in synchronous control, the signal is the signal. It is used as an output signal of the robot 210. If a negative determination is made in S302, the output signal of the robot 210 is acquired in S303.
  • the output signal of each robot 210 is acquired, and when only one robot 210 is involved in the synchronous control, the robot 210 The output signal is acquired.
  • the acquired output signal of the robot 210 is stored in a memory (not shown) of the control application processing unit 30. If an affirmative determination is made in S302, the exclusion processing is terminated.
  • S304 when the exclusion of one robot 210 is detected, the output signal of the robot 210 excluded from the synchronous control is read from the output signals of the robot 210 acquired by the above-mentioned processing of S303. The output signal is read by the generation unit 35.
  • the generation unit 35 outputs the output of the excluded robot 210 read in S304, that is, the output of the robot 210 that was actually synchronously controlled before, to the virtual robot in accordance with the progress of the high priority task. Is passed to the robot execution process B32 as the output of.
  • the generation unit 35 uses the acquired output signal to generate an output signal as if the one robot 210 exists. It means to generate, that is, to generate the output of the virtual robot.
  • the application program 52 that realizes the initial synchronous control including the one robot 210 continues to be executed without any special modification. Will be.
  • the motion processing unit 32 can continue the calculation of the motion command for the robot 210 for performing the synchronization control as before the exclusion of one robot 210.
  • the generation unit 35 generates the output signal of the virtual robot by using the output signal of one robot 210 that actually existed. Therefore, even if the motion processing unit 32 calculates the motion command using the output signal of the virtual robot, the command calculation that realizes the synchronous control with the same accuracy as before the one robot 210 is excluded can be performed. It will be possible.
  • the generation unit 35 serves as a reference for the synchronous control.
  • the output signal of the virtual robot 210' can be generated.
  • FIG. 7 when the virtual robot 210'and each of the actual robots 210 are synchronously controlled, as a result, all of the actual robots 210 are synchronously controlled.
  • the application program 52 is a program for synchronously controlling a plurality of actual robots 210 and robots including the virtual robot 210'.
  • a processing unit (30) configured to be able to calculate a predetermined command value for synchronously controlling one or more robots (210) at a predetermined control cycle, and a processing unit (30).
  • An output unit (60) that outputs the predetermined command value for each control cycle, and
  • a generation unit (35) that generates an output signal of a virtual robot that is virtually set in connection with the synchronization control, and a generation unit (35).
  • the processing unit (30) calculates the predetermined command value using the output signal of the virtual robot generated by the generation unit (35).

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Manipulator (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)

Abstract

予め定められた制御周期毎に一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、所定の指令値を制御周期毎に出力する出力部と、同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、を備える制御装置であって、処理部は、生成部により生成される仮想ロボットの出力信号を用いて、所定の指令値を演算する。

Description

制御装置
 本発明は、複数のロボットを同期制御するための制御装置に関する。
 様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置は、直接的に制御対象を制御するだけではなく、他の装置に制御指令を与えることで、間接的に制御対象を制御する場合もある。また、これまで複数の専用装置を用いて実現されていた制御システムを、より少ない数の制御装置に統合したいというニーズも生じている。例えば、特許文献1に示す技術では、PLCのCPUユニットにおいて、モーション演算プログラムおよびユーザプログラムが同期して実行される。
 また、特許文献2では、実行形式の異なる複数種類のプログラムに従う制御演算を単一の制御装置で実現する技術が開示されている。当該技術では、例えば、制御周期毎にプログラム全体が実行される形式のプログラムと、一部の解釈により生成される中間コードに従って逐次実行される形式のプログラムとに関して、それぞれの指令値演算を行い、制御周期毎に各指令値を併せて出力する構成が採用されている。
特開2012-194662号公報 特開2019-36043号公報
 一般に、複数のロボットを一台の制御装置で同期制御するためには、その制御装置に対象となる複数のロボットが電気的に接続され、各ロボットと制御装置との間に通信が可能となる状態で、その複数のロボットの同期制御に必要なプログラムが実行される。このようにすることで、当該プログラムの実行によって生じる、制御装置と各ロボットとの間の制御信号の授受が好適に行われる。仮に、このような制御形態において、複数のロボットのうち一のロボットが何らかの目的で(例えば、メンテナンスの目的等)除外されてしまうと、プログラムにおいて対象とされるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じるため、除外前のプログラムのままではその好適な実行が難しい。
 また、上記とは異なる状況においても、同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合がある。例えば、プログラムにおいて対象とされるロボットの数が、実際に制御装置に接続されるロボットの数よりも多くなる場合があり得る。
 本発明は、このような問題に鑑みてなされたものであり、ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、ロボットの同期制御を好適に実現するための技術を提供することを目的とする。
 本発明においては、上記課題を解決するために、一又は複数のロボットの同期制御を行う制御装置において、同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する構成を採用した。当該構成の採用により、ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じていても、そのずれに起因する制御上の不都合を解消することができる。
 具体的に、本発明は、予め定められた制御周期毎に前記一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、前記所定の指令値を前記制御周期毎に出力する出力部と、前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、を備える制御装置であって、前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算する。
 上記の仮想ロボットは、実際のロボットではなく、上記制御装置によって行われる同期制御上で設定される、仮想的なロボットである。したがって、仮にロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、仮想ロボットを同期制御のための所定の指令値の演算処理に組み込むことでそのずれに起因する制御上の不都合を解消することができる。そこで、上記のように構成される制御装置では、仮想ロボットの出力信号を生成するように構成された生成部を採用することとした。
 より詳細な第1の形態として、上記の制御装置が、プログラムの実行により前記一又は複数のロボットが同期制御されているとき該一又は複数のロボットのうち一のロボットの出力信号を取得する取得部と、前記一又は複数のロボットのうち前記一のロボットが前記同期制御から除外されたことを検知する検知部と、を更に備える場合、前記生成部は、既に実行された同期制御において前記取得部により取得された前記一のロボットの出力信号を前記仮想ロボットの出力信号として生成し、前記検知部により前記一のロボットの除外が検知されると、前記処理部は、前記仮想ロボットの出力信号を用いることで、該一のロボットが除外された状態で前記一又は複数のロボットを制御するための前記プログラムの実行を継続させ前記所定の指令値を演算してもよい。
 上記のような形態において、同期制御の対象である一又は複数のロボットのうち一のロボットがその同期制御から除外されてしまうと、当該同期制御上の「対象物」が実在しなくなる。ここで言う「除外」とは、制御装置による制御対象でなくなることを意味し、その目的は不問である。「除外」には、例えば、制御装置との電気的な接続が遮断された状態や、ロボットそのものに障害が生じ稼働が出来なくなった状態等が含まれる。このような同期制御上の対象物の不在により、その実在を前提として算出される同期制御のための所定の指令値が出力部によって出力されたとしても同期制御が好適に行われなくなり、結果として制御上のエラーが生じ得る。したがって、ユーザは当該制御上のエラーを回避するために、同期制御のためのプログラムを修正せざるを得ず、その作業負荷は小さくはない。
 そこで、上述したように、検知部により一のロボットの同期制御からの除外が検知されると、処理部は、所定の指令値の演算のために、生成部により生成される仮想ロボットの出力信号を利用する。このとき、仮想ロボットの出力信号は、過去に実行された同期制御、すなわち、一のロボットが除外されていない状態で実行された同期制御において、取得部により取得された一のロボットの出力信号である。換言すれば、仮想ロボットは、除外された一のロボットと同一視できるロボットであり、したがって仮想ロボットの出力信号は一のロボットの出力信号と同一視できる。したがって、処理部が仮想ロボットの出力信号を利用することで、あたかも一のロボットが除外されていない状態を形成できるため、制御上のエラーが生じることなく同期制御のためのプログラムの実行が継続でき所定の指令値の演算が可能となる。この結果、プログラムを修正することなく、一のロボットに代えて仮想ロボットを含めた一又は複数のロボットに対して同期制御を施すことが可能となり、ユーザの作業負荷が軽減される。また、仮想ロボットの出力信号は一のロボットの出力信号と同一視できるため、一のロボットに代えて仮想ロボットを含めた一又は複数のロボットに対して同期制御を施した場合でも、ロボットの個体差に影響されずに、すなわち一のロボットと仮想ロボットとの違いに影響されずに、同期制御が継続できる。このことは、一のロボットが除外された場合でも好適な同期制御の維持に資する。
 また、詳細な第2の形態として、上記の制御装置において、前記生成部は、前記一又は複数のロボットとは区別される前記仮想ロボットの出力信号を生成し、前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、該仮想ロボットの動作と前記一又は複数のロボットのそれぞれの動作とが同期する形で、該一又は複数のロボットを同期制御するための前記所定の指令値を演算してもよい。当該形態は、制御上のロボットの数が、実際に制御装置に接続されるロボットの数よりも多い場合に相当する。複数のロボットの同期制御を実現するために、仮想ロボットがその同期制御の基準となる。このように基準として仮想ロボットを制御上設定することで、同期制御のためのプログラム作成が容易となり得る。
 ここで、上述までの制御装置において、前記処理部は、逐次実行される所定の実行形式に従ったプログラムを実行してインタプリタにより該プログラムの少なくとも一部が解釈されて生成される中間コードに従って、前記制御周期毎に前記所定の指令値を演算可能に構成され、更に、前記制御周期毎に、実行毎に全体が実行される他の実行形式に従ったプログラムを実行して、他の制御対象を制御するための他の指令値を演算可能に構成され、前記出力部は、前記一又は複数のロボット及び前記他の制御対象を同期制御するために、前記処理部により演算された前記所定の指令値を出力してもよい。このように制御装置が、実行形式の種類が異なるプログラムを有することで、その異なる実行形式のプログラムが利用可能となり、ユーザは、ロボットや他の制御対象の制御に適したプログラムを適宜選択でき制御装置の利便性が高められる。
 ロボットの同期制御のためのプログラムにおけるロボットの数と、実際に制御装置に接続されるロボットの数とにずれが生じる場合であっても、ロボットの同期制御を好適に実現し得る。
統合コントローラを含む制御システムの概略構成を示す図である。 統合コントローラの機能をイメージ化した機能ブロック図である。 統合コントローラで制御周期に従って実行される処理の流れを示す図である。 統合コントローラで実行されるロボット制御に関する第1のフローチャートである。 統合コントローラで実行されるロボット制御に関する第2のフローチャートである。 統合コントローラで実行されるロボット制御に関する第3のフローチャートである。 ロボット間の同期制御を説明するための図である。
<適用例>
 実施形態に係る制御装置の適用例について、図1及び図2に基づいて説明する。図1は、当該制御装置100が適用される制御システム1の概略構成図であり、図2は、制御装置100に形成される機能部をイメージ化した図である。
 制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータである。制御装置100は、フィールドネットワーク2を介して各種のフィールド機器と接続されてもよい。フィールド機器は、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報をやり取りする入出力装置などを含み、図1においては、フィールド機器として、ロボット210や、サーボドライバ220及びモータ222が例示されている。サーボドライバ220は、制御装置100からの指令値(例えば、位置指令や速度指令など)に従って、モータ222を駆動する。また、ロボット210としては、パラレルロボット、スカラロボット、多関節ロボットが例示できる。このように制御装置100は、ロボット210やサーボドライバ220及びモータ222を統合的に制御し得るように構成された制御装置であり、その詳細については後述する。図1に示すように、制御装置100は、複数のロボット210だけを制御対象としてもよく、ロボット210と、サーボドライバ220及びモータ222とを交えて制御対象としてもよい。
 制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールド機器との間でデータをやり取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、本願においては、「フィールドネットワーク」と総称する。制御装置100は、各種のフィールド機器において収集または生成されたデータ(以下、「入力データ」とも称す。)を収集する処理(入力処理)、フィールド機器に対する指令などのデータ(以下、「出力データ」とも称す。)を生成する処理(演算処理)、生成した出力データを対象のフィールド機器へ送信する処理(出力処理)等を行う。
 ここで、フィールドネットワーク2は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)等が知られている。そして、フィールドネットワーク2を介して、制御装置100とフィールド機器との間でやり取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このようなやり取りされるデータの更新処理は、入出力リフレッシュ処理とも称される。
 また、制御装置100は、上位ネットワーク6を介して、他の装置にも接続されている。上位ネットワーク6には、一般的なネットワークプロトコルであるイーサネット(登録商標)やEtherNet/IP(登録商標)が採用されてもよい。より具体的には、上位ネットワーク6には、1または複数のサーバ装置10が接続されてもよい。サーバ装置10としては、データベースシステム、製造実行システム(MES:Manufacturing Execution System)などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク6に接続するようにしてもよい。
 ここで、図2に基づいて、制御装置100の構成について説明する。制御装置100は、上記の通り所定の制御演算を実行する一種のコンピュータであり、当該制御演算に必要なプロセッサやメモリを備えている。当該プロセッサは、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。プロセッサとしては、複数のコアを有する構成を採用してもよいし、当該プロセッサを複数配置してもよい。当該メモリとしては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置や、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。そして、プロセッサは、メモリに格納された各種プログラムを読出して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。メモリには、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラム(IECプログラム51およびアプリケーションプログラム52)が格納される。
 なお、本願におけるIECプログラム51とは、実行毎に全体がスキャンされて、実行毎に1または複数の指令値が演算されるプログラムであり、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131-3に従って記述された1または複数の命令からなるプログラムを包含する。IECプログラム51には、シーケンス制御およびモーション制御の命令が含まれる。このようなIECプログラム51は、制御周期毎にすべてのプログラムが実行(スキャン)される実行形式に対応するものであり、即時性および高速性が要求される制御に好適である。一方で、本願におけるアプリケーションプログラム52は、ロボットを用いて特定の加工や動作を行うための制御プログラムであり、ロボットによる制御アプリケーションを実現するための1または複数の命令からなるプログラムを包含し、IECプログラム51とは区別される。ロボット制御に関するアプリケーションプログラム52は、一例として、ロボット言語を用いて記述され、1行ずつ逐次実行されるインタプリタ方式が採用される。なお、制御装置100は、IECプログラム51を用いてロボットを制御するように構成されても構わない。
 そして、図2に示すように、制御装置100は、制御アプリケーション処理部30と、IECプログラム処理部40と、上位ネットワークインターフェイス20と、下位ネットワークインターフェイス60と、を有する。下位ネットワークインターフェイス60は、IECプログラム処理部40および制御アプリケーション処理部30と、フィールドネットワーク2を介して接続されているフィールド機器との間のデータのやり取りを仲介する。上位ネットワークインターフェイス20は、IECプログラム処理部40および制御アプリケーション処理部30と、上位ネットワーク6を介して接続されているサーバ装置10との間のデータのやり取りを仲介する。例えば、制御装置100は、上位ネットワーク6を介して接続されているサーバ装置10から、生産の開始/終了といった指示を受ける。サーバ装置10は、制御アプリケーションを動作させるためのアプリケーションプログラムおよびレシピ情報(生産に適したパラメータなどの情報)などを制御装置100に送信することもある。
 IECプログラム処理部40は、予め定められた制御周期毎にIECプログラム51を実行(スキャン)して1または複数の指令値を演算する。すなわち、IECプログラム処理部40は、IECプログラム51に従って、制御周期毎に指令値を演算する。なお、本願では、モータ222を含んで構成される所定の装置を制御するためにIECプログラム51の実行が行われるものとする。そして、モーション処理部42は、IECプログラム51に含まれるモーション命令に従って、制御周期毎に指令値を演算する機能を提供する。すなわち、IECプログラム51に含まれるモーション命令は、複数の制御周期に亘る挙動を指示する命令(例えば、モータ222で構成される所定の装置の出力が何らかの軌道を描くための命令)を含む。このようなモーション命令が実行されると、実行されたモーション命令の指示内容に従って、モーション処理部42が制御周期毎に指令値を演算する。すなわち、モーション処理部42は、上記の所定の装置に対して制御周期毎に指令値を出力することで、モーション命令により指示された挙動を実現する。
 また、IECプログラム処理部40は、共有メモリ41を有している。共有メモリ41には、IECプログラム処理部40による処理結果の一部または全部が共有メモリ41に格納され、制御アプリケーション処理部30は、IECプログラム処理部40の共有メモリ41に格納されたデータを参照することができる。また、制御アプリケーション処理部30からIECプログラム処理部40の共有メモリ41へのデータ書込みも可能であってもよく、このように制御アプリケーション処理部30から書込まれたデータは、モーション処理部42から参照可能とされる。
 次に、制御アプリケーション処理部30は、アプリケーションプログラム52およびレシピ情報などに基づいて、制御アプリケーションを制御するための指令値を演算する。なお、本願では、ロボット210を制御するためにアプリケーションプログラム52が制御アプリケーション処理部30によって実行されるものとする。制御アプリケーション処理部30は、IECプログラム処理部40による指令値の演算および出力と同期して、制御アプリケーション用の指令値を演算および出力する。すなわち、制御アプリケーション処理部30は、IECプログラム処理部40による演算処理と同期して、ロボット210を制御するための指令値の演算処理を実行する。なお、このIECプログラム処理部40と制御アプリケーション処理部30の同期処理については、後述する。IECプログラム処理部40による指令値の演算処理と同期した指令値の演算を実現するために、制御アプリケーション処理部30は、モーション処理部32と、バッファ33と、インタプリタ34、生成部35とを含む。
 インタプリタ34は、逐次アプリケーションプログラム52の少なくとも一部を解釈して中間コードを生成するとともに、生成した中間コードを格納するバッファ33を有する。本願における中間コードは、制御周期毎に指令値を演算するための命令を包含する概念であり、1または複数の命令、あるいは、1または複数の関数を含んでもよい。そして、モーション処理部32は、インタプリタ34が事前に生成しバッファ33に格納されている中間コードに従って、制御周期毎に指令値を演算する。一般的に、アプリケーションプログラム52に記述される命令(コード)は、逐次実行されるために、指令値の演算周期を保証できないが、本願開示では、このように中間コードを利用することで、モーション処理部32は、制御周期毎に指令値を演算できるようになる。中間コードにおいて記述される命令には、各制御アプリケーションに応じた座標系が用いられてもよい。
 ここで、制御アプリケーション処理部30によって駆動制御されるロボット210は一台に限られず、複数台のロボット210が制御され得る。そして、モーション処理部32は、その複数台のロボット210同士を同期制御することも可能である。その同期制御の詳細については、後述する。また、生成部35は、そのロボット210間の同期制御や、ロボット210とサーボドライバ220等との同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する機能部である。すなわち、生成部35は、実際にはロボットが実在していないにもかかわらず、制御装置100による同期制御のために仮想的にロボットの出力信号を生成する機能部である。
 <プログラムの同期実行>
 制御装置100においては、IECプログラム51とアプリケーションプログラム52の同期実行が実現される。これらのプログラムが同期実行されることで、ロボット210とサーボドライバ220等とが同期制御されることになる。制御アプリケーション処理部30のインタプリタ34は、制御周期より長い周期、例えば、制御周期の2倍分の周期毎にアプリケーションプログラム52を逐次実行する。ただし、IECプログラム処理部40のモーション処理部42および制御アプリケーション処理部30のモーション処理部32は、いずれも同一の制御周期毎に指令値を演算する。したがって、制御装置100からの指令値の出力は、いずれも予め定められた制御周期で同期して行われる。このように、IECプログラム処理部40および制御アプリケーション処理部30は、アクチュエータの動きを連続的に制御するためのモーション処理部をそれぞれ有しており、これらのモーション処理部が同期して指令値を演算することで、IECプログラム51に従う制御およびアプリケーションプログラム52に従う制御の両方を制御周期と同期させて実行することができ、これによって制御周期単位での精密な制御が実現される。
 次に、制御装置100におけるIECプログラム51およびアプリケーションプログラム52の実行タイミングの詳細について、図3に基づいて説明する。図3は、制御装置100におけるプログラムの実行タイミングの一例を示す図である。なお、制御装置100においては、プロセッサのリソースを考慮して、優先度が高い高優先度タスク(図3中の上段の処理)と優先度が低い低優先度タスク(図3中の下段の処理)が設定されている。具体的には、下位ネットワークインターフェイス60、IECプログラム処理部40とそのモーション処理部42の実行、および制御アプリケーション処理部30のモーション処理部32の実行は、高優先度タスクとして設定され、制御アプリケーション処理部30のインタプリタ34の実行は低優先度タスクとして設定されている。
 すなわち、下位ネットワークインターフェイス60に関連する入出力リフレッシュ処理B60、IECプログラム51の実行処理B40、IECプログラム51に従ってモーション処理部42によって行われる指令値の演算処理B42、アプリケーションプログラム52に従ってモーション処理部32によって行われる指令値の演算処理B32は、高優先度タスクとして実行される。一方、アプリケーションプログラム52を逐次解釈する処理B34は、低優先度タスクとして実行される。
 ここで、高優先度タスクは、予め定められた制御周期T1毎に繰返し実行される。低優先度タスクは、各制御周期内で高優先度タスクが実行されていない期間に都度実行される。すなわち、制御周期毎に、高優先度タスクの実行時間が割当てられ、高優先度タスクの実行時間以外の時間において、低優先度タスクが実行される。
 まず、高優先度タスクについて説明すると、各制御周期が到来すると、入出力リフレッシュ処理B60が実行された後、IECプログラム処理部40によりIECプログラム51の全体が実行(スキャン)されて、シーケンス制御についての1または複数の指令値が演算される(実行処理B40)。併せて、モーション処理部42によりIECプログラム51に含まれるモーション命令に関するモーション処理が実行されて、モーション命令についての1または複数の指令値が演算される(実行処理B42)。さらに、制御アプリケーション処理部30のモーション処理部32により、バッファ33に格納されている中間コードに従ってロボット210の制御用のモーション指令が準備される(実行処理B32)。以下、同様の処理が制御周期毎に繰返される。なお、モーション処理部32がバッファ33から中間コードを読み出すタイミングは、各制御周期でなくともよい。これは、読み出された中間コードは、複数の制御周期T1にわたって指令値を演算できるだけの命令を含む場合、その複数の制御周期T1においては中間コードの読み出しを一度で行える。
 このように、ある制御周期における高優先度タスクの実行が完了すると、モータ222等に関するシーケンス制御についての指令値及びそのモーション制御についての指令値と、ロボット210に関する制御アプリケーションについての指令値のセットが用意される。これらの指令値は、基本的には、次の制御周期が到来すると、フィールド側に反映される。すなわち、IECプログラム処理部40および制御アプリケーション処理部30は、同一の制御周期で入力データに応じた指令値を演算するので、入力に同期した出力を実現できる。
 一方、低優先度タスクについては、制御アプリケーション処理部30のインタプリタ34は、アプリケーションプログラム52を逐次実行する。すなわち、インタプリタ34は、アプリケーションプログラム52の読込みおよび解析を低優先度で実行する。インタプリタ34がアプリケーションプログラム52を解析処理して生成された中間コードは、バッファ33の容量を考慮しながら、逐次、バッファ33に格納される。バッファ33に格納された中間コードは、制御アプリケーション処理部30のモーション処理部32により順次参照されて、演算処理B32での指令値の生成に用いられる。このとき、インタプリタ34は、高優先度タスクの演算周期である制御周期の整数倍分の中間コードを事前に余分に生成しておくことで、モーション処理部32による処理に影響を与えることなく、制御アプリケーションに対する指令値を制御周期毎に演算できる。
 また、インタプリタ34は、予め定められた制御アプリケーション同期周期(制御周期の整数倍)が到来する前に、アプリケーションプログラム52の解釈を一時停止する。その一時停止したタイミングで、IECプログラム処理部40と制御アプリケーション処理部30との間でデータ同期を行うことで、双方に整合性をもつデータを共有する。このように、インタプリタ34は、同期周期毎に、IECプログラム処理部40との間で共有するデータを更新する。共有データの更新に併せて、フィールド側から取得される入力データおよび出力データについても更新(データ同期)するようにしてもよい。これにより、制御アプリケーション処理部30側でも、IECプログラム処理部40で取得されたデータを利用してロボット210の制御が可能となる。制御アプリケーション同期周期は、制御周期の整数倍に設定されれば、どのような長さであってもよい。制御アプリケーションにおいて要求される制御の精度などに応じて、適宜設定される。
 図1に示すように、制御装置100の制御対象として複数台のロボット210が制御装置100に接続されている場合、その複数台のロボット210間でも同期制御が可能とされる。例えば、制御装置100に3台のロボット210のみが接続されているときに、この3台のロボット210間で同期制御を行い得る。このときは、高優先度タスクとして、制御周期T1において入出力リフレッシュ処理B60が実行された後に、制御アプリケーション処理部30のモーション処理部32により、バッファ33に格納されている中間コードに従ってロボット210の制御用のモーション指令が演算される。当該中間コードは、複数台のロボット210を同期制御するためのコードとなっており、その結果、算出されたモーション指令も複数台のロボット210の同期制御を実現するものである。
 <第1の形態>
 ここで、生成部35の第1の形態について説明する。ロボット210とサーボドライバ220等との間で同期制御を行っている場合(すなわち、IECプログラム51とアプリケーションプログラム52とが同期実行されている場合)、又は、ロボット210同士で同期制御を行っている場合(すなわち、アプリケーションプログラム52内において同期制御が行われている場合)において、何らかの目的のために、当該同期制御に含まれる一のロボット210がその同期制御から除外される場合がある。例えば、一のロボット210が、メンテナンス目的で制御装置100との接続が切られてしまう場合等が例示できる。このように一のロボット210が同期制御から除外されてしまうと、同期制御において実在する制御対象が存在しなくなるため、それまで実行されていたアプリケーションプログラム52や同期実行されていたIECプログラム51の実行を継続することが難しくなる。同期実行を継続させるためには、一のロボット210が除外されたことを各プログラムに反映させる修正を行う必要があり、ユーザの作業負荷が小さくない。
 そこで、このような場合でもユーザに特段の作業負荷を掛けずに済むように、図4~図6の処理が行われる。なお、図4~図6の処理は、ロボット210とサーボドライバ220等との間で同期制御を行っていた場合において、一のロボット210が同期制御から除外された場合に対応する処理を表している。図4は、上述した高優先度タスクの処理に関するフローチャートであり、図5は、上述した低優先度タスクの処理に関するフローチャートである。また、図6は、一のロボット210の同期制御からの除外対応に関するフローチャートである。
 先ず、図4に基づいて、高優先度タスクの処理の流れについて説明する。制御周期T1が到来すると、下位ネットワークインターフェイス60が入出力リフレッシュ処理を実行する(S101の処理)。これによって、直前の制御周期T1において演算された指令値(B40、B42、B32等による指令値)がフィールド機器のアクチュエータ等へ出力されるとともに、フィールド機器からの入力データが取得される。続いて、S102において、今回の制御周期がデータ同期のタイミングと一致するか否かが判定される。そこで肯定判定されると、IECプログラム処理部40と制御アプリケーション処理部30との間でデータ同期が実行される(S103の処理)。またS102で否定判定されると、処理はS104へ進む。
 次に、S104では上記の実行処理B40が行われ、続いてS105では上記の実行処理B42が行われる。その後、S106で、ロボット210を制御するためのモーション指令の準備を行う、上記のロボット実行処理B32が行われる。ここで、ロボット実行処理B32において、同期制御から一のロボット210が除外されていない場合には、アプリケーションプログラム52がそのまま実行されることになる。一方で、同期制御から一のロボット210が除外されている場合には、後述する図6に示す除外対応処理によって、アプリケーションプログラム52に対して生成部35による処理が干渉する形で同期制御が行われることになる。
 図4に示す高優先度タスクの一連の処理により演算、準備された指令値は、次の制御周期T1が到来したときにフィールドへ出力される。そして、当該一連の処理の終了後であって次の制御周期T1が到来するまでの期間において、図5に示す低優先度タスクが実行されることになる。
 図5に基づいて、低優先度タスクの処理の流れについて説明する。低優先度タスクは、インタプリタ34によるアプリケーションプログラム52の解釈処理に関するものである。先ず、S201で、制御アプリケーション処理部30により、バッファ33に中間コードが残っているか否かが判定される。当該判定を行うのは、バッファ33の容量を超えた中間コードの生成を行わないようにするためである。S201で肯定判定されれば低優先度タスクは終了し、否定判定されれば処理はS202へ進む。S202では、インタプリタ34によって、アプリケーションプログラム52の一部が読み込まれる。例えば、アプリケーションプログラム52を構成するコードの一行分が読み込まれる。そして、S203では、インタプリタ34によって読込んだコードが解釈されて中間コードが生成される。生成された中間コードは、S204でバッファ33に格納される。なお、S202~S204の処理に関し、実行対象となるアプリケーションプログラムが存在しない場合にはこれらの処理は行われず、結果として、バッファ33には中間コードは格納されないことになる。このような一連の処理を有する低優先度タスクは、自身に対してプログラムの実行時間が割当てられている期間において繰返される。
 このように図4、図5に示す一連の処理が行われることで、制御装置100において、図3に示す実行タイミングで、IECプログラム51およびアプリケーションプログラム52が実行されることになる。なお、図1に示すように制御装置100に複数台のロボット210だけが接続され、そのロボット210間で同期制御が行われる場合には、アプリケーションプログラム52のみが実行されることになる。高優先度タスク処理においてS104、S105が省略された状態で、同期制御のためのロボット実行処理B32が行われることになる。
 次に、図6に基づいて、一のロボット210の同期制御からの除外対応に関連する処理(除外対応処理)について説明する。当該除外対応処理は、高優先度タスクおよび低優先度タスクの一部として制御アプリケーション処理部30によって実行される。先ず、S301では、同期制御の対象から一のロボット210が除外されたことが検知された否かが判定される。それまでロボット210とサーボドライバ220等との間で同期制御を行っていた場合、又は、複数台のロボット210間で同期制御を行っていた場合において、そこに含まれていた一のロボット210が、制御的に制御装置100の制御対象ではない状態となることが「除外状態」として検知される。一例としては、一のロボット210と制御装置100との電気的な接続が保持されていない状態であれば、除外状態が検知されることになる。S301で否定判定されると処理はS302へ進み、肯定判定されるとS304へ進む。
 ここでS302へ進んだ場合について説明する。S302では、同期制御が行われているロボット210の出力の取得が済んでいるか否かが判定される。ここで言うロボット210の出力とは、アプリケーションプログラム52においてプログラム初めから終わりまでの全てが実行される期間において、同期制御のために必要なロボット210からの出力信号を意味する。一般に、ロボット210は複数の駆動関節を有しており、その各駆動関節を構成するアクチュエータの位置や速度等に関する信号が同期制御におけるフィードバック処理等に使用される場合には、当該信号が、そのロボット210の出力信号とされる。S302で否定判定されると、S303においてロボット210の出力信号が取得される。例えば、同期制御において複数台のロボット210が関与している場合には、各ロボット210の出力信号の取得が行われ、同期制御において一台のロボット210しか関与しない場合には、当該ロボット210の出力信号の取得が行われる。取得されたロボット210の出力信号は、制御アプリケーション処理部30が有する、不図示のメモリに格納される。なお、S302で肯定判定されると、除外対応処理を終了する。
 また、S301で肯定判定され処理がS304に進んだ場合について説明する。S304では、一のロボット210の除外が検知された場合、上述のS303の処理によって取得されたロボット210の出力信号のうち、同期制御から除外されたロボット210の出力信号が読み込まれる。当該出力信号の読込みは、生成部35によって行われる。
 続いて、生成部35は、高優先度タスクの進行に合わせて、S304で読み込んだ除外されたロボット210の出力、すなわち、以前には実際に同期制御されていたロボット210の出力を、仮想ロボットの出力としてロボット実行処理B32へ渡す。このことは、実際には同期制御から除外された一のロボット210に代わって、生成部35が、取得してある出力信号を用いてあたかも当該一のロボット210が存在するかのうように出力信号を生成する、すなわち仮想ロボットの出力を生成することを意味する。この結果、一のロボット210は実際には除外されているにもかかわらず、当該一のロボット210を含む当初の同期制御を実現するアプリケーションプログラム52は、特段に修正を加えることなく実行が継続されることになる。そして、モーション処理部32は、一のロボット210の除外前と同じように、同期制御を行うためのロボット210用のモーション指令の演算を継続することができる。
 また、上記のように生成部35は、実際に存在していた一のロボット210の出力信号を用いて仮想ロボットの出力信号を生成している。そのため、仮想ロボットの出力信号を用いてモーション処理部32がモーション指令の演算を行っても、一のロボット210が除外される前と比べても同程度の精度で同期制御を実現する指令演算が可能となる。
 <第2の形態>
 次に、生成部35の第2の形態について、図7に基づいて説明する。図1に示すように、ロボット210同士で同期制御を行っている場合(すなわち、アプリケーションプログラム52内において同期制御が行われている場合)において、生成部35は、その同期制御のための基準となる仮想ロボット210’の出力信号を生成することができる。ここで、図7に示すように、仮想ロボット210’とそれぞれの実際のロボット210が同期制御されると、結果として、実際のロボット210の全てが同期制御されることになる。このようにすることで、複数台のロボット210に亘る同期制御を、仮想ロボット210’と個別のロボット210との同期制御に落とし込むことができ、以て、同期制御を実現するためのアプリケーションプログラム52の作成負荷が軽減される。アプリケーションプログラム52は、複数台の実際のロボット210と仮想ロボット210’を含めたロボットを同期制御するためのプログラムとなる。
 <付記>
 予め定められた制御周期毎に一又は複数のロボット(210)を同期制御するための所定の指令値を演算可能に構成された処理部(30)と、
 前記所定の指令値を前記制御周期毎に出力する出力部(60)と、
 前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部(35)と、
 を備え、
 前記処理部(30)は、前記生成部(35)により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算する、
 制御装置(100)。
2: フィールドネットワーク
6: 上位ネットワーク
10: サーバ装置
30: 制御アプリケーション処理部
32: モーション処理部
35: 生成部
40: IECプログラム処理部
51: IECプログラム
52: アプリケーションプログラム
100: 制御装置
210: ロボット
210’: 仮想ロボット
220: サーボドライバ
222: モータ

Claims (4)

  1.  予め定められた制御周期毎に一又は複数のロボットを同期制御するための所定の指令値を演算可能に構成された処理部と、
     前記所定の指令値を前記制御周期毎に出力する出力部と、
     前記同期制御に関連して仮想的に設定された仮想ロボットの出力信号を生成する生成部と、
     を備え、
     前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、前記所定の指令値を演算する、
     制御装置。
  2.  プログラムの実行により前記一又は複数のロボットが同期制御されているとき該一又は複数のロボットのうち一のロボットの出力信号を取得する取得部と、
     前記一又は複数のロボットのうち前記一のロボットが前記同期制御から除外されたことを検知する検知部と、
     を更に備え、
     前記生成部は、既に実行された同期制御において前記取得部により取得された前記一のロボットの出力信号を前記仮想ロボットの出力信号として生成し、
     前記検知部により前記一のロボットの除外が検知されると、前記処理部は、前記仮想ロボットの出力信号を用いることで、該一のロボットが除外された状態で前記一又は複数のロボットを制御するための前記プログラムの実行を継続させ前記所定の指令値を演算する、
     請求項1に記載の制御装置。
  3.  前記生成部は、前記一又は複数のロボットとは区別される前記仮想ロボットの出力信号を生成し、
     前記処理部は、前記生成部により生成される前記仮想ロボットの出力信号を用いて、該仮想ロボットの動作と前記一又は複数のロボットのそれぞれの動作とが同期する形で、該一又は複数のロボットを同期制御するための前記所定の指令値を演算する、
     請求項1に記載の制御装置。
  4.  前記処理部は、逐次実行される所定の実行形式に従ったプログラムを実行してインタプリタにより該プログラムの少なくとも一部が解釈されて生成される中間コードに従って、前記制御周期毎に前記所定の指令値を演算可能に構成され、更に、前記制御周期毎に、実行毎に全体が実行される他の実行形式に従ったプログラムを実行して、他の制御対象を制御するための他の指令値を演算可能に構成され、
     前記出力部は、前記一又は複数のロボット及び前記他の制御対象を同期制御するために、前記処理部により演算された前記所定の指令値を出力する、
     請求項1から請求項3の何れか1項に記載の制御装置。
PCT/JP2020/046858 2020-01-16 2020-12-16 制御装置 WO2021145124A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/787,715 US20230022312A1 (en) 2020-01-16 2020-12-16 Control device
EP20913849.4A EP4067016A4 (en) 2020-01-16 2020-12-16 CONTROL DEVICE
CN202080089025.7A CN114868091A (zh) 2020-01-16 2020-12-16 控制装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020005001A JP7456165B2 (ja) 2020-01-16 2020-01-16 制御装置
JP2020-005001 2020-01-16

Publications (1)

Publication Number Publication Date
WO2021145124A1 true WO2021145124A1 (ja) 2021-07-22

Family

ID=76864566

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/046858 WO2021145124A1 (ja) 2020-01-16 2020-12-16 制御装置

Country Status (5)

Country Link
US (1) US20230022312A1 (ja)
EP (1) EP4067016A4 (ja)
JP (1) JP7456165B2 (ja)
CN (1) CN114868091A (ja)
WO (1) WO2021145124A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207517A (ja) * 1997-01-24 1998-08-07 Nissan Motor Co Ltd ロボット制御装置
JP2011121171A (ja) * 2009-12-14 2011-06-23 Ir Robot Co Ltd ロボット同期化装置及びその方法
JP2012194662A (ja) 2011-03-15 2012-10-11 Omron Corp Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
JP2019036043A (ja) 2017-08-10 2019-03-07 オムロン株式会社 制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207517A (ja) * 1997-01-24 1998-08-07 Nissan Motor Co Ltd ロボット制御装置
JP2011121171A (ja) * 2009-12-14 2011-06-23 Ir Robot Co Ltd ロボット同期化装置及びその方法
JP2012194662A (ja) 2011-03-15 2012-10-11 Omron Corp Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
JP2019036043A (ja) 2017-08-10 2019-03-07 オムロン株式会社 制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4067016A4

Also Published As

Publication number Publication date
JP2021114015A (ja) 2021-08-05
CN114868091A (zh) 2022-08-05
EP4067016A4 (en) 2023-12-06
US20230022312A1 (en) 2023-01-26
JP7456165B2 (ja) 2024-03-27
EP4067016A1 (en) 2022-10-05

Similar Documents

Publication Publication Date Title
US10761884B2 (en) Control device for operating multiple types of programs in different execution formats
US10496079B2 (en) Control device and control method
JP2019036043A (ja) 制御装置
JP6950385B2 (ja) 制御装置および制御方法
CN113168135B (zh) 同步控制装置、同步控制系统和同步控制方法
US11855907B2 (en) Robot control system and control method
WO2021166398A1 (ja) 処理装置、及び処理方法
WO2021095466A1 (ja) 制御装置
JP7020198B2 (ja) 制御装置および制御システム
WO2021145124A1 (ja) 制御装置
WO2020255486A1 (ja) 制御装置
WO2021024523A1 (ja) 制御装置
JP7396063B2 (ja) データ処理方法
WO2020137522A1 (ja) 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20913849

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020913849

Country of ref document: EP

Effective date: 20220627

NENP Non-entry into the national phase

Ref country code: DE