Baumer Sensor Modul
Beschreibung
Das "baumer" Modul ermöglicht die digitale Anbindung von BPIK oder BPIV2 Sensoren der Firma Baumer GmbH.
BPIK und BPIV2 sind smarte Sensoren, die speziell für Bahnanwendungen entwickelt wurden und im Sensor bereits mehrere Funktionen vereinen. Neben dem absoluten Drehwinkel, der Winkelgeschwindigkeit und -beschleunigung, der Sensortemperatur und 3-axialen Beschleunigungswerten, führen die Sensoren direkt Schwingungsanalysen aus und liefern Statusinformationen zu Flachstellen, Lagerschäden oder dem Gleiszustand.
Die Sensor-Anbindung erfolgt über eine unidirektionale, serielle RS485 Verbindung, die über einen Umsetzer1 per USB am smartRAIL oder smartMini System angeschlossen wird. Die Sensoren können je nach Ausführung Datenpakete mit unterschiedlicher Länge und Informationen bereitstellen. Eine Beschreibung der Datenframes des angeschlossenen Sensors wird daher benötigt.
Das Baumer Modul empfängt die Sensordatenframes, extrahiert die Zeitinformation und verifiziert die Prüfsumme. Dann werden die Daten an das FmProducer Modul weitergeleitet. Das FmProducer Modul extrahiert die einzelnen Sensordaten aus den Datenframes.
JSON-Konfigurationsbeispiel (Demo)
Der folgende Abschnitt zeigt eine Demo-Konfiguration des Moduls.
In diesem Beispiel wird eine Länge der Sensor-Datenframes von 26 Byte erwartet. Dies kann je nach Sensortyp bzw. Sensorfirmware variieren.
{
"config": {
"devPath": "/dev/serial/by-id/usb-FTDI_USB__-__Serial_Converter_FT8LB8Z8-if02-port0",
"frameSize": 26,
"baudrate":1000000
},
"module": "baumer",
"factory": "baumer"
}
Die dazugehörige Konfiguration des FmProducer Moduls, um die Signalwerte aus den Datenframes des Sensors auszulesen:
{
"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": "Temperatur",
"offset": 0,
"physicalUnit": "°C",
"scale": 0.01,
"bufferSize": 10240,
"absoluteTolerance": 0.5
}
],
"fmd": "baumer"
},
"factory": "fmproducer",
"module": "Baumer_Producer"
}
Die Datensamples kommen vom Sensor mit einer hohen Abtastrate .
Um die Performance der Datenerfassung zu optimieren ist es wichtig, die cacheSize für die schnellen Rohdatenkanäle so einzustellen, dass ungefähr im 10 Hz Takt die Veröffentlichung neuer Samples in den smartCORE erfolgt.
Andererseits ist die bufferSIze so zu wählen, dass ca. Daten im smartCORE-Kanal vorgehalten werden können. Lückende Daten in den OSF-Dateien weisen auf eine zu kleine bufferSize hin.
Da bis auf die Temperatur bei allen Kanälen jedes Sample sich vom Vorgänger unterscheidet und in der nachfolgenden Auswertung ein Rolle spielt, kann das OnChange-Filter mit der Option noFilter = true abgeschaltet werden.
Bei der Temperatur kann durch Einstellen der absoluteTolerance = 0.5 eine erhebliche Ausdünnung der Daten erzielt werden, zumal sich die gemessene Temperatur nur langsam ändert.
Falls mehrere Senoren angeschlossen werden müssen, ist für jeden ein entsprechendes Modulpaar aus baumer und fmproducer zu erzeugen und zu konfigurieren. Über die Namensgebung der Module können die Sensoren identifiziert werden.
Modulparameter
| Parametername | Erforderlich | Datentyp | Sinnvoller Wertebereich | Default | Beschreibung |
|---|---|---|---|---|---|
| devPath | Ja | Integer | Device-Path des USB-Ports des Sensors im Linux OS.2 | ||
| frameSize | Nein | Integer | >= 8 | 26 | Größe (in Bytes) des Datenpaketes mit den Messwerten, das der Sensor verschickt. |
| baudrate | Nein | Integer | 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000 | 1000000 | Baudrate der seriellen USB-Verbindung zum Sensor. |
Modulinformationen
| Informationen | Wert |
|---|---|
| Autor | optiMEAS Measurement and Automation Systems GmbH |
| seit smartCORE | 2.10 |
| Modultyp | Producer |
| Abhängigkeiten | - |