Patent Publication Number: US-2020283994-A1

Title: Automated control of dipper swing for a shovel

Description:
RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 15/688,659, filed Aug. 28, 2017, which is a continuation of U.S. patent application Ser. No. 14/929,167, filed Oct. 30, 2015, now U.S. Pat. No. 9,745,721, which is a divisional application of U.S. patent application Ser. No. 13/843,532, filed Mar. 15, 2013, now U.S. Pat. No. 9,206,587, which claims priority to U.S. Provisional Patent Application No. 61/611,682, filed Mar. 16, 2012, the entire content of each of which is incorporated herein by reference. 
    
    
     BACKGROUND 
     This invention relates to monitoring performance of an industrial machine, such as an electric rope or power shovel, and automatically adjusting the performance. 
     SUMMARY 
     Industrial machines, such as electric rope or power shovels, draglines, etc., are used to execute digging operations to remove material from, for example, a bank of a mine. An operator controls a rope shovel during a dig operation to load a dipper with materials. The operator deposits the materials in the dipper into a hopper or a truck. After unloading the materials, the dig cycle continues and the operator swings the dipper back to the bank to perform additional digging. Some operators improperly swing the dipper into the bank at a high rate of speed, which, although slows and stops the dipper for a dig operation, can damage the dipper and other components of the shovel, such as the racks, handles, saddle blocks, shipper shaft, and boom. The dipper can also impact other objects during a dig cycle (e.g., the hopper or truck, the bank, other pieces of machinery located around the shovel, etc.), which can damage the dipper or other components. 
     Accordingly, embodiments of the invention automatically control the swing of the dipper to reduce impact and stresses caused by impacts of the dipper with objects located around the shovel, such as the bank, the ground, and the hopper. For example, a controller monitors operation of the dipper after the dipper has been unloaded and is returned to the bank for a subsequent dig operation. The controller monitors various aspects of the dipper swing, such as speed, acceleration, and reference indicated by the operator controls (e.g., direction and force applied to operator controls, such as a joystick). The controller uses the monitored information to determine if the dipper is swinging too fast where the dipper will impact the bank at an unreasonable speed. In this situation, the controller uses motor torque to slow the swing of the dipper when it detects high impact with the bank. In particular, the controller applies motor torque in the opposite direction of the movement of the dipper, which counteracts the speed of the dipper and decelerates the swing speed. 
     In particular, one embodiment of the invention provides a method of compensating swing of a dipper of a shovel. The method includes determining, by at least one processor, a direction of compensation opposite a current swing direction of the dipper, and applying, by the at least one processor, the maximum available swing torque in the direction of compensation opposite the current swing direction of the dipper when an acceleration of the dipper is greater than a predetermined acceleration value. 
     Another embodiment of the invention provides a system for compensating swing of a dipper of a shovel. The system includes a controller including at least one processor. The at least one processor is configured to limit the maximum available swing torque, determine a crowd position of the dipper, and restrict the swing torque ramp up to the limited maximum available swing torque over a predetermined period of time after the dipper reaches a predetermined crowd position. 
     Other aspects of the invention will become apparent by consideration of the detailed description and accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an industrial machine according to an embodiment of the invention. 
         FIGS. 2A and 2B  illustrate a swing of the machine of  FIG. 1  between a dig location and a dumping location. 
         FIG. 3  illustrates a controller for an industrial machine according to an embodiment of the invention. 
         FIGS. 4-9  are flow charts illustrating methods for automatically controlling a swing of a dipper of the machine of  FIG. 1   
         FIGS. 10 a -10 c  and 11 a -11 c    are flow charts illustrating subroutines activated within at least some of the methods of  FIGS. 4-9 . 
         FIGS. 12-13  are graphical representations of the resulting torque-speed curves for the subroutines of  FIGS. 10 a -10 c  and 11 a   - 11   c.    
     
    
    
     DETAILED DESCRIPTION 
     Before any embodiments of the invention are explained in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the following drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limited. The use of “including,” “comprising” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms “mounted,” “connected” and “coupled” are used broadly and encompass both direct and indirect mounting, connecting and coupling. Further, “connected” and “coupled” are not restricted to physical or mechanical connections or couplings, and can include electrical connections or couplings, whether direct or indirect. Also, electronic communications and notifications may be performed using any known means including direct connections, wireless connections, etc. 
     It should also be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components may be used to implement the invention. In addition, it should be understood that embodiments of the invention may include hardware, software, and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic based aspects of the invention may be implemented in software (e.g., stored on non-transitory computer-readable medium) executable by one or more processors. As such, it should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components may be utilized to implement the invention. Furthermore, and as described in subsequent paragraphs, the specific mechanical configurations illustrated in the drawings are intended to exemplify embodiments of the invention and that other alternative mechanical configurations are possible. For example, “controllers” described in the specification can include standard processing components, such as one or more processors, one or more computer-readable medium modules, one or more input/output interfaces, and various connections (e.g., a system bus) connecting the components. 
       FIG. 1  depicts an exemplary rope shovel  100 . The rope shovel  100  includes tracks  105  for propelling the rope shovel  100  forward and backward, and for turning the rope shovel  100  (i.e., by varying the speed and/or direction of the left and right tracks relative to each other). The tracks  105  support a base  110  including a cab  115 . The base  110  is able to swing or swivel about a swing axis  125 , for instance, to move from a digging location to a dumping location and back to a digging location. In some embodiments, movement of the tracks  105  is not necessary for the swing motion. The rope shovel further includes a dipper shaft or boom  130  supporting a pivotable dipper handle  135  and a dipper  140 . The dipper  140  includes a door  145  for dumping contents contained within the dipper  140  into a dump location. 
     The shovel  100  also includes taut suspension cables  150  coupled between the base  110  and boom  130  for supporting the boom  130 ; a hoist cable  155  attached to a winch (not shown) within the base  110  for winding the cable  155  to raise and lower the dipper  140 ; and a dipper door cable  160  attached to another winch (not shown) for opening the door  145  of the dipper  140 . In some instances, the shovel  100  is a P&amp;H® 4100 series shovel produced by Joy Global, although the shovel  100  can be another type or model of mining excavator. 
     When the tracks  105  of the mining shovel  100  are static, the dipper  140  is operable to move based on three control actions, hoist, crowd, and swing. Hoist control raises and lowers the dipper  140  by winding and unwinding the hoist cable  155 . Crowd control extends and retracts the position of the handle  135  and dipper  140 . In one embodiment, the handle  135  and dipper  140  are crowded by using a rack and pinion system. In another embodiment, the handle  135  and dipper  140  are crowded using a hydraulic drive system. The swing control swivels the dipper  140  relative to the swing axis  125 . During operation, an operator controls the dipper  140  to dig earthen material from a dig location, swing the dipper  140  to a dump location, release the door  145  to dump the earthen material, and tuck the dipper  140 , which causes the door  145  to close, while swinging the dipper  140  to the same or another dig location. 
       FIG. 1  also depicts a mobile mining crusher  175 . During operation, the rope shovel  100  dumps materials from the dipper  140  into a hopper  170  of the mining crusher  175  by opening the door  145 . Although the rope shovel  100  is described as being used with the mobile mining crusher  175 , the rope shovel  100  is also able to dump materials from the dipper  140  into other material collectors, such as a dump truck (not shown) or directly onto the ground. 
       FIG. 2A  depicts the rope shovel  100  positioned in a dumping position. In the dumping position, the boom  130  is positioned over the hopper  170  and the door  145  is opened to dump the materials contained within the dipper  140  into the hopper  170 . 
       FIG. 2B  depicts the rope shovel  100  positioned in a digging position. In the digging position, the boom  130  digs with the dipper  140  into a bank  215  at a dig location  220 . After digging, the rope shovel  100  is returned to the dumping position and the process is repeated as needed. 
     As described above in the summary section, when the shovel  100  swings the dipper  140  back to the digging position, the bank  215  should not be used to decelerate and stop the dipper  140 . Therefore, the shovel  100  includes a controller that may compensate control of the dipper  140  to ensure the dipper  140  swings at a proper speed and is decelerated as it nears the bank  215  or other objects. The controller can include combinations of hardware and software operable to, among other things, monitor operation of the shovel  100  and compensate control the dipper  140  if applicable. 
     A controller  300  according to one embodiment of the invention is illustrated in  FIG. 3 . As illustrated in  FIG. 3 , the controller  300  includes, among other things, a processing unit  350  (e.g., a microprocessor, a microcontroller, or another suitable programmable device), non-transitory computer-readable media  355 , and an input/output interface  365 . The processing unit  350 , the media  355 , and the input/output interface  365  are connected by one or more control and/or data buses. It should be understood that in other constructions, the controller  300  includes additional, fewer, or different components. 
     The computer-readable media  355  stores program instructions and data, and the controller  300  is configured to retrieve from the media  355  and execute, among other things, the instructions to perform the control processes and methods described herein. The input/output interface  365  exchanges data between the controller  300  and external systems, networks, and/or devices and receives data from external systems, networks, and/or devices. The input/output interface  365  can store data received from external sources to the media  355  and/or provides the data to the processing unit  350 . 
     As illustrated in  FIG. 3 , the controller  300  receives input from an operator interface  370 . The operator interface  370  includes a crowd control, a swing control, a hoist control, and a door control. The crowd control, swing control, hoist control, and door control include, for instance, operator-controlled input devices, such as joysticks, levers, foot pedals, and other actuators. The operator interface  370  receives operator input via the input devices and outputs digital motion commands to the controller  300 . The motion commands include, for example, hoist up, hoist down, crowd extend, crowd retract, swing clockwise, swing counterclockwise, dipper door release, left track forward, left track reverse, right track forward, and right track reverse. Upon receiving a motion command, the controller  300  generally controls the one or more motors or mechanisms (e.g., a crowd motor, swing motor, hoist motor, and/or a shovel door latch) as commanded by the operator. As will be explained in greater detail, however, the controller  300  is configured to compensate or modify the operator motion commands and, in some embodiments, generate motion commands independent of the operator commands. In some embodiments, the controller  300  also provides feedback to the operator through the operator interface  370 . For example, if the controller  300  is modifying operator commands to limit operation of the dipper  140 , the controller  300  can interact with the user interface module  370  to notify the operator of the automated control (e.g., using visual, audible, and/or haptic feedback). 
     The controller  300  is also in communication with a plurality of sensors  380  to monitor the location, movement, and status of the dipper  140 . The plurality of sensors  380  can include one or more crowd sensors, swing sensors, hoist sensors, and/or shovel sensors. The crowd sensors indicate a level of extension or retraction of the dipper  140 . The swing sensors indicate a swing angle of the handle  135 . The hoist sensors indicate a height of the dipper  140  based on the hoist cable  155  position. The shovel sensors  380  indicate whether the dipper door  145  is open (for dumping) or closed. The shovel sensors  380  may also include one or more weight sensors, acceleration sensors, and/or inclination sensors to provide additional information to the controller  300  about the load within the dipper  140 . In some embodiments, one or more of the crowd sensors, swing sensors, and hoist sensors include resolvers or tachometers that indicate an absolute position or relative movement of the motors used to move the dipper  140  (e.g., a crowd motor, a swing motor, and/or a hoist motor). For instance, as the hoist motor rotates to wind the hoist cable  155  to raise the dipper  140 , the hoist sensors output a digital signal indicating an amount of rotation of the hoist and a direction of movement to indicate relative movement of the dipper  140 . The controller  300  translates these outputs into a position (e.g., height), speed, and/or acceleration of the dipper  140 . 
     As noted above, the controller  300  is configured to retrieve instructions from the media  355  and execute the instruction to perform various control methods relating to the shovel  100 . For example,  FIGS. 4-9  illustrate methods performed by the controller  300  based on instructions executed by the processor  350  to monitor dipper swing performance and adjust or compensate dipper performance based on real-world feedback. Accordingly, the proposed methods help mitigate stresses applied to the shovel  100  from swing impacts in various shovel cycle states. For example, the controller  300  can compensate dipper control while the dipper  140  is digging in the bank  215 , swinging to the mobile crusher  175 , or freely-swinging. 
     The methods illustrated in  FIGS. 4-9  represent multiple variations or options for implementing such an automated control method for dipper swing. It should be understood that additional options are also possible. In particular, as illustrated in  FIGS. 4-9 , some of the proposed methods incorporate subroutines that also have multiple options or variations for implementing. For example, various acceleration monitoring implementations can be combined with different shovel states, such as dig, swing-to-dump (e.g., swing-to-truck), etc. In addition, rather than explain every permutation of a control method and a subroutine, the subroutines are referenced in the methods illustrated in  FIGS. 4-9  but are described separately in  FIGS. 10 a -10 c  and 11 a -11 c   . In particular, the points of intersection of the subroutines with the control methods illustrated in  FIGS. 4-9  are marked using a dashed line (e.g.,  ). In addition, some of the differences from one iteration to the next are marked using a dot-and-dashed line (e.g.,  ). 
       FIG. 4  illustrates an Option #1 for compensating dipper swing control. As illustrated in  FIG. 4 , when the shovel  100  is in the dig mode or state (at  500 ), the controller  300  can optionally limit the maximum available swing torque of the dipper  140  to a predetermined percentage of the maximum available torque (e.g., approximately 30% to approximately 80% of the maximum available swing torque) (at  502 ). The controller  300  also monitors the crowd resolver counts to determine a maximum crowd position (at  504 ). After determining a maximum crowd position, the controller  300  determines when the operator has retracted the dipper  140  a predetermined percentage (e.g., approximately 5% to approximately 40%) from the maximum crowd position (at  506 ). When this occurs, the controller  300  allows the swing torque to ramp up to the maximum available torque over a predetermined time period T (at  508 ). In some embodiments, the predetermined time period is between approximately 100 milliseconds and 2 seconds (e.g., approximately 1.0 second). 
     As shown in  FIG. 4 , when the shovel  100  is in a swing-to-truck state (at  510 ), the controller  300  optionally determines if the swing speed of the dipper  140  is greater than a predetermined percentage of the maximum speed (e.g., approximately 5% to approximately 40% of the maximum speed) (at  512 ). In some embodiments, until the swing speed reaches this threshold, the controller  300  does not compensate the control of the dipper  140 . The controller  300  also determines a swing direction of the dipper  140  (at  514 ). The controller  300  uses the determined swing direction to identify a direction of compensation (i.e., a direction opposite the current swing direction to counteract and slow a current swing speed). 
     The controller  300  then calculates actual swing acceleration (at  516 ). If the value of the actual acceleration (e.g., the value of a negative acceleration) is greater than a predetermined value a (e.g., indicating that the dipper  140  struck an object) (at  518 ), the controller  300  compensates swing control of the dipper  140 . In particular, the controller  300  can increase the maximum available swing torque (e.g., up to approximately 200%) and apply the increased available torque (e.g., 100% of the increased torque) in the compensation direction (at  520 ). It should be understood that in some embodiments, the controller  300  applies the maximum available torque limit without initially increasing the limit. After the swing speed drops to or below a predetermined value Y (e.g., approximately 0 rpm to approximately 300 rpm) (at  522 ), the controller  300  stops swing compensation and the dipper  140  returns to its default or normal control (e.g., operator control of the dipper  140  is not compensated by the controller  300 ). 
     In the return-to-tuck state of Option #1 (at  524 ), the controller  300  performs a similar function as the swing-to-truck state of Option #1. However, the predetermined value a that the controller  300  compares the current swing acceleration (at  518 ) against is adjusted to account for the dipper  140  being empty rather than full as during the swing-to-truck state. 
       FIGS. 5 a  and 5 b    illustrates an Option #2 for compensating dipper swing control. As illustrated in  FIG. 5 a   , when the shovel  100  is in the dig state (at  530 ), the controller  300  operates similar to Option #1 described above for the dig state. In particular, the controller  300  operates similar to Option #1 through allowing the swing torque to ramp up to the maximum available torque over a predetermined time period T (at  508 ) after the dipper  140  has been retracted to a predetermined crowd position (at  506 ). Once this occurs, in Option #2, the controller  300  calculates actual swing acceleration (e.g., a negative acceleration) of the dipper  140  (at  532 ). If the value of the actual acceleration is greater than a predetermined value a (at  534 ) (e.g., indicating that the dipper  140  struck an object), the controller  300  starts swing compensation. In particular, the controller  300  can increase the available maximum swing torque (e.g., up to approximately 200%) and apply the increased torque (e.g., 100% of the torque) in the compensation direction (at  536 ). It should be understood that in some embodiments, the controller  300  applies the maximum available torque limit without initially increasing the limit. When the swing speed drops to or below a predetermined speed Y (e.g., approximately 0 rpm to approximately 300 rpm) (at  538 ), swing control returns to standard swing control (e.g., operator control as compared to compensated control through the controller  300 ). 
     As shown in  FIG. 5 b   , when the shovel  100  is in the swing-to-truck state (at  540 ) or the return-to-tuck state (at  542 ), the controller  300  operates as described above for Option #1 through the calculation of current acceleration (at  516 ) and comparing the calculated acceleration to a predetermined value a (at  518 ). At this point, the controller  300  activates Subroutine #1 (at  544 ), which results in three possible responses. Subroutine #1 is described below with respect to  FIGS. 10 a   - 10   c.    
       FIG. 6  illustrates an Option #3 for compensating dipper swing control. As illustrated in  FIG. 6 , when the shovel  100  is in the dig state (at  550 ), the controller  300  operates as described above with respect to the dig state in Option #1. Also, it should be understood that in some embodiments, the controller  300  replaces ramping up swing torque (at  508 ) with monitoring acceleration as described below for the swing-to-truck state of Option #3 (see section  551  in  FIG. 6 ). 
     As illustrated in  FIG. 6 , in the swing-to-truck state (at  552 ), the controller  300  optionally determines if the swing speed of the dipper  140  is greater than a predetermined percentage (e.g., approximately 5% to approximately 40%) of the maximum speed (at  554 ). In some embodiments, if the speed is less than this threshold, the controller  300  does not take any correction action. The controller  300  also determines a swing direction to determine a compensation direction opposite the swing direction (at  556 ). The controller  300  then calculates a predicted swing acceleration based on a torque reference (i.e., how far the operator moves the input device, such as a joystick controlling the dipper swing) and an assumption that the dipper  140  is full (at  558 ). In some embodiments, there are two options for calculating this value. In one option, the controller  300  assumes the dipper  140  is in a standard position with vertical ropes. In another option, the controller  300  uses the dipper position (e.g., radius, height, etc.) and resulting inertia to calculate the predicted acceleration. Generally, the greater the torque reference, the greater the predicted acceleration. 
     After calculating the predicted acceleration (at  558 ), the controller  300  calculates the actual swing acceleration of the dipper  140  (e.g., a negative acceleration) (at  560 ). If the value of the actual acceleration is more than a predetermined percentage less than the predicted acceleration (e.g., more than approximately 10% to approximately 30% less than the predicted acceleration, which indicates that the dipper  140  struck an object) (at  562 ), the controller  300  starts swing control compensation. In particular, to compare the calculated predicted acceleration and the actual acceleration, the controller  300  activates Subroutine #1 (at  544 ), which, as noted above, results in one of three possible responses (see  FIGS. 10 a -10 c   ). 
     As shown in  FIG. 6 , in the return-to-tuck state (at  564 ), the controller  300  operates as described above for the swing-to-truck state of Option #3. However, the controller calculates the predicted acceleration assuming that the dipper  140  is empty rather than full (at  558 ). As noted above, in some embodiments, there are two options for calculating this acceleration value. In one option, the controller  300  assumes the dipper  140  is in a standard position with vertical ropes. In another option, the controller  300  uses the dipper position (e.g., radius, height, etc.) and resulting inertia to calculate the predicted acceleration. 
       FIG. 7  illustrates an Option #4 for compensating dipper swing control. As illustrated in  FIG. 7 , when the shovel  100  is in the dig state (at  570 ), the controller  300  operates similar to Option #1. Also, it should be understood that, in some embodiments, the controller  300  replaces ramping up swing torque (at  508 ) with monitoring acceleration as described below for the other states of Option #4 (see section  571  in  FIG. 7 ). 
     As illustrated in  FIG. 7 , when the shovel  100  is in any state over than the dig state (at  570 ), the controller  300  determines if the current swing speed is greater than a predetermined percentage of the maximum swing speed (e.g., approximately 5% to approximately 40% of the maximum swing speed) (at  572 ). If the swing speed is not greater than this threshold, the controller  300  activates Subroutine #2 (at  574 ), which results in one of three possible responses. See  FIGS. 11 a -11 c    for details regarding Subroutine #2. 
     If the swing speed is greater than the threshold (at  572 ), the controller determines a current swing direction to determine a compensation direction (at  576 ). The controller  300  then calculates a predicted swing acceleration based on a swing torque reference, a current dipper payload, and, optionally, a dipper position (at  578 ). In some embodiments, there are two options for calculating the predicted acceleration. In one option, the controller  300  assumes the dipper  140  is in a standard position with vertical ropes. In another option, the controller  300  calculates the predicted acceleration based dipper position (e.g., radius, height, etc.) and resulting inertia of the dipper  140 . 
     After calculating the predicted acceleration (at  578 ), the controller  300  calculates an actual swing acceleration (e.g., a negative acceleration) (at  580 ) and determines if the value of the actual acceleration is more than a predetermined percentage less than the predicted acceleration (e.g., more than approximately 10% to approximately 30% less than the predicted acceleration, which indicates that the dipper  140  struck an object) (at  582 ). If so, the controller  300  activates Subroutine #1 (at  544 ). See  FIGS. 10 a -10 c    for details regarding Subroutine #1. 
       FIG. 8  illustrates an Option #5 for compensating dipper swing control. As illustrated in  FIG. 8 , regardless of the current state of the shovel  100 , the controller  300  determines if the current swing speed of the dipper  140  is greater than a predetermined percentage of the maximum swing speed (e.g., approximately 5% to approximately 40%) (at  572 ). If the current speed is not greater than this threshold, the controller  300  activates Subroutine #2 (at  574 ), which results in one of three possible responses (see  FIGS. 11 a -11 c   ). Alternatively, when the current speed is greater than the threshold, the controller  300  determines a current swing direction to determine a compensation direction (at  576 ). The controller  300  also calculates a predicted swing acceleration based on a torque reference, a current dipper payload, and, optionally, a dipper position (at  578 ). In some embodiments, the controller  300  can use one of multiple options for calculating the predicted acceleration. In one option, the controller assumes that the dipper  140  is in a standard position with vertical ropes. In another option, the controller  300  uses dipper position (e.g., radius, height, etc.) and resulting inertia to calculate the predicted acceleration. After calculating the predicted acceleration, the controller  300  calculates an actual acceleration (e.g., a negative acceleration) (at  580 ) and determines if the value of the actual acceleration is more than a predetermined percentage less than the predicted acceleration (e.g., more than approximately 10% to approximately 30% less than the predicted acceleration, which indicates that the dipper  140  struck an object) (at  582 ) (see Subroutine #1). 
       FIG. 9  illustrates an Option #6 for compensating dipper swing control. As illustrated in  FIG. 9 , Option #6 is similar to Option #5 except that when the swing speed is greater than the predetermined percentage of the maximum swing speed (at  572 ), the torque level is ramped up (at  590 ) rather than immediately stepped to the maximum (at  592 ,  FIG. 8 ). 
       FIGS. 10 a -10 c    illustrate Subroutine #1. Subroutine #1 provides three possible routines associated with comparing predicted swing acceleration and actual acceleration (the comparison referred to as “AC” in  FIGS. 10 a -10 c   ). The possible routines are defined as Subroutines  1 A,  2 A, and  3 A. A representation of the resulting torque-speed curve for Subroutine #1 is shown in  FIG. 12 . As illustrated in  FIG. 12 , during execution of Subroutine #1, additional torque is made available. 
     As illustrated in  FIG. 10 a   , in Subroutine  1 A, when the value of the actual acceleration is more than a predetermined percentage less than the predicted acceleration (at  600 ), the controller  300  starts or resets a timer (at  602   a  or  602   b ). The controller  300  then increases the available torque limit (e.g., sets the torque to greater than 100% of the current reference torque) and applies approximately 100% of the reference torque in the opposite direction of the current swing direction (at  604 ). 
     When the value of the actual acceleration is not more than a predetermined percentage less than the predicted acceleration (at  600 ), the controller  300  determines if a timer is running (at  606 ). If the timer is running and has reached a predetermined time period (e.g., approximately 100 milliseconds to approximately 2 seconds) (at  608 ), the controller  300  stops the timer (at  610 ) and resets the reference torque (at  612 ). 
     As illustrated in  FIG. 10 b   , in Subroutine  1 B, when the value of the actual acceleration is more than a predetermined percentage less than the predicted acceleration (at  620 ), the controller  300  increases the available torque limit (e.g., sets the torque up to approximately 200% of the current reference torque) and applies (e.g., 100%) the reference torque in the opposite direction of the current swing direction (at  622 ). Once the swing speed is reduced by a predetermined percentage (e.g., approximately 25% to approximately 50%) (at  624 ), the controller  300  returns swing control to its normal or default control method. 
     In Subroutine  1 C (see  FIG. 10 c   ), when the value of the actual is more than a predetermined percentage less than the predicted acceleration (at  630 ), the controller  300  calculates an amount of torque to apply (i.e., calculates the magnitude of the deceleration force to apply to the dipper  140  swing) based on how large the difference is between the predicted acceleration and the actual acceleration (at  632 ). For example, as this difference increases, so does the torque applied. In some embodiments, the controller  300  also increases the maximum available swing torque before calculating the torque to apply. After calculating the torque, the controller  300  applies the calculated torque in the opposite direction of the current swing direction (at  634 ). When the swing speed is reduced by a predetermined percentage (e.g., approximately 25% to approximately 50%) (at  636 ), the controller  300  ends swing compensation control. 
       FIGS. 11 a -11 c    illustrate Subroutine #2. Subroutine #2 provides three possible routines associated with calculating swing speed. The possible routines are defined as Subroutines  2 A,  2 B, and  2 C. A representation of the resulting torque-speed curve for Subroutine #2 is shown in  FIG. 13 . As illustrated in  FIG. 13 , during execution of Subroutine #2, available torque is reduced. 
     As shown in  FIG. 11 a   , in Subroutine  2 A, the controller  300  sets the swing motoring torque to a predetermined percentage of available torque (e.g., approximately 30% to approximately 80% of available torque) (at  700 ). In Subroutine  2 B (see  FIG. 11 b   ), the controller  300  monitors the shovel&#39;s inclinometer. If the shovel angle is less than a first predetermined angle (e.g., approximately 5°) (at  702 ), the controller  300  sets the swing motoring torque to a first predetermined percentage of available torque (e.g., approximately 30% to approximately 50%) (at  704 ). If the shovel angle is greater than or equal to the first predetermined angle and less than a second angle (e.g., approximately 10°) (at  706 ), the controller  300  sets the swing motoring torque to a second predetermined percentage of available torque (e.g., approximately 40% to approximately 80%) (at  708 ). If the shovel angle is greater than or equal to the second predetermined angle (at  710 ), the controller  300  sets the swing motoring torque to a third predetermined percentage of available torque (e.g., approximately 80% to approximately 100%) (at  712 ). 
     In Subroutine  2 C, the controller  300  also monitors an inclinometer included in the shovel (at  714 ) and calculates the swing motoring torque limit level based on the shovel angle (at  716 ). In particular, the greater the angle of the shovel, the higher the torque limit level set by the controller  300 . 
     Thus, embodiments of the invention relate to compensating dipper swing control to mitigate impacts between the dipper and a bank, the ground, a mobile crusher, a haul truck, etc. It should be understood that the numbering of the options and subroutines were provided for ease of description and are not intended to indicate importance or preference. Also, it should be understood that the controller  300  can perform additional functionality. In addition, the predetermined thresholds and values described in the present application may depend on the shovel  100 , the environment where the shovel  100  is digging, and previous or current performance of the shovel  100 . Therefore, any example values for these thresholds and values are provided as an example only and may vary. 
     Various features and advantages of the invention are set forth in the following claims.