Messablauf
Ein typischer Messablauf zur Bestimmung der Masse eines Körpers umfasst drei wesentliche Schritte: Filtern, Skalieren und Auswerten.

1. Filtern
Das Signal der EtherCAT-Klemmen der Baureihen ELM35xx und EL3356 weist typischerweise ein Maß an Rauschen auf, das eine Filterung erforderlich macht, um valide Messergebnisse zu gewährleisten. Der Funktionsbaustein FB_WG_ComboFilter bietet hierfür eine effektive Lösung, indem er eine Kombination aus PTn-, Moving-Average- und Notch-Filter in Serie schaltet. Sollten diese Filteroptionen nicht ausreichend sein, steht eine Auswahl weiterer Filter aus der TwinCAT 3 Filter Bibliothek zur Verfügung.
2. Skalieren
Das gefilterte Eingangssignal muss anschließend skaliert werden, um das Gewicht in der gewünschten Einheit (z. B. Gramm [g]) anzugeben. Die Skalierung erfolgt durch den Funktionsbaustein FB_WG_Scaling. Für eine akkurate Messung ist zudem eine Kalibrierung des SPS-Bausteins erforderlich, die beispielsweise mittels einer Zweipunktkalibrierung durchgeführt werden kann.
3. Auswerten
Im abschließenden Schritt wird das skalierte Signal mit Hilfe des Funktionsbausteins FB_WG_Weighing analysiert. Dabei ist es erforderlich, die Konfigurationsstruktur ST_WG_Weighing mit den passenden Parametern zu versehen. Ein Schlüsselparameter in dieser Struktur ist ST_WG_Weighing.nWindowLength
, der die Anzahl der Samples definiert, die für die Berechnung des gleitenden Mittelwerts herangezogen werden – eine Größe, die auch als Fenstergröße bekannt ist. Dieser Parameter bestimmt, auf Basis wie vieler vergangener Werte die Ausgaben fWeight, fStd, fMin
und fMax
des Bausteins FB_WG_Weighing kalkuliert werden. Hierbei repräsentiert fWeight
den Mittelwert, fStd
die Standardabweichung und fMin/fMax
den minimalen bzw. maximalen Wert der letzten nWindowLength
Eingangswerte. Eine ergänzende Abbildung kann diese Zusammenhänge veranschaulichen.

Um zusätzliche Ergebnisse des Funktionsbausteins wie bValidMeasurement, bNewResult, tLastResult, fLastWeight
und fLastStd
zu erhalten, ist es erforderlich, die Unterstruktur ST_WG_Weighing_Validation entsprechend zu konfigurieren.
Innerhalb von ST_WG_Weighing_Validation definieren die Parameter fThresholdWeight, fMaxWeightDeviation
und fMaxStd
die Kriterien für eine gültige Messung. Damit eine Messung als gültig gilt, müssen folgende Bedingungen erfüllt sein:
FB_WG_Weighing.fWeight
muss größer oder gleichfThresholdWeight
sein.- Die Differenz
FB_WG_Weighing.fMax - FB_WG_Weighing.fMin
darffMaxWeightDeviation
nicht überschreiten. FB_WG_Weighing.fStd
muss kleiner oder gleichfMaxStd
sein.
Diese Bedingungen müssen über die Anzahl der in nValidationSamples
definierten aufeinanderfolgenden Samples hinweg erfüllt werden, um FB_WG_Weighing.bValidMeasurement
auf TRUE
zu setzen.
Die Messung wird eingeleitet, sobald FB_WG_Weighing.fWeight
erstmalig den Wert von ST_WG_Weighing_Validation.fThresholdWeight
übersteigt. Solange FB_WG_Weighing.bValidMeasurement
den Wert TRUE
hat, wird das Gewicht (fWeight
) mit der kleinsten Standardabweichung (fStd
) gesucht und kontinuierlich in FB_WG_Weighing.fLastWeight
und in FB_WG_Weighing.fLastStd
aktualisiert. Wenn der Parameter ST_WG_Weighing_Validation.fRelativeWeightLimit
definiert ist, endet die Messung, sobald FB_WG_Weighing.fWeight
unter den Wert von fThresholdWeight * fRelativeWeightLimit
fällt. Ist dieser Parameter nicht gesetzt, endet die Messung, wenn fWeight
unter fThresholdWeight
fällt.
Am Ende der Messung wird der Zeitstempel in FB_WG_Weighing.tLastResult
festgehalten und FB_WG_Weighing.bNewResult
für genau einen Zyklus auf TRUE
gesetzt. Wenn FB_WG_Weighing.fWeight
erneut den Wert fThresholdWeight
übersteigt, wird FB_WG_Weighing.fLastWeight
zurückgesetzt und eine neue Messung beginnt.
In der nachfolgenden Abbildung wird der beschriebene Prozess noch einmal visuell verdeutlicht und zeigt den Zusammenhang zwischen den Parametern und den Bedingungen für eine gültige Messung:

ST_WG_Weighing_AutoTare lässt sich analog zu ST_WG_Weighing_Validation konfigurieren, um Ergebnisse wie fAutoTareOffset
und bNewAutoTareResult
vom Funktionsbaustein zu erhalten. Diese sind essenziell, um den Funktionsbaustein FB_WG_Scaling automatisch zu tarieren, etwa durch den Aufruf von AutoTare(fbScaling,E_WG_AutoTareType.eEnd
).
Dabei legen die Parameter fThresholdWeight, fMaxWeightDeviation
und fMaxStd
in ST_WG_Weighing_AutoTare die Kriterien für die Validierung einer Messung fest. Eine Messung gilt als gültig, wenn:
FB_WG_Weighing.fWeight
den WertfThresholdWeight
nicht übersteigt.- Die Differenz
FB_WG_Weighing.fMax - FB_WG_Weighing.fMin
die festgelegtefMaxWeightDeviation
nicht überschreitet. FB_WG_Weighing.fStd
kleiner oder gleich dem definiertenfMaxStd
ist.
Die Aktualisierung von fAutoTareOffset
beginnt, sobald fWeight
erstmals unter fThresholdWeight
fällt und die genannten Bedingungen über eine Reihe von in nValidationSamples
definierten aufeinanderfolgenden Samples hinweg erfüllt sind. Das System sucht das Gewicht mit der niedrigsten Standardabweichung und aktualisiert kontinuierlich fAutoTareOffset.
Die Messung endet, sobald FB_WG_Weighing.fWeight
den fThresholdWeight
übersteigt. Daraufhin wird FB_WG_Weighing.bNewAutoTareResult
einmalig auf TRUE
gesetzt, was das Ende der Messung signalisiert. Fällt FB_WG_Weighing.fWeight
unter den Schwellenwert fThresholdWeight,
wird FB_WG_Weighing.fAutoTareOffset
zurückgesetzt und eine neue Messung eingeleitet.
Die nachstehende Abbildung veranschaulicht den Ablauf und verdeutlicht die Beziehung zwischen den Parametern und den Kriterien für eine gültige Messung.
