Dynamic control of a closed loop motor

A processor-based system dynamically computes interval values from sensor data to adapt closed loop motor parameters in real-time, addressing the challenge of dynamic control and enhancing stability and accuracy.

WO2025017546A1PCT designated stage expired Publication Date: 2025-01-23SERVOTRONIX MOTION CONTROL LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/IL2024/050666
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-07-16
Filing Date
2024-07-09
Publication Date
2025-01-23

AI Technical Summary

Technical Problem

Existing closed loop motor control systems struggle with dynamic adaptation to changes in parameters like inertia and friction, leading to potential instability and reduced accuracy.

Method used

The implementation of a processor-based system that dynamically computes long and short interval values from sensor data, allowing for real-time adaptation of motor parameters such as inertia and friction by setting these values in response to deviations exceeding a threshold.

Benefits of technology

This approach enables rapid and accurate dynamic control of closed loop motors, improving stability and performance by quickly responding to changes in motor parameters.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure IL2024050666_23012025_PF_FP_ABST
    Figure IL2024050666_23012025_PF_FP_ABST
Patent Text Reader

Abstract

There is provided a device for communication with a controller, comprising: a processor(s) configured for: in each sequential long time interval: dynamically computing a long interval value from an aggregation of sensor data samples obtained during the long time interval, setting a parameter to the long interval value, in each sequential short time interval occurring during the long time interval: dynamically computing a short interval value from the sensor data samples obtained during the short time interval, in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, setting the parameter to the short interval value, and providing the parameter to the controller for real time adaptation of a closed loop motor, wherein the processor(s) is configured for computing in parallel, the long interval value of the long time interval and short interval values of the sequential short time intervals.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] DYNAMIC CONTROL OF A CLOSED LOOP MOTOR

[0002] RELATED APPLICATION / S

[0003] This application claims the benefit of priority of Israel Patent Application No. 304503, filed on July 16, 2023, the contents of which are incorporated herein by reference in their entirety.

[0004] BACKGROUND

[0005] The present invention, in some embodiments thereof, relates to a closed loop motor and, more specifically, but not exclusively, to systems and methods for computing parameters for control of a closed loop motor.

[0006] In industrials such as robotics and machinery, multi-axes are commonly used where each axis is mechanically connected and driven by a closed loop motor. The motor is actuated by a dedicated servo-drive. The servo-drive has a closed loop controller (algorithm) to achieve precise control and performance. The controller algorithm has certain parameter gains to optimize its performance depending on requirements.

[0007] SUMMARY

[0008] According to a first aspect, at least one processor for communication with controller of a closed loop motor, comprises: at least one processor configured for: in each long time interval of a plurality of sequential long time intervals: dynamically computing a long interval value from an aggregation of sensor data samples obtained during the long time interval, setting a parameter to the long interval value, in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically computing a short interval value from the sensor data samples obtained during the short time interval, in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, setting the parameter to the short interval value, and providing the parameter to the controller for real time adaptation of the closed loop motor, wherein the at least one processor is configured for computing in parallel, the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals.

[0009] According to a second aspect, a method for controlling a controller of a closed loop motor, comprises: in each long time interval of a plurality of sequential long time intervals: dynamically computing a long interval value from an aggregation of sensor data samples obtained during the long time interval, setting a parameter to the long interval value, in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically computing a short interval value from the sensor data samples obtained during the short time interval, in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, setting the parameter to the short interval value, and providing the parameter to the controller for real time adaptation of the closed loop motor, wherein the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals are computed in parallel.

[0010] According to a third aspect, a non-transitory medium storing program instructions for controlling a controller of a closed loop motor, which when executed by at least one processor, cause the at least one processor to: in each long time interval of a plurality of sequential long time intervals: dynamically compute a long interval value from an aggregation of sensor data samples obtained during the long time interval, set a parameter to the long interval value, in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically compute a short interval value from the sensor data samples obtained during the short time interval, in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, set the parameter to the short interval value, and provide the parameter to the controller for real time adaptation of the closed loop motor, wherein the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals are computed in parallel.

[0011] In a further implementation form of the first, second, and third aspects, the at least one processor is configured for computing in parallel, the long interval value of the long time interval and a plurality of the short interval value of the plurality of sequential short time intervals.

[0012] In a further implementation form of the first, second, and third aspects, the parameter comprises inertia.

[0013] In a further implementation form of the first, second, and third aspects, the parameter comprises load to motor inertia ratio (LMJR).

[0014] In a further implementation form of the first, second, and third aspects, the parameter comprises at least one of dynamic friction and static friction.

[0015] In a further implementation form of the first, second, and third aspects, the sensor data samples includes at least one of: electric current, and rotational velocity.

[0016] In a further implementation form of the first, second, and third aspects, the at least one processor is further configured for logging the sensor data samples obtained during a current long time interval, wherein the long interval value is computed from logged sensor data samples obtained during a preceding long time interval, wherein the sensor data samples logged during the current long time interval is used for computing the long interval value for a subsequent long time interval of a subsequent long time interval.

[0017] In a further implementation form of the first, second, and third aspects, the long time interval comprises a sampling period for the at least one processor computing the long interval value, defined as a product of: (i) a real time sample period of the at least one processor computing the short interval value, an integer value selected such that the integer multiplied by the real time sample period equates a sampling period of the sensor data samples, and a number of samples of the sensor data samples.

[0018] In a further implementation form of the first, second, and third aspects, the at least one processor is further configured for performing in parallel, obtaining the sensor data samples during the current long time interval and the computing the long interval value from logged sensor data samples obtained during the preceding long time interval.

[0019] In a further implementation form of the first, second, and third aspects, the at least one processor is further configured for applying a first set of rules to the sensor data samples obtained during the long time interval, and computing the long interval value in response to the first set of rules being met.

[0020] In a further implementation form of the first, second, and third aspects, the first set of rules comprises at least one of: (i) difference between a maximal value of the sensor data samples and a minimal value of the sensor data samples greater than a first threshold, and (ii) maximal value of the sensor data samples greater than a second threshold, and (iii) determining that an amount of time greater than a threshold has elapsed after setting the parameter to the short interval value.

[0021] In a further implementation form of the first, second, and third aspects, (i) comprises difference between maximal rotational velocity and minimal rotation velocity greater than the first threshold, and (ii) comprises maximal amplitude of current greater than the second threshold.

[0022] In a further implementation form of the first, second, and third aspects, in response to the set of rules not being met, setting the long interval value to the preceding value.

[0023] In a further implementation form of the first, second, and third aspects, the long interval value is computed by applying a least square (LS) fit to the sensor data samples obtained during the long time interval.

