Patent Description:
Conventionally, a robot has been used for various applications in a factory automation (FA) field.

Generally, a program described in a predetermined programming language is used to control the robot. From the viewpoint of further simplifying the control of the robot, for example, <CIT> (PTL <NUM>) discloses a configuration in which an automated facility using the robot is constructed at low cost without learning a robot language.

<CIT> discloses that an element including a first processing circuit conducting a real time processes for controlling a robot body and a man-machine interface element including a second processing circuit for operating the robot body are connected through the common storage device.

<CIT> discloses a method of controlling a robot including running multiple applications on a processor, where each application has a robot controller and an action selection engine. Each application is in communication with at least one behavior and at least one action model of at least part of the robot. The method includes running periodic action selection cycles on each action selection engine. Each action selection cycle includes selecting a command for each action space of each action model, generating a single overall command based on the accumulated commands for each action model, and sending the overall command to the robot controller for execution on the robot.

<CIT> discloses a robot control system employing a block toy, the robot control system comprising: multiple unit blocks coupled to each other, each unit block comprising a database in which a preset operation command is stored, a communication module for transmitting the operation command, and a control module for transmitting the operation command stored in the database through the communication module; and a driving robot for receiving the operation commands from the unit blocks and performing operations corresponding to the received operation commands, wherein the control module selects, as a representative block, one of the unit blocks coupled to each other according to a preset selection standard, and transmits a command to control the unit blocks coupled to each other by using the communication module of the representative block.

The configuration described in CITATION LIST does not simply produce the program described in the robot language, but inputs a parameter to a robot controller to control operation of the robot, thereby reducing construction cost.

However, in an actual production facility, not only the operation according to a previously-produced program but also correspondence to user operation by a teaching pendant or the like are required. The configuration described in CITATION LIST does not assume the case where a plurality of operation instruction sources exist.

An object of the present technique is to provide a robot control system corresponding to the case where a plurality of sources instructing behavior of the robot exist.

A robot control system according to an embodiment of the present technique is specified in claim <NUM>.

According to this configuration, the first control device enables any source arbitrarily selected in the plurality of sources, and can generate the command according to the information from the enabled source. As a result, the robot control system can be flexibly operated.

The plurality of sources may include a plurality of units among a program interpretation unit configured to sequentially execute a robot program, an operation unit network-connected to the first control device and configured to generate an operation instruction according to a user operation, a development support device connected to the first control device and configured to provide information according to a user operation or program execution, and a program execution unit configured to execute an IEC program.

According to this configuration, not only the robot can be controlled according to the original robot program, but also the robot can be controlled according to the operation instruction from the operation unit, the instruction from the development support device, the execution result of the IEC program, and the like.

The selection unit may enable a specific source according to an instruction given from an outside to the first control device. According to this configuration, the enabled operation can be changed according to the instruction from an information processing device or the like outside the first control device, so that more flexible operation can be implemented.

The selection unit may determine the enabled source according to a predetermined setting. According to this configuration, the operation in which a specific source is prioritized can be performed.

The predetermined setting may include a priority for a source The selection unit may enable the source having a higher priority when information is provided from each of the plurality of sources. According to this configuration, the source that is the generation source of the command can be automatically determined according to the priority order.

In the second control device, the processing can be made different according to the enabled source. This enables the control of the robot according to the enabled source.

The robot can be controlled with the characteristic according to the source.

According to another embodiment of the present technique, a control method in a robot control system is specified in claim <NUM>.

According to the technique, it is also possible to cope with the case where the plurality of sources instructing the behavior of the robot.

With reference to the drawings, an embodiment of the technique will be described in detail. The same or equivalent portion in the drawings is denoted by the same reference numeral, and the description will not be repeated.

An example of a scene to which the technique is applied will be described. <FIG> is a schematic diagram illustrating an outline of a robot control system <NUM> according to an embodiment.

Referring to <FIG>, robot control system <NUM> includes a control device <NUM> (first control device) and a robot controller <NUM> (second control device) that is network-connected to control device <NUM> to control a robot <NUM>. A plurality of robot controllers <NUM> may be connected to control device <NUM>.

In the following description, a configuration example of robot control system <NUM> that mainly controls robot <NUM> will be described. However, a control target of robot control system <NUM> is not limited to robot <NUM>. For example, in addition to robot <NUM>, control device <NUM> can control various devices and machines constituting a production facility including robot <NUM>. Furthermore, control device <NUM> may be linked with a safety controller that monitors the operation of robot <NUM>. That is, in the present specification, the term "robot control system" is used in meaning of a system having a function of controlling the robot, but does not exclude the control other than the robot.

Control device <NUM> includes a command generation module <NUM> that generates a command <NUM> instructing behavior of robot <NUM>, and a communication unit <NUM> (constituted of a field network controller <NUM>, a communication control module <NUM>, a communication driver <NUM>, and the like, which will be described later) that transmits command <NUM> to robot controller <NUM>.

A plurality of sources that provide information generating command <NUM> can be connected to command generation module <NUM>.

In the present specification, the "source" means a provider of information about the generation of the command instructing the behavior of robot <NUM>. The information about the generation of the command includes an internal command and/or an operation instruction instructed by the user as described later.

A source selection function <NUM> (selection unit) of command generation module <NUM> enables any one of a plurality of sources. Command generation module <NUM> generates command <NUM> according to the information from the source enabled by source selection function <NUM>.

Communication unit <NUM> transmits command <NUM> generated according to the information from the enabled source in the plurality of sources to robot controller <NUM>.

Robot controller <NUM> includes a communication unit <NUM> (constituted of a field network controller <NUM>, a communication control module <NUM>, a communication driver <NUM>, and the like, which are described later) that receives command <NUM> transmitted from control device <NUM> and a command value generation module <NUM> (command value generation unit) that sequentially generates command values driving each axis of robot <NUM> so as to provide the behavior instructed by command <NUM> from control device <NUM>.

Because the axis of robot <NUM> may constitute a joint (joint), the axis is also referred to as "axis or joint" of robot <NUM> in the following description. That is, in the present specification, the term "axis" of robot <NUM> is used in meaning including the axis and the joint.

