FB_HVACScale_nPoint
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.
![]() | 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. |
![]() | 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. |
![]() | 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

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
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

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 |