[0024] In a further implementation form of the first, second, and third aspects, the at least one processor computes the short interval value of the parameter within a short amount of time that is shorter than a long amount of time for computing the long interval value.

[0025] In a further implementation form of the first, second, and third aspects, a number of the sensor data samples obtained during the long time interval is selected such that a time for computing the long interval value from the number of sensor data samples is less than the long time interval.

[0026] In a further implementation form of the first, second, and third aspects, the at least one processor is further configured for applying a second set of rules to the sensor data samples obtained during the short time interval, and computing the short interval value in response to the second set of rules being met.

[0027] In a further implementation form of the first, second, and third aspects, the second set of rules comprises at least one of: (i) a difference between a current value of the sensor data sample and a preceding value of the sensor data sample greater than a third threshold, (ii) an integration of the sensor data samples greater than a fourth threshold, and (iii) an average of the sensor data samples above a fifth threshold.

[0028] In a further implementation form of the first, second, and third aspects, (i) comprises difference between a current rotational velocity and a preceding rotation velocity greater than the third threshold, (ii) comprises acceleration greater than an acceleration threshold, and (iii) comprises an average current above a current threshold.

[0029] In a further implementation form of the first, second, and third aspects, the sensor data samples include measurements of electrical current and rotational velocity, the short interval value is computed by computing an integral of the electrical current over the short time interval divided by a difference between a first rotation velocity at the beginning of the short time interval and a second rotation velocity at the beginning of the short time interval, multiplied by a motor toque constant.

[0030] In a further implementation form of the first, second, and third aspects, further comprising passing the sensor data samples obtained during the short time interval through a low pass filter to obtain filtered sensor data samples, wherein the short interval value is computed from the filtered sensor data samples.

[0031] In a further implementation form of the first, second, and third aspects, further comprising fusing the short interval value and the long interval value to obtain the parameter, using a process that uses a series of measurements made over time to produce estimates of unknown variables that tend to be more accurate than those based on a single measurement by estimating a joint probability distribution over the variables for each timeframe.

[0032] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the invention pertains. Although methods and materials similar or equivalent to those described herein can be used in the practice or testing of embodiments of the invention, exemplary methods and / or materials are described below. In case of conflict, the patent specification, including definitions, will control. In addition, the materials, methods, and examples are illustrative only and are not intended to be necessarily limiting.

[0033] BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0034] Some embodiments of the invention are herein described, by way of example only, with reference to the accompanying drawings. With specific reference now to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of embodiments of the invention. In this regard, the description taken with the drawings makes apparent to those skilled in the art how embodiments of the invention may be practiced.

[0035] In the drawings:

[0036] FIG. 1 is a schematic of components of a system that includes at least one processor that computes parameters for real time control of a motor of a closed loop motor by a controller, in accordance with some embodiments of the present invention;

[0037] FIG. 2 is a flowchart of a method for real time control of a closed loop motor, in accordance with some embodiments of the present invention;

[0038] FIG. 3 is a graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention;

[0039] FIG. 4 is another graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention; and

[0040] FIG. 5 is yet another graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention.

[0041] DETAILED DESCRIPTION

[0042] The present invention, in some embodiments thereof, relates to a closed loop motor and, more specifically, but not exclusively, to systems and methods for computing parameters for control of a closed loop motor.

[0043] As used herein, the term friction may refer to static friction and / or kinetic friction. The terms kinetic friction and dynamic friction are used interchangeably.

[0044] As used herein, the term controller may refer to a closed loop motor controller.

[0045] As used herein, the term closed loop motor and motor under closed loop control are interchangeable. The term closed loop motor refers to a motor (e.g., electric motor) that is under control of a controller that uses a feedback mechanism (e.g., based on sensor and / or encoder input) to control the motion and / or position of the motor. By continuously monitoring the motor's position and adjusting the input power, a closed-loop motor can maintain accurate control and respond to changes in load or external disturbances. This feedback loop allows the motor to correct errors and maintain precise positioning or motion, making it suitable for applications such as robotics, CNC machines, industrial automation, and other systems requiring high-precision control. Examples of closed loop motors include servomotors, induction motors, stepper motor with sensor (i.e., servolike stepper operation), and linear motor.

[0046] An aspect of some embodiments of the present invention relates to at least one processor (e.g., configured to perform features, and / or a processor executing a code stored on a data storage device) in communication with a controller of a closed loop motor, for providing one or more parameters to the controller for real time adaptation of the closed loop motor, for example, inertia, and / or load to motor inertia ratio (LMJR). A long interval value (e.g., obtained in real-time, or near real-time) of the parameter (which is provided to the controller) is computed from sensor data samples obtained during a long time interval, optionally by a process referred to herein as a slow estimator. The terms “first value” and “long interval value” may be used interchangeably. The parameter is set to the first value. Optionally in parallel to the computation of the first value, a short interval value (e.g., obtained in real-time, or near real-time) of the parameter is computed from sensor data samples obtained during a short time interval, optionally by a process referred to herein as a fast estimator. The terms “second value” and “short interval value” may be used interchangeably. Multiple short interval values are computed over multiple sequential short time intervals for each long time interval. In response to a certain short interval value deviating from a preceding value of the parameter (e.g., indicating a sudden dramatic increase or decrease in inertia), the parameter is set to the short interval value. The parameter (which has either the value of the long interval value, or the short interval value), is provided to the controller for real time adaptation of the closed loop motor. The long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals may be computed in parallel.

[0047] The slow estimator is designed to accurately compute the long interval value (e.g., over the long time interval), for example, as a least square (LS) problem. However, the cost of the high accuracy is the longer time it takes to compute the long interval value. As such, relying on iteratively computed long interval values, each of which is computed over the long time interval, may not enable the controller to respond quickly enough to dramatic quick changes in the parameter. The fast estimator is designed to quickly compute the short interval value (e.g., over the short time interval), at a potential cost of a relatively lower accuracy. The fast estimator and the slow estimator optionally operate in parallel, for repeatedly computing multiple sequential short interval values during the time which it takes to compute a single long interval value. When a dramatic change is detected in the short interval value relative to the previous value of the parameter, the short interval value of the parameter is provided to the controller, enabling the controller to respond more quickly in comparison to waiting for completion of computation of the long interval value. The combination of the fast estimator and the slow estimator enable the controller to respond to fast changes in the parameter, while maintaining high accuracy of control of the closed loop motor using values of the parameter computed with high accuracy.