In robot control system <NUM> according to the present embodiment, the plurality of sources can be selectively enabled, so that robot <NUM> can be controlled according to not only control by an original robot program <NUM> but also information from other sources. As a result, robot control system <NUM> can be flexibly operated.

A configuration example of robot control system <NUM> of the embodiment will be described below.

<FIG> is a schematic diagram illustrating a configuration example of robot control system <NUM> of the embodiment. Referring to <FIG>, robot control system <NUM> of the embodiment includes control device <NUM> and one or more robots <NUM> connected to control device <NUM> through field network <NUM>.

The behavior of each of robots <NUM> is controlled by robot controller <NUM>. Robot controller <NUM> is network-connected to control device <NUM>, and controls robot <NUM>. More specifically, robot controller <NUM> outputs the command value controlling robot <NUM> according to command <NUM> from control device <NUM>. A custom robot 200A having one or more axes or joints arbitrarily produced according to an application may be used as robot <NUM>. Furthermore, any general-purpose robot 200B such as a horizontal articulated (scalar) robot, a vertical articulated robot, a parallel link robot, or an orthogonal robot may be used as robot <NUM>.

Any device such as an I/O unit, a safety I/O unit, and a safety controller may be connected to field network <NUM>. In the configuration example of <FIG>, an operation pendant <NUM> operating robot <NUM> is connected to field network <NUM>.

EtherCAT (registered trademark), EtherNet/IP, or the like, which is an industrial network protocol, can be used for field network <NUM>.

Control device <NUM> may be connected to a support device <NUM>, a display device <NUM>, and a server device <NUM> through a higher-order network <NUM>. EtherNet/IP or the like that is the industrial network protocol can be used for higher-order network <NUM>.

A hardware configuration example of main devices constituting control system <NUM> in <FIG> will be described below.

<FIG> is a schematic diagram illustrating the hardware configuration example of control device <NUM> constituting robot control system <NUM> of the embodiment. As illustrated in <FIG>, control device <NUM> includes a processor <NUM>, a main memory <NUM>, a storage <NUM>, a memory card interface <NUM>, a higher-order network controller <NUM>, a field network controller <NUM>, a local bus controller <NUM>, and a universal serial bus (USB) controller <NUM> that provides a USB interface. These components are connected to each other through a processor bus <NUM>.

Processor <NUM> corresponds to an arithmetic processing unit that executes control arithmetic operation, and is constituted of a central processing unit (CPU), a graphics processing unit (GPU), and the like. Specifically, processor <NUM> reads various programs stored in storage <NUM>, expands the various programs in main memory <NUM>, and executes the various programs, thereby implementing the control arithmetic operation for the control target.

Main memory <NUM> includes a dynamic random access memory (DRAM), a static random access memory (SRAM), or the like. Storage <NUM> is constructed with a nonvolatile storage device such as a solid state drive (SSD) and a hard disk drive (HDD).

A system program <NUM> implementing a basic function and an International Electrotechnical Commission (IEC) program <NUM> produced according to the control target are stored in storage <NUM>. IEC program <NUM> can include a sequence command and/or a motion command.

In the present specification, the "IEC program" is used to mean a program that defines processing executed by a general programmable logic controller (PLC). Typically, the IEC program means a program described in any language defined by IEC <NUM>-<NUM> defined by the IEC. However, the IEC program may include a program described in a manufacturer own language other than the language defined by IEC <NUM>-<NUM>.

Storage <NUM> may further store a robot program <NUM> and setting information <NUM> in order to control the behavior of robot <NUM>. Robot program <NUM> may be described in a predetermined programming language (for example, a programming language for robot control such as V+ language or a programming language related to NC control such as G code) as described later. Setting information <NUM> includes various setting values (for example, a speed limit value, an acceleration limit value, and a jerk limit value) for robot <NUM>.

Memory card interface <NUM> receives memory card <NUM> that is an example of a detachable recording medium. Memory card interface <NUM> can read and write arbitrary data from and in memory card <NUM>.

Higher-order network controller <NUM> exchanges the data with an arbitrary information processing device (support device <NUM>, display device <NUM>, server device <NUM>, and the like in <FIG>) through a high-order network.

Field network controller <NUM> exchanges data with an arbitrary device such as robot <NUM> through field network <NUM>. In the system configuration example of <FIG>, field network controller <NUM> may function as a communication master of field network <NUM>.

Local bus controller <NUM> exchanges data with an arbitrary functional unit <NUM> constituting control device <NUM> through a local bus <NUM>. For example, functional unit <NUM> includes an analog I/O unit that is responsible for inputting and/or outputting an analog signal, a digital I/O unit that is responsible for inputting and/or outputting a digital signal, and a counter unit that receives a pulse from an encoder.

USB controller <NUM> exchanges the data with an arbitrary information processing device through the USB connection.

The function related to the control of robot <NUM> provided by control device <NUM> will be described later.

<FIG> is a schematic diagram illustrating the hardware configuration example of robot <NUM> constituting robot control system <NUM> of the embodiment. <FIG> illustrates a configuration example in the case where custom robot 200A is adopted as robot <NUM>.

Referring to <FIG>, custom robot 200A is connected to robot controller <NUM>. Custom robot 200A and robot controller <NUM> may be constituted integrally or separately.

Custom robot 200A includes a drive circuit <NUM> corresponding to the number of shafts or joints and a motor <NUM> driven by drive circuit <NUM>. Each of drive circuits <NUM> includes a converter circuit, an inverter circuit, and the like, generates power of a voltage, a current, and a phase designated according to the command value from robot controller <NUM>, and supplies the power to motor <NUM>.

Each of motors <NUM> is an actuator that is mechanically coupled to any shaft or joint of an arm unit <NUM> constituting custom robot 200A and drives the corresponding shaft or joint by rotation of motor <NUM>.

