Measurements¶
The AMTAB System is capable of measuring many aspects of a train. This section lists and defines all parameters that are recorded during a measurement. It will also give a brief description of how the algorithm transforms the analog sensor signal into a measurement.
While the system measures all parameters on a single wheel basis, the software is able to logically combine and categorize the individual measurements into three levels; Axle, Wagon/Locomotive (Car) and Train.
Basic Measurement Principle¶
As described in the System Overview, the system has up to 16 sensors which are bolted tightly onto the rail web. The sensors are mounted in pairs, parallel to each other on both sides of the track. Two pairs mounted on each side of the rail, 4 sensors total, is called a Weighing Bridge. That means the system can support up to 4 weighing bridges.
Each sensor pair is connected to a PSLA which powers the sensor and reads back it’s current value. The patented technology inside the sensor combined with the PSLA will produce a signal which is equivalent to the downward force exerted on the rail when a wheel passes the sensor. It’s important to remember that the AMTAB System is designed as a Weighing in Motion (WIM) system, meaning that it can’t measure a wheel which is standing still on top of a sensor.
When a train passes over the sensors, a signal like this will be recorded for each pair of sensors:
Fig. 2 Example raw data plotted by the Raw Data Plotter in the SIPR GUI.¶
The image above shows the raw data for PSLA 0 where a train with one locomotive followed by wagons with 2-4 axles each. The red dots indicates the max amplitude for each axle which is used to calculate the weight of the axle. Zooming in on one axles allows us to see a detail of the signal:
Distortion in the signal is common and is affected by many parameters. This is also what allows the AMTAB System to measure more than just the weight of a wheel, such as wheel defects. By analyzing the data from multiple measurements (Weighing Bridges), additional data can be calculated along with a more accurate weight.
If the algorithm has been properly configured with the available site data, the system is also able to calculate the speed each axle is traveling and by extension the distance between each axle. The distance between axles is typically unique per wagon type, thus this information can also be used to convert axles into wagons and wagons into trains. To be able to classify wagons each wagon type must be input into the software, read more about how that works in this section: Wagon Type Classification.
The plots above are generate by the GUI using the built-in Raw Data plotter available in the GUI Measurement Viewer. The plots are used during installation and maintenance to ensure that the sensors are installed properly and that no outside noise (EMI) interferes with the signal. Raw data can also be downloaded as a zip file and sent to AMTAB Support for further analysis.
If all data is available to the algorithm, the measurement data stored will be displayed in the Measurement Viewer like this:
If the algorithm can’t classify a wagon each axle will be displayed individually instead as the predefined “Axle” wagon type.
Measurement Parameters¶
When a train has passed, the measurement is stored on the CF card. The measurement can be retrieved by using the GUI Measurement Viewer or by calling the getMeasurement API operation. Each measurement will contain the fields described in the tables below.
If the database is enabled and connected, the result will also be stored in the database. The field names used in the database corresponds to the names used by the API.
Name |
Description |
|---|---|
path |
Path to the measurement directory on the CF Card. |
checksum |
Checksum of the measurement calculated when the file was stored on the CF Card. |
checksumIsValid |
True if the checksum could be successfully validated against the contents of the file. |
measurement |
Object |
id |
ID of the measurement in the format hhmmssyyyymmdd. |
timestamp |
Time the train passed in ISO format, stored in UTC. |
algoChecksum |
Checksum of the algorithm settings when the measurement was recorded. |
pslaChecksum |
Checksum of the settings for the sensors when the measurement was recorded. |
isSimulated |
True if the measurement has been made by playing back the raw data from a previous measurement. |
isUnreliable |
True if axleInconsistentCount > 0. |
carCount |
Total number of cars (including locomotives) in the train. |
axleCount |
Total number of axles in the train. |
length |
Sum of the lengths of all cars in the train, in metres. |
speed |
Average speed of the train, computed as the average speed of all cars in the train, in m/s. |
grossWeight |
Total weight of all axles in the train, excluding locomotive axles, in metric tonnes. |
totalGrossWeight |
Total weight of all axles in the train, in metric tonnes. |
netWeight |
Total weight of all axles in the train minus the tare weight of all cars, in metric tonnes. |
axleOverloadCount |
Number of overloaded axles detected. |
carOverloadCount |
Number of overloaded cars detected. |
axleUnevenLoadCount |
Number of unevenly loaded axles detected. |
carUnevenLoadCount |
Number of cars detected that are unevenly loaded either in the front/read direction, or the odd/even direction. |
wheelDefectCount |
Number of wheels flagged as defective. |
axleOverloadLimit |
Configured maximum allowed weight per axle in the train when the measurement was recorded. |
axleUnevenLoadLimit |
Configured maximum uneven load limit per axle in the train when the measurement was recorded. |
ignoredPeakCount |
The number of peaks ignored by the axle correction algorithm, Peaks will be ignored if they do not match the peaks any axle, as detected by the other sensors. If axleCorrection is not enabled, this value will always be 0. |
missingPeakCount |
The number of cases where an axle has been detected by most, but not all of the sensors. This is most common with empty cars that have a low weight. If axleCorrection is not enabled, this value will always be 0. |
axleInconsistentCount |
The number of axles where |
carFrontRearBalanceLimit |
Configured maximum allowed quotient between the sum of the weights of the axles in the front and the rear half of a car when the measurement was recorded, in %. |
carEvenOddBalanceLimit |
Configured maximum allowed quotient between the sum of the weight of the axles on the even and odd sides of a car when the measurement was recorded, in %. |
wheelDefectLimit |
The configured maximum allowed weightStdEven/weightStdOdd value allowed for an axle when the measurement was recorded. |
speedLimitMax |
The configured maximum allowed speed allowed for an axle when the measurement was recorded. |
speedLimitMin |
The configured minimum allowed speed allowed for an axle when the measurement was recorded. |
carWeightLimitMax |
The configured maximum certified wagon mass limit when the measurement was recorded. |
scaleInterval |
The configured certified scale interval when the measurement was recorded. |
axleConsistencyLimit |
The configured maximum allowed axle consistency value when the measurement was recorded. |
isDirectionUp |
True if the train is traveling in the direction defined as up. |
axles[] |
Object[] |
speed |
Average of speed of the axle between the first and the last active PSLA on each side, in m/s. |
distance |
Distance from the previous axle, in metres. |
weight |
Sum of weightEven and weightOdd. |
consistency |
The consistency value measured. Axle consistency is a value which is calculated based on how consistent the measurement was in relation to the expected output from the sensors. Consistency values above the configured limit in /api/algoSettings will mark the whole measurement as unreliable. |
weightEven |
Average of the weight measured by the active PSLAs on the even side, in metric tonnes. |
weightOdd |
Average of the weight measured by the active PSLAs on the odd side, in metric tonnes. |
weightStdEven |
Normalised standard deviation (ie the standard deviation divided by the average weight) of the weight measured by each sensor on the even side from either the average or the median of the weights of all sensors on that side depending on the value of the algorithm setting medianSTDEnabled. It is used for detecting wheel imbalance. |
weightStdOdd |
Same as weightStdEven, but on the odd side. |
isOverLoad |
True if weight > axleOverloadLimit. |
isUnevenLoad |
True if weightEven or weightOdd is outside the range (1 +/- axleUnevenLoadLimit/100). |
isDefectEven |
True if weightStdEven > wheelDefectLimit. |
isDefectOdd |
True if weightStdOdd > wheelDefectLimit. |
weightPsla[] |
(Number | null)[] - Array containing the weight recorded by each PSLA, the index of the array correspond to the PSLA number. Disabled PSLAs will have null values. |
consistencyPsla[] |
(Number | null)[] - Array containing the consistency value recorded by each PSLA, the index of the array correspond to the PSLA number. Disabled PSLAs will have null values. |
cars[] |
Object[] |
name |
Name of the car type. |
speed |
Speed of the car, computed as the average speed of its’ axles, in m/s. |
weight |
Weight of the car, calculated as the sum of the weight of the axles, in metric tonnes. |
weightStdEven |
Largest standard deviation of the weight for any wheel on the car on the even side of the car. |
weightStdOdd |
Largest standard deviation of the weight for any wheel on the car on the odd side of the car. |
frontRearBalance |
Quotient between the weight on the front and the rear half of the car. |
evenOddBalance |
Quotient between the total weight of the axles on the even and the odd side of the car. |
isOverload |
True if weight > tareWeight + (overloadLimit for the car type) |
isUnreliable |
True if axleInconsistentCount > 0. |
uuid |
Unique id for the car type. |
isLocomotive |
True if the car type is a locomotive. |
length |
Length of the car type, in metres. |
tareWeight |
Tare weight of the car type, in metric tonnes. |
axleUnevenLoadCount |
Number of axles on the car where isUnevenLoad is true. |
axleOverloadCount |
Number of axles on the car where isOverload is true. |
wheelDefectCount |
Number of wheels on the car where isDefectEven/Odd is true. |
axleCount |
Number of axles on the car type. |
name |
Name of the car type. |
speed |
Speed of the car, computed as the average speed of its’ axles, in m/s. |
weight |
Weight of the car, calculated as the sum of the weight of the axles, in metric tonnes. |
weightStdEven |
Largest standard deviation of the weight for any wheel on the car on the even side of the car. |
weightStdOdd |
Largest standard deviation of the weight for any wheel on the car on the odd side of the car. |
frontRearBalance |
Quotient between the weight on the front and the rear half of the car. |
evenOddBalance |
Quotient between the total weight of the axles on the even and the odd side of the car. |
isOverload |
True if weight > tareWeight + (overloadLimit for the car type) |
isUnreliable |
True if axleInconsistentCount > 0. |
uuid |
Unique id for the car type. |
isLocomotive |
True if the car type is a locomotive. |
length |
Length of the car type, in metres. |
tareWeight |
Tare weight of the car type, in metric tonnes. |
axleUnevenLoadCount |
Number of axles on the car where isUnevenLoad is true. |
axleOverloadCount |
Number of axles on the car where isOverload is true. |
wheelDefectCount |
Number of wheels on the car where isDefectEven/Odd is true. |
axleCount |
Number of axles on the car type. |