Operation identification of a work machine

Systems and methods are disclosed for identifying operations of a machine. The system includes a work tool and an operator input device configured to receive input indicative of a desired movement of the work tool and to generate a command data stream associated with the received input. The system also includes an actuator configured to move the work tool according to the command data stream and a controller in communication with the operator input device and the actuator. The controller is configured to convert the command data stream into a frequency data stream and identify a pattern in the frequency data stream. The controller is also configured to make a classification of a current operation of the machine as one of a plurality of known operations based on the identified pattern. The controller is further configured to trigger an event associated with the current operation of the machine.

TECHNICAL FIELD

The present disclosure relates generally to systems and methods for identifying the operation of a work machine, and more particularly, to systems and methods for identifying the operation of a work machine using information from an operator input device.

BACKGROUND

Modern work machines such as hydraulic excavators, backhoe loaders, wheel loaders, and skid-steer loaders, are used for a variety of tasks requiring operator control of the work machine and various work tools associated with the work machine. These work machines and work tools can be relatively complicated and difficult to operate. They may have an operator interface with numerous controls for steering, position, orientation, transmission gear ratio, and travel speed of the work machine, as well as position, orientation, depth, width, and angle of the work tool.

Typically, these work machines employ joystick-based control systems for achieving the desired manipulation of the work tool using precise movements of an implement. The physical positioning of different parts of the implement, such as boom and stabilizer, may be controlled using one or more hydraulic systems. The hydraulic systems may be operated by one or more control pods, each having a joystick disposed thereon. For example, an excavator may employ one joystick for stick and swing control, and another joystick for boom and bucket control.

Understanding the operation of a work machine has several usages. One usage is to improve in real-time the productivity and efficiency of a work machine. For example, it may be desirable to increase the acceleration limits imposed on the extending movement of an actuator when a certain operation, such as dig operation, is identified.