A motor having a characteristic corresponding to arm unit <NUM> to be driven can be adopted as motor <NUM>. For example, as motor <NUM>, any of an induction type motor, a synchronous type motor, a permanent magnet type motor, and a reluctance motor may be adopted, and not only a rotation type but also a linear motor may be adopted. Drive circuit <NUM> corresponding to motor <NUM> of a drive target is adopted.

Robot controller <NUM> includes field network controller <NUM> and a control processing circuit <NUM>.

Field network controller <NUM> mainly exchanges data with control device <NUM> through field network <NUM>.

Control processing circuit <NUM> executes arithmetic processing required for driving custom robot 200A. As an example, control processing circuit <NUM> includes a processor <NUM>, a main memory <NUM>, a storage <NUM>, and an interface circuit <NUM>.

Processor <NUM> executes a control arithmetic operation driving custom robot 200A. Main memory <NUM> is constituted of a volatile storage device such as a DRAM or an SRAM. For example, storage <NUM> includes a non-volatile storage device such as an HDD or an SSD.

Storage <NUM> stores a robot system program <NUM> implementing the control for driving robot <NUM>, and setting information <NUM> including a setting parameter group required for the processing in robot controller <NUM>.

Interface circuit <NUM> gives the command value to each drive circuit <NUM>. Interface circuit <NUM> and drive circuit <NUM> may be electrically connected by a hard wire, or connected by a data link.

<FIG> is a schematic diagram illustrating another hardware configuration example of robot <NUM> constituting robot control system <NUM> of the embodiment. <FIG> illustrates the configuration example in the case where a general-purpose robot 200B is adopted as robot <NUM>.

Referring to <FIG>, one or more motors and drive circuits (not illustrated) are incorporated in general-purpose robot 200B, and when a target trajectory of general-purpose robot 200B is indicated, one or more motors are driven according to the indicated target trajectory.

When custom robot 200A in <FIG> is driven, each command value to drive circuit <NUM> corresponding to the shaft or the joint is required to be given, whereas when general-purpose robot 200B in <FIG> is driven, only the target trajectory of general-purpose robot 200B is required to be instructed.

The function related to the control of robot <NUM> provided by robot controller <NUM> will be described later.

<FIG> is a schematic diagram illustrating a hardware configuration example of operation pendant <NUM> constituting robot control system <NUM> of the embodiment. Referring to <FIG>, operation pendant <NUM> includes a field network controller <NUM>, a control processing circuit <NUM>, and an operation key group <NUM>.

Field network controller <NUM> mainly exchanges the data with control device <NUM> through field network <NUM>.

Control processing circuit <NUM> includes a processor <NUM>, a main memory <NUM>, firmware <NUM>, and an interface circuit <NUM>.

Processor <NUM> executes firmware <NUM> to implement the processing required for operation pendant <NUM>. Main memory <NUM> is constituted of a volatile storage device such as a DRAM or an SRAM.

Interface circuit <NUM> exchanges a signal with operation key group <NUM>.

Operation key group <NUM> is an input device that receives a user operation. Operation key group <NUM> may include an indicator indicating an input state and the like.

<FIG> is a schematic diagram illustrating a hardware configuration example of support device <NUM> constituting robot control system <NUM> of the embodiment. Support device <NUM> is a development support device developing the program executed by control device <NUM>, and may be implemented using, for example, a general-purpose personal computer.

As illustrated in <FIG>, support device <NUM> includes a processor <NUM>, a main memory <NUM>, an input unit <NUM>, an output unit <NUM>, a storage <NUM>, an optical drive <NUM>, a USB controller <NUM>, and a communication controller <NUM>. These components are connected to each other through a processor bus <NUM>.

Processor <NUM> is constructed of a CPU, a GPU, and the like, and reads a program (as an example, an OS <NUM> and a development program <NUM>) stored in storage <NUM>, develops the program in main memory <NUM>, and executes the program, thereby implementing various pieces of processing required for support device <NUM>.

Main memory <NUM> is configure of a volatile storage device such as a DRAM or an SRAM. For example, storage <NUM> includes a non-volatile storage device such as an HDD or an SSD.

Storage <NUM> stores OS <NUM> implementing the basic function, development program <NUM> implementing a development environment, and the like. A program executed by control device <NUM>, debugging of the program, setting of the operation of control device <NUM>, setting of the operation of the device connected to control device <NUM>, setting of field network <NUM>, and the like can be performed in the development environment.

Input unit <NUM> includes a keyboard, a mouse, and the like, and receives a user operation. Display unit <NUM> includes a display, various indicators, and the like, and displays processing results and the like by processor <NUM>.

USB controller <NUM> exchanges the data with control device <NUM> and the like through the USB connection. Communication controller <NUM> exchanges the data with an arbitrary information processing device through higher-order network <NUM>.

Support device <NUM> includes optical drive <NUM>, and a program stored in a storage medium <NUM> (for example, an optical storage medium such as a digital versatile disc (DVD)) in which a computer-readable program is non-transiently stored is read and installed in storage <NUM> or the like.

Development program <NUM> and the like executed by support device <NUM> may be installed through computer-readable storage medium <NUM>, or installed by being downloaded from the server device or the like on the network. Sometimes functions provided by support device <NUM> of the first embodiment are implemented using a part of modules provided by OS <NUM>.

Support device <NUM> may be removed from control device <NUM> during the operation of robot control system <NUM>.

Display device <NUM> constituting robot control system <NUM> of the embodiment may be implemented using a general-purpose personal computer as an example. A basic hardware configuration example of display device <NUM> is similar to the hardware configuration example of support device <NUM> in <FIG>, so that detailed description is not made herein.

Server device <NUM> constituting robot control system <NUM> of the embodiment may be implemented using a general-purpose personal computer as an example. A basic hardware configuration example of server device <NUM> is similar to the hardware configuration example of support device <NUM> in <FIG>, so that detailed description is not made herein.

Although the configuration example in which necessary functions are provided by one or more processors executing the program has been described in <FIG>, some or all of these provided functions may be implemented using a dedicated hardware circuit (for example, an application specific integrated circuit (ASIC) and a field-programmable gate array (FPGA)).