[0048] At least some implementations described herein address the technical problem of improving dynamic control of a closed loop motor, by near real time detection of parameters such as dynamic inertia and / or dynamic friction and / or static friction. A closed loop motor is a type of motor commonly used in control systems to provide precise and / or accurate control of movement. A closed loop motor includes a motor and a feedback control system that measures the motor's parameters, for example, position, velocity, and / or acceleration, and adjusts the motor's operation to achieve the desired output. Inertia is the reluctance of an object to change its motion state. In the context of closed loop motors, inertia may refer to the resistance of the load that the motor is driving to changes in its motion. Changing the inertia of the load that the closed loop motor is driving may have a significant effect on the motor's operation. When the inertia of the load is increased, the motor has to work harder to accelerate and decelerate the load, which can lead to slower response times and decreased accuracy. On the other hand, decreasing the inertia of the load can lead to a response that is too fast, which may cause for example, over-shooting and / or instability of the system, which may lead to reduction in accuracy. To compensate for changes in inertia, the control system of the closed loop motor can be adjusted to optimize the motor's performance. This can involve, for example, tuning the feedback control system to adjust the motor's acceleration and deceleration profiles, adjusting the motor's maximum speed and torque, or using gearing or other mechanical means to increase or decrease the effective inertia of the load. Overall, understanding and managing the inertia of the load is an important aspect of using closed loop motors effectively in control systems. By adjusting the motor and control system to optimize performance for the specific load being driven, the system can achieve the desired levels of precision and accuracy.

[0049] Measurement of inertia is significant for the design and / or optimization of control systems for closed loop motors. Accurate measurement of inertia helps in determining the optimal motor specifications, and / or control system parameters required for the desired performance. In a typical closed loop motor system, the feedback control loop measures the position, velocity, and acceleration of the motor and the load. Usually only position is measured and velocity and acceleration are calculated from position. Current is also measured and correlates to acceleration mostly in a linear way. The control system uses these measurements to calculate the required torque to achieve the desired movement of the load. If the measured inertia of the load is inaccurate or incorrect, the control system will not be able to accurately predict the movement of the load, leading to inaccurate and slow response times. Inaccurate measurement of inertia can cause overshoot, oscillation, and even instability in the control system. Therefore, accurate measurement of inertia is important for effective control of the closed loop motor. There are several known methods to measure inertia, for example, direct measurement using a calibrated load cell, or indirect methods such as measuring the natural frequency of the system, analyzing the motor current, or using simulation models to estimate inertia. Once the inertia is accurately measured, the control system can be optimized to ensure that the motor responds quickly and accurately to changes in load. This can involve, for example, adjusting the gain of the feedback control loop, modifying the acceleration and deceleration profiles, adjusting the maximum speed and torque of the motor, or using gearboxes or other mechanical means to adjust the effective inertia of the load.

[0050] The real time detection of parameters enables real time adaptation of the motor’s gain. Best gain’s values depend on the actual kinematic state of the system and payload, which can be decomposed to load inertia and / or static and / or kinetic friction. Estimating these parameters may enable designing a good controller. Moreover, these properties might change under many conditions such as: payload change, different kinematic state space depended on position, and / or mechanical wear over time.

[0051] At least some implementations described herein improve the technical field of closed loop motors, by enabling dynamic computation of inertia and / or friction, and providing the inertia and / or friction to a controller of the closed loop motor for improved dynamic control of the closed loop motor.

[0052] Existing approaches either estimate parameters once during system integration, or detect changes at a slow rate and in an inaccurate result, which is not very practical for most applications. The one-time system properties estimation and / or the slow and inaccurate estimations give average performance and may cause degradation over time.

[0053] At least some implementations described herein address the aforementioned technical problem, and / or improve the aforementioned technical field, by providing fast estimation of parameters, such as inertia and / or friction, enabling quick adaptation of control of the closed loop motor. Detecting a fast change in inertia is critical to maintain stability in some systems. A fast detection and reaction by changing the control parameters may avoid these stability issues. At least some implementations described herein may provide a real-time estimator of parameters used for real time control of a closed loop motor, optionally real time computation of inertia, optionally LMJR. The method may estimate the parameter in real time, continuously and / or at intervals (e.g., which may be short enough such that control of the closed loop motor may appear to be continuous). The estimation of the parameters may occur while the closed loop motor is operating, without necessarily requiring any special dedicated motion as required by some known approaches.

[0054] Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not necessarily limited in its application to the details of construction and the arrangement of the components and / or methods set forth in the following description and / or illustrated in the drawings and / or the Examples. The invention is capable of other embodiments or of being practiced or carried out in various ways.

[0055] The present invention may be a system, a method, and / or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.

[0056] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

[0057] Computer readable program instructions described herein can be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing / processing device.

[0058] Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.

[0059] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0060] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function / act specified in the flowchart and / or block diagram block or blocks.

[0061] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.

[0062] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

[0063] Reference is now made to FIG. 1, which is a schematic of components of a system 100 that includes processor(s) 150 that computes parameters for real time control of a motor 108 of a closed loop motor 102 by a controller 104, in accordance with some embodiments of the present invention. Reference is also made to FIG. 2, which is a flowchart of a method for real time control of a closed loop motor, in accordance with some embodiments of the present invention. Closed loop motor 102 described with reference to FIG. 1 may be controlled according to the method described with reference to FIG. 2, for example, processor(s) 150 described with reference to FIG. 1 is designed and / or programmed and / or is a processor running code for executing features of the method described with reference to FIG. 2. Reference is also made to FIG. 3, which is a graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention. Reference is also made to FIG. 4, which is another graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention. Reference is also made to FIG. 5, which is yet another graph depicting an experiment performed by inventors, in accordance with some embodiments of the present invention.

[0064] Closed loop motor 102 includes motor 108 to which a load 110 is attached. Load 110 may be dynamically changed, which dynamically changes parameters of motor 108, for example, inertia is changed. Sensor(s) 106 measure one or more parameters of motor 108. Examples of sensor(s) 106 include: encoder, velocity sensor that measures rotational velocity of motor 108, and a current sensor that senses current fed into motor 108.

[0065] A power source 112 delivers electrical current to closed loop motor 102, where controller 104 dynamically adjusts current delivered to motor 108.

[0066] Processor(s) 150 obtains measurements from sensor(s) 106, and computes one or more parameters, which are provided to controller 104 for dynamic adjustment of motor 108, as described herein.

[0067] Processor(s) 150 may be implemented as, for example, circuitry within controller 104, software stored on a memory and executed by one or more processors, software stored on a memory and executed by controller 104, and an external component placed in electrical communication with sensor(s) 106 and controller 104.

[0068] System 100 includes one or more of the following components: slow estimator 150A (also referred to herein as LS estimator), fast estimator 150B, and combined estimator 150C, are as described herein.

