FB_HVACScale_nPoint

FB_HVACScale_nPoint 1:

Mit dem Funktionsbaustein FB_HVACScale_nPoint können Kennlinien in der SPS nachgebildet werden. Diese können z.B. positive oder negative Temperaturkoeffizienten (PTC/NTC) sein. Der analoge Widerstandsrohwert eines PTC/NTC wird an den Eingang rX angelegt und über den Ausgang rY als Temperaturwert ausgegeben. Die einzelnen Parameter und die Anzahl der einzelnen Punkte der X-Y-Achse der Kennlinie werden mit der Struktur stParameterScale_nPoint vorgegeben.
Mit den Busklemmen KL32xx können in der SPS analoge Widerstandsrohwerte dargestellt werden. In der Dokumentation zum FB_HVACConfigureKL32xx sind detaillierte Informationen zu finden.

FB_HVACScale_nPoint 2:

Bei der Widerstandsmessung 10 bis 5000Ω der KL32xx entspricht 1 Digit = 0,5Ω, d.h. der angezeigte Rohwert muss in der PLC durch 2 dividiert werden. Beispiel: 2500Ω würden in der Steuerung mit einem Rohwert von 5000 dargestellt werden. Der Rohwert muss in der PLC durch 2 dividiert werden um auf den ohmschen Wert von 2500Ω zu kommen.

FB_HVACScale_nPoint 3:

Die Widerstandsmessung 10-10000Ω ist nur mit der Sonderklemme KL320x-0027 möglich. An dieser Sonderklemme kann ausschließlich nur die Widerstandsmessung 10...10000Ω betrieben werden.

FB_HVACScale_nPoint 4:

Die EtherCAT-Klemme EL3692 ist eine Widerstandsmessklemme, die den Messbereich bis 10MΩ abdeckt.

VAR_INPUT

rX                              : REAL;
stParameterScale_nPoint         : ST_HVACParameterScale_nPoint;

rX: Rohwert der auf den angegebenen Messwert der Struktur stParameterScale_nPoint skaliert und über rY ausgegeben wird. Der Roh Wert kann z.B. der Widerstandsrohwert der KL32xx sein. Die Klemme muss dafür auf Widerstandsmessung eingestellt sein. In der Dokumentation FB_HVACConfigureKL32xx sind detaillierte Informationen zur Vorgehensweise zu finden.

stParameterScale_nPoint: Struktur über der die einzelnen Punkte der X-Y-Koordinaten ihre Wertigkeit bekommen (siehe ST_HVACParameterScale_nPoint). Egal welche Kennlinie nachgebildet werden soll, es muss entweder stParameterScale_nPoint.rX[1] < stParameterScale_nPoint.rX[2] < stParameterScale_nPoint.rX[n] ODER stParameterScale_nPoint.rX[1] > stParameterScale_nPoint.rX[2] > stParameterScale_nPoint.rX[n] sein.
stParameterScale_nPoint.iNumberOfPoint darf nicht kleiner als 2 ODER größer g_iMaxNoOfScale_nPoint(60) sein.
stParameterScale_nPoint.rX[1..iNumberOfPoint] - Array welches die Wertigkeit der einzelnen Punkte der X-Achse beinhaltet. Wie viele Punkte angegeben werden, ist abhängig von iNumberOfPoint.
stParameterScale_nPoint.rY[1..iNumberOfPoint] - Array welches die Wertigkeit der einzelnen Punkte der Y-Achse beinhaltet. Wie viele Punkte angegeben werden, ist abhängig von iNumberOfPoint.

VAR_OUTPUT

rY                          : REAL;
stStateParameterScale_nPoint: ST_HVACParameterScale_nPoint;
bErrorNumberOfPoint         : BOOL;
bErrorParameter             : BOOL;
uiErrorPositionX_Parameter  : INT;

rY: rY ist der skalierte Temperaturwert des vorgegebenen Rohwertes rX.

stStateParameterScale_nPoint: Status der Struktur stParameterScale_nPoint. Ist bErrorNumberOfPoint oder bErrorParamter = TRUE, so ist der Status der einzelnen Parameter in der Struktur stStateParameterScale_nPoint = 0. Ist stParameterScale_nPoint.iNumberofPoint = 20, so werden die einzelnen Parameter von stStateParameterScale_nPoint.rX[1..20] / stStateParameterScale_nPoint.rY[1..20] angezeigt, ab 21 bis 60 ist der Status = 0 (siehe ST_HVACParameterScale_nPoint).