A main part of control device <NUM> may be implemented using hardware (for example, an industrial personal computer based on a general-purpose personal computer) according to a general-purpose architecture. In this case, the plurality of OSs having different uses may be executed in parallel using a virtualization technology, and the required application may be executed on each OS. Furthermore, a configuration in which functions such as support device <NUM> and display device <NUM> are integrated with control device <NUM> may be adopted.

An example of a functional configuration controlling robot <NUM> will be described.

<FIG> is a schematic diagram illustrating an example of the functional configuration controlling the behavior of robot <NUM> in robot control system <NUM> of the embodiment. Referring to <FIG>, a command <NUM> controlling robot <NUM> and the like are exchanged between control device <NUM> and one or more robot controllers <NUM>.

Control device <NUM> includes an IEC program execution engine <NUM>, a robot program execution engine <NUM>, a communication control module <NUM>, a communication driver <NUM>, and an external communication interface <NUM>. Typically, these element may be implemented by processor <NUM> of control device <NUM> executing system program <NUM>.

IEC program execution engine <NUM> periodically generates an output value given to robot controller <NUM> by executing IEC program <NUM>. More specifically, IEC program execution engine <NUM> cyclically executes IEC program <NUM> every predetermined control period. The control period of control device <NUM> is typically assumed to be about several hundred µsec to several <NUM> msec. IEC program execution engine <NUM> outputs an internal command (for example, transmission start and transmission stop of command <NUM>) to robot program execution engine <NUM> and/or acquires a state value (for example, the state of robot program <NUM> executed by robot program execution engine <NUM>) from robot program execution engine <NUM> according to the execution of IEC program <NUM>.

Robot program execution engine <NUM> executes robot program <NUM> to generate command <NUM> instructing the behavior of robot <NUM>. That is, robot program execution engine <NUM> sequentially executes robot program <NUM> and transmits command <NUM> controlling robot <NUM> to one or more robot controllers <NUM>. More specifically, robot program execution engine <NUM> includes a robot program interpretation module <NUM> and a command generation module <NUM>.

Robot program interpretation module <NUM> sequentially reads and parses robot program <NUM>, and outputs the internal command obtained by the parsing to command generation module <NUM>. Robot program interpretation module <NUM> can also interpret commands related to signal input/output, file access, and communication in addition to the commands related to the behavior of robot <NUM> described in the programming language included in robot program <NUM>.

Start, stop, and the like of reading of robot program <NUM> by robot program interpretation module <NUM> may be controlled by command generation module <NUM>.

Command generation module <NUM> generates commands <NUM> for each of robot controllers <NUM> according to the internal commands from robot program interpretation module <NUM>. In addition to the internal commands from robot program interpretation module <NUM>, command generation module <NUM> can also generate command <NUM> for each robot controller <NUM> according to the operation instruction (internal command) from operation pendant <NUM> and the internal command from support device <NUM>.

In this manner, command generation module <NUM> can receive the internal command from the plurality of sources and generate command <NUM>. Source selection function <NUM> of command generation module <NUM> determines from which source command generation module <NUM> generates command <NUM> according to the internal command. That is, source selection function <NUM> enables any one of the plurality of sources. Details of source selection function <NUM> will be described later.

Command generation module <NUM> functions as a host of one or more connected robot controllers <NUM>. More specifically, command generation module <NUM> controls the start and stop of the execution of robot program <NUM> in robot program interpretation module <NUM> and controls the start and stop of the generation of command <NUM> for robot controller <NUM> according to the internal command exchanged with IEC program execution engine <NUM> and/or the internal command exchanged with support device <NUM> through external communication interface <NUM>.

Command generation module <NUM> may collect information such as the state value and the error from robot controller <NUM>.

A configuration example in which robot program interpretation module <NUM> and command generation module <NUM> are separated is illustrated for convenience of description, but these modules may be integrally mounted without being separated.

Communication control module <NUM> and communication driver <NUM> correspond to the communication unit that transmits command <NUM> generated according to information from the enabled source in the plurality of sources to robot controller <NUM>. In addition to command <NUM>, communication control module <NUM> and communication driver <NUM> also transmit the output value from IEC program execution engine <NUM> to robot controller <NUM>.

Communication control module <NUM> manages the data exchange with one or more connected robot controllers <NUM>. Communication control module <NUM> may generate a communication instance managing the data communication for each connected robot controller <NUM>, and manage the data communication using the generated communication instance.

Communication driver <NUM> is an internal interface that uses field network controller <NUM> (see <FIG>) to perform the data communication with one or more connected robot controllers <NUM>.

Each of robot controllers <NUM> includes a communication control module <NUM>, a communication driver <NUM>, a robot drive engine <NUM>, and a signal output driver <NUM>. Typically, these elements may be implemented by processor <NUM> (control processing circuit <NUM>) of robot controller <NUM> executing robot system program <NUM>.

Communication control module <NUM> manages the data exchange with connected control device <NUM>. Communication control module <NUM> may generate the communication instance managing the data communication with connected control device <NUM>, and manage the data communication using the generated communication instance.

Communication driver <NUM> is an internal interface that uses field network controller <NUM> (see <FIG>) to perform the data communication with connected control device <NUM>.

Communication control module <NUM> and communication driver <NUM> correspond to a communication unit that receives command <NUM> transmitted from control device <NUM>.

According to command <NUM> from control device <NUM>, robot drive engine <NUM> refers to setting information <NUM> transmitted previously from control device <NUM>, and executes processing for driving robot <NUM> (including custom robot 200A and/or general-purpose robot 200B) of the control target. More specifically, robot drive engine <NUM> includes a management module <NUM>, a target trajectory generation module <NUM>, and a command value generation module <NUM>.

Management module <NUM> corresponds to a processing execution unit that executes the processing according to the output value from control device <NUM>. More specifically, management module <NUM> manages the control mode, start/end of the generation of the target orbit from command <NUM>, and the like according to the output value from control device <NUM>.

