Schwingungsbeurteilung nach ISO 10816-3
Die Schwingungsbeurteilung in Anlehnung an ISO 10816-3 ist im Abschnitt Anwendungskonzepte näher erläutert, siehe Schwingungsbeurteilung. Die Klassifizierung anhand der berechneten RMS Werte erfolgt direkt im MAIN Programm. Alternativ ließe sich dies mit den Funktionsbausteinen FB_CMA_WatchUpperThresholds bzw. FB_CMA_DiscreteClassification.
Das Beispiel können Sie hier herunterladen:
TwinCAT_ISO_10816_Sample.zip
Eine alternative Umsetzung finden Sie im Beispiel Schwingungsbeurteilung nach ISO 10816-3 (kompakt) und im Beispiel Schwingungsbeurteilung nach ISO 10816-3 (erweitert).
Blockdiagramm
Programmparameter
Die Tabelle unten zeigt eine Liste mit wichtigen Parametern für die Konfiguration der verwendeten Funktionsbausteine.
Puffergröße | 2000 |
Kanäle | 2 |
FFT Länge | 4096 |
Fenstergröße | 4000 |
Sampling-Rate | 10000 |
Untere Frequenzschranke | 10 |
Obere Frequenzschranke | 1000 |
Ordnung (RMS) | 2 |
Fenster Typ | eCM_HannWindow |
Umwandeln in Dezibel | FALSE |
Daten-Input
In dem Sample ist das Oversampling auf 10 und die mit den I/Os verknüpfte Task (PlcTask) auf 1 ms eingestellt. Daraus ergibt sich für den Daten-Input eine Abtastrate von 10 kHz. Entsprechend können nach dem Abtasttheorem nun Signale im Spektrum bis zu 5 kHz korrekt analysiert werden, vorausgesetzt der Anti-Aliasing-Filter in der I/O-Klemme ist korrekt eingestellt (siehe Digitalisierung).
Puffern des Daten-Streams
Die Eingangsdaten der zwei Kanäle werden in der MAIN Routine mit einem Source-Baustein gepuffert. Entsprechend wird hier ein 2-Dimensionales Array der Größe [cChannels, cBufferLength] aufgebaut. Nach DIN ISO 10816-3 ist für eine Rotationsgeschwindigkeit über 600 min-1 ein Frequenzbereich von 10 Hz bis 1000 Hz auszuwerten. Die Frequenzauflösung der Frequenzanalyse (wird intern im IntegratedRMS Baustein gerechnet) sollte demnach deutlich unter 10 Hz liegen. Wird bei einer Abtastrate von 10 kHz ein Puffer von 4000 Samples genutzt, ergibt sich eine Frequenzauflösung von 2,5 Hz. Durch Nutzung des Hann-Fensters verringert diese sich formal auf 2,5 Hz * 1,5 = 3,75 Hz. Hinzu kommt, dass die FFT-Länge eine Potenz von 2 darstellen und größer sein muss als die WindowLength. Die BufferLength ergibt sich dann über die 50%ig überlappenden Fenster. Die Parametrisierung hinsichtlich der internen FFT wird entsprechend in der GVL_Constants wie folgt definiert:
cFFTLength : UDINT := 4096; // length of FFT
cWindowLength : UDINT := 4000; // 96 samples Zero padding
cBufferLength : UDINT := cWindowLength/2; // buffer due to 50% overlap
Entsprechend ergibt sich, wie im Schaubild oben gekennzeichnet, ein Array der Größe [2,2000] zur Übergabe an den FB_CMA_IntegratedRMS Baustein.
Frequenzselektive RMS-Wert Berechnung
Im Baustein FB_CMA_IntegratedRMS wird nun eine FFT berechnet und der RMS-Wert für den übergebenen Frequenzbereich (hier 10 Hz bis 1000 Hz) berechnet (formal können auch mehrere Bereiche angegeben werden). Der Baustein berechnet neben den RMS-Werten des direkten Eingangssignals (i.d.R. bei Anschluss eines Beschleunigungssensors ein Beschleunigungssignal) auch die jeweilig integrierten Größen, also RMS-Wert der Schwinggeschwindigkeit und RMS-Wert des Schwingungswegs. Der Ausgang des Bausteins ist entsprechend ein 2-dimensionales Array mit [2,3] (2 Kanäle, 3 RMS-Werte pro Kanal).
// define frequency interval according to ISO 10816-3
// e.g. 10 .. 1000 Hz for rotating speed over 600r/min
cfLowerFrequencyLimit : UDINT := 10;
cfUpperFrequencyLimit : UDINT := 1000;
// Parameters for RMS calculation
cOrderRMS : UDINT := 2; // acceleration, velocity, and displacement
cChannels : UDINT := 2; // ISO 10816-3 says 2 orthogonal sensors
cResult_Length : UDINT := cOrderRMS+1; // nOrder+1 (see InfoSys)
In den oben genannten Einstellungen benötigt der Source Baustein 2000/10=200 Zyklen mit 1 ms zum Füllen eines Puffers. Die Zykluszeit der PlcTask_CM sollte damit kleiner 0,5 * 200 ms liegen, siehe Task Einstellung. Da der Baustein nur wenig Rechenzeit beansprucht, wird die Zykluszeit der PlcTask_CM zu 10 ms gewählt. Die Übergabe der Daten vom Source Baustein an den FB_CMA_IntegratedRMS über die Task-Grenzen hinweg wird von der Condition Monitoring Bibliothek intern behandelt.
Ergebnis Auswerten
Die Ergebnisse der RMS-Wert Berechnung werden durch einen Sink-Baustein wieder in die schnelle PlcTask mit 1 ms übergeben. Dazu muss lediglich in der MAIN Routine ein Array angegeben werden, welches zu der Größe des Arrays am Ausgang des FB_CMA_IntegratedRMS passt, siehe Variable aRMSResult
.
Der Sink-Baustein setzt eine Flag auf TRUE, sobald ein gültiges Ergebnis berechnet worden ist, siehe Variable bCalcuate
.
(* Push results to sink *)
fbSink.Output2D( pDataOut := ADR(aRMSResult),
nDataOutSize := SIZEOF(aRMSResult),
eElementType := eMA_TypeCode_LREAL,
nWorkDim0 := 0,
nWorkDim1 := 1,
nElementsDim0 := 0,
nElementsDim1 := 0,
pStartIndex := 0,
nOptionPars := 0,
bNewResult => bCalculate );
Dieses Flag kann entsprechend genutzt werden, um dann innerhalb der MAIN Routine mit dem Ergebnis der RMS-Wert Berechnung zu arbeiten. In diesem Fall werden die RMS-Werte der Schwinggeschwindigkeit und des Schwingwegs hinsichtlich der in der ISO definierten Grenzwerte überprüft – um das Sample einfach zu halten hier durch einfache IF-Abfragen.
Es wird für jeden der zwei Kanäle die Klasse nach ISO 10816-3 ermittelt und in den Variablen ISOClassIs_Vel
(für die Klassifikation bezüglich der Schwinggeschwindigkeit) sowie ISOClassIs_Displ
(für die Klassifikation bezüglich des Schwingwegs) abgespeichert. In diesem Beispiel entstehen so vier Einstufungen in Klassen. Nach ISO 10816-3 sollte bei orthogonal zueinander angeordneten Sensoren der größere der beiden Werte verwendet werden. Des Weiteren soll bei Verwendung von Schwingweg und Schwinggeschwindigkeit die strengere der Beurteilungen genutzt werden. Entsprechend wird im Quellcode der „worst case“ der vier Beurteilungen gesucht und als Output-Variable ISO_10816_Classification
definiert.
Interaktion und Anmerkungen zum Sample
Im Sample sind zwei harmonische Schwingungen mit gleicher Amplitude (4 m/s2) aber unterschiedlicher Frequenz (einmal 400 Hz und einmal 35 Hz) als Eingangsgrößen definiert. Während diese Beschleunigungsamplitude für eine Frequenz von 400 Hz für die Auswertung nach Schwingweg und Schwinggeschwindigkeit eine Einstufung in Klasse A bedeutet, ist diese Amplitude für eine Schwingung mit 35 Hz bei Auswertung des Schwingwegs in Klasse C und bei Auswertung der Schwinggeschwindigkeit sogar in Klasse D einzuordnen. Die Ausgangsvariable ISO_10816_Classification
entspricht also dann Klasse D.
Verändern Sie die Amplitude der Schwingung mit 35 Hz auf 1 m/s2, verringert sich die Klassifizierung auf B (für Schwinggeschwindigkeit) und A (für Schwingweg). Entsprechend wird die Variable ISO_10816_Classification
auf B gesetzt.
Alternativ können Sie die Amplitude auf 4 m/s2 belassen und die Frequenz anheben auf z. B. 800 Hz. Dadurch werden dann alle Einzel-Klassifikationen auf A eingestuft und somit die Variable ISO_10816_Classification
auf A gesetzt.
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4013 |
PC oder CX (x86, x64) |
Tc3_CM, Tc3_CM_Base, Tc3_MultiArray |