Attention!
In order to detect fillings, the processed data is used (it is done on the Data preparation and Filtration steps).
Note: Ellipsis (…) substitutes Unit properties → Fuel consumption when indicating the option paths.
Three options are attached to this detection:
- Option: Minimum fuel filling volume, liters;
- Option: Detect fuel filling only while stopped;
- Option: Ignore filtration when calculating the filling volume;
- Special Case: How a filling is processed?
Minimum fuel filling volume
... → 'Fuel fillings/thefts detection' block → 'Minimum fuel filling volume, liters'
This option helps to exclude false fillings, because sensors may send false data rise in motion.
Detect fuel filling only while stopped
... → 'Fuel fillings/thefts detection' block → 'Detect fuel filling only while stopped'
In normal conditions transport vehicles are fueled during stops. This option narrows its search to stops/parkings only.
Calculate fuel filling volume by raw data
... → 'Fuel Fillings/Thefts Detection' block → 'Calculate fuel filling volume by raw data'
When filtration is switched on, some fuel level deviations may occur at the beginning and end of a filling. To avoid it, the system uses unfiltered data when filling volume is calculated.
Special Case: How a filling is processed?
Filling time frontiers and its volume
The filling is performed.
Let the fuel volume in this message be Vcurr,the fuel volume in the previous message — Vprev. If the difference d (=Vcurr – Vprev) for the current message is positive, then the current message is marked as an initial filling message.
Time passes by. The filling is close to the finish. When d-value for some message becomes negative (i.e. the fuel volume in the current message is less than in the previous one), then it is called the final filling message. If the fuel level does not change during the time indicated in the Timeout to separate consecutive fillings parameter in the Fuel Consumption tab of the unit properties, the filling is considered finished as well.
The volume of the filling equals to Vfinal – Vinit (the difference in fuel volumes between the final and initial filling messages).
Filling timestamp calculation algorithm
Now it is time to find the filling timestamp.
Iteratively for every message within the filling interval (exclude the last one) the system seeks delta(=Vnext – Vcurr) for the next message which shows the fuel level growth between the current message and the next one.
The timestamp of the message whose delta is ultimately the biggest among others is regarded as the filling timestamp (in other words, the left message is selected from the message pair whose delta is the biggest one).
It is worth highlighting, that a filling timestamp is calculated dynamically based on the available data from the sensors.
Determining fuel fillings in the ‘Fuel traffic’ table
The Fuel Traffic table determines the fuel activity of the unit (fuel filling, theft, counter operation), according to which the report is being executed, as well as the units that were near it. The following algorithm explains what principle the system uses to determine to which of the nearby units fuel was distributed.
The intervals for the distribution and reception of fuel are considered to be adjacent if the time of the fuel filling of the unit that receives fuel has fallen into the interval of operation of the counter of the unit that distributed it (see the diagram).
If there was no such match, the algorithm searches for the intersection of the entire fuel filling interval of the unit that received the fuel, with the intervals of the counter of the unit that distributed it and selects the first one (see the diagram).