Target trajectory generation module <NUM> (target trajectory generation unit) generates a target trajectory of robot <NUM> (including custom robot 200A and/or general-purpose robot 200B) of the control target according to command <NUM> from control device <NUM>. Typically the generated target trajectory includes an hourly position of the distal end of robot <NUM> (the change in the position with respect to the time) and/or an hourly velocity of the distal end of robot <NUM> (the change in the velocity with respect to the time).

Target trajectory generation module <NUM> may output the generated target trajectory to command value generation module <NUM> (typically, the case of driving custom robot 200A in <FIG>) or directly output the target trajectory to robot <NUM> through signal output driver <NUM> (typically, the case of driving general-purpose robot 200B in <FIG>).

Command value generation module <NUM> sequentially generates the command value for driving each axis of robot <NUM> so as to provide the behavior instructed by command <NUM> from control device <NUM>. More specifically, command value generation module <NUM> sequentially generates the command value for respective motors <NUM> constituting robot <NUM> of the control target according to the target trajectory generated by target trajectory generation module <NUM>. Command value generation module <NUM> may update the command value every predetermined control period or every predetermined event.

The control period of target trajectory generation module <NUM> of robot controller <NUM> is typically assumed to be about several hundred µsec to about several <NUM> msec, which is about the same as the control period of control device <NUM>. On the other hand, it is assumed that the control period of command value generation module <NUM> of robot controller <NUM> is faster than the control cycle of target trajectory generation module <NUM> (for example, about several to several <NUM> times).

More specifically, command value generation module <NUM> calculates each command value given to motor <NUM> driving robot <NUM> along the target trajectory based on kinematics of robot <NUM> of the control target. Command value generation module <NUM> calculates a target position (the change in the position/angle with respect to the time), a target speed (the change in the speed/angular velocity with respect to the time), a target acceleration (the change in acceleration/angular acceleration with respect to the time), and/or a target acceleration (the change in jerk/angular acceleration with respect to the time) as the command value given to motor <NUM>.

Robot drive engine <NUM> may acquire a parameter required for calculating the target orbit and/or the command value with reference to setting information <NUM> (see <FIG>).

A configuration example in which target trajectory generation module <NUM> and command value generation module <NUM> are separated is illustrated for convenience of description, but these modules may be integrally mounted without being separated.

Signal output driver <NUM> is an internal interface outputting the command value and/or the target orbit to one or more connected drive circuits <NUM> and/or robot <NUM> using interface circuit <NUM> (see <FIG>).

As described above, robot program <NUM> is the program controlling the behavior of robot <NUM>. However, for example, timing to start/stop the operation of robot <NUM>, a condition for operating robot <NUM> (for example, cooperation with the facility in a preceding process or a subsequent process), and a safety condition related to robot <NUM> are required to be controlled in order to control the behavior of robot <NUM>.

Accordingly, in the control device <NUM>, not only robot program <NUM> but also IEC program <NUM> may be executed in parallel. IEC program <NUM> may include logic or the like that collects the state value related to the operation of robot <NUM> to determine the timing to start/stop the operation of robot <NUM>.

<FIG> is a view illustrating an example of IEC program <NUM> and robot program <NUM> executed by control device <NUM> constituting robot control system <NUM> according to the present embodiment.

<FIG> illustrates an example of IEC program <NUM> described in a ladder diagram (LD language). The example of IEC program <NUM> in <FIG> includes a command related to processing for turning on the power of control target robot <NUM> and processing for executing calibration of control target robot <NUM>.

As illustrated in <FIG>, IEC program <NUM> may include a function block as an element. Furthermore, IEC program <NUM> may include a code described in structured text (ST language).

<FIG> illustrates an example of robot program <NUM> described in V+ language. As illustrated in <FIG>, the V+ language is a kind of high-level language controlling the behavior of robot <NUM>.

Parallel execution of IEC program <NUM> and robot program <NUM> in control device <NUM> will be described below.

<FIG> is a time chart illustrating an execution example of a program in control device <NUM> constituting robot control system <NUM> according to the present embodiment. As illustrated in <FIG>, in control device <NUM>, IEC program execution engine <NUM> and robot program execution engine <NUM> (robot program interpretation module <NUM> and command generation module <NUM>) independently execute the processing.

IEC program execution engine <NUM> cyclically executes (repeatedly executes) IEC program <NUM> every predetermined control period T1. The cyclic execution of IEC program <NUM> includes output update processing <NUM> and input update processing <NUM>.

Output update processing <NUM> includes processing for reflecting the output value determined by the execution of IEC program <NUM> on the internal variable and/or the target device. In particular, the output value for a device connected through field network <NUM> is stored in a communication frame and transmitted onto field network <NUM>.

Input update processing <NUM> includes processing for acquiring the input value (state value) necessary for the execution of IEC program <NUM> from the internal variable and/or the target device. In particular, the input value from the device connected through field network <NUM> are obtained from the communication frame propagating on field network <NUM>.

Communication control module <NUM> sends the communication frame onto field network <NUM> in synchronization with control period T1, and receives the communication frame circulating on field network <NUM> and returning. Communication control module <NUM> stores the output value generated by IEC program execution engine <NUM> and/or command <NUM> generated by command generation module <NUM> in the communication frame, and holds the input value (state value) included in the returned communication frame such that IEC program execution engine <NUM> and command generation module <NUM> can refer to the input value.

Command generation module <NUM> generates command <NUM> according to the internal command from robot program interpretation module <NUM>. Typically, the timing at which command generation module <NUM> generates command <NUM> is determined by the output value from IEC program execution engine <NUM>. The example in <FIG> illustrates an example in which command generation module <NUM> generates command <NUM> in response to the output value from IEC program execution engine <NUM>. The generation of command <NUM> by command generation module <NUM> may be synchronized with the timing of output update processing <NUM> of IEC program execution engine <NUM>.

Robot program interpretation module <NUM> typically executes robot program <NUM> independently of control period T1. The start/stop of the execution of robot program <NUM> by robot program interpretation module <NUM> may be controlled by command generation module <NUM>.