[0069] One or more of components 150A, 150B, and 150C, may be implemented using different architectures, such as using a common architecture and / or combination of architectures. In an exemplary architecture, one or more components 150A-C may be implemented as processor(s) 150 which may be located within closed loop motor 102 and / or external to closed loop motor 102. In another exemplary architecture, one or more components 150A-C may be implemented by controller 104 (e.g., as circuitry within controller 104 and / or as code stored on a memory executed by controller 104). In yet another exemplary architecture, one or more components 150A-C may be implemented as code running on a memory 160 executed by one or more processors 190 of an external device 192 which are external to closed loop motor 102 and in fast communication with closed loop motor 102. In yet another exemplary architecture, one or more components 150A-C may be implemented in hardware (e.g., processor(s) 150) on external device 192.

[0070] As used herein, the term processor(s) 150 may refer to all the different architectures for running components 150A-C and / or different implementations of components 150A-C described herein, including within closed loop motor 102, on external device 192, in hardware, and / or as code on memory 160 executed by processor(s) 190.

[0071] Processor(s) 150 is in communication with a memory and / or data storage device 160 that stores a data repository 160A, which accumulates sensor measurements while slow estimator 150A is computed a value based on previously accumulated sensor measurements, as described herein.

[0072] Closed loop motor 102 may include one or more data interfaces 114 for communication with external components, directly and / or via a network 116. Data interface(s) 114 may be implemented as, for example, one or more of, a network interface card, a wireless interface for wireless connectivity, a physical interface for connecting to a cable for cable connectivity, a virtual interface implemented in software, network communication software providing higher layers of network connectivity, and / or other implementations.

[0073] Closed loop motor 102 may communicate with one or more terminal devices 118, directly and / or via network 116. Examples of terminal devices 118 include a client terminal, a server, a group of connected devices, a virtual server, a computing cloud, a virtual server, a virtual machine, a desktop computer, a thin client, a network node, and / or a mobile device (e.g., a Smartphone, a Tablet computer, a laptop computer, a wearable computer, glasses computer, and a watch computer).

[0074] Closed loop motor 102 may communicate with one or more user interfaces 120, directly and / or via network 116. User interface(s) 120 include a mechanism for a user to enter data and / or view data. Exemplary user interfaces 120 include, for example, one or more of, a touchscreen, a display, a virtual reality display (e.g., headset), gesture activation devices, a keyboard, a mouse, and voice activated software using speakers and microphone.

[0075] Referring now back to FIG. 2, the method may be implemented by the combined estimator (e.g., 150C) based on operation of slow estimator (e.g., 150A) and fast estimator (e.g., 150B). For example, fast estimation 200B, which includes features 202B and 208 may be performed by fast estimator 150B. Slow estimation 200A, which includes features 202A and 204 may be performed by slow estimator 150A. Evaluation of estimations 210 may be performed by combined estimator 150C. The fast estimator may compute the parameter as a rough estimate, at a fast refresh rate that may respond quickly to sudden inertia changes, over short time intervals 218. The slow estimator may compute the parameter at a slow refresh rate, which may be more accurate than the parameter computed by the fast estimator, over long time intervals 220. The slow estimator may compute dynamic and / or static friction.

[0076] Features 202B and208 implemented by fast estimation 200B and features 202A and 204 implemented by slow estimation 200A may be implemented in parallel. For example, sensor data samples of 202A / 202B are the same raw data, which may be computed over long time intervals (e.g., as in 220) and / or over short time intervals (e.g., as in 218) using different approaches, as described herein. For each long time interval, multiple short time intervals may elapse.

[0077] Optionally, the processor(s) (e.g., 150) is designed and / or programmed and / or is implemented as a processor(s) executing code for computing in parallel, the long interval value of the long time interval (e.g., as described with reference to 204) and for computing the short interval values of the multiple sequential short time intervals (e.g., as described with reference to 208).

[0078] At 202A / 202B, measurements obtained by one or more sensors (also referred to herein as sensor data samples) are accessed. Exemplary measurements made by sensors include electric current, rotational velocity, position, and acceleration. For the case of a linear motor, inertia may be replaced by mass and / or friction, and the physical units may be different. However, in general, the approached described herein may be the same and / or similar for all types of closed loop motors, such as rotational motors and linear motors. For linear motors the position, velocity and / or acceleration may all be in linear direction(s) with the according physical unit(s).

[0079] Measurements may be made at intervals that are significantly smaller than a length of a long time interval (e.g., of 220) and / or a short time interval (e.g., of 218), to enable computation of values from multiple measurements. The greater the number of sensor data samples the more accurate the estimation of the parameter. However, too many sensor data samples increase the computation time for computing the parameter. A number of the sensor data samples obtained during the long time interval may be selected such that a time for computing the long interval value (e.g., as described with reference to 204) from the number of sensor data samples is less than the long time interval. This allows the long interval value to be computed during the current long time interval, prior to the next long time interval.

[0080] Optionally, the processor(s) is designed and / or programmed and / or is implemented as a processor(s) executing code for logging the sensor data samples obtained during the current long time interval. The logging of the sensor data samples may be performed by a real time process that may prepare the sensor data samples for computing the long interval value during the subsequent long time interval.

[0081] At 204, the long interval value of the parameter is dynamically computed (e.g., in real time, or near real time) from an aggregation of the sensor data samples obtained during the long time interval.

[0082] The long interval value may be computed by the slow estimator, which provides relatively higher accuracy than the fast estimator, but takes longer to perform the computation. For example, the long interval value is computed by a least square fit to multiple sensor data samples obtained during the current and / or previous long time intervals, by feeding into a machine learning model trained on historical sensor data samples, and the like. The least square fit (or other approaches such as feeding into the machine learning model) may be more accurate, but may take a longer amount of time to compute and / or requires a larger number of samples.

[0083] Exemplary parameters include inertia, optionally load to motor inertia ratio (LMJR). The inertia may be calculated using acceleration and current feedback sensor data samples. It is noted that since acceleration involves a second derivative of the position feedback, acceleration may be practically too noisy. Hence, an integration may be applied.

[0084] Other exemplary parameters include dynamic friction and static friction.

[0085] The long interval value may be computed from logged sensor data samples obtained during a preceding long time interval. The sensor data samples logged during the current long time interval may be used for computing the long interval value for the next subsequent long time interval.

[0086] Optionally, the processor(s) is designed and / or programmed and / or is implemented as a processor(s) executing code for performing in parallel, the obtaining of the sensor data samples during the current long time interval and the computation of the long interval value from logged sensor data samples obtained during the preceding long time interval. The logging of the sensor data samples during the current long time interval for computation of the long interval value of the parameter during the next long time interval may be done in parallel with computation of the current long interval value using the previously logged sensor data samples obtained during the preceding long time interval, to avoid extra delay in the update of the parameters that would be caused by waiting for the computation of the long interval value of the parameter to be completed before logging of new sensor data samples.

