====Data-Driven Lag==== ===What Is Lag?=== **Lag** between various sensors and pieces of equipment is common. There are a number of reasons why lag exists, but they are usually caused by needing to overcome either **distance** or **inertia**, such as... * A machine taking a while to reach top speed, \\ * A heating element taking time to reach full temperature, \\ * A product taking time to reach the next component across a conveyor system. \\ ===What Is Data-Driven or Variable Lag=== **Data-Driven Lag** or **Variable Lag** appears when the time-lag between two elements of your system isn't constant. This is very common in conveyor-belt systems, where the line might be slowed, sped up or stopped entirely. For example, let's look at Cupcake #1, working its way down a production line from the oven to the frosting machine. {{CupcakeLag.png}} ----- If we wanted to report on an //individual cupcake//, we have to contend with the lag in the system. In this case, the lag comes from the time it takes to travel between parts of the production line. The time it takes depends on both the **distance** between the two points, and the **speed** of the conveyor. Since point **A** and point **B** are 50m apart, it will take 300 seconds for our cupcake to get from start to finish if the conveyor is running at 10 meters-per-minute. But conveyor speed //changes// - stopping, slowing and speeding up from time-to-time. Our lag-compensation needs to be smarter. ===Calculating Real-World Lag=== You can use the [[class_LagCorrection|LagCorrection]] class if you'd like to calculate the real lag. It takes a measurement - either a //counter// or a //rate// - and searches backwards until a specified amount has been seen. In our example, we'd look at the **conveyor speed** and look for **50m** of conveyor to have passed. You can also use the [[class_LagCorrectedQuery|LagCorrectedQuery]] class to build up a single data-frame that provides lag-synchronised data across several different queries and locations.