One attempt to improve the performances of a work machine is disclosed in U.S. Pat. No. 7,539,570 to Normarm (the '570 patent). The '570 patent provides a system and method for controlling a work machine. The disclosed system includes sensors configured to sense at least one operational characteristic of the machine indicative of an application of the work tool, and a control unit configured to alter the operation of the machine in response to a new application of the work tool.

Although the method and system of the '570 patent may provide information useful for improving the performances of a work machine, it may still be less than optimal. In particular, the '570 patent relies on data from expensive sensors and analyzes data from the operator input device. Because work machines perform a wide variety of tasks, the partial solution of the '570 patent cannot accurately identify all the activities of the work machine.

The disclosed analysis system is directed to overcoming one or more of the problems set forth above.

SUMMARY

In one aspect, the present disclosure is directed to a control system for a machine. The control system includes a work tool and an operator input device configured to receive input indicative of a desired movement of the work tool and to generate a command data stream associated with the received input. The control system also includes at least one actuator configured to move the work tool according to the command data stream and a controller in communication with the operator input device and the at least one actuator. The controller is configured to convert the command data stream into a frequency data steam and to identify a pattern in the frequency data stream. The controller is also configured to make a classification of a current operation of the machine as one of a plurality of known operations based on the identified pattern. The controller is further configured to trigger an event associated with the current operation of the machine.

In another aspect, the present disclosure is directed to a method for identifying operations of a machine. The method includes receiving a command data stream from at least one machine having an operator input device for controlling movements of the machine, wherein the command data stream is associated with a period of time. The method further includes converting the command data stream into a frequency data stream, and identifying a plurality of patterns in the frequency data stream. The method also includes making classifications of a plurality of previous operations of the machine that happened in the period of time as one or more of a plurality of known operations based on the identified plurality of patterns. The method further includes using the classifications to generate a machine application profile.

In yet another aspect, the present disclosure is directed to a computer programmable medium having executable instructions stored thereon for completing a method identifying operations of a machine. The method includes receiving a command data stream from at least one machine having an operator input device for controlling movements of the machine, wherein the command data stream is associated with a period of time. The method further includes converting the command data stream into a frequency data stream, and identifying a plurality of patterns in the frequency data stream. The method also includes making classifications of a plurality of previous operations of the machine that happened in the period of time as one or more of a plurality of known operations based on the identified plurality of patterns. The method further includes using the classifications to generate a machine application profile.

DETAILED DESCRIPTION

FIG. 1illustrates an exemplary machine100having multiple systems and components that cooperate to excavate and load earthen material onto a nearby haul vehicle102. In one example, machine100may embody a hydraulic excavator. It is contemplated, however, that machine100may embody another type of machine such as a backhoe, a front shovel, a dragline excavator, or another similar machine. Machine100may include, among other things, an implement104configured to move a work tool106between a dig location108within a trench and a dump location110over haul vehicle102, and an operator station112for manual control of implement104.

Implement104may include a linkage structure acted on by fluid actuators to move work tool106. Specifically, implement104may include a boom114that is vertically pivotal relative to a work surface116by a pair of adjacent hydraulic actuators118(only one shown inFIG. 1). Implement104may also include a stick120that is vertically pivotal about a horizontal axis122by a single hydraulic actuator124. Implement104may further include a single hydraulic actuator126operatively connected to work tool106to pivot work tool106vertically about a horizontal pivot axis128. Boom114may be pivotally connected to a frame130of machine100. Frame130may be pivotally connected to an undercarriage member132, and swung about a vertical axis134by a swing motor136. Stick120may pivotally connect boom114to work tool106by way of pivot axes122and128. It is contemplated that a greater or lesser number of actuators may be included within implement104and/or connected in a manner other than described above, if desired.

Machine100may also include an engine138configured to provide power to move undercarriage member132and may include one or more power sources, such as internal combustion engines, electric motors, fuel cells, batteries, ultra-capacitors, electric generators, and any other power source which would be known by a person having ordinary skill in the art. Engine138may further be used to power various functions of a work tool106or any other elements and subsystems associated with machine100and/or work tool106.

Numerous different work tools106may be attachable to a single machine100and controllable via operator station112or via a remote control station140. Work tool106may include any device used to perform a particular task such as, for example, a bucket, a fork arrangement, a blade, a shovel, or any other task-performing device known in the art. Although work tool106is connected, in the embodiment ofFIG. 1, to pivot relative to machine100, work tool106may alternatively or additionally rotate, slide, swing, lift, or move in any other manner known in the art.

Operator station112and remote control station140may be configured to receive input from a machine operator indicative of a desired machine and/or work tool movement. Specifically, operator station112and remote control station140may include one or more operator input devices142embodied as single or multi-axis joysticks. In one embodiment, operator input devices142may be a wheel configured to control undercarriage member132and/or the rotation of frame130relative to vertical axis134. In another exemplary embodiment, operator input devices142may be proportional-type controllers configured to position and/or orient work tool106by producing a command data stream that is indicative of a desired work tool speed and/or force in a particular direction. The command data stream may be used to actuate any one or more of hydraulic actuators118,124,126and/or swing motor136. It is contemplated that different operator station112and remote control station140may include one or more operator input devices142, such as, for example, wheels, knobs, push-pull devices, switches, pedals, and other operator input devices known in the art.

Machine100may include an on-board system for directly monitoring and controlling in real-time the operation of machine100. Additionally or alternatively, machine100may communicate with an off-board system located in a back office (e.g., remote control station140) for monitoring and controlling the operation of machine100.

FIG. 2shows an exemplary system200consistent with certain disclosed embodiments. System200may be configured to perform health and usage monitoring functions associated with the operation of machine100. In one embodiment, system200may be located on-board machine100and may process data in real-time to trigger an event, such as adjusting an operational parameter of an actuator. In another embodiment, system200may be located off-board and may communicate with machine100. For example, system200may be part of a remote server that receives information from a plurality of machines100and uses the information to perform machine application profiling. Other aspects of system200may be implemented by the disclosed embodiments as described below.

In the exemplary embodiment shown, the system200includes a controller202and a memory component, such as a memory204. System200may be connected to or communicate with an input network206and a sensor network208. Input network206may include one or more operator input devices142and be configured to generate a command data stream associated with input received from the operator and indicative of the desired movements of machine100and/or the desired movements of work tool106. Sensor network208may include sensors for detecting different aspects of machine100. For example, sensor network208may detect hydraulic pressures in actuators, positions of cylinder rods, implement linkage angles, velocities and accelerations, steering articulation angles, strain on bolts forming structural joints, vehicle ground speed, inclinations relative to the Earth, and forces on instrumented pins in linkages and other structures.

In some embodiments, the various components in system200may be coupled by one or more communication buses or signal lines. Alternatively, some of the components in system200may be wirelessly connected to other components. For example, when controller202is located at a remote location (e.g., remote control station140) it may receive information from input network206and sensor network208over a communication network. While a single illustration of system200is illustrated inFIG. 2, numerous variations and/or modifications may be made. Moreover, the components of system200may be arranged into a variety of configurations while providing the functionality of the disclosed embodiments. Therefore, the configuration of system200, as illustrated inFIG. 2, should be considered as illustrative only, with a true scope and spirit being indicated by the following claims and their full scope of equivalents.

Controller202may be configured to receive data signals, process the data signals, and communicate data to memory204. Controller202may include one or more processors (such as Digital Signal Processors (DSP)) configured to execute computer readable code that performs processes consistent with certain disclosed embodiments, such as functions to identify one or more activities of machine100. In one exemplary embodiment, controller202may be associated with a data output device (not shown) that may display data from controller202and/or memory204. The data output device could be a port connectable to a service tool, such as a laptop computer, a hand-held data device, and a wireless transmitter, among others. Controller202may include, for example, resources to process varying numbers of inputs. For instance, controller202may execute program code that stores data in a first-in-first-out buffer at maximum expected input sampling rates. Additionally, controller202may be configured to perform algorithms consistent with machine application profiling as disclosed herein. In one exemplary embodiment, controller202may process data through one or more neural networks, performing floating-point matrix calculations, etc. In addition, controller202may be associated with various other circuits, such as, power supply circuitry, signal conditioning circuitry, solenoid driver circuitry, and other types of circuitry.

Memory204may include one or more memory devices that store data and computer programs and/or executable code, including algorithms and data enabling processing of the data. Consistent with present disclosure, memory204may include any type of memory device(s) known in the art that is compatible with controller202. Memory204also may be configured to store data calculated by controller202and may be configured to store computer programs and other information accessible by controller202. In one exemplary embodiment, memory204may store historical data of machines100and associated machine application profiles. In addition, memory204is configured to update the associated machine application profiles with new determined information. In another embodiment, memory204may store neural network software that, when executed by controller202, performs neural network processes consistent with the disclosed embodiments. A neural network is designed to mimic the operations of the human brain by determining the interaction between input and response variables based on a network of processing cells. The cells, commonly known as neurons or nodes, are generally arranged in layers, with each cell receiving inputs from a preceding layer and providing an output to a subsequent layer. The interconnections or links that transfer the inputs and outputs in a neural network are associated with a weight value that may be adjusted to allow the network to produce a predicted output value. Neural networks may provide predicted response values based on historical data associated with modeled data provided as independent input variables to the network. Neural networks may be trained by adjusting the data values associated with the weights of the network each time the historical data is provided as an input to allow the network to accurately predict the output variables. To do so, the predicted outputs are compared to actual response data of the system and weights are adjusted accordingly until a target response value is obtained.

Input network206may be configured to generate a command data stream from input received from one or more operator input devices142. The command data stream may be indicative of the movements of machine100and/or the movements of work tool106. In one embodiment, the one or more operator input devices142may be a first joystick lever controlling a first actuator and a second joystick lever controlling a second actuator. In this embodiment, input network206is configured to generate a single command data stream that includes information from both the first joystick and the second joystick. Sensor network208may be configured to collect data indicative of the state of machine100. In one example, sensor network208may include one or more orientation sensors210, one or more hydraulic pressure sensors212, one or more cylinder position sensors214, one or more implement position sensors216, one or more implement acceleration sensors218, load pins220, and bending bridges222. Generally, these may all be referred to as “sensors.” Not all sensors are essential for the operation of system200.

In general, the sensors implemented by machine100(e.g., sensors210-218) may be separated into three categories: sensors that sense orientation and movement of machine100, sensors that measure loads (e.g., cylinder pressure sensors, strain gauges on the rod ends of hydraulic actuators, etc.), and sensors that sense strain at some point, such as a sensor on a structural frame within machine100. The number and position of the sensors implemented within machine100may depend on the type of machine, the type of component(s) within machine, the desired and actual use of machine100, and other factors. For example, a certain number of sensors associated with the first two categories may be selectively positioned in order to provide adequate information to constrain the problem of generating the entire free body diagram of machine100or a machine component. The sensors from the third group, however, may be positioned in locations to provide a base set of measured data to compare to calculated strains (e.g., normal strain values). Further, based on the location of certain machine components or other sensors, a sensor positioned on these certain machine components may be wired or wireless.

Orientation sensors210may include one or more inclinometers disposed on machine100to measure one or both of pitch and roll of machine100relative to the Earth, Hydraulic pressure sensors212may be associated with a hydraulic system to detect fluid pressure. In one exemplary embodiment, pressure sensors212may be associated with a cylinder head of a hydraulic actuator. Hydraulic pressure sensors212may be disposed at other locations about machine100to measure hydraulic pressures. Hydraulic pressure sensors212may provide information regarding one or more forces acting on the structure of machine100at connection points of the hydraulic actuator.

Cylinder position sensors214may be configured to sense the movement and relative position of one or more components of machine100, such as work tool106. Cylinder position sensors214may be operatively coupled to actuators, such as hydraulic actuator118, or to the joints connecting the various components of machine100. Some examples of suitable position sensors214include, among others, length potentiometers, radio frequency resonance sensors, rotary potentiometers, machine articulation angle sensors and the like. Implement position sensors216may be associated with implement104in a manner to detect its position. In one exemplary embodiment, implement position sensors216are rotary position sensors disposed at pin connections on implement104. Other position sensors also may be used including, among others, radio frequency resonance sensors, rotary potentiometers, angle position sensors, and the like. Implement acceleration sensors218may include an accelerometer or other type of sensor or sensors configured to monitor acceleration and may be associated with implement104in a manner to properly detect acceleration of any desired point. Velocities may also be obtained based on the time-derivative of position sensors for the bucket or other similar component of machine100.

Load pins220may be configured to measure forces in x- and y-axes in inner and outer shear planes of a pin and may be instrumented with, for example, one or more strain gauges. The load pins220could be instrumented with strain gauges on the outer or inner surface of the or they could be instrumented with some other technology designed to react to the stress state in the pin. Load pins220may be disposed at joints on machine100. In one exemplary embodiment, load pins220are disposed at joints connecting components of implement104and/or connecting the actuators to implement104. Load pins220may be disposed at other joints about machine100. Bending bridges222may be configured to measure strain in or along surfaces, such as, for example, along sides of stick120. In one exemplary embodiment, the bending bridges may include, for example, four strain gauges. In one exemplary embodiment, the strain gauges on bending bridges222may be configured to provide one combined output.

A Sensor Control Unit (SCU)224associated with sensor network208may contain one or more processors and a memory device. SCU224may be configured to receive data signals from the sensors, process the data signals, and communicate data to controller202. The one or more processors in SCU224may be a processor or a microprocessor, and may be configured to execute computer readable code or computer programming to perform functions, as is known in the art. The memory device in SCU224may be in communication with the one or more processors, and may provide storage of computer programs and executable code, including algorithms and data enabling processing of the data received from the sensors. In one embodiment SCU224may be configured to transmit time-stamped and synchronized information, along with sensed values to controller202.

An Input Device Control Unit (IDCU)226may also contain one or more processors and a memory device, similar to SCU224. IDCU226may be configured to receive data signals from operator input devices142, process the data signals, and communicate at least one command data stream to controller202. In one exemplary embodiment, IDCU226may be configured to communicate time-stamped and synchronized information, along with the command data stream to controller202. It should be noted that controller202may be operable with IDCU226separately from SCU224, or simultaneously working with both IDCU226and SCU224. In addition, consistent with some embodiments, the functionalities of SCU224and IDCU226may be performed by single device.

In one embodiment, the information from IDCU226and/or SCU224may be used to classify a current operation of machine100as one of a plurality of known operations. For example, the current operation may be classified as one of a dig operation, a swing-to-truck operation, a dump operation, and a swing-to-dig operation, as will be described in more detail below. It is contemplated that controller202may then regulate machine100differently based on the classified operation. For example, when raising boom114with a fully loaded work tool106(e.g., during a dig operation), it may be desirable to increase the acceleration limits imposed on the extending movement of hydraulic actuator118to enhance machine efficiency and/or productivity. In contrast, high acceleration during boom lowering of an empty work tool106(e.g., during a return-to-trench segment) could cause work tool106to bounce uncontrollably. Accordingly, controller202may be configured to affect operational parameters of machine100differently based on the classified operation.

In another embodiment, the information from IDCU226and/or SCU224may be used to classify a plurality of operations of machine100. For example, a remote server including controller202may receive data streams including information indicative of the movements of machine100and/or work tool106over a period of time. The period of time may be days, weeks, months, a year, or more. Controller202may apply advanced analytics algorithms to automatically determine the operations that machine100performed during that period of time. Understating which operations machine100performed may be used for determining an application profile of machine100.

FIG. 3illustrates an exemplary process performed by controller202.FIG. 3will be discussed in more detail below to further explain the disclosed concepts.

INDUSTRIAL APPLICABILITY

The disclosed systems and methods provide an accurate and reliable way for an on-board system to improve, in real-time, the productivity and efficiency of machine100. For example, the on-board system can accurately estimate the velocity of an actuator (e.g., any one of hydraulic actuators118,124, or126) based on information received from operator input device142. In some embodiments, the on-board system can run a velocity-based control algorithm to efficiently guide operators to improve performance and increase productivity at applications such as grade leveling, back-filling, and pipe-laying that require high precision, accuracy and speed.

The disclosed systems and methods also provide an accurate and reliable way for an off-board system to determine a machine application profile. The machine application profile may be used for monitoring the health of machine100and for other purposes, such as product development, customer profiling, and marketing analytics. For example, the off-board system may determine information about customer usage of machines100by region, operator level, soil conditions, and more. In addition, the off-board system may use historical data (fuel consumption, productivity, efficiency, and health condition) to determine information that can correlate a specific operation of machine100with malfunctions and wear. Operation of system200will now be described with respect toFIG. 3.

FIG. 3is a flow chart illustrating an exemplary process300for identifying operations of machine100. Process300begins at step302, when controller202receives a command data stream from IDCU226. When process300takes place on-board machine100, the command data stream may be received over direct communication lines between IDCU226and controller202. Alternatively, when process300takes place off-board machine100(for example, at a remote server), the command data stream may be received wirelessly via a communication network. The command data stream may be associated with an input indicative of a desired movement of machine100or work tool106. The command data stream may also associated with a period of time.

The command data received in step302may include different types of information. In a first embodiment, the received command data stream may include information from multiple operator input devices142. For example, machine100and work tool106may be operated using a first joystick lever controlling a first actuator and a second joystick lever controlling a second actuator. In this example, the command data stream includes information from both the first joystick and the second joystick. In a second embodiment, the command data may include information from one or more operator input devices142and at least one sensor included in sensor network208. For example, the at least one sensor may be associated with the movements of machine100and/or the movements of work tool106, in this example, the information from the at least one sensor may be indicative of one or more of a pivoting position, an acceleration, a speed, a force, or a pressure associated with work tool106. In a third embodiment, the received command data stream may include only information from at least one operator input device142. For example, information about the velocity of an actuator may be estimated from joystick lever commands and not from any sensor.

At step304controller202converts the command data stream into a frequency data stream. By converting the command data stream from the time domain into the frequency domain, controller202may reveal repeated patterns of machine operations at both macro and micro levels. In one embodiment, controller202may apply known mathematical transformations to convert the time-based data stream (i.e., the command data stream) to the frequency-based data stream (i.e., the frequency data stream). For example, controller202may use a Fourier transform to convert the time-based command data stream into a sum of sine waves of different frequencies, each of which represents a frequency component. The frequency domain representation of the command data stream is the frequency data stream. In other examples, controller202may use other transformations, such as Laplace transform, Z transform, Wavelet transform, and others. In order to rapidly and efficiently convert the command data stream into a frequency data stream, controller202may use a Fast Fourier Transform (FFT) algorithm to compute the Discrete Fourier Transform (DFT) by factorizing the DFT matrix into a product of sparse (mostly zero) factors.

At step306controller202identifies at least one pattern in the frequency data stream. After the command data stream is converted to the frequency data stream, controller202may identify a pattern associated with a repeated activity of machine100. It should be understood that the term “identifying a pattern” as used in this disclosure refers to recognizing in the frequency domain any sequence of values that follows certain set of rules or that has similarity to a previously determined sequence. In one embodiment, the previously determined sequence may be determined using machine learning algorithms on a large amount of sample data. Consistent with the present disclosure, when identifying patterns in the frequency domain, controller202may take into consideration the variance between command data streams generated by different operators. Controller202may also take into consideration the variance between the command data streams generated by the same operator working in different environments. For example, the representation of the operation “truck loading” in the command data stream may change based on the different soil conditions (e.g., compacted soil vs. re-handled soil).

At step308controller202makes a classification of the operation of machine100based on the identified pattern. The operation of machine100may include a plurality of distinct activities. For example, the operation “loading dirt” represented inFIG. 1may include the activities: digging, collecting dirt, raising stick member120, moving machine100, and dropping the dirt into haul vehicle102. These activities may be identified separately or together as part of a classified operation. Consistent with the present disclosure, making a classification of the operation of machine100may include comparing the identified pattern to a plurality of patterns associated with known operations. In one embodiment, the plurality of known operations includes a first set of known operations associated with a first type of machines and a second set of known operations associated with a second type of machines. When machine100belongs to the first type of machines, controller202may configured to make a classification only as one of the first set of known operations. For example, when machine100is a wheel loader, controller202may not search in the frequency data stream for a pattern associated with the operation “trenching,” Likewise, when machine100is an excavator, controller202does not search in the frequency data stream for a pattern associated with the operation “dirt pushing.”

In one embodiment, when the command data stream represents real-time movements of machine100or work tool106, controller202can make a classification of a current operation of machine100as one of a plurality of known operations based on the identified pattern. In another embodiment. When the command data stream represents operations of machine100in a period of time, controller202can make classifications of a plurality of previous operations of machine100that happened in the period of time. Controller202is configured to make the classification based on information from the command data stream and other sources (e.g., user input), or solely from the information from the command data stream. With respect to the three examples of the different types of information that may be included in the command data stream, controller202can make the classification when the command data stream includes information from more than one operator input device142, includes information from operator input device142and from sensor network208, or includes only information from at least one operator input device142.

At step310controller202triggers an event associated with the current operation of machine100. Controller202may trigger the event when machine100is a manual machine, when machine100is an autonomous machine, and when machine100is a remote-controlled machine. In one embodiment, when the event is triggered, controller202may adjust an operational parameter of at least one actuator (e.g., hydraulic actuators118,124, or126) based on the classification of the operation. For example, controller202may change at least one of the following parameters: acceleration rate, overall speed, force, and range of motion. In another embodiment, when the event is triggered, controller202may provide a notification to an operator of machine100. When machine100is operated manually, the notification may be provided to a display in operator station112. In the alternative. When machine100is remote controlled, the notification may be provided to a display in remote control station140. In yet another embodiment, when the event is triggered, controller202may compare an operational parameter of at least one component to at least one predefined threshold associated with the current operation of machine100. The at least one component may be different from the at least one actuator configured to move work tool106. For example, when an operation of “back-filling” is identified, controller202may compare the value of engine RPM to make sure that it remains below 2000 RPM. When process300takes place on-board machine100, triggering the event may include executing one of the actions listed above in real-time. Alternatively, when process300takes place off-board machine100(for example, at a remote server), triggering the event may include wirelessly transmitting instructions to machine100, thereby causing the execution of one of the actions listed above in close to real-time.

At step312controller202uses multiple classifications to generate a machine application profile. In one exemplary embodiment, the machine application profile may be used to predict a potential failure of a component of machine100. For example, controller202may use records of treatments and maintenance that may be stored in memory204. For example, when a certain activity that may wear a certain component is identified, controller202may check the last time this component was examined. In another embodiment, the machine application profile may be used to determine information about a customer usage of machine100. As mentioned above, machine100may be used for a variety of tasks. If, for example, controller202determines that a particular machine100is used only for two specific operations, it can provide the operator of the particular machine information based on the two specific operations. In yet another embodiment, the machine application profile may be used to determine ranking of performances of an operator of machine100. For example, some operators may be very competent in some operations and less competent in other operations. This information may assist in work assignment. When process300takes place on-board machine100, generating the machine application profile may include maintaining in memory204records of the activities that machine100preformed. When process300takes place off-board machine100(for example, at a remote server), controller202may generate a group of machine application profiles relating to a group of machines100and perform analysis on subgroups of these profiles. For example, when controller202is located at a remote server it may receive a plurality of command data streams from a plurality of machines100associated with a single customer. In this example, controller202may use the machine application profiles to determine a customer profile for the single customer. The customer profile may include a list of machines100it includes, the type and frequency of operations machines100preform, rankings of classified operations, ranking of the operators, and more.