[0087] The long interval value may be computed from the sensor data samples logged during the preceding long time interval by a non-real time process that performs computationally intensive calculations that may take a significant amount of time, i.e., cannot be performed in real time, for example, least square fit, feeding into a machine learning model, and the like.

[0088] Optionally, the long interval includes a sampling period for the processor(s) computing the long interval value. The sampling period may substantially match the time it takes to obtain a target number of sensor data samples for computing the long interval value. The sampling period may be defined as a product of: a real time sample period of the processor(s) computing the short interval value, an integer value selected such that the integer multiplied by the real time sample period equates a sampling period of the sensor data samples, and a number of samples of the sensor data samples. Optionally, the processor(s) is designed and / or programmed and / or is implemented as a processor(s) executing code for applying a first set of rules to the sensor data samples obtained during the long time interval. The long interval value is computed in response to the first set of rules being met. Evaluation of the first set of rules improves utilization of the processor(s), by performing computations of the long interval value when there is a likelihood of a significant change in the long interval value from previously computed long interval values (e.g., set of rules is met). When the likelihood of the significant change is small (e.g., set of rules is not met), the computations are not performed, enabling the processor(s) to be used for other tasks. Exemplary first set of rules includes a difference between a maximal value of the sensor data samples and a minimal value of the sensor data samples greater than a first threshold, for example, difference between maximal rotational velocity and minimal rotation velocity greater than the first threshold. Another example of the first set of rules includes a maximal value of the sensor data samples greater than a second threshold, for example, maximal amplitude of current greater than the second threshold. Yet another example of the first set of rules is for determining that an amount of time greater than a threshold has elapsed after setting the parameter to the short time interval. Checking that the amount of time greater than the threshold has passed may prevent the fast estimator from finding the change in the value (e.g., inertia) but the slow estimator will change the value back because the data for its calculation was taken before the change in the value (e.g., change in inertia), because the slow estimator collects sensor data for a longer period than the fast estimator and then calculates over a longer time interval.

[0089] When the first set of rules is not met, the long interval value may be set to the preceding value computed during the preceding long time interval, i.e., the preceding long interval value.

[0090] The parameter, which is to be provided to the controller (e.g., as described with reference to 214) may be set to the long interval value.

[0091] At 208, which may be implemented in parallel to 204, a short interval value of the parameter is dynamically computed from the sensor data samples obtained during the short time interval.

[0092] Optionally, the short interval value of the parameter is computed within a short amount of time that is shorter than a long amount of time for computing the long interval value.

[0093] The short interval value may be computed from sensor data samples include of measurements of electrical current and / or rotational velocity. The short interval value may be computed as an integral of the electrical current over the short time interval divided by a difference between a first rotation velocity at the beginning of the short time interval and a second rotation velocity at the beginning of the short time interval, multiplied by a motor toque constant. Optionally, a filter (e.g., low pass filter) is placed on the sensor data samples to obtain filtered sensor data samples. The filtered sensor data samples are used by the fast estimator to compute the short interval value. The filter is designed to prevent or reduce sudden jumps in estimation, for example, due to sampling errors and / or noise.

[0094] At 210, an evaluation may be performed to determine whether the short interval value deviates from a preceding value of the parameter by more than a threshold. The preceding value may be the previously computed long interval value, and / or the previously computed short interval value. The threshold may be selected to indicate a change in the parameter that is significant enough to trigger a change in operation of the closed loop motor.

[0095] Alternatively or additionally, the processor(s) is designed and / or programmed and / or is implemented as a processor(s) executing code for applying a second set of rules to the sensor data samples obtained during the short time interval. The short interval value may be computed in response to the second set of rules being met. In an example, the second set of rules may include a difference between a current value of the sensor data sample and a preceding value of the sensor data sample greater than a third threshold, for example, a difference between a current rotational velocity and a preceding rotation velocity greater than the third threshold. In another example, the second set of rules may include an integration of the sensor data samples greater than a fourth threshold, for example, acceleration greater than an acceleration threshold. In yet another example, the second set of rules may include an average of the sensor data samples above a fifth threshold, for example, an average current above an electrical current threshold. It is noted that the average current may be evaluated rather than the maximal current, since the maximum current may be high. However an integral can be very close to zero (for example during transition between acceleration and deceleration), in which case estimation accuracy can be poor.

[0096] When the short interval value deviates from the preceding value of the parameter by more than the threshold, the parameter (which is provided to the controller as described with reference to 214) is set to the short interval value.

[0097] At 214, the parameter is dynamically provided to the controller for real time adaptation of properties of the closed loop motor. For example, when the parameter is inertia, optionally LMJR, the controller adjusts the closed loop motor in response to the dynamically changing inertia and / or LMJR.

[0098] Optionally, advanced fusion methods are applied to compute the parameter, by fusing the short interval value(s) and the long interval value(s). The fusion may be done by a process that uses a series of measurements made over time to produce estimates of unknown variables that tend to be more accurate than those based on a single measurement by estimating a joint probability distribution over the variables for each timeframe, for example, based on a Kalman Filter.

[0099] At 216, the controller may adjust the closed loop motor according to the parameter, for example, the gain (e.g., increase or decrease), acceleration and / or deceleration profiles, speed and / or torque of the motor, and / or using gearboxes and / or other mechanical means to adjust the effective inertia of the load.

[0100] The adjustment of the closed loop motor is performed in real time, or in near real time (i.e., rapidly enough with a small delay that is not apparent and / or significant).

[0101] The real time adjustment of the closed loop motor in response to the real time changes in the parameter improves performance of the closed loop motor, as described herein.

[0102] Alternatively or additionally, an alarm may be triggered when the parameter is above or below a threshold indicating a severe abnormality. For example, when inertia suddenly changes and is too high above what is expected during normal operation, the alarm may be triggered indicating that there is a problem with the machine. The alarm may be, for example, a flashing light bulb (or LED), a siren, a message sent to a mobile device, and the like.

[0103] Alternatively or additionally, the closed loop motor may be shut off as an emergency matter, and / or the closed loop motor may be placed in a state after a problem is detected, such as stopping, or placing a robot arm in a safe position, and the like.

[0104] Other exemplary computations that may be done using the parameter, and / or exemplary adaptations by the controller using the parameter, and / or exemplary actions taken by other components (e.g., other circuitry, other processors), include one or more of:

[0105] • Velocity computation -velocity may be estimated using the parameters (e.g., inertia and / or friction), which may be used for better motor performance than calculating the velocity directly from the encoder.

[0106] • Collision detection -an estimation of whether or not a collision has happened (which may be important in some applications) may be determined using the parameters (e.g., inertia and / or friction).

