Baumer Sensor Module
Description
The "baumer" module enables the digital connection of BPIK or BPIV2 sensors from Baumer GmbH.
BPIK and BPIV2 are smart sensors that have been specially developed for railway applications and combine several functions in a single sensor. In addition to the absolute angle of rotation, angular velocity and acceleration, sensor temperature, and 3-axial acceleration values, the sensors perform vibration analyses directly and provide status information on flat spots, bearing damage, or track condition.
The sensors are connected via a unidirectional, serial RS485 connection, which is connected to the smartRAIL or smartMini system via a converter1 using USB. Depending on the model, the sensors can provide data packets of varying lengths and information. A description of the data frames of the connected sensor is therefore required.
The Baumer module receives the sensor data frames, extracts the time information, and verifies the checksum. The data is then forwarded to the FmProducer module. The FmProducer module extracts the individual sensor data from the data frames.
JSON configuration example (demo)
The following section shows a demo configuration of the module.
In this example, a sensor data frame length of 26 bytes is expected. This may vary depending on the sensor type or sensor firmware.
{
"config": {
"devPath": "/dev/serial/by-id/usb-FTDI_USB__-__Serial_Converter_FT8LB8Z8-if02-port0",
"frameSize": 26,
"baudrate":1000000
},
"module": "baumer",
"factory": "baumer"
}
The corresponding configuration of the FmProducer module for reading the signal values from the sensor's data frames:
{
"config": {
"addressSpec": "AscendingFirstBit",
"channelPrefix": "Baumer.",
"channels": [
{
"bitLength": 16,
"bitOffset": 128,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AccX",
"offset": 0,
"physicalUnit": "g",
"noFilter": true,
"scale": 0.0001220703125,
"bufferSize": 10240,
"cacheSize": 200
},
{
"bitLength": 16,
"bitOffset": 144,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AccY",
"offset": 0,
"physicalUnit": "g",
"cacheSize": 200,
"noFilter": true,
"bufferSize": 10240,
"scale": 0.0001220703125
},
{
"bitLength": 16,
"bitOffset": 160,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AccZ",
"offset": 0,
"physicalUnit": "g",
"scale": 0.0001220703125,
"noFilter": true,
"bufferSize": 10240,
"cacheSize": 200
},
{
"bitLength": 16,
"bitOffset": 96,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AngAcc",
"offset": 0,
"physicalUnit": "rpm/s",
"scale": 0.3051757813,
"noFilter": true,
"bufferSize": 10240,
"cacheSize": 200
},
{
"bitLength": 16,
"bitOffset": 112,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AngOscAmp",
"offset": 0,
"physicalUnit": "rpm",
"scale": 0.002861022949,
"noFilter": true,
"bufferSize": 10240,
"cacheSize": 200
},
{
"bitLength": 24,
"bitOffset": 72,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "AngSpeed",
"offset": 0,
"physicalUnit": "rpm",
"scale": 0.0007152557373,
"noFilter": true,
"bufferSize": 10240,
"cacheSize": 200
},
{
"bitLength": 24,
"bitOffset": 48,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "unsigned",
"messageKey": 0,
"name": "Pos",
"offset": 0,
"physicalUnit": "°",
"scale": 0.00002145767212,
"cacheSize": 200,
"noFilter": true,
"bufferSize": 10240
},
{
"bitLength": 16,
"bitOffset": 176,
"byteOrder": "littleendian",
"dataType": "double",
"imageType": "signed",
"messageKey": 0,
"name": "Temperature",
"offset": 0,
"physicalUnit": "°C",
"scale": 0.01,
"bufferSize": 10240,
"absoluteTolerance": 0.5
}
],
"fmd": "baumer"
},
"factory": "fmproducer",
"module": "Baumer_Producer"
}
The data samples come from the sensor with a high sampling rate .
To optimize the performance of data acquisition, it is important to set the cacheSize for the fast raw data channels so that new samples are published in the smartCORE at approximately 10 Hz intervals.
On the other hand, the bufferSIze should be selected so that approximately of data can be stored in the smartCORE channel. Gaps in the OSF files indicate that the bufferSize is too small.
Since, with the exception of temperature, each sample differs from the previous one in all channels and plays a role in the subsequent evaluation, the OnChange filter can be switched off with the option noFilter = true.
For temperature, setting absoluteTolerance = 0.5 can significantly thin out the data, especially since the measured temperature changes only slowly.
If several sensors need to be connected, a corresponding module pair consisting of baumer and fmproducer must be created and configured for each one. The sensors can be identified by the names given to the modules.
Module parameters
| Parameter name | Required | Data type | Useful value range | Default | Description |
|---|---|---|---|---|---|
| devPath | Yes | Integer | Device path of the sensor's USB port in the Linux OS.2 | ||
| frameSize | No | Integer | >= 8 | 26 | Size (in bytes) of the data packet containing the measured values sent by the sensor. |
| baudrate | No | Integer | 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000 | 1000000 | Baud rate of the serial USB connection to the sensor. |
Module information
| Information | Value |
|---|---|
| Author | optiMEAS Measurement and Automation Systems GmbH |
| Since smartCORE | 2.10 |
| Module type | Producer |
| Dependencies | - |