Schreiben von Daten mit schlechter Qualität in E/A-Referenz vermeiden
- Last UpdatedSep 25, 2024
- 2 minute read
Wenn Variablen erforderlich sind, um einen externen E/A-Wert in einem beliebigen Skript zu berechnen, verwenden Sie die benutzerdefinierte Eigenschaften der Grafik, um den Wert zu berechnen. Verwenden Sie keine geskripteten DIM-Variablen.
Industriegrafiken helfen dabei, das Schreiben von schlechten Werten (BAD) in externe E/A-Verweise zu verhindern. DIM-Variablen in Industriegrafik-Skripten enthalten keine Qualitätsinformationen. Bei ihnen wird immer von einer guten Qualität (Good) ausgegangen. Wenn der Wert einer DIM-Variablen auf der Grundlage eines E/A-Verweises mit schlechter Qualität berechnet wird, verhindert System Platform nicht das Schreiben des schlechten Werts (Bad), da die DIM-Variable über keine Qualität verfügt und immer gut (Good) ist.
Wenn eine Verbindung mit einem externen Verweis hergestellt wird (beispielsweise mit Compound. Block.Parameter), weiß System Platform nicht, ob es sich um eine Zeichenfolge, um einen booleschen Wert oder um einen Analogwert handelt. Der Verweis hat erst einen Wert, wenn die Verbindung hergestellt wurde. Der Qualität dieses Werts ist eine Kombination aus „ungültig“ und „wird initialisiert“ (Bad-Initializing). Sie hat keinen Wert und wird als „keine Zahl“ (Not a Number, NaN) betrachtet.
Schlechte Praxis
Im folgenden Fall ändert das Skript einen Sollwert. Zur Berechnung des neuen Sollwerts wird eine DIM-Variable verwendet. Es gibt mehrere benutzerdefinierte Eigenschaften, die mit E/A-Tags verbunden sind. Wenn der Bediener die Änderungstaste drückt, wird die Hi Scale-Verbindung noch initialisiert.
Custom Properties (benutzerdefinierte Eigenschaften)
|
SPT |
OPCClient_001.port.plc.i01 |
Verbindung ist gut |
|
LSC |
OPCClient_001.port.plc.LSC |
Verbindung ist gut |
|
HSC |
OPCClient_001.port.plc.HSC |
Verbindung wird initialisiert und besitzt keinen Wert |
Änderungsskript
|
dim Temp as float; |
|
|
Temp = SPT + ((HSC-LSC) *0,05); |
HSC wird noch initialisiert und hat noch keinen Wert. Der Status von HSC ist zwar eine Kombination aus „ungültig“ und „wird initialisiert“ (Bad-Initializing), da „Temp“ jedoch eine DIM-Variable und keine benutzerdefinierte Eigenschaft ist, hat „Temp“ die Qualität „GOOD“ (gut), obwohl der zugehörige Wert nicht initialisiert ist. |
|
IF Temp < 100 Then |
|
|
SPT = Temp |
Der nicht initialisierte Wert wird immer in SPT geschrieben. |
|
ENDIF; |
Bevorzugte Praxis
Verwenden Sie benutzerdefinierte Eigenschaften, wenn Sie E/A-Verweise verwenden, um einen temporären Wert zu berechnen und die Ergebnisse in einen anderen Wert zu schreiben. Im vorherigen Beispiel wird dazu die DIM-Variable „Temp“ durch die benutzerdefinierte Eigenschaft „Temp“ ersetzt.
Custom Properties (benutzerdefinierte Eigenschaften)
|
SPT |
IADAS.CMP.BLK.SPT |
Verbindung ist gut |
|
LSC |
IADAS.CMP.BLK.LSCI1 |
Verbindung ist gut |
|
HSC |
IADAS.CMP.BLK.HCSI1 |
Verbindung wird initialisiert und besitzt keinen Wert |
|
Temp. |
float |
0,0 |
DIM-Variable „Temp“ durch benutzerdefinierte Eigenschaft „Temp“ ersetzen
|
Temp = SPT + ((HSC-LSC) *0,05); |
Die HSC-Qualität ist schlecht. Die Berechnung übergibt die schlechte Datenqualität von HSC an die benutzerdefinierte Eigenschaft „Temp“. |
|
IF Temp < 100 Then |
|
|
SPT = Temp |
Der Wert von „Temp“ wird nicht in SPT geschrieben, wenn „Temp“ eine schlechte Qualität (BAD) aufweist. |
|
ENDIF; |