As illustrated in <FIG>, robot program execution engine <NUM> sequentially executes robot program <NUM>. IEC program execution engine <NUM> cyclically executes IEC program <NUM> independently of the execution of robot program <NUM> by robot program execution engine <NUM>.

A specific example of source selection function <NUM> will be described below.

<FIG> is a schematic diagram schematically illustrating data processing including source selection function <NUM> in robot control system <NUM> according to the present embodiment. Referring to <FIG>, robot program <NUM> written in a predetermined programming language, the operation instruction (internal command) from operation pendant <NUM>, and the internal commands from support device <NUM> and IEC program execution engine <NUM> are input to robot program execution engine <NUM> of control device <NUM>.

Source selection function <NUM> of command generation module <NUM> selects from which source in the plurality of sources command <NUM> is generated.

When robot program <NUM> is selected as the source, robot program <NUM> is first input to robot program interpretation module <NUM>. Then, robot program interpretation module <NUM> interprets robot program <NUM> and generates the internal command. Furthermore, command generation module <NUM> generates command <NUM> from the generated internal command.

That is, when command <NUM> is generated according to robot program <NUM>, robot program interpretation module <NUM> (program interpretation unit) that sequentially executes robot program <NUM> serves as the source.

For example, in a production facility in which the plurality of robots <NUM> are disposed in the same production line and each robot <NUM> performs different work, different robot program <NUM> is input to robot program execution engine <NUM> for each robot <NUM>. In addition, in a production facility in which the plurality of the same production lines are disposed in parallel, and robots <NUM> that perform the same work are disposed in the respective production lines, common robot program <NUM> may be input to robot program execution engine <NUM>. However, generated commands <NUM> may be independently transmitted to robot controller <NUM>.

Furthermore, the plurality of robot programs <NUM> described in different programming languages (for example, V+ language and G code) may be input to robot program execution engine <NUM>. Robot program execution engine <NUM> can generate command <NUM> described according to a common command system even when robot program <NUM> described in a different programming language is input. As described above, robot program execution engine <NUM> may be constituted of being able to interpret a plurality of programming languages, and may generate command <NUM> according to a predetermined command system without depending on the programming language.

When operation pendant <NUM> is selected as the source, the operation instruction corresponding to a user operation on operation pendant <NUM> is input to control device <NUM> through field network <NUM>. Then, the operation instruction received from operation pendant <NUM> is provided to command generation module <NUM> as the internal command. Command generation module <NUM> generates command <NUM> according to the operation instruction from operation pendant <NUM>.

That is, when command <NUM> is generated according to the operation instruction from operation pendant <NUM>, operation pendant <NUM> (operation unit) that is network-connected to control device <NUM> to generate the operation instruction according to the user operation serves as the source.

Typically, operation pendant <NUM> is used for performing an operation (teaching operation) determining the behavior of robot <NUM> or the like. Therefore, for example, operation pendant <NUM> outputs the operation instruction moving the distal end of robot <NUM> in any direction. Command generation module <NUM> generates command <NUM> in order to move the distal end of robot <NUM> in the designated direction according to the operation instruction from operation pendant <NUM>.

When support device <NUM> is selected as the source, the internal command generated by support device <NUM> is input to command generation module <NUM>. Command generation module <NUM> generates command <NUM> according to the internal command from support device <NUM>. The generation of the internal command by support device <NUM> may be implemented by processor <NUM> of support device <NUM> executing development program <NUM>, or the internal command may be generated by the user explicitly operating development program <NUM>.

That is, when command <NUM> is generated according to the internal command from support device <NUM>, support device <NUM> (development support device) that is connected to control device <NUM> to provide information according to the user operation or the program execution becomes the source.

When IEC program execution engine <NUM> is selected as the source, the output value determined by IEC program execution engine <NUM> executing IEC program <NUM> is input to command generation module <NUM> as the internal command. For example, when a certain condition is satisfied, the output value stopping robot <NUM> may be input to command generation module <NUM>, and command <NUM> corresponding to the output value may be output to robot controller <NUM>.

As described above, source selection function <NUM> enables the source generating command <NUM> in the plurality of sources. The source from which command <NUM> is generated is not limited to the above-described four sources, but for example, IEC program <NUM> (or IEC program execution engine <NUM>) that directly outputs the directly-output internal command may be used as the source. Furthermore, when a plurality of operation pendants <NUM> or a plurality of support devices <NUM> exist, the operation pendant <NUM> or the support device <NUM> can be the independent source. The external device is not limited to the support device <NUM>, but any information processing device such as a human machine interface (HMI) may be adopted.

Command <NUM> may be generated for one or more connected robot controllers <NUM>.

Generated command <NUM> is transmitted to corresponding robot controller <NUM> through field network <NUM> (see <FIG>). When control device <NUM> is network-connected to the plurality of robot controllers <NUM>, command <NUM> is transmitted to each of the plurality of robot controllers <NUM>.

Target trajectory generation module <NUM> of robot controller <NUM> generates the target trajectory according to command <NUM> from control device <NUM>. The generated target trajectory may be output as it is to general-purpose robot 200B. That is, robot controller <NUM> may externally output the target trajectory.

On the other hand, command value generation module <NUM> of robot controller <NUM> generates the command value for each motor <NUM> constituting robot <NUM> of the control target according to the generated target trajectory.

Any command system can be adopted as the command system that defines command <NUM>. From the viewpoint of reducing the processing related to the generation of command <NUM>, it is preferable to adopt a command group that can be easily generated from the command described in robot program <NUM>.

An implementation example and an application example of source selection function <NUM> will be described below.

<FIG> is a schematic diagram illustrating the implementation example of source selection function <NUM> in robot control system <NUM> according to the present embodiment. Referring to <FIG>, source selection function <NUM> included in command generation module <NUM> includes an internal selector <NUM> and a selection flag <NUM>.

Internal selector <NUM> selects and outputs one source corresponding to the value of selection flag <NUM> in the plurality of input sources.

The value of selection flag <NUM> can be updated according to the command from IEC program execution engine <NUM> and/or support device <NUM>. The source selected by internal selector <NUM> is connected to command generation engine <NUM> that is an actual state that generates command <NUM>. Command generation engine <NUM> generates command <NUM> according to the internal command from the selected source or the like.

