Éviter d’écrire des données de mauvaise qualité dans une référence d’E/S
- Last UpdatedSep 24, 2024
- 2 minute read
Lorsque des variables sont nécessaires pour calculer une valeur d’E/S externe dans un script, utilisez les Propriétés graphiques personnalisées pour calculer la valeur. N’utilisez pas de variables DIM scriptées.
Industrial Graphic contribue à empêcher l’écriture de valeurs BAD sur des références d’E/S externes. Les variables DIM des scripts d’Industrial Graphic ne contiennent pas d’informations de qualité. Elles sont toujours considérées comme étant de bonne qualité. Si la valeur d’une variable DIM est calculée à partir d’une référence d’E/S de mauvaise qualité, System Platform n’empêche pas l’écriture de la valeur Incorrecte, car la variable DIM n’a pas de qualité et est toujours Bonne.
Lorsqu’une connexion est établie avec une référence externe, telle qu’un composé. Block.Parameter, System Platform ne sait pas s’il s’agit d’une valeur String, Boolean ou Analogue. La référence n’a pas de valeur tant que la connexion n’est pas établie. La qualité de cette valeur est Bad-Initializing. Elle n’a aucune valeur et est considérée comme n’étant pas un nombre (NaN).
Mauvaise pratique
Dans le cas ci-dessous, le script met en place un point de consigne. Il utilise une variable DIM pour calculer la nouvelle valeur de point de consigne. Plusieurs propriétés personnalisées sont connectées aux points d’E/S. Lorsque l’opérateur appuie sur le bouton de rampe, la connexion Hi Scale est toujours en cours d’initialisation.
Propriétés personnalisées
|
SPT |
OPCClient_001.port.plc.i01 |
La connexion est bonne |
|
LSC |
OPCClient_001.port.plc.LSC |
La connexion est bonne |
|
HSC |
OPCClient_001.port.plc.HSC |
La connexion s’initialise et ne comporte aucune valeur |
Script de rampe
|
dim Temp as float; |
|
|
Temp = SPT + ((HSC-LSC) *0.05); |
HSC est en cours d’initialisation et n’a pas encore de valeur. Cependant, même si HSC est une mauvaise initialisation, étant donné que Temp est une variable DIM et non une propriété personnalisée, Temp a une qualité GOOD, même si sa valeur ne sera pas initialisée. |
|
IF Temp < 100 Then |
|
|
SPT = Temp |
La valeur non initialisée sera toujours écrite dans SPT |
|
ENDIF ; |
Pratique privilégiée
Utilisez des propriétés personnalisées lorsque vous utilisez des références d’E/S pour calculer une valeur temporaire et écrire les résultats dans une autre valeur. Dans l’exemple précédent, la variable DIM Temp est remplacée par Custom Property Temp.
Propriétés personnalisées
|
SPT |
IADAS.CMP.BLK.SPT |
La connexion est bonne |
|
LSC |
IADAS.CMP.BLK.LSCI1 |
La connexion est bonne |
|
HSC |
IADAS.CMP.BLK.HCSI1 |
La connexion s’initialise et ne comporte aucune valeur |
|
Temp |
virgule flottante |
0.0 |
Remplacer la variable DIM Temp par une propriété personnalisée Temp
|
Temp = SPT + ((HSC-LSC) *0.05); |
HSC de mauvaise qualité. Le calcul transmet la Mauvaise qualité des données de HSC à la propriété Temp personnalisée. |
|
IF Temp < 100 Then |
|
|
SPT = Temp |
La valeur de Temp n’est pas écrite dans SPT si Temp est de qualité BAD. |
|
ENDIF ; |