[0107] • Input shaping - vibrations may be reduced by changing a profile of values sent to the servo motor. The change of the profile is depended on the parameters (e.g., inertia and / or friction).

[0108] • Friction compensation -friction may be compensated in one or more components of the system, which may reduce the overshoot and / or settling time. Compensation of friction may be computed and / or applied based on the parameters (e.g., inertia and / or friction). At 218, one or more features described with reference to 202A / 202B, 204, and 210, 214, and 216 may be iterated for multiple sequential short time intervals, where multiple sequential short time intervals occur per long interval.

[0109] At 220, which may be implemented in parallel with 218, one or more features described with reference to 202A / 202B, 208, and 210, 214, and 216 may be iterated for multiple sequential long time intervals, during which the closed loop motor is operating.

[0110] Exemplary mathematical representations and / or pseudocode for execution by processor(s) and / or processor(s) is designed to execute the features represented by the pseudocode, are now provided.

[0111] An exemplary slow estimator for computing inertia (i.e., the long interval value of the parameter), optionally using a least square approach, for example, as described with reference to 204, may be represented by the equation: JT*v(t')=Kt*I(t)-Bd*v(t')~Bs*sign(v(t')'),

[0112] Where:

[0113] JT denotes total inertia [kg*m2]

[0114] Kt denotes motor torque constant [Nm / A]

[0115] Bd denotes dynamic friction coefficient [Nm*(rad / sec)-l]

[0116] (t) denotes rotation velocity [rad / sec]

[0117] Bs denotes static friction gain [Nm]

[0118] (t) denotes q axis electrical current command [A]

[0119] The sign function is defined as: sign(x) = 1 when x > 0; 0 when x = 0, and -1 when x < 0

[0120] The equation for the exemplary slow estimator is based on the following assumptions: (i) Rigid body, i.e., no flexible links. And (ii) No external low frequency / DC torque disturbances (such as gravitation). Gravitation may be added to the calculation.

[0121] The following are exemplary parameters used by a pseudocode implementing the slow estimator:

[0122] • N - number of samples

[0123] • Ts - Real time (RT) sampling period of module (i.e., run function) [sec]

[0124] • Tsr - sampling period of recorded signals [sec]

[0125] • gap - integer value such that Ts*gap = Tsr

[0126] • Tsb - sampling period of None RT function [sec]

[0127] • k - current discrete time (sampled at Tsr rate)

[0128] • prev_vact - previous value of vact (prev_vact(k) = vact(k-l)) • prev_icmd - previous value of icmd (prev_icmd(k) = icmd(k-l))

[0129] • A - a matrix of size N x 3

[0130] • b - a vector of size N x 1

[0131] • A_copy - copy of A, same size as A

[0132] • b_copy - Copy of b, same size as b

[0133] • Ind - row index to A and b

[0134] • vact_min - minimum value of recorded velocity feedback

[0135] • vact_max - maximum value of recorded velocity feedback

[0136] • icmd_max - maximum amplitude (absolute value) of recorded current command

[0137] • update_flag_LS - Boolean (true / false), indicates if new update is available

[0138] • est_J_LS - estimated value of inertia based on LS

[0139] • delta_v_th - speed difference threshold for updating estimation

[0140] • icmd_max_th - electrical current threshold for updating estimation

[0141] A pseudocode for an exemplary implementation of a real time component of the slow estimator (also referred to herein as “real time process”), for logging sensor data samples during a current long time interval for computing of the long interval value of the parameter during a subsequent long time interval, for example, as described with reference to 202A / 202B and / or 204, is as follows:

[0142] Initialization: Ind 0, counter , _ 0, prev_icmd 0

[0143] Repeat at Ts rate:

[0144] Consume current values of vact and icmd sign(prev_vact) b(ind) vact

[0145] Ind -Jnd + 1 vact prcv_icmd ^-icmd

[0146] END IF counter = counter + 1

[0147] A pseudocode for an exemplary non-real time component of the slow estimator for computing the long interval value of the parameter for a current long time interval based on sensor data samples logged during the preceding long time interval by the real time component, for example, as described with reference to 204, is as follows:

[0148] Initialize: false

[0149] Repeat at Tsb rate:

[0150] IF (Ind = N) THEN:

[0151] Ind -C O

[0152] Calculate vact_min and vact_max from first column of A_copy

[0153] Calculate icmd_max from second column of A_copy

[0154] IF ((vact_max - vact_min) > delta_v_th) OR (icmd_max > icmd_max_th)

[0155] Solve least square (LS) fit using A_copy & b_copy as input

[0156] Update est_J_LS, est_Bd, est_Bs true

[0157] ELSE false

[0158] END IF-ELSE

[0159] END IF

[0160] Ideally, the sampling period Tsb of the “SlowRun” function matches (or substantially matches) the time it takes to fill the data in A and b, which is represented as Ts*gap*N.

[0161] The purpose of A_copy and b_copy, is to allow the RT component to log new data while the least square (LS) problem is solved in the “SlowRun” function. This is needed because the input to the LS problem cannot be altered by the run function, while LS calculations are conducted in the SlowRun function. If the run function would have to wait until LS is done before logging new data to A and b, it would cause extra delay in the update of the estimated parameters.

[0162] The fast estimator may be based on the described slow estimator implementation, excluding dynamic and static friction, represented by the following equation:

[0163] / T*V(t)= / <’t* / (t) The following are exemplary parameters used by a pseudocode implementing the fast estimator:

[0164] • counter - a time counter for average acceleration calculation [sec]

[0165] • v_tO - velocity logged at time tO

[0166] • v_tl - velocity logged at time tl

[0167] • Ts - sampling period of algorithm (since the fast estimator does not involve computation intensive calculations, it is performed in real time)

[0168] • delta_v - speed difference, delta_v = v_tl - v_tO

[0169] • delta_v_th - speed difference threshold

[0170] • icmd_i - integral over icmd between tO and tl

[0171] • icmd_avg - average value of integral over icmd between tO and tl

[0172] • acc_th - minimum acceleration threshold for updating inertia estimation

[0173] • icmd_avg_th - minimum value of average current (absolute value) threshold for updating inertia estimation

[0174] • update_flag_fast - Boolean (true / false), indicates if new updated estimation is available

[0175] • est_J_fast - estimated value of inertia based on fast estimator

[0176] A pseudocode for an exemplary implementation of the fast estimator is as follows: initialization: counter , _ 0, icmd_i <-0 repeat at Ts rate: consume current values of vact and icmd _v_th THEN bs(icmd_i) / counter

[0177] IF (abs(delta_v) / counter > acc_th) OR (icmd_avg > icmd_avg_th) THEN est_J_fast = motor.kt * icmd_i / delta_v update_flag_fast = true

[0178] ELSE update_flag_fast = false

[0179] END IF-ELSE v_tO v_tl counter <r 0

[0180] END IF icmd counter <r counter + Ts

[0181] The following are exemplary parameters used by a pseudocode implementing the combined estimator, which uses the long interval value computed by the slow estimator based on sensor measurements obtained over the long interval, or the short interval value computed by the fast estimator based on sensor measurements obtained over the short interval, for example, as described with reference to 206, 210, and 212:

[0182] • est_J - combined estimation of inertia

[0183] • inertia_diff_th - threshold for using the fast estimator. Since the slow estimator is more accurate than the fast estimator, updates from the fast estimator may be used when a relatively large change in inertia is detector during operation.

[0184] A pseudocode for an exemplary implementation of the combined estimator is as follows: initialization: repeat at Ts rate:

[0185] IF (LS_update_flag = true) THEN est_J <- est_J_LS false

[0186] ELSE IF (update_flag_fast = true) AND (abs(est_J_fast - est_J) / est_J > inertia_diff_th)

[0187] THEN

[0188] END IF

[0189] Various embodiments and aspects of the present invention as delineated hereinabove and as claimed in the claims section below find computation simulation support in the following examples. EXAMPLES

[0190] Reference is now made to the following examples, which together with the above descriptions illustrate some embodiments of the invention in a non limiting fashion.

[0191] Inventors performed computer simulations of a closed loop motor under dynamic conditions, based on embodiments described herein.

[0192] Values of parameters described herein were set as follows:

[0193] For the slow estimator:

[0194] • N = 250

[0195] • Ts = 4e-3 [sec]

[0196] • Tsr = 4e-3 [sec]

[0197] • gap = 1 It is noted that “gap” is an internal parameter that defines how fast is the recording done, i.e., how much time elapses between recorded samples.

[0198] • delta_v_th = 600 [RPM]

[0199] • icmd_max_th = 3 [A]

[0200] For the fast estimator:

[0201] • Ts = 125e-6 [sec]

[0202] • delta_v_th = 300 [RPM]

[0203] • acc_th = 20000 [RPM / sec]

[0204] • icmd_avg_th = 4.2 [A]

[0205] For the combined estimator:

[0206] • Ts = 125e-6

[0207] • Inertia_diff_th = 1

[0208] Referring now back to FIG. 3, a graph 302 of dynamic estimated values of inertia, and a graph 304 of dynamic changes in RPM of the motor, of a first simulation, are presented. The inertia estimation are used to adjust the RPM of the motor. Curve 306 denotes a reference. Curve 308 denotes inertia values computed by the fast estimator, as described herein. Curve 310 denotes inertia values computed by the slow estimator, as described herein. Curve 312 denotes inertia values computed by the combined estimator, as described herein. The estimators (fast, slow, combined) start with zero inertia, which is the default value. The fast estimator responds once conditions for estimations are met. The slow estimator has N= 250 and sample time of 4e-3 sec, therefore it can be updated every 1 second.

[0209] Referring now back to FIG. 4, is a graph 402 of dynamic estimated values of inertia, and a graph 404 of dynamic changes in RPM of the motor, of a second simulation, are presented. The inertia estimation are used to adjust the RPM of the motor. Curve 406 denotes a reference. Curve 408 denotes inertia values computed by the fast estimator, as described herein. Curve 410 denotes inertia values computed by the slow estimator, as described herein. Curve 412 denotes inertia values computed by the combined estimator, as described herein.

[0210] The fast estimator detects inertia quickly, however it is less accurate, after one second, the slow estimator has an update, and the combined estimator switches to the slow estimator. Since the fast estimator does not report a change of inertia greater than the threshold (Inertia_diff_th = 1), the combined estimator obtains all of its values from the slow estimator update.

[0211] Referring now back to FIG. 5, a graph 502 of dynamic estimated values of inertia, and a graph 504 of dynamic changes in RPM of the motor, of a third simulation, are presented. The inertia estimation are used to adjust the RPM of the motor. Curve 506 denotes a reference. Curve 508 denotes inertia values computed by the fast estimator, as described herein. Curve 510 denotes inertia values computed by the slow estimator, as described herein. Curve 512 denotes inertia values computed by the combined estimator.

[0212] At Time = 3 sec, the actual inertia changes abruptly, by more than the threshold for using the fast estimator, so the combined estimator takes the value of the fast estimator. At Time = 4 sec, the slow estimator has an update, so the combined estimator takes the value of the slow estimator.

[0213] The simulations described herein provide calculated evidence that embodiments described herein provide a more accurate and / or more real time estimation of parameters (e.g., inertia, LMJR, and / or friction) used by the controller for real time adjustment of the motor of the closed loop motor (e.g., RPM).

[0214] The methods as described above are used in the fabrication of integrated circuit chips.

[0215] The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein. It is expected that during the life of a patent maturing from this application many relevant closed loop motors will be developed and the scope of the term closed loop motor is intended to include all such new technologies a priori.

[0216] As used herein the term “about” refers to ± 10 %.

[0217] The terms "comprises", "comprising", "includes", "including", “having” and their conjugates mean "including but not limited to". This term encompasses the terms "consisting of" and "consisting essentially of".

[0218] The phrase "consisting essentially of" means that the composition or method may include additional ingredients and / or steps, but only if the additional ingredients and / or steps do not materially alter the basic and novel characteristics of the claimed composition or method.

[0219] As used herein, the singular form "a", "an" and "the" include plural references unless the context clearly dictates otherwise. For example, the term "a compound" or "at least one compound" may include a plurality of compounds, including mixtures thereof.

[0220] The word “exemplary” is used herein to mean “serving as an example, instance or illustration”. Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments and / or to exclude the incorporation of features from other embodiments.

[0221] The word “optionally” is used herein to mean “is provided in some embodiments and not provided in other embodiments”. Any particular embodiment of the invention may include a plurality of “optional” features unless such features conflict.

[0222] Throughout this application, various embodiments of this invention may be presented in a range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of the invention. Accordingly, the description of a range should be considered to have specifically disclosed all the possible subranges as well as individual numerical values within that range. For example, description of a range such as from 1 to 6 should be considered to have specifically disclosed subranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6 etc., as well as individual numbers within that range, for example, 1, 2, 3, 4, 5, and 6. This applies regardless of the breadth of the range.

[0223] Whenever a numerical range is indicated herein, it is meant to include any cited numeral (fractional or integral) within the indicated range. The phrases “ranging / ranges between” a first indicate number and a second indicate number and “ranging / ranges from” a first indicate number “to” a second indicate number are used herein interchangeably and are meant to include the first and second indicated numbers and all the fractional and integral numerals therebetween. It is appreciated that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination or as suitable in any other described embodiment of the invention. Certain features described in the context of various embodiments are not to be considered essential features of those embodiments, unless the embodiment is inoperative without those elements.

[0224] Although the invention has been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.

[0225] It is the intent of the applicant(s) that all publications, patents and patent applications referred to in this specification are to be incorporated in their entirety by reference into the specification, as if each individual publication, patent or patent application was specifically and individually noted when referenced that it is to be incorporated herein by reference. In addition, citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to the present invention. To the extent that section headings are used, they should not be construed as necessarily limiting. In addition, any priority document(s) of this application is / are hereby incorporated herein by reference in its / their entirety.

Claims

WHAT IS CLAIMED IS:

1. A device for communication with controller of a closed loop motor, comprising: at least one processor configured for: in each long time interval of a plurality of sequential long time intervals: dynamically computing a long interval value from an aggregation of sensor data samples obtained during the long time interval; setting a parameter to the long interval value; in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically computing a short interval value from the sensor data samples obtained during the short time interval; in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, setting the parameter to the short interval value; and providing the parameter to the controller for real time adaptation of the closed loop motor, wherein the at least one processor is configured for computing in parallel, the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals.

2. The device of claim 1, wherein the parameter comprises inertia.

3. The device of claim 1 , wherein the parameter comprises load to motor inertia ratio (LM JR) .

4. The device of claim 1, wherein the parameter comprises at least one of dynamic friction and static friction.

5. The device of claim 1, wherein the sensor data samples includes at least one of: electric current, and rotational velocity.

6. The device of claim 1, wherein the at least one processor is further configured for logging the sensor data samples obtained during a current long time interval, wherein the long interval value is computed from logged sensor data samples obtained during a preceding long time interval, wherein the sensor data samples logged during the current long time interval is used for computing the long interval value for a subsequent long time interval of a subsequent long time interval.

7. The device of claim 1, wherein the long time interval comprises a sampling period for the at least one processor computing the long interval value, defined as a product of: (i) a real time sample period of the at least one processor computing the short interval value, an integer value selected such that the integer multiplied by the real time sample period equates a sampling period of the sensor data samples, and a number of samples of the sensor data samples.

8. The device of claim 7, wherein the at least one processor is further configured for performing in parallel, obtaining the sensor data samples during the current long time interval and the computing the long interval value from logged sensor data samples obtained during the preceding long time interval.

9. The device of claim 1, wherein the at least one processor is further configured for applying a first set of rules to the sensor data samples obtained during the long time interval, and computing the long interval value in response to the first set of rules being met.

10. The device of claim 9, wherein the first set of rules comprises at least one of: (i) difference between a maximal value of the sensor data samples and a minimal value of the sensor data samples greater than a first threshold, (ii) maximal value of the sensor data samples greater than a second threshold, and (iii) determining that an amount of time greater than a threshold has elapsed after setting the parameter to the short interval value.

11. The device of claim 10, wherein (i) comprises difference between maximal rotational velocity and minimal rotation velocity greater than the first threshold, and (ii) comprises maximal amplitude of current greater than the second threshold.

12. The device of claim 9, wherein in response to the set of rules not being met, setting the long interval value to the preceding value.

13. The device of claim 1, wherein the long interval value is computed by applying a least square (LS) fit to the sensor data samples obtained during the long time interval.

14. The device of claim 1, wherein the at least one processor computes the short interval value of the parameter within a short amount of time that is shorter than a long amount of time for computing the long interval value.

15. The device of claim 1, wherein a number of the sensor data samples obtained during the long time interval is selected such that a time for computing the long interval value from the number of sensor data samples is less than the long time interval.

16. The device of claim 1, wherein the at least one processor is further configured for applying a second set of rules to the sensor data samples obtained during the short time interval, and computing the short interval value in response to the second set of rules being met.

17. The device of claim 16, wherein the second set of rules comprises at least one of: (i) a difference between a current value of the sensor data sample and a preceding value of the sensor data sample greater than a third threshold, (ii) an integration of the sensor data samples greater than a fourth threshold, and (iii) an average of the sensor data samples above a fifth threshold.

18. The device of claim 17, wherein (i) comprises difference between a current rotational velocity and a preceding rotation velocity greater than the third threshold, (ii) comprises acceleration greater than an acceleration threshold, and (iii) comprises an average current above a current threshold.

19. The device of claim 1, wherein the sensor data samples include measurements of electrical current and rotational velocity, the short interval value is computed by computing an integral of the electrical current over the short time interval divided by a difference between a first rotation velocity at the beginning of the short time interval and a second rotation velocity at the beginning of the short time interval, multiplied by a motor toque constant.

20. The device of claim 1, further comprising passing the sensor data samples obtained during the short time interval through a low pass filter to obtain filtered sensor data samples, wherein the short interval value is computed from the filtered sensor data samples.

21. The device of claim 1, further comprising fusing the short interval value and the long interval value to obtain the parameter, using a process that uses a series of measurements made over time to produce estimates of unknown variables that tend to be more accurate than those based on a single measurement by estimating a joint probability distribution over the variables for each timeframe.

22. A method for controlling a controller of a closed loop motor, comprising: in each long time interval of a plurality of sequential long time intervals: dynamically computing a long interval value from an aggregation of sensor data samples obtained during the long time interval; setting a parameter to the long interval value; in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically computing a short interval value from the sensor data samples obtained during the short time interval; in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, setting the parameter to the short interval value; and providing the parameter to the controller for real time adaptation of the closed loop motor, wherein the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals are computed in parallel.

23. A non-transitory medium storing program instructions for controlling a controller of a closed loop motor, which when executed by at least one processor, cause the at least one processor to: in each long time interval of a plurality of sequential long time intervals: dynamically compute a long interval value from an aggregation of sensor data samples obtained during the long time interval; set a parameter to the long interval value; in each short time interval of a plurality of sequential short time intervals occurring during the long time interval: dynamically compute a short interval value from the sensor data samples obtained during the short time interval; in response to the short interval value deviating from a preceding value of the parameter by more than a threshold, set the parameter to the short interval value; and provide the parameter to the controller for real time adaptation of the closed loop motor,wherein the long interval value of the long time interval and a plurality of the short interval values of the plurality of sequential short time intervals are computed in parallel.

Citation Information

Patent Citations

  • Servo drive variable period online inertia identification method

    CN115422698A

  • Servomotor controller for controlling periodic reciprocation

    US20100295496A1

  • Servo motor control apparatus and control method

    US20120268054A1

  • Real-time servo motor controller based on a load weight

    US20130257339A1

  • Feedforward control method for servomotors

    US5311110A