FB_ALY_AM8xxxSSD
Der AM8xxxSSD ermöglicht die Analyse eines Motors, der mit der Smart System Diagnosis-Funktionalität ausgestattet ist. Der verbaute Encoder nimmt Messwerte verschiedener, intern verbauter Sensoren auf. Dazu zählen die Temperatur und Luftfeuchtigkeit im Encoder, als auch die Beschleunigung in X- und Y-Richtung. Auf Basis dieser Messwerte werden verschiedene statistische Kenngrößen errechnet und eine Schwellwertüberwachung zur Detektion von Schocks durchgeführt.
Syntax
Definition:
FUNCTION_BLOCK FB_ALY_SectionTimer_1Ch
VAR_OUTPUT
ipResultMessage : Tc3_EventLogger.I_TcMessage;
bError : BOOL;
bNewResult : BOOL;
bConfigured : BOOL;
stHumidity : ST_ALY_LiveMinMaxAvg;
stTemperature : ST_ALY_LiveMinMaxAvg;
stXRmsAcceleration : ST_ALY_LiveMinMaxAvg;
stXKurtosisAcceleration : ST_ALY_LiveMinMaxAvg;
stXPeakPeakAcceleration : ST_ALY_LiveMinMaxAvg;
stYRmsAcceleration : ST_ALY_LiveMinMaxAvg;
stYKurtosisAcceleration : ST_ALY_LiveMinMaxAvg;
stYPeakPeakAcceleration : ST_ALY_LiveMinMaxAvg;
bXShockDetected : BOOL;
nCountXShocks : ULINT;
fbLastXShockEvent : FB_ALY_DateTime;
bYShockDetected : BOOL;
nCountYShocks : ULINT;
fbLastYShockEvent : FB_ALY_DateTime;
nCountTotalShocks : ULINT;
END_VAR
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
ipResultMessage | Beinhaltet nähere Informationen zum aktuellen Rückgabewert. Für diesen speziellen Schnittstellenzeiger ist intern sichergestellt, dass er immer gültig/zugewiesen ist. | |
bError | BOOL | Der Ausgang ist |
bNewResult | BOOL | Wenn ein neues Ergebnis berechnet wurde, ist der Ausgang |
bConfigured | BOOL | Zeigt |
stHumidity | Luftfeuchte innerhalb des Encoders in %. | |
stTemperature | Temperatur innerhalb des Encoders in °C. | |
stXRmsAcceleration | RMS der Beschleunigung in X-Richtung in g. | |
stXKurtosisAcceleration | Kurtosis der Beschleunigung in X-Richtung. | |
stXPeakPeakAcceleration | Spitze-Spitze-Wert der Beschleunigung in X-Richtung in g. | |
stYRmsAcceleration | RMS der Beschleunigung in Y-Richtung in g. | |
stYKurtosisAcceleration | Kurtosis der Beschleunigung in Y-Richtung. | |
stPeakPeakAccelerationY | Spitze-Spitze-Wert der Beschleunigung in Y-Richtung in g. | |
bXShockDetected | BOOL | TRUE, wenn der ein Schock in X-Richtung detektiert wird. Hierfür wird der Schwellwert des RMS der Beschleunigung überwacht. |
nCountXShocks | ULINT | Anzahl der Schocks in X-Richtung. |
fbLastXShockEvent | FB_ALY_DateTime | Zeitstempel des zuletzt detektierten Schocks in X-Richtung. |
bYShockDetected | BOOL | TRUE, wenn der ein Schock in Y-Richtung detektiert wird. Hierfür wird der Schwellwert des RMS der Beschleunigung überwacht. |
nCountYShocks | ULINT | Anzahl der Schocks in Y-Richtung. |
fbLastYShockEvent | FB_ALY_DateTime | Zeitstempel des zuletzt detektierten Schocks in Y-Richtung. |
nCountTotalShocks | ULINT | Anzahl der Schocks in X- und Y-Richtung. |
Methoden
Name | Definitionsort | Beschreibung |
---|---|---|
Call() | Local | Methode zur Berechnung der Ausgänge für eine bestimmte Konfiguration. |
Configure() | Local | Allgemeine Konfiguration des Algorithmus mit seinen parametrisierten Bedingungen. |
GetChannelOutputArray() | Local | Abrufen des Ergebnis-Arrays für einen bestimmten Kanal, ohne neue Werte hinzuzufügen. |
Reset() | Local | Setzt alle internen Zustände oder die bisher durchgeführten Berechnungen zurück. |
SetChannelValue() | Local | Methode zur Übergabe von Werten an den Algorithmus. |
Beispiel
VAR
fbAM8SSD : FB_ALY_AM8xxxSSD;
fbSystemTime : FB_ALY_GetSystemTime;
// Config
bConfigure : BOOL := TRUE;
nNumSectionsHumidity : UDINT := 50;
nNumSectionsTemperature : UDINT := 50;
nNumBinsRmsAcceleration : UDINT := 30;
fThresholdRmsAcceleration : LREAL := 1.5;
// Inputs
nUpdateCounter AT%I* : ULINT;
dataSensor0 AT%I* : ULINT;
dataSensor1 AT%I* : ULINT;
dataSensor2 AT%I* : ULINT;
dataSensor3 AT%I* : ULINT;
// Results
aTimespansHumidity : ARRAY [1..50] OF LINT;
aTimespansTemperature : ARRAY [1..50] OF LINT;
aHistogramRmsAccelerationX : ARRAY [0..31] OF ULINT;
aHistogramRmsAccelerationY : ARRAY [0..31] OF ULINT;
END_VAR
// Get current system time
fbSystemTime.Call();
// Configure algorithm
IF bConfigure THEN
bConfigure := FALSE;
fbAM8SSD.Configure(nNumSectionsHumidity, nNumSectionsTemperature, nNumSectionsRmsAcceleration, nNumBinsRmsAcceleration, fThresholdRmsAcceleration);
END_IF
// Call algorithm
fbAM8SSD.SetChannelValue(1, nUpdateCounter);
fbAM8SSD.SetChannelValue(2, dataSensor0);
fbAM8SSD.SetChannelValue(3, dataSensor1);
fbAM8SSD.SetChannelValue(4, dataSensor2);
fbAM8SSD.SetChannelValue(5, dataSensor3);
fbAM8SSD.Call(tTimestamp := fbSystemTime.tSystemTime);
fbAM8SSD.GetChannelOutputArray(1, ADR(aTimespansHumidity) , SIZEOF(aTimespansHumidity));
fbAM8SSD.GetChannelOutputArray(2, ADR(aTimespansTemperature) , SIZEOF(aTimespansTemperature));
fbAM8SSD.GetChannelOutputArray(3, ADR(aHistogramRmsAccelerationX) , SIZEOF(aHistogramRmsAccelerationX));
fbAM8SSD.GetChannelOutputArray(4, ADR(aHistogramRmsAccelerationY) , SIZEOF(aHistogramRmsAccelerationY));SIZEOF(aTimespansOut));
Vorbereitung
Damit die Sensorwerte für eine Analyse zur Verfügung stehen, müssen diese zum Prozessabbild des Antriebs hinzugefügt werden. Dieser Vorgang wird im Folgenden aufgezeigt.
- 1. Erstellen Sie ein TwinCAT-Projekt.
- 2. Scannen Sie die I/Os des TwinCAT-Projektes.
- 3. Fügen Sie zu der Solution ein Drive Manager-Projekt hinzu.
- 4. Wählen Sie den entsprechenden Kanal des Antriebs aus, an dem der Motor mit dem B/SSD-Fähigen Encoder angeschlossen ist.
- 5. Wählen Sie den Reiter Advanced an.
- 6. Im Unterpunkt Process data können weitere Prozessdaten hinzugefügt werden.
- 7. Fügen Sie folgende Prozessdaten hinzu:
IntSHub: Update counter
IntSHub: Data Sensor 0
IntSHub: Data Sensor 1
IntSHub: Data Sensor 2
IntSHub: Data Sensor 3
- Nach dem Hinzufügen der Prozessdaten werden diese im Knoten I/O angezeigt und stehen für die Analyse zur Verfügung.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.0 | PC oder CX (x64, x86) | Tc3_Analytics |