bErrorNumberOfPoint: Ist iNumberOfPoint < 2 oder iNumberOfPoint > g_iMaxNoOfScale_nPoint, dann ist bErrorNumberOfPoint = TRUE und an der Ausgangsvariable rY wird eine 0 ausgegeben. Ist der Fehler behoben, so wird bErrorNumberOfPoint = FALSE.

bErrorParameter: Bei der Parametrierung der Struktur stParameterScale_nPoint muss darauf geachtet werden, dass entweder
stParameterScale_nPoint.rX[1]
> stParameterScale_nPoint.rX[2] > stParameterScale_nPoint.rX[n] ODER
stParameterScale_nPoint.rX[1] < stParameterScale_nPoint.rX[2] < stParameterScale_nPoint.rX[n] ist.
Wird dieses nicht eingehalten, so wird bErrorParameter = TRUE. Ist der Fehler behoben, so wird bErrorParameter = FALSE. Über die Ausgangsvariablen uiErrorPositionX_Parameter wird die genaue Feldposition in dem Array stParameterScale_nPoint.rX[uiErrorPositionX_Parameter] angegeben.

uiErrorPositionX_Parameter: Ist bErrorParameter = TRUE, so wird mit uiErrorPositionX_Parameter die genaue Feldposition in dem Array stParameterScale_nPoint.rX[uiErrorPositionX_Parameter] angegeben an welcher der Fehler aufgetreten ist.

VAR_GLOBAL CONSTANT

g_iMaxNoOfScale_nPoint      : INT := 60;

g_iMaxNoOfScale_nPoint: Globale Konstante, welche die maximale Anzahl der Punkte der X-Y-Koordinaten der Struktur ST_HVACParameterScale_nPoint festlegt (siehe Parameter.

Formeln für die Geradengleichung, Zweipunkteform:

m = Steigung

m = (Y2 - Y1) / (X2 - X1)

m = (stParameterScale_nPoint.rY[2] - stParameterScale_nPoint.rY[1]) /
(stParameterScale_nPoint.rX[2] - stParameterScale_nPoint.rX[1])

Y = Y1 + m * (X - X1)

rY = rY[1] + m * (rX - stParameterScale_nPoint.rX[1]

Beispielkennlinie 1mit Berechnung

FB_HVACScale_nPoint 5:

m = rM = Steigung
X = rX = 1199.8
X2 = stParameterScale_nPoint.rX[2] = 1209
X3 = stParameterScale_nPoint.rX[3] = 1163
Y2 = stParameterScale_nPoint.rY[2] = 20
Y3 = stParameterScale_nPoint.rY[3] = 21

m = (Y3 - Y2) / (X3 - X2)

rM = (stParameterScale_nPoint.rY[3] - stParameterScale_nPoint.rY[2]) /
(stParameterScale_nPoint.rX[3] - stParameterScale_nPoint.rX[2])

rM = (21 - 20) / (1163 - 1209) = -0.02174

Y = Y2 + m * (X - X2)

rY = stParameterScale_nPoint.rY[2] + rM * (rX - stParameterScale_nPoint.rX[2])

rY = 20 + -0.02174 * (1199.8 - 1209) = 20.2

Beispielkennlinie 2 mit Berechnung

FB_HVACScale_nPoint 6:

m = rM = Steigung
X = rX = 1124
X3 = stParameterScale_nPoint.rX[2] = 1112
X4 = stParameterScale_nPoint.rX[3] = 1142
Y3 = stParameterScale_nPoint.rY[2] = 20
Y4 = stParameterScale_nPoint.rY[3] = 25

m = (Y4 - Y3) / (X4 - X3)

rM = (stParameterScale_nPoint.rY[4] - stParameterScale_nPoint.rY[3]) /
(stParameterScale_nPoint.rX[4] - stParameterScale_nPoint.rX[3])

rM = (25 - 20) / 1142 - 1112) = 0.166

Y = Y3 + m * (X - X3)

rY = stParameterScale_nPoint.rY[3] + rM * (rX - stParameterScale_nPoint.rX[3])

rY = 20 + 0.166 * (1124 - 1112) = 21.992

Beispielkennlinie 3

FB_HVACScale_nPoint 7:

Voraussetzungen

Entwicklungsumgebung

erforderliche Bibliothek

Erforderliche Function

TwinCAT 3.1 ab Build 4022.16

Tc2_HVAC V3.3.1.0

TF8000 | TC3 HVAC V1.0.0.0