In this manner, the source to be enabled may be selected or determined from the plurality of sources by the command from IEC program execution engine <NUM> and/or support device <NUM>. In particular, when the command from support device <NUM> is used, source selection function <NUM> of command generation module <NUM> enables the specific source according to the command given from the outside to control device <NUM>.

Alternatively, source selection function <NUM> of command generation module <NUM> may determine the source to be enabled according to a predetermined setting. In this case, for example, priorities such as operation pendant <NUM> > support device <NUM> > IEC program execution engine <NUM> > robot program <NUM> are previously determined, and the source with the highest priority may be enabled when the internal command or the like is input from the plurality of sources.

For example, when the operation by operation pendant <NUM> is prioritized, even in the state where command <NUM> is generated by the execution of robot program <NUM>, the operation of operation pendant <NUM> is prioritized by the user operating operation pendant <NUM>. Such the processing according to the priority order is suitable for robot <NUM> or the like that requires frequent user intervention.

As described above, generation characteristic of the command value for driving each axis of robot <NUM> may be differed according to which source is enabled by source selection function <NUM> of command generation module <NUM>.

For example, when the information such as the internal command is provided from each of the plurality of sources, the source to be enabled may be determined according to the predetermined priority order. For example, when the operation instruction from operation pendant <NUM> and the internal command from robot program execution engine <NUM> conflict with each other in the state where the priority order is set as described above, the operation instruction from operation pendant <NUM> is prioritized.

As such, the predetermined setting may include the priority for the source. Source selection function <NUM> may enable the source having the higher priority when the information is provided from each of the plurality of sources. According to this configuration, the source that is the generation source of the command can be automatically determined according to the priority order.

<FIG> is a view illustrating an example in which the generation characteristic of the command value is made different in robot control system <NUM> according to the present embodiment. Referring to <FIG>, the allowable upper limit speed may be different for each source. A corresponding upper limit speed may be applied depending on the enabled source.

<FIG> is a schematic diagram illustrating a configuration example in which the generation characteristic of the command value is made different in control device <NUM> of robot control system <NUM> according to the present embodiment. Referring to <FIG>, storage <NUM> of control device <NUM> includes a parameter set for each source corresponding to the generation characteristic of the command value as illustrated in <FIG> as setting information <NUM>.

Command generation engine <NUM> included in command generation module <NUM> refers to the value of selection flag <NUM> to select the parameter set corresponding to selection flag <NUM>. Command generation engine <NUM> refers to the selected parameter to generate command <NUM> from the internal command from the enabled source.

Generated command <NUM> corresponds to the selected parameter. For example, generated command <NUM> includes the instruction such as the upper speed limit defined in the corresponding parameter.

As described above, when the source to be enabled is selected by the instruction from IEC program execution engine <NUM> and/or support device <NUM>, command <NUM> corresponding to the selected source is generated. The generation characteristic of the command value output from robot controller <NUM> can be made different according to the source by generating command <NUM> having different characteristic according to the selected source.

<FIG> is a schematic diagram illustrating another configuration example in which the generation characteristic of the command value is varied in control device <NUM> of robot control system <NUM> according to the present embodiment. Referring to <FIG>, management module <NUM> of control device <NUM> includes a selection flag <NUM>.

The value of selection flag <NUM> included in command generation module <NUM> (control device <NUM>) is notified to robot controller <NUM>, and the notified value is reflected in selection flag <NUM>. The value of selection flag <NUM> is notified from control device <NUM> to robot controller <NUM> through field network <NUM>. In this manner, the value of selection flag <NUM> of control device <NUM> is reflected in selection flag <NUM> of robot controller <NUM>. That is, communication unit <NUM> of control device <NUM> notifies robot controller <NUM> which source is enabled by source selection function <NUM>.

Management module <NUM> of robot controller <NUM> includes a parameter set for each source corresponding to the generation characteristic of the command value as illustrated in <FIG> as setting information <NUM>. Management module <NUM> selects the parameter set corresponding to the value of selection flag <NUM> from among the parameter sets for each source. Target trajectory generation module <NUM> and/or command value generation module <NUM> (see <FIG>) refers to the selected parameter set to execute the processing.

As described above, when the value of selection flag <NUM> of control device <NUM> is updated by the instruction from IEC program execution engine <NUM> and/or support device <NUM>, the updated value is reflected in selection flag <NUM>. The parameter set corresponding to selection flag <NUM> is selected and referred to, so that the generation characteristic of the command value output from robot controller <NUM> can be made different according to the source.

A processing procedure in robot control system <NUM> according to the present embodiment will be described below.

In control device <NUM>, the processing by IEC program execution engine <NUM> and the processing by robot program execution engine <NUM> (robot program interpretation module <NUM> and command generation module <NUM>) are executed in parallel.

<FIG> is a flowchart illustrating the processing procedure by IEC program execution engine <NUM> of control device <NUM> constituting robot control system <NUM> according to the present embodiment. Typically, each step in <FIG> is implemented by processor <NUM> of control device <NUM> executing system program <NUM>.

As the processing related to IEC program execution engine <NUM>, control device <NUM> determines whether a next control period arrives (step S100). When the next control period does not arrive (NO in step S100), control device <NUM> waits for the processing until the next control period arrives.

When the next control period arrived (YES in step S100), control device <NUM> outputs the output value determined by the execution of IEC program <NUM> in the previous control period (step S102). The processing for outputting the output value includes processing for updating the value of selection flag <NUM> (see <FIG>) of robot program execution engine <NUM>.

Subsequently, control device <NUM> acquires the latest input value (step S104), and determines the output value by executing IEC program <NUM> using the acquired latest input value (step S106). Then, the pieces of processing from step S100 are repeated.

<FIG> is a flowchart illustrating the processing procedure by robot program execution engine <NUM> of control device <NUM> constituting robot control system <NUM> according to the present embodiment. Typically, each step in <FIG> is implemented by processor <NUM> of control device <NUM> executing system program <NUM>.

