Field of the Invention
The present invention relates to a controller used in conjunction with one or more robots and used to program the one or more robots to carry out a particular task.
Discussion of the Background
Robotic automation has improved the speed, reliability, and cost associated with a variety of manufacturing processes. However, programming the operation of manufacturing robotics is a time-consuming and difficult process that requires extensive training and expense. Programming can be difficult to modify, and can require configuration of multiple devices, each involving different programming languages, interfaces, and communication systems.
WO 2012/097835 A2 describes the provision of coordinates of a movement path by a programmable logic controller. WO 2013/013686 A1 describes a system for commanding a robot characterized in that a command queue is foreseen to keep at least the lastly executed robot command within its memory.
The present invention advantageously provides a programmable logic controller that controls a robot to manipulate a plurality of workpieces. The programmable logic controller includes a sensor interface configured to receive sensor data that represents information of the workpieces. The programmable logic controller includes a scheduler that is configured to create a schedule that includes information representing an order in which the workpieces are to be manipulated. The schedule created by the scheduler is based on the sensor data. The programmable logic controller also includes a synchronizer that is configured to receive the schedule. The synchronizer is configured to cause the robot to manipulate the workpieces based on the schedule and based on at least one function block. The at least one function block is configured via the programmable logic controller.
The present invention advantageously provides a programmable logic controller for controlling at least one robot to manipulate a plurality of workpieces. The programmable logic controller comprises circuitry configured to receive sensor data representing information of a plurality of workpieces to be manipulated by a robot. The circuitry is also configured to create a schedule that includes information representing an order in which the workpieces are to be manipulated based on the sensor data. The circuitry is also configured to receive a schedule and thereafter control the robot to manipulate the workpieces based on the schedule and at least one function block, the at least one function block being configured with the programmable logic controller.
The present invention also advantageously provides a system for manipulating a plurality of workpieces. The system comprises a sensor, a first robot, a second robot, and a programmable logic controller for controlling the first robot and the second robot. The programmable logic controller includes a sensor interface configured to receive sensor data from the sensor representing location information of the workpieces. The programmable logic controller includes a scheduler configured to create a schedule including information representing an order in which the workpieces are to be manipulated based on the sensor data. The programmable logic controller also includes a synchronizer configured to cause at least one of the first robot and the second robot to manipulate the workpieces based on the schedule and at least one function block, the at least one function block being configured with the programmable logic controller.
The present invention also advantageously provides a method of controlling at least one robot to manipulate a plurality of workpieces with a programmable logic controller. The method comprises receiving sensor data representing location information of the workpieces. The method also comprises creating a schedule including information representing an order in which the workpieces are to be manipulated based on the sensor data. Also, the method comprises controlling a robot to manipulate the workpieces based on the schedule and at least one function block, the at least one function block being configured with the programmable logic controller.
A more complete appreciation of the invention and many of the attendant advantages thereof will become readily apparent with reference to the following detailed description, particularly when considered in conjunction with the accompanying drawings, in which:
Embodiments of the present invention will be described hereinafter with reference to the accompanying drawings. In the following description, the constituent elements having substantially the same function and arrangement are denoted by the same reference numerals, and repetitive descriptions will be made only when necessary.
A configuration of a programmable logic controller (PLC) 10 according to an exemplary embodiment of the invention will be described with reference to
As illustrated in
The position of the workpieces 16, 18 on workpiece supplier 22 is determined with the use of at least one sensor 12, which can include a camera 120. Camera 120 tracks the position of workpieces 16, 18 as they move according to motion imparted by workpiece supplier 22. Camera 120 tracks the location of stationary workpieces 16, 18, and updates the positions of the workpieces 16, 18 as workpieces are manipulated by a robot 14. The PLC 10 can also receive information regarding the position and speed of the workpiece supplier 22 via an encoder or similar device.
The pick scheduler 104 and application programming interface 106 can be stored in memory 110. The pick scheduler 104 and the application programming interface 106 can be software programs executed by the processing unit 112. Thus the pick scheduler 104 and the application programming interface 106 and can be stored together as an application, or independently as separate applications in memory 110.
The processing unit 112 accesses memory 110 in order to execute the pick scheduler 104 and application programming interface 106. Processing unit 112 is a processing device such as a microprocessor that executes the pick scheduler 104 and the application programming interface 106. Volatile memory 114 is employed by the PLC 10 to temporarily store information prior to and during the operation of the pick scheduler 104 and the application programming interface 106. The volatile memory 114 can store raw data or parsed data that is received by the sensor interface 102 as well as other information necessary for the operation of the pick scheduler 104 and the application programming interface 106.
The PLC 10 is configurable by a user via at least one of a personal computer 32, an input device 34, and a display 36. These components each allow a user to program or configure the detailed operation of the pick scheduler 104 and the application programming interface 106, including interacting with function blocks.
The personal computer 32 is connected to the PLC 10 via an Ethernet connection or wireless network, for example. This allows a user to control the operation of a robot 14 by interacting with the PLC 10 itself, without programming or configuring additional devices such as a motion controller. Thus, control of detailed operation of one or more robots can be accomplished by configuring the PLC 10 with a personal computer 32.
Input device 34 is a human interface device that allows direct interaction with PLC 10. For example, input device 34 can be a pendant that is used to independently configure PLC 10 either by wired or wireless connection. Input device 34 can also constitute a mouse and/or keyboard. Thus, the input device 34 can be used in place of the personal computer 32 to configure the PLC 10 and modify the operation of the pick scheduler 104 and the application programming interface 106.
Display 36 is a display device that visually presents information to a user of PLC 10. The display 36 can include a touch interface and form a human interface device to allow a user to interact with pick scheduler 104 and application programming interface 106 and thus can be used to configure PLC 10 without the use of another device and either by wired or wireless connection.
Thus, by configuring the PLC 10 with a personal computer 32, input device 34, and/or display 36, the PLC 10 is operable to control the motion of at least one robot 14. In one embodiment, the PLC 10 controls a plurality of robots 14 along communication path 204. The PLC 10 is also capable of communicating with one or more additional PLCs 10, each of which is operable to control at least one corresponding robot 14. Thus, the PLC 10 can be employed in a complex environment utilizing a large number of robots 14. As illustrated in
As illustrated in
Alternatively or in addition to a vision-based sensor 12 including a camera 120, sensor 12 can include a barcode reader, a height sensor, a distance detector that employs a laser, or other detectors that are useful in providing information for each of workpieces 16, 18.
The information captured by sensor 12 is transmitted to sensor interface 102 via sensor communication bus 202, which is a physical connection such as Ethernet cable, coaxial cable, universal serial bus cable. Alternatively, sensor communication bus 202 can be a wireless connection that provides communication between sensor 12 and sensor interface 102.
With reference to
Returning to
The pick scheduler 104 accepts and processes the raw data from sensor interface 102 that includes information of the workpieces 16, 18. One function of the pick scheduler 104 is to parse the raw data in order to determine, for example, the positions of each individual workpiece 16, 18. Parsing the raw data includes determining the coordinates of each of the workpieces on a common coordinate system, determining the angle or orientation of each workpiece, and removing any workpieces that includes a score value that is below a threshold or diverges in some way from the other workpieces. The parsing performed by the pick scheduler 104 can also include identifying and removing duplicates from the raw data that occur when a single workpiece 16, 18 is identified more than once. Thus, a workpiecce 16, 18 is not detected twice in two subsequent packets of data from the sensor interface 102.
Queuing performed by pick scheduler 104 will be described with reference to
Sequential queuing is illustrated in the exemplary robot assignment provided in
Turning to
Other types of custom queuing are also possible. Custom queuing allows a user to determine how the pick scheduler 104 assigns the respective workpieces to one or more robots according to any data that is obtained by the sensor interface 102. Thus, custom queuing provides a flexible means for configuring the PLC 10 without the need for in-depth programming knowledge. Any of the above-described queuing methods of
Advantageously, each of the above-described queuing methods, sequential queuing, product type queuing, and custom queuing, requires interaction only with the PLC 10. Thus, there is no need for programming a robot controller, a motion controller, or another processing device located between the PLC 10 and a robot 14.
Details of the application programming interface 106 will now be described with reference to
As illustrated in
The start synchronization function block can allow a user to identify a particular robot 14 and a particular workpiece supplier 22. Thus, the application programming interface 106 allows a user to control how a particular robot 14 interacts with a given workpiece supplier 22. This function is advantageous when multiple robots 14 and multiple workpiece suppliers 22 are present. The start synchronization function block allows simplified programming of a robot 14 to operate in conjunction with a workpiece supplier 22 that provides a plurality of workpieces 16, 18 by imparting the workpieces 16, 18 with motion.
With continued reference to
As illustrated in
In addition to the start synchronization and stop synchronization function blocks, the application programming interface can also include a variety of other function blocks. For example, motion blocks that provide predetermined motions for a robot can be included. These motion blocks can include basic motions that, when used with the pick scheduler 104, allow for the manipulation of workpieces 16, 18 that enter the queue of a particular robot 14. The use of motion blocks provide for robot 14 actions such as moving to a wait position, picking a workpiece, assembling or combining a plurality of workpieces, moving to a placement position, and releasing a workpiece. Other function blocks with various motions and manipulations can be employed in the application programming interface 106. Each function block can be configured by use of the personal computer 32, input device 34, and/or display 36.
The above-described function blocks of the application programming interface 106 can be employed in concert with the pick scheduler 104 to control robots 14 in a variety of scenarios of various complexity. The start synchronization function block is employed to provide accurate tracking of a particular workpiece 16, 18 that is in motion along workpiece supplier 22. The start synchronization function block also controls a robot 14 to wait until a workpiece 16, 18 in the queue of the robot 14 is within a working range of the robot 14. Once this workpiece 16, 18 is manipulated or found to be out of range of a robot 14, the stop synchronization function block can then remove the workpiece 16, 18 from the queue, and place the workpiece 16, 18 on the queue for a different robot 14.
One exemplary scenario in which sensor interface 102, pick scheduler 104, and application programming interface 106 are used to control one or more robots 14 to manipulate a workpiece 16, 18 will now be described with reference to
After data is parsed in steps S104, S106, and S108, the process proceeds to step S110 in which one or more workpieces 16, 18 are assigned to one or more of the robots. Step S110 is performed by the pick scheduler 104 to generate one or more queues as illustrated in
Once at least one workpiece is placed in a queue and is thereby assigned to a robot 14 in step S110, the function blocks corresponding to the application programming interface 106 operate to control the motion of a robot 14 with respect to the workpiece 16, 18 in the queue. Prior to or during the operation of PLC 10, a start synchronization function block can be presented to a user. Thus, step S112 is performed by the PLC 10 in accordance with the application programming interface 106 of the PLC 10, as configured by a user. In step S112, a robot 14 is controlled to begin tracking a first workpiece 16, 18 in the queue of a robot 14. Step S112 can include waiting until a workpiece 16, 18 is located within a working range of a robot 14. The synchronization performed with the start synchronization can be configured by a user to achieve a desired behavior of robot 14.
In step S114, the PLC 10, controls a robot 14 to manipulate the first workpiece 16, 18 in the queue of a robot 14 according to the application programming interface 106. This manipulation can be performed taking into account an offset that is determined by the start synchronization function block when workpiece supplier 22 operates to provide motion to workpieces 16, 18 over time. The manipulation in step S114 can also be performed by the PLC 10 while taking into account other configurations made by a user to the start synchronization function block. Additionally, step S114 can be performed by the PLC 10 based on any other function block configured by the user, including function blocks that define desired motions of the robot 14. Thus, step S114 is an example of controlling robot 14 to manipulate workpieces 16, 18 based on the schedule and at least one function block, the at least one function block being configured with the programmable logic controller. When multiple robots 14 are present, S114 involves controlling a plurality of robots 14 according to their respective queues.
In step S116, once a workpiece 16, 18 has been manipulated, the stop synchronization function block is employed by the PLC 10 to remove that workpiece 16, 18 from the queue of the corresponding robot 14. Thus, the robot 14 is then available to begin synchronization with the next workpiece 16, 18 in the queue. Step S116 is performed by the PLC 10 based on at least one stop synchronization function block configured by a user.
Steps S102 to S110 are repeatedly performed by the PLC 10 to add workpieces to queues for robots 14. Steps S110 to S116 employ the queues generated in steps S102 to S110, and are also repeatedly performed by the PLC 10. Thus, while steps S102 to S110 result in a queue for the robots 14, steps S112 to S116 can be contemporaneously and independently performed while the queue is being generated and modified, so long as at least one workpiece 16, 18 is present in the queue. Also, as described above, a user can interact with the PLC 10 to interact directly with the queues, and perform step S110 manually. The user configures the PLC 10 via the application programming interface 106, and thus can define the operation of the function blocks employed in steps S112 and S116.
As illustrated in
In step S206, the PLC 10 compares a working range of the robot 14 to the present location of the workpiece 16, 18 which was the subject of the start of synchronization in step S204. If the workpiece 16, 18 is not in range the process continues to step S208. Step S208 is performed by the PLC 10 in accordance with a function block of the application programming interface 106. In step S208, a stop synchronization function block is employed to move the workpiece 16, 18, to the queue of another robot, and the process proceeds to step S218, which will be described in detail below. If the result of step S206 is affirmative, then the workpiece is found to be within range of the robot 14, and the process proceeds to step S210.
In step S210, an offset is added to the sensor data that is provided to the pick scheduler 104 via the sensor interface 102. Therefore, the target position for a robot 14 to move to manipulate the workpiece 16, 18 includes an offset that represents the motion of the workpiece 16, 18 as discussed previously. In step S212, the robot 14 is controlled by the PLC 10 to move to the manipulation position and perform the manipulation of the workpiece 16, 18.
In step S214, a stop synchronization function block of the application programming interface 106 is employed to cause the PLC 10 to remove the manipulated workpiece 16, 18 from the queue. In step S216, the workpiece 16, 18 is then placed in a placement position by moving the robot 14 to the placement position and releasing the workpiece 16, 18. The placement position can be a case, pallet, or conveyor, for example. The robot 14 is controlled by the PLC 10 to move the workpiece 16, 18 to the placement position in step S216.
In step S218 the PLC 10 determines if there are workpieces 16, 18 present in the queue. If this determination is affirmative, the process returns to step S202. If no workpieces 16, 18 remain in the queue, the process ends, and the PLC 10 causes robot 14 to wait until at least one workpiece 16, 18 is added to the queue for the robot 14 by pick scheduler 104.
The process depicted in
Another process according to an embodiment of the present invention will now be described with reference to
As depicted in
First, as provided in step S302, robot 14 is moved to a wait position. This step can be performed by the PLC 10 as configured with a function block of the application programming interface 106. In step S304, synchronization with first workpiece supplier 22A is started by the PLC 10, in accordance with a start synchronization function block of application programming interface 106. Step S304 is performed when at least one workpiece is present in the queue of a robot 14. In step S306, offset data is added to sensor data.
In step S308, PLC 10 controls robot 14 to manipulate a workpiece 16, 18. For example, robot 14 moves to the workpiece 16, 18 and picks the workpiece 16, 18. Other manipulations, such as assembly, disassembly, pressing, welding, etc., can also be performed. Subsequently, in step S310, a stop synchronization function block of application programming interface 106 is employed to stop synchronization with first workpiece supplier 22A.
In step S312, the robot is moved to a placement wait position by the PLC 10. This step can involve carrying the workpiece 16, 18 that was picked in step S308 to a placement wait position, such as a position between first workpiece supplier 22A and second workpiece supplier 22B. In preparation for moving the workpiece to a placement position, in step S314, a start synchronization function block of application programming interface 106 is used to synchronize the robot 14 with the second workpiece supplier 22B. In step S316, offset data is added to the sensor data to provide accurate control over the motion of robot 14 relative to the second workpiece supplier 22B. Thus, the synchronization allows the picked workpiece 16, 18 to be moved with the robot 14 to a placement position in step S318. Step S318 can include placing a workpiece on a tray 24 located on the second workpiece supplier 22B, as illustrated in
After a workpiece 16, 18 is placed in step S318, the process proceeds to step S320 in which the PLC 10 determines if the tray 24 is complete. If the result is affirmative, synchronization with the second workpiece supplier 22B is stopped via application programming interface 106 in step S322. This can be performed by removing the placed workpiece 16, 18 from the queue for the robot 14 that placed the workpiece 16, 18 on the second workpiece supplier 22B. After step S322 is performed, the process returns to step S302.
If the result of the determination in step S320 is negative, the process proceeds to step S324, in which the PLC 10 determines if the robot 14 that placed the workpiece 16, 18 on the corresponding tray 24 is finished with the tray 24. If the answer to the determination in step S324 is affirmative, the tray 24 is incomplete and the robot 14 that placed the workpiece 16, 18 on the tray 24 does not have additional work to perform on the tray 24. Therefore, in step S326, synchronization with tray 24 and second workpiece supplier 22B is stopped and tray 24 is moved to the queue of the next robot 14 by application programming interface 106. Thus, the next robot will perform work as to complete the tray 24 as necessary. The process then proceeds to step S302, in which the PLC 10 moves the robot 14 that placed the workpiece 16, 18 on tray 24 to the wait position again.
If the determination in step S324 is negative, the robot 14 that placed the workpiece 16, 18 on the tray 24 has additional work to perform on the tray 24. This additional work can include placement of one or more additional workpieces on the tray 24. The process therefore proceeds to step S328 where the PLC 10, in accordance with application programming interface 106, stops synchronization with the tray 24 and second workpiece supplier 22B but keeps the tray in the queue of the robot 14. The process then returns to step S302.
As illustrated in the foregoing examples, the cooperative action of the sensor interface 102, the pick scheduler 104, and the application programming interface 106 of the PLC 10 provide for extensive programming and configuration. By interfacing with PLC 10 by at least one of a personal computer 32, input device 34, and a display 36, a user can program a single device, the PLC 10, and control the motions of multiple robots 14 in applications ranging from simple to complex.
All configuration, programming, and adjustment necessary to achieve a desired operation of one or more robots can be performed inside a PLC environment. As there is no need to perform programming on intermediate devices such as a motion controller, or program individual robots, the present invention allows a user to configure and program operations of a plurality of robots without the need to learn additional programming languages. The ability to interact with only PLC 10 also simplifies the components required, facilitating installation, set up, and troubleshooting. Furthermore, by decoupling the operation of a robot from the sensor simplifies the process of configuring the PLC 10.
It should be noted that the exemplary embodiments depicted and described herein set forth the preferred embodiments of the present invention, and are not meant to limit the scope of the claims hereto in any way. Numerous modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that, within the scope of the appended claims, the invention can be practiced otherwise than as specifically described herein.
The present application claims priority under 35 U.S.C. §119 to U.S. Provisional Application No. 62/217,074, filed on Sep. 11, 2015, the entire contents of which are herein incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62217074 | Sep 2015 | US |