As the processing related to robot program execution engine <NUM>, control device <NUM> acquires the value of selection flag <NUM> (step S150). The value of selection flag <NUM> may be updated by IEC program execution engine <NUM> or may be updated by the instruction from the external device such as support device <NUM>.

Control device <NUM> determines to which source the value of selection flag <NUM> corresponds (step S152). That is, control device <NUM> enables any one of the plurality of sources that provides the information about the generation of command <NUM>.

When selection flag <NUM> indicates the value corresponding to robot program <NUM> ("robot program" in step S152), control device <NUM> sequentially reads target robot program <NUM> (step S154), and parses read robot program <NUM> to generate the internal command (step S156). Furthermore, control device <NUM> generates command <NUM> according to the generated internal command (step S158).

When selection flag <NUM> indicates the value corresponding to operation pendant <NUM> ("operation pendant" in step S152), control device <NUM> acquires the operation instruction (internal command) from operation pendant <NUM> (step S160), and generates command <NUM> according to the acquired operation instruction (step S162).

When selection flag <NUM> indicates the value corresponding to support device <NUM> ("support device" in step S152), control device <NUM> acquires the internal command from support device <NUM> (step S164), and generates command <NUM> according to the internal command corresponding to the acquired operation instruction (step S166).

Control device <NUM> determines whether the output start condition of command <NUM> is satisfied (step S168). The output start condition of command <NUM> may be defined by appropriately combining the output value from IEC program execution engine <NUM>, the input value from robot controller <NUM>, the instruction from support device <NUM>, and another arbitrary information.

When the output start condition of command <NUM> is satisfied (YES in step S168), control device <NUM> determines whether the next control period arrives (step S170). When the next control period does not arrive (NO in step S170), control device <NUM> waits for the processing until the next control period arrives.

When the next control cycle arrives (YES in step S170), control device <NUM> outputs previously-generated command <NUM> (step S172).

When the output start condition of command <NUM> is not satisfied (NO in step S168), control device <NUM> skips the pieces of processing of steps S170 and S172.

Then, the pieces of processing from step S150 are repeated.

<FIG> is a flowchart illustrating the processing procedure in robot controller <NUM> constituting robot control system <NUM> according to the present embodiment. Each step illustrated in <FIG> may be implemented by processor <NUM> (control processing circuit <NUM>) of robot controller <NUM> executing robot system program <NUM>.

As illustrated in <FIG>, in robot controller <NUM>, the processing by target trajectory generation module <NUM> and the processing by command value generation module <NUM> are executed in parallel.

As the processing related to target trajectory generation module <NUM>, robot controller <NUM> determines whether command <NUM> is received from control device <NUM> (step S200). That is, robot controller <NUM> executes the processing for receiving command <NUM> transmitted from control device <NUM>.

When command <NUM> is not received from control device <NUM> (NO in step S200), robot controller <NUM> repeats the processing of step S200.

When command <NUM> is received from control device <NUM> (YES in step S200), robot controller <NUM> determines whether all of commands <NUM> are received (step S202). When only a part of command <NUM> is received (NO in step S202), robot controller <NUM> repeats the processing of step S200 and subsequent steps.

When all commands <NUM> are received (YES in step S202), robot controller <NUM> generates the target trajectory according to received command <NUM> (step S204). Then, the pieces of processing from step S200 are repeated.

On the other hand, as the processing related to command value generation module <NUM>, robot controller <NUM> determines whether the next control period arrives (step S250). When the next control period does not arrive (NO in step S250), robot controller <NUM> waits for the processing until the next control period arrives.

When the next control period arrives (YES in step S250), robot controller <NUM> determines whether the output condition of the command value to robot <NUM> is satisfied (step S252). The output condition of the command value to robot <NUM> may be defined by appropriately combining the latest output value transmitted from control device <NUM>, the state value held by management module <NUM>, the state value acquired by robot controller <NUM>, and another arbitrary information.

When the output condition of the command value to robot <NUM> is not satisfied (NO in step S252), robot controller <NUM> skips the pieces of processing of steps S254 and S256.

When the output condition of the command value to robot <NUM> is satisfied (YES in step S252), robot controller <NUM> sequentially generates the command value for driving each axis of robot <NUM> so as to provide the behavior instructed by command <NUM> from control device <NUM> (steps S254 to S256). More specifically, robot controller <NUM> generates the command value for each motor <NUM> constituting robot <NUM> to be controlled according to the previously-generated target trajectory (step S254). Then, robot controller <NUM> outputs each generated command value (step S256).

Then, the pieces of processing from step S250 are repeated.

In robot control system <NUM> according to the present embodiment, control device <NUM> and robot controller <NUM> are linked to control the behavior of robot <NUM>. The processing load can be distributed by adopting such the configuration. As a result, even when the processing capability of control device <NUM> is not high, the behaviors of the plurality of robots <NUM> can be controlled.

It should be considered that the disclosed embodiment is an example in all respects and not restrictive. The scope of the present invention is defined by not the above description, but the claims.

Claim 1:
A robot control system (<NUM>) comprising:
a first control device (<NUM>); and
a second control device (<NUM>) network-connected to the first control device and configured to control a robot (<NUM>),
wherein the first control device comprises;
a command generation unit (<NUM>) configured to generate a command (<NUM>) instructing behavior of the robot and including a selection unit (<NUM>), a plurality of sources that provide information about generation of the command being connectable to the command generation unit, the selection unit being configured to select from which source in the plurality of sources the command is generated[, and
a first communication unit (<NUM>) configured to transmit the command generated by the command generation unit according to the information from the selected source in the plurality of sources to the second control device and to notify the second control device which source is selected (<NUM>), and
the second control device comprises;
a second communication unit (<NUM>) configured to receive the command transmitted from the first control device, and
a command value generation unit (<NUM>) configured to sequentially generate a command value for driving each axis of the robot so as to provide the behavior instructed by the command from the first control device and to vary a generation characteristic (<NUM>) of the command value for driving each axis of the robot according to which source is selected.