7.2 Demi pont. Campbell Scientific CR200 CR211, CR200 CR206, CR200 CR295, CR200 CR216, CR200
Manuel de la CR200
PortGet (Dest, Port)
La fonction PortGet est utilisée afin de lire l’état d’un ou de deux des ports de contrôle.
Remarques :
Cette instruction lit l’état du port de contrôle spécifié, et place le résultat dans une variable de destination. Le fait d’exécuter l’instruction PortGet, configure le port en tant qu’entrée (c’est à dire qu’il n’est pas mis en position haute ou basse) ; les instructions PortSet précédentes, deviendront inactives.
Paramètres
& type de donnée
Dest
Variable
Port
Constante
Entrée
C’est la variable dans laquelle est envoyée le résultat de l’instruction. Un
« 1 » est indiqué si le port est à l’état haut ; « 0 » s’il est à l’état bas.
Le port de contrôle (1 ou 2) pour lequel on cherche à connaître l’état.
PortSet (Dest, State)
Cette fonction mettra le port de contrôle spécifié à l’état haut ou bas.
Paramètres
& type de donnée
Port
Constante
State
Constante, Variable,
Ligne de donnée ou
Expression
Entrée
Le port de contrôle (1 ou 2) pour lequel on cherche à connaître l’état.
L’état dans lequel on va mettre le port de contrôle.
Code Valeur
Vrai
Faux
0
≠0
Etat
Bas (Low)
Haut (High)
PulseCount (Dest, Pchan, PConfig, POption, Mult, Offset)
L’instruction PulseCount est utilisée afin de mesurer les comptages d’impulsions ou la fréquence sur l’un des ports de contrôle ou port de comptage d’impulsion.
Pulse Channel
Ground
Sensor
Schéma de câblage pour un capteur à comptage d’impulsion.
Paramètres
& type de donnée
Dest
Variable ou ligne
de donnée
Entrée
PChan
Constante
C’est la variable dans laquelle est envoyée le résultat de l’instruction. Lorsque le nombre de répétitions est différent de 1, les résultats sont stockés dans des lignes de donnée, avec le nom de la variable. Il faut alors dimensionner la ligne de donnée afin d’avoir de la place pour chaque répétition.
La voie utilisée pour la mesure
Code alphabétique Code numérique Voie
P_SW
P_LL
C1
C2
6
0
1
2
P_SW
P_LL
C1
C2
7-6
Chapitre7 Instructions de mesure
Paramètres
& type de donnée
PConfig
Constante
POption
Conctante
Entrée
Ce code spécifie le type d’impulsion mesurée en entrée.
Code Configuration de l’entrée
0
1
Impulsion de tensions
Courant alternatif bas niveau (seulement sur P_LL)
2 Contact sec (mettre la résistance nécessaire sur C1, C2 ou P_LL)
Le code qui détermine si le résultat brut (multiplicateur de 1, offset de 0) est affiché en tant que comptage ou fréquence. La moyenne glissante peut être utilisée afin de lisser les valeurs lorsque la fréquence est faible par rapport à la vitesse de scrutation, et que la différence de fréquence entre les scrutations
(scan) peut être importante.
Code Résultat
Mult, Offset
Constante,
Variable, Ligne de donnée ou
Expression
0
1
Comptages
Fréquence (Hz) = comptages / intervalle scanné
>1 Moyenne glissante sur la fréquence. Le nombre entré est la période de temps sur laquelle la fréquence est moyennée, en milisecondes.
Un multiplicateur et un offset qu’on utilise pour mettre à l’échelle les résultats de la mesure brute. Voir la description de la mesure afin de connaître l’unité de la mesure brute ; un multiplicateur égal à 1 et un offset égal à 0, sont nécessaires afin de fournir un résultat en unité de valeur brute.
20k
Pi
Figure 7.5-1 Conditionnement pour des impulsions (forte) tension.
La tension maximum d’entrée sur la voir P_LL est de + /- 20V. Elle est de 6,5V CC pour C1 &
C2, et 4V CC pour P_SW. Reportez-vous à la figure 7.5-1 si vous devez réduire la tension en entrée pour C1, C2 ou P_SW.
Voltage Pulse ( P_LL, C1, C2), impulsions en tension
Durée minimum de l’impulsion : 400 microsecondes
Fréquence maximum : 1KHz (50% du cycle)
Seuil bas : 1,5V
Low Level AC (P_LL seulement), Courant Alternatif bas niveau
Hystérésis en entrée : 15mV
Tension maximum en entrée : 20 V de pic à pic
Tension d’entrée et étendue de fréquence :
De 20mV à 2 V CA pic à pic, de 1.0 Hz à 1 KHz.
Switch closure, contact sec
Un contact sec est relié entre P_SW, P_LL, C1 ou C2, et une masse analogique. P_SW à une résistance interne de 100Kohm, qui met le signal vers le haut quand le contact est ouvert. Si l’on veut utiliser une des autres voies (autre que P_SW), afin de faire une mesure de contact sec, une résistance de 100Kohm doit être reliée entre la voie utilisée et la borne « Batt + » de la centrale.
Quand le contact sera fermé, la voie d’impulsion sera alors mise à la masse. Le comptage est incrémenté lorsque le contact s’ouvre à nouveau.
*
L’offset CC doit être inférieur à 0,5 V
7-7
Manuel de la CR200
Fréquence maximum : 100 Hz
Durée minimum du contact sec en état fermé : 5 ms
Durée minimum du contact sec en état ouvert : 5 ms
Durée maximum de rebond : 1 ms d’état ouvert sans être comptabilisé
SDI12Recorder (Dest, OutString, Multiplier, Offset)
L’instruction SDI12Recorder est utilisée afin de récupérer les données issues d’un capteur SDI12.
Chaque fois que l’instruction SDI12Recorder est exécutée, elle envoie les instructions suivantes au capteur, afin qu’il effectue la mesure : (adresse)M ! suivi de (adresse)D0 !. La commande « M! » permet au capteur d’effectuer le mesure. « D0 ! » est celle qui demande les données. L’instruction
SDI12Recorder peut aussi être utilisée afin d’envoyer au capteur, des commandes étendues, comme des variables de la table « public » de la centrale d’acquisition.
Paramètres
& type de donnée
Dest
Variable ou ligne de
donnée
OutString
Mult, Offset
Constante, Variable,
Ligne de donnée ou
Expression
Entrée
C’est la variable ou la ligne de donnée de variables dans laquelle est envoyée le résultat de la mesure.
Lorsqu’on demande les données à un capteur, la Destination doit être dimensionnée correctement afin de pouvoir recevoir toutes les données, sinon une erreur de « variable hors gamme » (variable out of range), sera visible pendant l’exécution de l’instruction.
Si cette instruction est utilisée afin d’envoyer des commandes étendues au capteur, le paramètre de Destination stocke le résultat de la commande. 0 indique que la commande a fonctionné ; NaN indique qu’elle a échoué.
L’adresse du capteur SDI-12 et les chaînes de commande à envoyer aux capteurs.
Les valeurs de la table Public peuvent être envoyées au capteur en utilisant la commande suivante :
« OXD%variable_name% ! »
De multiples valeurs d’un tableau ou d’une ligne peuvent être envoyées en faisant précéder le nom du tableau ou de la ligne par le nombre de valeurs envoyées (exemple : « 0XD%3variable% ! » cette commande enverra la variable(1), la variable (2) et la variable (3).
Un multiplicateur et un offset qu’on utilise, sous forme de constante, de variable, de ligne de données ou d’expression, afin de mettre à l’échelle les résultats de la mesure brute.
SwBatt
L’instruction SwBatt est utilisée afin de mettre le port 12V commuté à l’état haut ou à l’état bas.
Syntaxe
SwBatt( état )
Remarque
La centrale de mesure a une borne de connexion pour une batterie commutée. Cette batterie commutée peut être contrôlée par l’instruction SwBatt, afin de fournir la tension de la batterie à un périphérique externe. A température ambiante, il y a 900mA de disponible entre la borne SwBatt et la masse. L’indicateur d’état indique si la batterie commutée est active (différent de zéro) ou inactive (0).
NOTE:
La borne SW-Batt est non régulée, et peut fournir jusqu’à
900mA à 20°C, et jusqu’à 630mA à 50°C. Un fusible en polymère, réinitialisable, protège la centrale contre les court circuits. La réinitialisation est accomplie en supprimant la charge ou en désactivant le port SW-Batt durant quelques secondes.
7-8
Chapitre 8. Instructions de calcul et de traitement
Opérateurs
^ Mettre à la puissance
* Multiplier
/ Diviser
+ Ajouter
- Soustraire
= Est égal à
>=
<=
Supérieur ou égal à
Inférieur ou égal à
ABS (source)
Cette instruction renvoie la valeur absolue d’un nombre.
Syntaxe
X = ABS (source)
Remarques
La source peut être une quelconque expression numérique valide. La valeur absolue du nombre est sa magnitude, sans le signe. Par exemple, ABS(-1) et ABS(1) ont tout les deux pour résultat « 1 ».
Exemple de fonction ABS
L’exemple suivant trouve la valeur approximative d’une racine carrée. Il utilise la fonction ABS afin de trouver la différence absolue entre deux nombres.
Dim Précision, Valeur, X, X1, X2 ‘Déclaration des variables
Précision = 0,00000000000001
Valeur = Volt(3)
X1 = 0 :X2 = Valeur
‘Volt(3) sera évalué
‘On fait les 2 premières suppositions
‘on fait une boucle jusqu'à ce que la différence entre les deux suppositions, soit inférieure à la précision
Do Until Abs(X1 – X2) < Précision
X = X1 + X2) / 2
If X * X * X – Valeur < 0 Then ‘On ajuste la supposition
Else
End If
Loop
‘ X devient la racine cubique de Volt(3)
Manuel de la CR200
ACOS (source)
La fonction ACOS donne comme résultat l’arc cosinus du nombre.
Syntaxe
x = ACOS (Source)
Remarques
La source peur être n’importe quelle expression numérique valide ayant une valeur comprise entre 1 et –1 inclus.
Une fonction ACOS prend le rapport de deux côtés d’un triangle droit, et donne comme résultat l’angle correspondant. Le rapport est la longueur du côté adjacent de l’angle, divisé par la longueur de l’hypoténuse. Le résultat est exprimé en radians, et est compris entre –
π/2 et π/2 radians.
Pour convertir des degrés en radians, il faut multiplier les degrés par
π/180. Pour convertir des radians en degrés, il faut multiplier les radians par 180/
π.
ACOS est l’inverse trigonométrique de la fonction COSINUS, qui prend un angle pour argument, et donne comme résultat le rapport de longueur du côté adjacent de l’angle, par rapport à l’hypoténuse.
Exemple de fonction ACOS
L’exemple utilise ACOS afin de calculer
π. Par définition, un cercle plein mesure 2π radians.
ACOS (0) est
π/2 radians (90 Degrés).
Public Pi
Pi = 2 * ACOS (0)
‘Déclaration de la variable
‘Calcule la valeur de Pi
AND
Cette instruction est utilisée afin d’effectuer une comparaison de bits entre deux nombres.
Syntaxe
Résultat = nombre 1 And nombre 2
L’opérateur And effectue une comparaison binaire de bits positionnés de façon identique dans un nombre, et met dans la variable résultante le bit correspondant, selon le tableau suivant :
Si le bit dans le Et le bit dans le Alors le résultat
Nombre 1 est Nombre 2 est est
0 0 0
0 1 0
1 0 0
1 1 1
Bien que l’opérateur And, soit un opérateur de comparaison de bits, il est souvent utilisé pour des test Booléens (vrai / faux). La CR200 décide que quelque chose est vrai ou faux avec le critère que 0 est faux, et que tout autre nombre différent de 0 est vrai (voir paragraphe 4.5). Du fait que
And, soit un opérateur de comparaison de bits, il est possible d’ « additionner » des chiffres différents de zéro (2 AND 4, par exemple), et d’obtenir comme résultat « 0 » ! La représentation binaire de « -1 » a tous les bits égaux à « 1 ». Ainsi n’importe quelle nombre And « -1 », donne comme résultat le nombre initial. C’est pourquoi on a une constante pré-définie, Vrai = -1.
Constante pré-définie vraie = -1
Constante pré-définie fausse = 0
Si le nombre 1 est
-1
And le nombre 2 est
N’importe quel nombre
Alors le résultat est :
Nombre 2
-1 Autre chose qu’un nombre Autre chose qu’un nombre
0 N’importe 0
0 Autre chose qu’un nombre Autre chose qu’un nombre
Les expressions sont évaluées par rapport à un nombre, et peuvent être utilisée à la place d’un ou de plusieurs nombres. Les expressions de comparaison évaluent le résultat en terme de vrai (-1) ou faux (0), par exemple.
8-2
Chapitre 8 Instructions de calcul et de traitement
If Temp(1) > 50 AND Temp(3) < 20 Then
X = True
Else
X = False
Endif
Et
X = Temp(1) > 50 AND Temp(3) < 20
Les deux façons d’écrire l’expression, ont le même effet : X aura la valeur « -1 » si Temp(1) est supérieur à 50, et que Temp(3) est inférieure à 20. X aura la valeur « 0 » si l’une des expressions est fausse.
Exemple d’opérateur And
L’exemple assigne une valeur à Msg, qui dépend de la valeur des variables A, B et C, en considérant qu’aucune variable n’est nulle. Si A = 10, B = 8, et C = 6, les deux expressions sont
évaluées étant vraies. Comme ces deux expressions sont vraies, l’expression And est aussi vraie.
Dim A, B, C, Msg
End If
‘Déclaration des variables
A = 10: B = 8: C = 6
If A > B And B > C Then
‘On donne les valeurs aux variables
‘On évalue l’expression
Else
ASIN (source)
La fonction ASIN donne comme résultat l’arc sinus du nombre.
Syntaxe
x = ASIN (source)
Remarque
La source peut être n’importe quelle expression numérique valide qui a une valeur comprise entre –1 et 1.
La fonction ASIN prend le rapport des deux côtés d’un angle droit, et donne en retour l’angle correspondant. Le rapport est celui de la longueur du côté opposé de l’angle, divisé par la longueur de l’hypoténuse. Le résultat est exprimé en radian et est compris entre –
π/2 et π/2 radians.
Pour convertir des degrés en radian, il faut multiplier les degrés par
π/180. Pour convertir des radians en degrés, il faut multiplier les radians par 180/
π.
ASIN est l’inverse trigonométrique de la fonction SINUS, qui prend un angle pour argument, et donne comme résultat le rapport de la longueur du côté opposé de l’angle, par rapport à l’hypoténuse.
Exemple de fonction ASIN
L’exemple utilise ASIN afin de calculer
π. Par définition, un cercle plein mesure 2π radians. ASIN
(1) est
π/2 radians (90 degrés).
Public Pi ‘Déclaration de la variable
Pi = 2 * ASin (1) ‘Calcule la valeur de Pi
8-3
Manuel de la CR200
ATN (source)
Cette fonction donne pour résultat l’arc tangente d’un nombre.
Syntaxe
x = ATN (source)
Remarques
La source peut être n’importe quelle expression numérique valide.
La fonction Atn prend le rapport des deux côtés d’un angle droit, et donne comme résultat l’angle qui y correspond. Le rapport est la longueur du côté opposé à l’angle droit, sur la longueur du côté adjacent à l’angle. Le résultat est exprimé en radians et est compris entre –
π/2 et π/2 radians.
Pour convertir des degrés en radian, il faut multiplier les degrés par
π/180. Pour convertir des radians en degrés, il faut multiplier les radians par 180/
π.
Atn est l’inverse trigonométrique de la fonction Tan, qui prend comme argument la valeur d’un angle, et donne comme résultat le rapport des deux côtés opposés à cet angle droit. Ne confondez pas Atn avec la cotangente, qui est l’inverse simple de la tangente (1/tangente).
Exemple de fonction Atn
L’exemple utilise ATN afin de calculer
π. Par définition, un cercle plein mesure 2π radians. ATN
(1) est
π/4 radians (45 Degrés).
Dim Pi
Pi = 4 * Atn (1)
‘Déclaration de la variable
‘Calcule la valeur de Pi
ATN2 ()
Cette fonction ATN2 donne pour résultat l’arc tangente d’un rapport y/x.
Syntaxe
x = ATN2 (Y, X)
Remarques
La fonction ATN2 calcule les arguments de Y/X et donne comme résultat une valeur comprise entre Pi et –Pi radians, avec le signe pour chacun des paramètres, afin de déterminer dans quel quadrant dans lequel on donne le résultat. ATN2 est définie pour tous les points, à l’exception de l’origine (X = 0 et Y = 0). X et Y peuvent être des variables, des constantes ou des expressions.
Pour convertir des degrés en radians, il faut multiplier les degrés par
π/180. Pour convertir des radians en degrés, il faut multiplier les radians par 180/
π.
Pi/2
+y
Pi
-x
-y
+x
0
-Pi/2
ATN2 est l’inverse trigonométrique de la fonction Tan, qui prend comme argument la valeur d’un angle, et donne comme résultat le rapport des deux côtés d’un angle droit. Ne confondez pas
ATN2 avec la cotangente, qui est l’inverse simple de la tangente (1/tangente).
Exemple de fonction ATN2
L’exemple utilise ATN afin de calculer
π. Par définition, un cercle plein mesure 2π radians. ATN2
(1, 1) est
π/4 radians (45 degrés).
Dim Pi
Pi = 4 * ATN2 (5, 5)
‘Déclaration de la variable
‘Calcule la valeur de Pi
8-4
Chapitre 8 Instructions de calcul et de traitement
AvgSpa (Dest, Swath, Source
)
Cette fonction calcule la moyenne spatiale des valeurs contenues dans la ligne de données source.
Syntaxe
AvgSpa (Dest, Swath, Source)
Remarques
L’instruction calcule la moyenne des valeurs de la ligne de données correspondante, et place le résultat dans la variable de Destination. La source doit être un élément particulier d’une ligne de données (par exemple Temp(1) ) ; c’est le premier élément d’une ligne de donnée à inclure dans la moyenne. La fenêtre (Swath) est le nombre d’éléments à inclure dans la moyenne.
∑
Dest
=
swath
Où X(j) = Source
Entrée
Paramètres
& type de donnée
Dest
Variable
Swath
Constante
Source
Ligne de données
La variable dans laquelle on stocke le résultat de l’instruction.
Le nombre de valeurs à moyenner, contenues dans la ligne de données source.
Le nom de la ligne de donnée (variable) qui est en Entrée pour cette instruction.
Exemple de fonction Moyenne Spatiale
Cet exemple utilise la fonction AvgSpa afin de calculer la moyenne des valeurs des 5 éléments compris entre Temp(6) et Temp(10), et stocker le résultat dans la variable MoyTemp.
AvgSpa (MoyTemp, 5, Temp(6))
Cos (Source)
Cette fonction donne comme résultat le cosinus d’un angle spécifié en radian.
Syntaxe
x = Cos (Source)
Remarques
La source peut être n’importe quelle expression numérique valide exprimée en radian.
La fonction Cosinus prend la valeur d’un angle, et donne en retour le rapport des deux côtés d’un angle droit. Le rapport est celui du côté adjacent à l’angle, divisé par la longueur de l’hypoténuse.
Le résultat est inclus entre –1 et 1.
Pour convertir des degrés en radian, il faut multiplier les degrés par
π/180. Pour convertir des radians en degrés, il faut multiplier les radians par 180/
π.
Exemple de fonction Cos
Cet exemple utilise la fonction Cosinus afin de calculer le cosinus d’un angle ayant un nombre de degrés spécifié par l’utilisateur.
Dim Degrees, Pi, Radians, Ans ‘Déclaration des variables
BeginProg
Pi = 4 * Atn(1)
Degrees = Volts (1)
Radians = Degrees * (Pi / 180 )
Ans = Cos(Radians)
‘Calcul de Pi
‘Acquiert la valeur à convertir
‘Convertit les degrés en radians
‘Donne le cosinus de la valeur en degrés
EndProg
8-5
Manuel de la CR200
GetFSValue (Dest, TableName, FieldName, RecsBack)
La fonction GetFSvalue relie un champs à une table de donnée. Son fonctionnement est similaire à celui de la syntaxe Tablenam.fieldname décrite au paragraphe 4.8.
GetFSValue (Dest, AvgDat, Temp_Avg(2), 1)
Charge alors la valeur la plus récente de Temp_avg(2) et présente dans la table de sauvegarde
AvgDat, dans la variable Dest. La même opération peut être accomplie avec l’écriture suivante :
Dest = AvgDat.Temp_Avg(2,1)
Paramètres
& type de donnée
Dest
Variable
TableName
Nom
FieldName
Nom
RecsBack
Constante
Entrée
La variable ou la ligne de données dans laquelle on stocke la valeur prise dans la table de données.
Le nom de la table de données depuis laquelle on récupère les données.
Le nom du champs depuis lequel on récupère la donnée.
Le nombre d’enregistrement avant le plus récent, pour lequel on va récupérer la donnée. « 1 » indique la valeur la plus récente.
CovSpa (Dest, NumOfCov, SizeOfSets, CoreArray, DatArray)
L’instruction CovSpa calcule la covariance de groupes de données qui sont chargées dans des lignes de données.
CovSpa calcule la covariance (les covariances) entre les données dans la ligne de données
« CoreArray », et un ou plusieurs jeux de données dans la variable « DatArray ». La covariance des jeux de données X et Y est calculée de la façon suivante :
Cov
(
X
,
Y
)
=
i n
∑
=
1
X i n
⋅
Y i
−
i n
∑
=
1
X i i n
∑
=
1
Y i n
2 où « n » est le nombre de valeurs dans chaque jeu de données (SizeOfSets). X i valeurs individuelles de X et de Y.
et Y i
sont les
8-6
Chapitre 8 Instructions de calcul et de traitement
Paramètres
& type de donnée
Dest
Variable ou ligne de donnée
NumOfCov
Constante
Entrée
La variable ou la ligne de données dans laquelle on stocke le résultat de l’instruction. Quand plusieurs covariances sont calculées, les résultats sont stockés dans une ligne de données ayant le nom de la variable. La ligne de données doit être dimensionnée de façon à avoir au minimum la taille de
« NumOfCov ».
Le nombre de covariances à être calculées. Si 4 jeux de données doivent
être comparés à un 5
ème
jeu, le nombre de covariances devra être fixé à la valeur de 4.
Le nombre de valeurs des jeux de données, pour le calcul de la covariance.
SizeOfSets
Constante
CorArray
Ligne de données
DatArray
Ligne de données
La ligne de données qui contient le jeu de données du « cœur ». La covariance du « cœur » du jeu de données est calculée pour tous les autres jeux de données de façon indépendante. Les données ont besoin d’être placées à la suite dans des lignes de données. Si le premier point de donnée n’est pas le premier point de la ligne de données, le premier point du jeu de données doit être mentionné dans ce paramètre.
La ou les ligne(s) de données qui contient / contiennent le ou les jeu(x) de donnée(s) qui sont nécessaire pour calculer la covariance par rapport au
« cœur » du jeu de données. Lorsque plusieurs covariances sont calculées, les jeux de données doivent être chargés de façon consécutive dans une ligne de données. La ligne de données doit avoir la dimension minimale
égale à NumOfCov multiplié par SizeOfSets. Par exemple, si chaque jeu de donnée comprend 100 éléments (SizeOfSet) et qu’il y a 4 covariances
(NumOfCov) à être calculées, alors la valeur de DataArray doit être égale à
4 x 100 = 400. Si la première valeur du premier jeu de données, n’est pas le premier point du jeu de données, alors le premier point du jeu de données doit être spécifié dans ce paramètre.
Exp
Cette instruction donne comme résultat l’exponentielle « e » (la base du logarithme népérien) à la puissance donnée.
Syntaxe
x = Exp (source)
Remarques
Si la valeur de la source excède 709,782 712 893, une erreur de type « Overflow » se produit. La valeur constante de « e » est approximativement 2,718282
NOTE:
La fonction exponentielle fait le complément d’action de la fonction Log et est parfois appelée l’antilogarithme.
Exemple de fonction Exp
L’exemple utilise la fonction Exp afin de calculer la valeur de « e ». Exp(1) est la valeur de e montée à la puissance 1.
Exp(x) est e^x donc Exp(1) est e^1 ou e.
Dim ValeurDeE ‘Déclaration de la variable
Beginprog
ValeurDeE = Exp(1) ‘Calcule la valeur de “e”
EndProg
8-7
Manuel de la CR200
Frac (Source)
Cette instruction donne comme résultat la partie fractionnelle du nombre.
Syntaxe
x = Frac (source)
Remarques
Cette instruction donne comme résultat la partie fractionnelle du nombre qui est entre les parenthèses.
Exemple d’utilisation de la fonction Frac
L’exemple utilise la fonction Frac.
ItTime
Cette instruction est utilisée afin de donner comme résultat une valeur Vraie (-1) ou fausse (0), sur la base de l’horloge en temps réel de la centrale de mesure .
Syntaxe
IfTime (TintoInt, Interval, Units)
L’instruction IfTime donne comme résultat la valeur (-1) quand le résultat du test est vrai, et la valeur (0) quand le résultat du test est faut. Le test est effectué par comparaison avec le temps courant (l’horloge de la centrale de mesure). L’horloge de la centrale est gardée à l’intérieur de la centrale de mesure, et est le temps écoulé depuis le 1 er
janvier 1990 à 00h00min00sec. L’intervalle est synchronisé avec le temps écoulé (c’est à dire que l’intervalle a la valeur « vraie » lorsque l’intervalle est un multiple de temps écoulé). Le paramètre de « Timeout » permet de définir un offset à l’intérieur de l’intervalle. L’instruction IfTime peut être utilisée afin de changer la valeur d’une variable, ou afin de servir d’expression pour une condition.
L’heure que l’instruction IfTime vérifie, a la résolution de l’intervalle de mesure du programme
(c’est à dire qu’il reste fixe durant la durée entière de l’intervalle de scrutation, et s’incrémente lors de la scrutation suivante). L’instruction IfTime doit être insérée à l’intérieure d’une scrutation, afin qu’elle fonctionne.
La fenêtre de temps durant l’instruction IfTime est vraie, est de 1 fois l’unité spécifiée dans le champs d’unité. Par exemple, si l’instruction IfTime spécifie un moment de 0 dans un intervalle de 10 minutes, elle pourrait être vraie pendant la première minute de l’intervalle. Avec un moment de 0 dans un intervalle de 600 secondes, l’intervalle aura toujours une durée de 10 minutes, mais l’instruction IfTime ne sera vraie que durant la première seconde de l’intervalle.
IfTime (0,60, Min) then
‘ instructions à effectuer une fois par heure
EndIf
L’instruction IfTime ne donnera la valeur « vraie » qu’une fois par intervalle. Par exemple, un programme ayant une scrutation par seconde, et une instruction IfTime (0,10, min), exécutera 60 fois l’instruction IfTime durant l’intervalle où l’instruction pourrait être vraie. Cette instruction ne retournera le résultat « vrai », que la première fois qu’elle est exécutée. Elle ne donnera le résultat vrai à nouveau, que lors de l’intervalle de 10 minutes suivant.
8-8
Chapitre 8 Instructions de calcul et de traitement
Paramètres
& type de donnée
TintoInt
Constante
Entrée
Le temps à l’intérieur de l’intervalle, permet de décaler par rapport à l’horloge de la centrale de mesure, le moment où l’instruction IfTime sera vraie. Par exemple si l’intervalle est fixé à 60 minutes et que la valeur de TintoInt est fixée à 5, alors l’instruction donnera le résultat vrai à chaque cinquième minute de l’heure de la centrale de mesure. Si TintoInt est fixée à 0, la condition vraie sera à chaque heure pile.
C’est la périodicité à laquelle l’instruction IfTime sera vraie.
Interval
Constante
Units
Constante
C’est l’unité qui est commune à TintoInt et Interval
Code alphabétique Code numérique Unité
Sec
Min
Hr
Day
2
3
4
5
Secondes (seconds)
Minutes (minutes)
Heures (hours)
Jours (days)
IIF (Expression, TrueValue, FalseValue)
Cette instruction est utilisée afin d’évaluer une expression, et de donner comme résultat l’une ou l’autre des valeurs mentionnées, en fonction de l’évaluation.
L’expression qui doit être évaluée, est définie au paramètre 1. Si l’expression est vraie, la valeur vraie (TrueValue, paramètre 2) est donnée comme résultat. Si l’expression est fausse, la valeur fausse (FalseValue, paramètre 3) est donnée comme résultat. La fonction IIF évalue toujours les arguments vrai et faux à la fois, même si elle ne donne que l’un d’eux comme résultat. Cela pourrait mener à des erreurs mathématiques, même lorsque l’expression retournée est valide, alors que le résultat n’aurait pas été valide si on avait utilisé l’argument alternatif.
Int, Fix
Donne comme résultat la partie entière d’un nombre.
Syntaxe
Int (source)
Fix (source)
Remarques
La source peut être une quelconque valeur numérique ou expression valide. Les fonctions Int et
Fix soustraient la partie fractionnelle de la source, et donnent comme résultat une valeur entière.
Si l’expression numérique n’est pas un nombre, les fonctions Int ou Fix donnent comme résultat une valeur qui n’est pas un nombre.
La différence entre la valeur Int et Fix est la suivante : si le nombre est négatif, la fonction Int donne comme résultat le premier entier négatif inférieur ou égal au nombre, alors que la fonction
Fix donne comme résultat la valeur négative supérieure ou égale au nombre. Par exemple, la fonction Int convertit -8,4 en –9 et la fonction Fix convertit –8,4 en –8.
8-9
Manuel de la CR200
Exemples d’utilisation des fonctions Int et Fix
Ces exemple illustrent l’utilisation des fonctions Fix et Int.
Dim A, B, C, D ‘Déclaration des variables
BeginProg
EndProg
Log (Source)
Cette instruction donne comme résultat le logarithme d’un nombre.
Syntaxe
x = Log (source)
Remarques
La source peut être une quelconque valeur ou expression numérique dont la valeur est supérieure à
0. Le logarithme naturel est le logarithme base « e ». La constante « e » a la valeur approximative de 2.718282.
On peut calculer le logarithme en base « n » pour n’importe quel nombre « x », en divisant le logarithme naturel de « x » par le logarithme naturel de « n », tel que décrit ci-dessous :
Logn(x) = Log(x) / Log(n)
L’exemple suivant illustre la procédure à suivre pour calculer le logarithme base 10 :
Log10 = Log(X) / Log(10)
Exemple de fonction Log
L’exemple ci-dessous calcule la valeur de « e », puis utilise la fonction Log afin de calculer le logarithme naturel de « e » à la puissance un, deux ou trois.
Dim I, M ‘Déclare les variables
BeginProg
M = Exp(1)
For I = 1 to 3
M
‘A faire 3 fois
Next I
EndProg
LOG10 (nombre)
La fonction LOG10 donne comme résultat le logarithme base 10 d’un nombre.
Syntaxe
LOG10(nombre)
Remarques
La fonction LOG10 donne comme résultat le logarithme base 10 d’un nombre.
Le nombre de l’argument peut être une quelconque expression numérique valide qui a une valeur supérieure à 0. On peut calculer le logarithme base « n » de n’importe quel nombre « x », en divisant le logarithme base 10 de « x » par le logarithme base 10 de « n », comme décrit cidessous :
LOGN(x) = LOG10(x) / LOG10(n)
Exemple de fonction LOG10
Cet exemple utilise l’instruction LOG10 afin de calculer le log base 2 de 1000.
Dim LOG2_1000 ‘Déclaration des variables
LOG2_1000 = LOG10(1000) / LOG10(2)
8-10
Chapitre 8 Instructions de calcul et de traitement
MaxSpa (Dest, Swath, Source)
Cette instruction permet d’obtenir la valeur maximum d’une ligne de données.
Syntaxe
MaxSpa(Dest, Swath, Source)
Remarques
L’instruction trouve le maximum spatial dans une fenêtre de données consécutives présentes dans une ligne de données. La source doit être un élément particulier d’une ligne de données (par exemple, Temp(1) ) ; c’est le premier élément de la ligne de données, à partir duquel il faut chercher la valeur maximum. La fenêtre (Swath) est le nombre d’éléments sur lesquels on va chercher le maximum. Deux résultats sont stockés : la valeur maximum, et la place à l’intérieur de la ligne de données, à laquelle se trouve cette valeur (1.swath).
Paramètres
& type de donnée
Dest
Ligne de données
Swath
Constante
Source
Ligne de données
Entrée
La ligne de données dans laquelle on stocke la valeur maximum et l’emplacement où elle était à l’intérieur de la ligne.
Le nombre de valeurs à l’intérieur de la ligne de données source
(la fenêtre), sur lequel on va chercher la valeur maximum.
Le nom de la variable de données qui contient les valeurs d’Entrée utilisées par l’instruction.
Exemple de fonction MaxSpa
Cet exemple utilise l’instruction MaxSpa afin de chercher la valeur maximum des 5 éléments entre
Temp(6) et Temp(10), et afin de stocker le résultat dans la variable MaxTemp.
MaxSpa(MaxTemp, 5, Temp(6))
MinSpa (Dest, Swath, Source)
Cette instruction permet d’obtenir la valeur minimum d’une ligne de données.
Syntaxe
MinSpa(Dest, Swath, Source)
Remarques
L’instruction trouve le minimum spatial dans une fenêtre de données consécutives présentes dans une ligne de données. La source doit être un élément particulier d’une ligne de données (par exemple, Temp(1) ) ; c’est le premier élément de la ligne de données, à partir duquel il faut chercher la valeur minimum. La fenêtre (Swath) est le nombre d’éléments sur lesquels on va chercher le minimum. Deux résultats sont stockés : la valeur minimum, et la place à l’intérieur de la ligne de données, à laquelle se trouve cette valeur (1.swath).
Entrée Paramètres
& type de donnée
Dest
Ligne de données
Swath
Constante
Source
Ligne de données
La ligne de données dans laquelle on stocke la valeur minimum et l’emplacement où elle était à l’intérieur de la ligne.
Le nombre de valeurs à l’intérieur de la ligne de données source
(la fenêtre), sur lequel on va chercher la valeur minimum.
Le nom de la variable de données qui contient les valeurs d’Entrée utilisées par l’instruction.
8-11
Manuel de la CR200
Exemple de fonction MinSpa
Cet exemple utilise l’instruction MinSpa afin de chercher la valeur minimum des 5 éléments entre
Temp(6) et Temp(10), et afin de stocker le résultat dans la variable MinTemp.
MinSpa(MinTemp, 5, Temp(6))
Mod
Cette fonction divise un nombre par un autre, et ne donne comme résultat, que le reste de la division.
Syntaxe
Résultat = operand1 Mod operand2
Remarques
Pour effectuer un modulo, ou un « reste », l’opérateur divise operand1 par operand2 (en arrondissant les nombres à virgules, en entiers) et donne comme résultat le reste seul en tant que
résultat. Par exemple, dans l’expression A = 19 Mod 6.7, A (qui est le résultat) est égal à 5. Les operand peuvent être n’importe quelle valeur ou expression numérique.
Exemple d’opérateur Mod
L’exemple utilise l’opérateur Mod afin de déterminer si une année à 4 chiffres est une année bissextile ou non.
Dim TestYr, LeapStatus Déclare les variables
TestYr = 1995
If TestYr Mod 4 = 0 And TestYr Mod 100 = 0 Then ‘Divisible par 4 ?
If TestYr Mod 400 = 0 Then
LeapStatus = True
Divisible par 400 ?
Else
LeapStatus = False
EndIf
Else TestYr Mod 4 = 0 Then
LeapStatus = True
Else
LeapStatus = False
End If
NOT
La fonction NOT est utilisée afin d’effectuer une négation de bit sur un nombre.
Syntaxe
Résultat = NOT (nombre)
L’opérateur NOT inverse la valeurs des bits de n’importe quelle variable et donne au bit correspondant le résultat correspondant au tableau ci-dessous :
Si le bit dans l’expression est égal à : Alors le résultat est égal à :
0 1
1 0
Si l’opérateur NOT est un opérateur de conversion de bits, il est aussi souvent utilisé afin de tester des conditions Booléennes (Vrai / Faux). La CR200 décide que quelque chose est vrai ou faux, avec comme principe que 0 est faux, et que toute autre nombre différent de 0 est vrai (voir chapitre
4.5). Parce que l’opérateur NOT est un opérateur de comparaison de bits, le seul nombre différent de 0 pour lequel l’opérateur NOT peut donner comme résultat la valeur 0, est le nombre « -1 ». Le représentant binaire de « -1 » a tous les bits égaux à 1. C’est pour cela que la constante pré-définie est : Vrai = -1.
Constante pré-définie Vrai = -1
Constante pré-définie Faux = 0
8-12
Chapitre 8 Instructions de calcul et de traitement
NOT (-1) = 0
NOT (0) = -1
NOT (NAN) = NAN
(NAN = Not A Number; valeur différente d’un nombre)
Or
Cet opérateur est utilisé afin d’effectuer une comparaison de bits entre deux nombres.
Syntaxe
Résultat = nombre1 Or nombre2
L’opérateur Or effectue une comparaison de bit sur des bits positionnés de façon identique à l’intérieur de deux expressions numériques, et donne la correspondance de bits suivante pour résultat :
Si le bit dans l’expression 1 est Et si le bit dans l’expression 2 est Alors le:résultat est
Bien que l’opérateur Or soit une comparateur de bits, il est souvent utilisé afin de tester des
Booléens (vrai / faux). La CR200 décide si quelque chose est vrai ou faux en assumant que 0 est faux et que n’importe quelle valeur numérique différente de 0 est vraie (paragraphe 4.5). Pour la
CR200, une constante pré-définie est : Vrai = -1. La représentation binaire de -1 a tous les bits qui sont égaux à 1. Ainsi, n’importe quel nombre Or -1, donne comme résultat -1. N’importe quel nombre And -1 donne comme résultat le nombre de départ.
Constante pré-définie Vrai = -1
Constante pré-définie Faux = 0
Si l’expression 1 est : Si l’expression 2 est : Alors le résultat est :
-1
0
Pas un nombre (NAN)
N’importe quel nombre
NAN
Nombre 2
Les expressions sont évaluées comparativement à un nombre (voir paragraphe 4.5), et peuvent être utilisées à la place de l’un ou des deux nombres. La comparaison évaluent les expressions en tant que Vrai (-1) ou Faux (0), par exemple :
If Temp(1) > 50 Or Temp(3) < 20 Then
X
Else
X False
EndIf
Et
X = Temp(1) > 50 OR Temp(3) < 20
Sont des expressions qui ont le même effet, à savoir donner la valeur –1 à la variable X si Temp(1) est supérieur à 50 ou si Temp(3) est inférieur à 20. X aura la valeur 0 si les deux expressions sont fausses.
8-13
Manuel de la CR200
Randomize
(Source)
Cette instruction permet d’activer le générateur de valeur aléatoire (random).
Syntaxe
Randomize (source)
Remarques
L’argument nombre peut être n’importe quelle expression numérique valide. Le nombre est utilisé afin d’initialiser le générateur de valeur numérique aléatoire, en lui donnant une nouvelle valeur de départ. Si vous oubliez le nombre, la valeur donnée par la fonction « Timer », est alors utilisée comme nouvelle valeur de départ.
Si l’instruction « Randomize » n’est pas utilisée, la fonction Rnd donne comme résultat la même séquence de nombres aléatoires à chaque fois que le programme est exécuté. Si vous souhaitez avoir la séquence de nombres aléatoires qui change à chaque exécution du programme, mettez l’instruction Randomize, sans paramètres, au début du programme.
RealTime
Cette instruction sert à prendre la mesure de l’année, du mois, du jour, de l’heure, de la minute, de la seconde, de la semaine et/ou du jour à l’intérieur de l’année, à partir de l’horloge de la CR200.
Syntaxe
RealTime (Dest, Value)
Exemple d’instruction RealTime
Le paramètre de destination (Dest) est la variable, ou la ligne de données, dans laquelle le résultat de l’instruction RealTime, est stockée. Le paramètre de valeur (Value) est utilisé afin d’indiquer si tous les paramètres ou seulement un, doivent être donnés comme résultat. Si la valeur est mise à 0, toutes les options de temps seront renvoyées, et dans l’ordre suivant : (1) année, (2) mois, (3) jour du mois, (4) heure du jour, (5) minutes de l’heure, (6) secondes de la minute, (7) jour de la semaine (allant de 1 à 7, avec 1 = Dimanche), et (8) jour à l’intérieur de l’année. La variable de destination pour la ligne de données doit avoir une dimension de 8. Si vous donnez une valeur
(entre 1 et 8) au paramètre Value, votre instruction RealTime ne donnera comme résultat, que la valeur de temps demandée par le paramètre.
Public rTime(8)
Alias rTime(1) = Annee
Alias rTime(2) = Mois
Alias rTime(3) = Jour
Alias rTime(4) = Heure
Alias rTime(5) = Minute
Alias rTime(6) = Seconde
Alias rTime(7) = Jour_de_la_semaine
Alias rTime(8) = Jour_dans_l_année
DataTable (VALUES, 1, 100)
‘Sample (1, Année, IEEE4)
‘Sample (1, Mois, IEEE4)
‘Sample (1, Jour, IEEE4)
‘Sample (1, Heure, IEEE4)
‘Sample (1, Minute, IEEE4)
‘Déclaration des variables
‘Assigne l’alias « Annee » à rTime(1)
‘Assigne l’alias « Mois » à rTime(2)
‘Assigne l’alias « Jour » à rTime(3)
‘Assigne l’alias « Heure » à rTime(4)
‘Assigne l’alias « Minute » à rTime(5)
‘Assigne l’alias « Seconde » à rTime(6)
‘Assigne l’alias « Jour_de_la_semaine» à rTime(7)
‘Assigne l’alias « Jour_dans_l_année» à rTime(8)
‘Définit le tableau de données
‘met l’année dans le tableau VALUES
‘met le mois dans le tableau VALUES
‘met le jour dans le tableau VALUES
‘met l’heure dans le tableau VALUES
‘met la minute dans le tableau VALUES
‘Sample (1, Seconde, IEEE4) ‘met la seconde dans le tableau VALUES
‘Sample (1, Jour_de_la_semaine, IEEE4) ‘met le jour de la semaine dans le tableau VALUES
‘Sample (1, Jour_dans_l_année, IEEE4) ‘met le jour à l’intérieur de l’année dans le ‘tableau VALUES
Sample (8, rTime(), IEEE4) ‘met les 8 données dans le tableau VALUES
EndTable
8-14
Chapitre 8 Instructions de calcul et de traitement
BeginProg
Scan (1, Sec)
RealTime (rTime())
EndProg
RectPolar (Dest, Source)
Cette instruction convertit des coordonnées rectangulaires en coordonnées polaires.
Paramètres
& type de donnée
Entrée
Dest
Ligne de données
La ligne de données variable dans laquelle on stocke 2 valeurs résultantes.
La longueur du vecteur est enregistrée dans l’élément de destination spécifiée, et l’angle en radians (+ ou -
π), dans l’élément suivant de la ligne de données.
Source
Ligne de données
La ligne de données variable qui contient les coordonnées X et Y à convertir en coordonnées polaires. La valeur de X doit être dans la ligne de donnée destination spécifiée, et la valeur de Y doit être l’élément suivant dans la ligne de données.
Exemple : Dans l’exemple suivant, un compteur (Deg) est incrémenté entre 0 et 360 degrés. Le cosinus et le sinus de l’angle sont pris afin de transformer X et Y en coordonnées rectangulaires.
RecPolar est alors utilisé afin de convertir les coordonnées polaires.
Dim XY(2), Polar(2), Deg, AngleDeg
Const Pi=4*ATN(1)
Alias XY(1)=X
Alias XY(2)=Y
Alias Polar(1) = Longueur
Alias Polar(2) = AngleRad
Data Table(RtoP,1,500)
Sample(1,Deg)
Sample(2,XY)
Sample(2,Polar)
Sample(1,AngleDeg)
EndTable
BeginProg
For Deg=0 to 360
XY(1)=Cos(Deg*Pi/180) ‘Cosinus et Sinus fonctionnent en radian
XY(2)=Sin(Deg*Pi/180)
AngleDeg=Polar(2)*180/Pi
‘w/Deg
EndProg
8-15
Manuel de la CR200
RMSSpa (Dest, Swath, Source)
Cette instruction est utilisée afin de calculer la racine carrée moyenne (Root Mean Square) d’une ligne de données.
Syntaxe
RMSSpa(Dest, Swath, Source)
Remarques
La racine carrée moyenne spatiale, calcule la racine carré des valeurs contenues dans une ligne de données.
∑
(
( )
)
2
Dest
=
swath
où X
(j)
= Source
Paramètres
& type de donnée
Dest
Variable
Swath
Constante
Source
Ligne de données
Entrée
La variable dans laquelle on stocke la valeur de la racine carrée.
Le nombre de valeurs dans la ligne de données, à inclure dans le calcul de la moyenne.
Le nom de la ligne de données variable, qui contient les données d’Entrée pour l’instruction.
RND
La fonction RND est utilisée afin de générer un nombre aléatoire.
Syntaxe
Variable = RND
Remarques
La fonction RND donne comme résultat une valeur inférieure à 1 mais supérieure ou égale à 0.
La même séquence de nombres aléatoires est générée à chaque fois que l’instruction est exécutée, puisque chaque appel de la fonction RND utilise le nombre aléatoire précédemment calculé, comme point de départ du calcul de nombre aléatoire suivant. Si on souhaite que le programme génère une séquence de nombres différents à chaque occurrence, il faut alors utiliser l’instruction
Randomize avec l’argument assigné à une variable ou une expression dont la valeur change, qui servira de valeur d’initialisation pour le générateur de nombres aléatoires ayant une valeur différente avant que RND ne soit appelée.
Pour produire des entiers dans une étendue de mesure définie, il faut utiliser la formule suivante :
INT( (borne_supérieure – borne_inférieure + 1) * RND + borne_inférieure)
Ici la borne_supérieure est la valeur maximale dans l’étendue de mesure, et la borne_inférieure est la valeur minimale dans l’étendue de mesure.
Sgn (Source)
Cette instruction est utilisée afin de connaître la valeur du signe d’un nombre.
Syntaxe
x = Sng (source)
Remarques
Cette instruction donne comme résultat un entier, qui représente le signe du nombre.
L’argument du nombre peut être n’importe quelle expression numérique valide. Son signe détermine la valeur retournée par la fonction « Sgn » :
Si X > 0, alors Sgn(X) = 1.
Si X = 0, alors Sgn(X) = 0.
Si X < 0, alors Sgn(X) = -1.
8-16
Chapitre 8 Instructions de calcul et de traitement
Exemple de fonction Sgn
L’exemple utilise Sgn afin de déterminer le signe d’un nombre.
Dim Msg, Nombre
Nombre = Volt(1)
Select Case Sgn(Nombre)
Case 0
Case 1
Case -1
Msg = -1
End Select
‘Déclaration des variables
‘On prend une valeur en Entrée
‘On évalue le nombre
‘La valeur est 0
‘La valeur est positive
‘La valeur est négative
Sin (Source)
Cette instruction donne comme résultat le sinus d’un angle.
Syntaxe
x = Sin (source)
Remarques
La source ne peut être qu’une expression numérique valide mesurée en radian.
La fonction Sin prends un angle, et donne comme résultat le rapport des deux côtés d’un triangle à angle droit. Le rapport est la longueur du côté opposé à l’angle, divisé par la longueur de l’hypoténuse.
Le résultat est compris entre -1 et 1.
Afin de convertir des degrés en radian, on multiplie par
π/180. Pour convertir des radians en degrés, on multiplie par 180/
π.
Cette instruction donne comme résultat le sinus de la valeur entre parenthèses. Cette valeur d’Entrée doit être en radian.
Exemple de fonction Sin
Cet exemple utilise la fonction Sin afin de calculer le sinus d’un angle, à partir d’une donnée d’Entrée en Volt.
Dim Msg, Nombre ‘Déclaration des variables
Pi = 4 * Atn(1)
Degrés = Volt(1)
‘Calcul de Pi
‘On prend la valeur en Entrée
Radians = Degrés * (Pi / 180) ‘On convertit la valeur en radian
Ans = Sin(Radians) ‘On calcul le sinus de l’angle
Sqr (Source)
Cette instruction donne comme résultat la racine carrée d’un nombre.
Syntaxe
x = sqr (nombre)
Remarques
Le nombre peut être une quelconque expression numérique valide dont la valeur est supérieure ou
égale à 0.
Le résultat de la fonction, est la racine carrée de la valeur contenue entre les parenthèses.
Exemple de fonction Sqr
L’exemple utilise la fonction Sqr afin de calculer la racine carrée de la valeur de la tension, Volt(1).
8-17
Manuel de la CR200
Dim Msg, Nombre
Dim Msg, Nombre
Nombre = Volt(1)
If Nombre < 0 Then
Msg = 0
‘Déclaration des variables
‘Déclaration des variables
‘On prend la valeur en Entrée
‘On ne peut pas calculer la racine carrée d’un nombre négatif
Else
Msg = Sqr(Nombre)
End If
StdDevSpa (Source)
Cette instruction est utilisé afin de calculer l’écart type d’une ligne de donnée.
Syntaxe
StdDevSpa (Dest, Swath, Source)
Remarques
Ecart type spatial.
Dest
=
⎛
⎜
⎝
⎛
⎜
⎝
∑
( )
2
Où X
(j)
= Source
−
⎝
2
∑
X i
⎠
/
swath
⎞
⎟
⎠
/
swath
⎞
⎟
⎠
1
2
Paramètres
& type de donnée
Dest
Variable ou ligne de données
Swath
Constante
Source
Ligne de données
Entrée
La variable dans laquelle on stocke les résultats de l’instruction.
Le nombre de valeurs dans la ligne de données, à inclure dans le calcul.
Le nom de la ligne de données qui contient les données d’Entrée pour l’instruction.
Tan (Source)
Cette instruction donne comme résultat la tangente d’un angle.
Syntaxe
x = Tan (source)
Remarques
La source peut être une quelconque expression numérique valide dont la valeur est exprimée en radian.
La fonction Tan prend un angle, et donne comme résultat le rapport des deux côtés d’un angle droit. Le rapport et la longueur du côté opposé à l’angle, divisé par la longueur du côté adjacent à l’angle.
Afin de convertir des degrés en radian, on multiplie par
π/180. Pour convertir des radians en degrés, on multiplie par 180/
π.
Exemple de fonction Tan
L’exemple utilise la fonction Tan afin de calculer la tangente de la valeur de la tension, Volt(1).
Dim Degrés, Pi, Radians, Ans ‘Déclaration des variables
Pi = 4 * Atn(1) ‘Calcul de Pi
Degrés = Volt(1) ‘On prend la valeur en Entrée
Radians = Degrés * (Pi / 180) ‘On convertit la valeur en radians
Ans = Tan(Radians) ‘On calcul la tangente de l’angle
8-18
Chapitre 8 Instructions de calcul et de traitement
XOR
La fonction XOR est utilisée afin d’effectuer une exclusion logique sur deux nombres.
Syntaxe
Résultat = nombre1 XOR nombre2
L’opérateur XOR effectue une comparaison de bits sur des bits positionnés à l’identique dans 2 nombres, et met la valeur fixe du bit correspondant selon la table de vérité suivante :
Si le bit dans l’expression 1 est Et si le bit dans l’expression 2 est Alors le:résultat est
Bien que l’opérateur XOR soit un opérateur de comparaison de bits, il peut être utilisé afin d’effectuer des tests sur ces conditions Booléennes (Vrai / Faux). La CR200 décide si quelque chose est vrai ou faux en assumant que 0 est faux et que n’importe quelle valeur numérique différente de 0 est vraie (paragraphe 4.5). Puisque XOR est une opération de comparaison de bits, il est possible d’effectuer une opération XOR sur deux nombres différents de zéro (par exemple 2 et 4), et obtenir un nombre différent de zéro. (XOR ne fonctionnera qu’avec deux nombres différents de zéro, et donner zéro comme résultat si les nombres de départ sont égaux.)
Constante pré-définie Vrai = -1
Constante pré-définie Faux = 0
Si l’expression 1 est : Si l’expression 2 est : Alors le résultat est :
-1
0
Pas un nombre (NAN)
N’importe quel nombre
NAN
Nombre 2
Les expressions sont évaluées par rapport à un nombre (paragraphe 4.5), et peuvent être utilisées à la place de chacun des deux nombres. Les expressions de comparaison sont évaluées en tant que
Vrai (61) ou Faux (0). Par exemple :
If Temp(1) > 50 XOR Temp(3) < 20 Then
X
Else
X
EndIf
Et
X = Temp(1) > 50 XOR Temp(3) < 20
Ont le même effet : X aura la valeur -1 si seule une des expressions « Temp(1) > 50 » ou
« Temp(3) < 20 » est vraie. X aura la valeur 0 si les deux expressions sont vraies ou si les deux expressions sont fausses.
8-19
Manuel de la CR200
Fonctions mathématiques dérivées
La liste suivante est une liste de fonctions mathématiques non intrinsèques, qui peuvent être dérivées à partir des fonctions mathématiques intrinsèques fournies avec le CRBasic :
Fonction :
Secant
Cosecant
Cotangente
Inverse Secant
Inverse Cosecant
Inverse Cotangent
Hyperbolic Secant
Hyperbolic Cosecant
Hyperbolic Cotangent
Inverse Hyperbolic Sine
Inverse Hyperbolic Cosine
Inverse Hyperbolic Tangent
Inverse Hyperbolic Secant
Inverse Hyperbolic Cosecant
Inverse Hyperbolic Cotangent
Logarithm
Equivalent CRBasic :
Sec = 1 / Cos(X)
Cosec = 1 / Sin(X)
Cotan = 1 / Tan(X)
Arcsec = Atn(X / Sqr(X * X - 1)) + Sgn(Sgn(X) -1) * 1.5708
Arccosec = Atn(X/Sqr(X * X - 1)) + (Sgn(X) - 1) * 1.5708
Arccotan = Atn(X) + 1.5708
HSec = 2 / (Exp(X) + Exp(-X))
HCosec = 2 / (Exp(X) - Exp(-X))
HCotan = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
HArcsin = Log(X + Sqr(X * X + 1))
HArccos = Log(X + Sqr(X * X - 1))
HArctan = Log((1 + X) / (1 - X)) / 2
HArcsec = Log((Sqr(-X * X + 1) + 1) / X)
HArccosec = Log((Sgn(X) * Sqr(X * X + 1) +1) / X)
HArccotan = Log((X + 1) / (X - 1)) / 2
LogN = Log(X) / Log(N)
8-20
Chapitre 9. Instructions de contrôle de programme
BeginProg, EndProg
L’instruction BeginProg est utilisée afin de marquer le début du programme. EndProg marque la fin du programme.
Syntaxe
BeginPog
…
…
EndProg
Remarques
Toutes les instructions du programme principal, se trouvent entre les instructions BeginProg et
EndProg. Les variables du programme, les tables de données (DataTables) et les sous-programmes
(Subroutines), doivent être définis avant le programme principal. Les balises BeginProg / EndProg ne sont pas nécessaires s’il n’y a ni sous-programmes ni tables de données (DataTables).
Const Mult=1
Const Offset=0
Public SoilT(4)
Units SoilT = DegC
DataTable (AvgTemp,1,2000)
EndTable
BeginProg
Declare Constants
Declare Public Variables,
Dimension Array, and
Declare Units
Define Data Table
Therm109(SoilT(),4,1,Ex1,1.0,0)
Measure
Call Data Table
NextScan
EndProg
Declare Constants
Scan Loop
Call
L’instruction Call sert à transférer le contrôle du programme, du programme principal vers un sous-programme.
Syntaxe
Call Name(liste de variables)
Remarques
L’utilisation du mot « Call » est une option, lorsqu’on souhaite appeler un sous-programme.
La fonction « Call » a trois parties :
Call C’est une mot optionnel, afin de transférer le programme à un sous programme.
C’est le nom du sous-programme à appeler. Name
Liste de variables ou Constantes La liste peut contenir des variables, des constantes, ou des expressions qui évaluent une constante (c’est à dire qu’elle ne contiennent pas de variable) et qui devraient être mises dans les variables déclarées dans le sous-programme. Les valeurs ou les variables passées, peuvent être altérées par le sous-programme. Si le sous-programme change la valeur de la variable déclarée dans le sous-programme, il change alors la valeur de la variable qui était précédemment là. Si une constante est mise dans un des sous-programmes appelés « variable », la « variable » devient une constante et sa valeur ne peut plus être changée par le sous-programme.
Exemple d’utilisation de « Call »
Voir l’exemple donné pour la description de « Sub » au chapitre 5.
Manuel de la CR200
CallTable
Cette instruction est utilisée afin d’appeler une table de données.
Syntaxe
CallTable Name
Remarques
L’instruction « CallTable » est utilisée dans le programme principal, afin d’appeler une table de données (DataTable). Les tables de données sont listées dans la partie « Déclaration » du programme, avant la balise « BeginProg ». Lorsque la table de données est appelée, elle effectuera un traitement des données de la façon indiquée dans le programme, et elle effectuera un test sur les conditions de sauvegarde.
Exemple d’utilisation de CallTable
Cet exemple utilise l’instruction CallTable afin d’appeler la table ACCEL
CallTable ACCEL
ClockSet (Source)
Cette instruction permet de fixer l’heure de la CR200 à partir des valeurs contenues dans une ligne de données. L’utilisation la plus probable de cette instruction sera lorsque la CR200 utilise une source de synchronisation temporelle qui est plus précise que celle de la CR200, à savoir un récepteur GPS par exemple. La valeur du temps en entrée serait périodiquement ou continuellement convertie dans l’unité demandée pour la ligne de donnée variable, et l’instruction
ClockSet sera utilisée afin de fixer l’heure de la CR200.
Source
Ligne de données
La source doit être une ligne de données de 7 éléments. Les éléments de
1 à 7 doivent comporter respectivement l’année, le mois, le jour, l’heure, la minute, la seconde et la microseconde.
Delay (Delay, Units)
Cette instruction est utilisée afin de donner un délai au programme.
Syntaxe
Delay(Delay, Units)
Remarques
L’instruction de délai est utilisée afin d’effectuer une pose à l’intérieur du programme, pendant une durée spécifiée par les valeurs « Delay » et « Units ».
L’intervalle de scrutation (Scan Interval) doit être suffisamment long pour que le programme puisse exécuter la totalité des instructions + le délai spécifié, entre deux intervalles de scrutation.
Paramètres
& type de donnée
Delay
Constante
Units
Constante
Entrée
La valeur numérique du délai.
L’unité de mesure du délai
Code alphabétique Code numérique Unité
USEC
MSEC
SEC
MIN
0
1
2
3
Microsecondes
Millisecondes
Secondes
Minutes
Cette instruction répète un bloc de commandes tant qu’une condition est vraie (while), ou jusqu’à ce qu’une conditions devienne vraie (until).
9-2
Chapitre 9. Instructions de contrôle de programme
* Syntaxe1
Do [{While | Until} condition]
[bloc d’instructions]
[Exit Do]
[bloc d’instructions]
Loop
* Syntaxe2
Do
[bloc d’instructions]
[Exit Do]
[bloc d’instructions]
Loop [{While | Until} condition]
L’instruction Do…Loop contient ces parties :
Partie Description
Do
While
Doit être la première instruction écrite lors d’une structure « Do… Loop »
Ce paramètre indique que la boucle est répété tant que la condition est vraie
Until
condition
Ce paramètre indique que la boucle est exécutée jusqu’à ce que la condition soit vraie.
C’est une expression numérique dont le résultat est vrai (différent de 0) ou faux (0 ou Nul).
bloc d’instructions Ce sont les ligne de programme entre les balises « Do » et « Loop ». Elles sont répétées tant que, ou jusqu’à ce que la condition soit vraie.
Exit Do
Cela n’est utilisé qu’à l’intérieur des structures de contrôle de type « Do …Loop », afin de fournir une façon alternative de sortie du « Do …Loop ».On peut placer autant de Exit Do qu’on veut et à différents endroits dans une structure « Do …Loop ». Souvent utilisée avec des évaluations de conditions (par exemple If …Then), Exit Do transfert le contrôle au code qui est écrit juste à la suite dans la Loop. Lorsque les « Do …Loop » sont imbriqués, le transfert est alors contrôlé par le « Do …Loop » qui est au niveau d’imbrication au dessus de celui où est écrit la balise Exit Do.
Loop
Cette balise termine le « Do …Loop »
Exemple de fonctionnement de « Do …Loop »
L’exemple crée une boucle infinie, dont on ne peut sortir que si la valeur de Volt(1) est comprise dans une certaine étendue de mesure
Dim Reply
‘Déclare la variable
Do
Reply = Volt(1)
If Reply > 1 And Reply < 9 Then
‘Vérifie l’étendue de mesure
‘Sort de la boucle « Do …Loop »
Loop
End If
La même chose peut être faite d’une autre manière en incorporant l’étendue de mesure de test à l’intérieur d’une boucle « Do …Loop » de la façon suivante :
Dim Reply
‘Déclare la variable
Do
Reply = Volt(1)
Loop Until Reply > 1 And Reply < 9
L’exemple suivant montre l’utilisation de Wend.
While X>Y
‘Ancienne façon de faire des boucles
Wend
Do While X > Y
Loop
‘Façon plus intéressante de programmer
9-3
Manuel de la CR200
For …Next
Cette instruction répète un groupe d’instruction un nombre de fois spécifié.
Syntaxe
For counter = start To end [Step increment]
[bloc d’instructions]
[Exit For]
[bloc d’instructions]
Next [counter [, counter] [, …] ]
L’instruction For…Next contient ces parties :
Partie Description
For
C’est le début d’une boucle de contrôle de type For…Loop. Il doit apparaître avant n’importe quelle autre partie de cette structure.
counter
start
Variable numérique utilisée en tant que compteur de boucle. La variable ne peut pas être une partie d’une ligne de donnée ou d’une table enregistrée.
Valeur initiale du compteur (counter)
To Sépare les valeurs start et end
Partie Description
end Valeur finale du compteur (counter)
Step
increment
Indique que l’incrément (increment) est explicitement mentionné.
Valeur par laquelle le compteur est incrémenté à chaque passage de boucle. Si vous n’avez pas besoin de définir de Step, l’incrément par défaut à la valeur de 1.
bloc d’instructions Lignes de programme qui sont exécutées un nombre spécifique de fois, entre For et Next.
Exit For
Next
Cette expression n’est utilisée qu’à l’intérieur d’une boucle de structure « For …Next ».
On peut utiliser autant de Exit For que l’on souhaite à l’intérieur de la boucle
« For…Next ». Souvent utilisée avec des évaluations de conditions (par exemple If
…Then), Exit For transfert le contrôle de programme au code qui est écritjuste derrière le
Next.
Cette expression termine la boucle « For …Next ». C’est suite à elle, que s’ajoute la valeur de l’incrément, à celle du compteur.
La valeur de « Step », contrôle l’exécution de la boucle de la façon suivante :
Lorsque Step est Alors la boucle (Loop) s’exécute si
Positif ou égal à 0 Le compteur (counter) est <= end
Négatif Le compteur (counter) est >= end
Une fois que l’on est entré dans la boucle, et que les instructions de la boucle sont exécutées, la valeur de Step (un « pas ») est ajoutée au compteur (counter). A ce moment, soit les instructions à l’intérieur s’exécutent encore (sur la base du même test que celui qui a permis de rentrer dans la boucle), soit on sort de la boucle et l’exécution continue avec les instructions qui suivent l’instruction Next.
Conseil : Si vous faites en sorte de changer la valeur du compteur alors que vous êtes à l’intérieur de la boucle, vous rendrez votre programme plus compliqué à lire et à corriger (débuguer).
On peut imbriquer des instructions « For …Next » en intégrant une autre boucle « For …Next » à l’intérieur d’une boucle existante. Il faut alors donner un nom unique à chaque variable compteur.
Le type de construction suivant, est correct :
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
Note:
Si vous oubliez la variable Next dans votre séquence de programme, la valeur d’incrémentation de Step est ajoutée à la variable associée à la boucle
For la plus récente. Si une instruction Next est lue avant son instruction For correspondante, une erreur se produit
9-4
Chapitre 9. Instructions de contrôle de programme
Exemple d’instruction « For...Next »
L’exemple utilise une boucle “For …Next” à l’intérieur d’une autre boucle.
Dim I, J ‘Déclaration des variables.
For J = 5 To 1 Step -1 'On recule de un à chaque fois, sur 5 fois
For I = 1 To 12
. . . .
'On effectue 12 fois la boucle
‘On exécute quelques instructions
Next I
. . . .
‘On exécute quelques instructions
Next J
. . . .
‘On exécute quelques instructions
Cet exemple rempli les éléments impairs de X jusqu’à 40 * Y avec des nombres impairs.
For I = 1 To 40 * Y Step 2
X( I ) = I
Next I
If … Then … Else
Cela permet une exécution conditionnelle, basée sur l’évaluation d’une expression.
* Syntaxe 1
If condition Then thenpart [Else elsepart]
* Syntaxe 2
If condition1 Then
[bloc d’instructions-1]
[ElseIf condition2 Then
[bloc d’instructions-2]
[Else
End If
[bloc d’instructions-n] ]
* Description de la Syntaxe 1
La forme à une seule ligne est souvent utilisée pour les tests conditionnels courts et simples. La
Syntaxe 1 comporte trois parties :
Partie Description
If Ceci débute la structure de contrôle simple If … Then
condition
Then thenpart
C’est une expression évaluée vrai (différent de 0) ou faux (0 ou nul).
Identifie l’action à effectuer si la condition est satisfaite
Else elsepart
Instructions ou commandes à effectuer quand la condition est vraie
Identifie l’action à effectuer si la condition n’est pas satisfaite. Si la partie « Else » n’est pas présente, le contrôle passe aux instructions suivantes du programme.
Instructions ou commandes exécutées lorsque la condition est fausse.
Les champs thenpart et elsepart ont la même syntaxe :
{instruction | [Go To] numéro_de_le_ligne | Go To intitulé_de_le_ligne}
La syntaxe des champs thenpart et elsepart ont cette partie :
Partie Description
Instruction
Une ou plusieurs instructions CRBasic, séparées par des guillemets « : ».
Note:
Vous pouvez avoir plusieurs instructions avec une condition, mais elles doivent être sur la même ligne et doivent être séparées par des « : », comme dans l’exemple suivant.
If A > 10 Then A = A + 1 : B = B + A : C = C + B
* Description de la syntaxe 2
Le block de forme If … Then … Else permet d’avoir plus de structure et de flexibilité qu’une forme à une seule ligne. Elle est souvent plus facile à lire, à comprendre, à débuguer et donc à
« entretenir » (maintain). La syntaxe 2 contient ces parties :
9-5
9-6
Manuel de la CR200
Partie Description
If
Ceci débute la structure de contrôle If … Then condition1
Then
C’est une expression du même type que la condition utilisée ci-avant
Identifie l’action à effectuer si la condition est satisfaite
bloc d’instructions-1 Une ou plusieurs instructions ou commandes en CRBasic, à effectuer quand la
condition1 est vraie
ElseIf
condition2
Identifie l’action à effectuer si la condition1 n’est pas satisfaite.
C’est une expression du même type que la condition utilisée ci-avant
bloc d’instructions-2 Une ou plusieurs instructions ou commandes en CRBasic, à effectuer quand la
condition2 est vraie
Else Identifie l’action à effectuer si aucune des conditions précédentes ne sont satisfaites.
bloc d’instructions-n Une ou plusieurs instructions ou commandes en CRBasic, à effectuer si la condition1 et la condition2 sont fausses
End If C’est la fin de structure du If …Then
Lorsqu’on exécute un bloc de If, le CRBasic teste la condition1, la première expression numérique. Si l’expression est vraie, les commandes qui suivent le Then, sont alors exécutées.
Si la première expression est fausse, le CRBasic commence à évaluer chacune à son tour, les expressions ElseIf. Quand le CRBasic trouve une condition qui est vraie, les commandes qui suivent le Then, sont alors exécutées. Si aucune des conditions ElseIf n’est vraie, les commandes qui suivent le Else, sont alors exécutées. Après avoir exécuté les commandes qui suivent le Then, ou le Else, le programme se poursuit en exécutant les instructions qui sont situées après le End If.
Les conditions Else et le ElseIf sont toutes les deux optionnelles. On peut avoir autant de conditions ElseIf que l’on souhaite à l’intérieur d’un bloc If, mais aucune ne doit être écrite après la condition Else. Chacun des blocs de conditions peut contenir des blocs de conditions If imbriquées.
Le CRBasic regarde ce qui est écrit après le mot clé Then, afin de déterminer si la commande If fait partie d’un bloc de commandes de type If. Si une quelconque écriture différente d’un commentaire, est écrite après le Then, la commande est traitée comme si elle était une commande de type If pour la ligne seulement (pas pour un block If).
Un bloc de commandes If, doit être le premier sur la ligne de commande. Les parties Else, ElseIf et End If , ne peuvent rien avoir d’autre que des espaces devant eux en début de ligne. Le bloc de commandes If doit se terminer par une commande End If.
Par exemple :
If a > 1 And a <= 100 Then
…
ElseIf a = 200 Then
...
End If
A noter : Il peut être plus simple d’utiliser le comparateur « Case » lorsque l’on évalue une seule expression, qui peut engendrer plusieurs actions.
Exemple de condition If … Then … Else :
Cet exemple donne plusieurs illustrations de la syntaxe If … Then … Else.
Dim X, Y, Temp(5)
If X < 10 Then
Y = 1
ElseIf X < 100 Then
Y = 2
Else
Y = 3
End If
…
‘Déclaration des variables
‘1 digit
‘2 digits
‘3 digits
‘ Exécution de code
Chapitre 9. Instructions de contrôle de programme
LoggerIdentify
L’instruction « LoggerIdentify » est utilisée afin de donner une valeur à une chaîne d’identification présente dans la centrale de mesure, et qui sera envoyée en retour lorsqu’une autre chaîne de caractère sera envoyée à la centrale de mesure.
Syntaxe
LoggerIdentify ( “ RequestString” , “ ReturnString” )
Remarques
Cette instruction n’est disponible que dans certains systèmes d’exploitation.
L’instruction “LoggerIdentify” est écrite à n’importe quell emplacement du programme. Lorsque la chaîne RequestString est reçue par la centrale de mesure, elle répondra par la chaîne
ReturnString. La chaîne RequestString ne peut avoir plus de 4 caractères. La chaîne ReturnString est limitée à 29 caractères.
Si la centrale de mesure est en émulation de terminal et que la chaîne RequestString est reçue, la centrale de mesure répondra avec la valeur « Invalid ». La centrale devra sortir du mode d’émulateur de terminal (après son délai de temps approprié), ou bien vous devrez entrer la chaîne
RequestString avant que la centrale de mesure ne soit en mode d’émulation de terminal (la CR200 est mise en mode d’émulation de terminal si on lui envoie 4 retours chariot (carriage return).
Exemple
Dans l’exemple suivant, lorsque la CR200 reçoit la commande « AMXB », la centrale de mesure répondra par « MyCR200Logger ». A noter que l’instruction LoggerIdentify n’est disponible que dans des systèmes d’exploitation (Operation Systems) spéciaux.
Public Battery
DataTable (Table,True,1000)
EndTable
BeginProg
LoggerIdentify ("AMXB","MyCR200Logger")
NextScan
EndProg
Print (Port, BaudRate, PrintParams)
L’instruction « Print » est utilisée pour envoyer les valeurs du programme ou d’autres caractères vers le port de communication.
Cette instruction est utilisée souvent comme outil afin de mettre au point « déboguer » un programme. Les valeurs spécifiées pour la variable, sont envoyées en tant que caractère ASCII, vers le port RS-232 ; la liste des paramètres à envoyer ne peut excéder 5 éléments. (chaque
élément est séparé par une virgule)
9-7
Manuel de la CR200
Paramètres
& type de donnée
Port
Constante
BaudRate
Vitesse des bauds
PrintList
Variables, caractères ou chaînes de caractères
Entrée
Le paramétrage du port de communication est utilisé pour spécifié le port COM qui devra être utilisé par l’instruction. Le bouton droit de la sourie fera apparaître liste.
Code Port de communication
0
1
3
RF
RS-232
C1
Le paramètre BaudRate est la vitesse de communication à utiliser pour le port séléctionné dans le premier paramètre ; les options sont 1200 et
9600 bps. Si vous utilisez la radio, le vitesse de transmission doit être
9600.
PrintList est une liste d’éléments à imprimer, de longueur variable.
Elle peut contenir des chaînes de caractères ou de variables (avec une syntaxe de type CHR$(code ascii) ). Les éléments sont séparés par des virgules.
Scan
Cette instruction est utilisée afin de donner le temps de scrutation du programme.
Syntaxe
Scan (Interval, Units)
…
…
Next Scan
Les mesures, les calculs et les appels afin d’enregistrer les tableaux de sauvegarde contenues entre les instructions Scan … NextScan, déterminent la séquence et la temporisation du programme de la centrale de mesure.
Entrée Paramètres
& type de donnée
Interval
Constante
Units
Constante
On entre l’intervalle de temps auquel la scrutation sera effectuée.
L’intervalle peut être en secondes ou en minutes, comme cela est sélectionné dans le paramètre des unités.
L’unité pour le paramètre de temps
Code alphabétique
SEC
MIN
Code numérique
2
3
Unité
Secondes
Minutes
ScanLEDOff
Cette instruction désactive les LEDs du bornier de la centrale de mesure, LEDs qui indiquent que le programme est en cours d’exécution.
Syntaxe
ScanLEDOff
Remarques
Cette instruction n’a pas de paramètres. Quand cette instruction est présente dans un programme, la LED qui indique si le programme est exécuté ou non, est alors éteinte jusqu’à la fin de l’exécution présente du programme. Lors des scrutations suivantes, la LED sera de nouveau active jusqu’à ce que le programme lise l’instruction ScanLEDOff. Cette instruction est donc typiquement utilisée afin d’économiser de l’énergie lorsque les programmes sont longs et que la
LED reste allumée pendant longtemps si on n’utilisait pas l’instruction ScanLEDOff.
9-8
Chapitre 9. Instructions de contrôle de programme
Select Case
Cette instruction exécute les commandes présentes à l’intérieur du bloc de commandes, en fonction de la valeur d’une expression.
Syntaxe
Select Case expression_de_test
[Case liste_d_expression_1
[bloc_d_instruction_1]]
[Case liste_d_expression_2
[bloc_d_instruction_2]]
[Case Else liste_d_expression_n
[bloc_d_instruction_n]]
End Select
La syntaxe de l’expression Select Case contient ces parties :
Partie Description
Select Case
Ceci débute la structure de contrôle Select Case. Elle doit être écrite avant n’importe laquelle des autres parties de la structure de Select Case.
expression_de_test
Case
C’est une expression numérique ou une chaîne de caractères. Si l’expression_de_test est en accord avec le bloc_d_instruction qui lui est associé à l’intérieur de la clause
Case, alors le bloc_d_instruction qui suit la clause Case, est exécuté jusqu’à ce qu’une autre clause Case soit lue (ou jusqu’à ce que End Select soit lu, pour la dernière clause). Si l’expression_de_test est en accord avec plus d’une clause Case, seules les instructions suivant la première clause, sont exécutées.
Identifie un groupe de commande CRBasic à effectuer si l’expression dans
liste_d_expression est en accord avec l’expression_de_test.
liste_d_expression
Case Else
Une liste_d_expression est constituée de une ou plusieurs formes d’expression parmi les suivantes, délimitées par des virgules : expression expression To expression expression comparée via un opérateur comparateur bloc d’instructions
Les bloc_d_dinstruction_1 à bloc_d_instruction_n sont des instructions de CRBasic qui seront écrites sur une ou plusieurs lignes.
Identifie le bloc_d_instruction à effectuer si aucune concordance n’est satisfaite, avec les expression_de_test ou les liste_d_expression précédentes. Lorsqu’il n’y a pas d’instruction Case Else et qu’aucune des expressions listée dans les clause Case, ne permet de concorder avec l’ expression_de_test, l’exécution du programme se poursuit jusqu’aux instructions qui suivent le End Select.
End Select C’est la fin de structure du Select Case. Cette instruction doit apparaître à la suite de toutes les autres instructions nécessaires au bloc de contrôle Select Case.
La liste des arguments de liste_d_expression contient ces parties :
Partie Description
expression N’importe quelle expression numérique
To Mot clé utilisé afin de spécifier une étendue de mesure de valeurs. Si on utilise le mot clé « To » pour indiquer une étendue de mesure de valeurs, la valeur la plus petite doit
être placée avant le « To ».
Bien que cela ne soit pas nécessaire, il est préférable d’avoir une condition Case Else à l’intérieur du bloc de commandes Select Case, afin de tenir compte des valeurs inattendues de l’expression_de_test.
On peut utiliser des expressions multiples ou des étendues de mesure dans chaque clause Case. Par exemple, la ligne suivante est valide :
Case 1 To 4, 7 To 9, 11, 13
Les conditions Select Case peuvent être imbriquées. Chaque bloc de commandes Select Case doit avoir un End Select pour le conclure.
Exemple de condition Select Case
L’exemple utilise la clause Select Case afin de décider quelle action effectuer, en fonction des entrées données par l’utilisateur.
9-9
Manuel de la CR200
Dim X, Y
If Not X = Y Then
If X > Y Then
Select Case X
Case 0 To 9
…
Case 10 To 99
…
Case Else
…
End Select
Else
Select Case Y
Case 1, 3, 5, 7, 9
…
Case 0, 2, 4, 6, 8
…
End Select
End If
…
‘Déclaration des variables
‘ X est-il égal à Y ?
‘Quelle est la valeur de X
‘X est inférieur à 10
‘On exécute les instructions…
‘X est inférieur à 100
‘On exécute les instructions…
‘X est différent des conditions énoncées
‘On exécute les instructions…
‘Quelle est la valeur de Y
‘Y est impair
‘On exécute les instructions…
‘Y est pair
‘On exécute les instructions…
‘On exécute les instructions…
SetStatus()
L’instruction SetStatus est utilisée afin de mettre une valeur à l’intérieur du tableau d’état (Status
table) de la centrale de mesure.
Syntaxe
SetStatus (FieldName, Value )
Remarques
L’instruction SetStatus permet à l’utilisateur de changer une valeur à l’intérieur du tableau d’état de la centrale de mesure. Tous les champs de ce tableau d’état peuvent être modifiés, excepté le champs OSVersion (version du système d’exploitation), OSDate (date du système d’exploitation),
ProgName (nom du programme), ProgSig (signature du programme), et CalOffset (offset de calibration). L’instruction peut aussi être utilisée afin de remettre à zéro (ré-initialiser) tous les tableaux de données de la centrale de mesure.
FieldName L’argument de FieldName est utilisé afin de spécifier le paramètre du tableau d’état, qui doit être modifié. Cliquer sur le bouton droit de la souris afin de visualiser dans des fenêtres, les noms de champs valides que l’on peut afficher. Les champs valides sont :
9-10
Chapitre 9. Instructions de contrôle de programme
Nom du champs (FieldName) Description
PakBusAddress
Adresse PakBus de la centrale de mesure
RfNetAddr
RfAddress
RfHopSeq
L’adresse du réseau RF. Les adresses valides sont entre 0 et 63.
L’adresse de la radio RF. Les adresses valides sont entre 0 et 1023.
RfPowrMode
La séquence de saut de fréquence RF sur le réseau. Les modes valides sont entre 0 et 6.
Le mode de configuration de l’alimentation des radio. Une constante prédéfinie est utilisée. Un click sur le bouton droit de la souris permet de choisir entre :
Option Description
Rf_ForceOn
Rf_Protocol
VarOutOfBounds
SkipScan
TrapCode
WatchDogCnt
ResetTables
Value
RF_ON La radio est toujours active.
RfpinEn La radio est activée par un appareil via une pin.
FR1_Sec La radio fonctionne selon un cycle de 1 seconde.
RF8_Sec La radio fonctionne selon un cycle de 8 secondes.
RF1S_LH La radio fonctionne selon un cycle de 1 seconde et transmet de longues en-têtes.
RF8S_LH La radio fonctionne selon un cycle de 8 secondes et transmet de longues en-têtes.
N’importe quelle valeur différente de zéro modifiera le mode d’alimentation actuel, et sera pris en compte.
1 = Mode Transparent (Transparent Mode). Ce mode est compatible avec les anciens systèmes d’exploitation des CR205, CR210, CR215,
RF400, RF410 et RF415.
2 = PakBus (PakBus Aware Mode). Ce mode peut être utilisé avec des réseaux utilisant des RF401/RF411/RF416 ou des
CR206/CR211/CR216, en utilisant les capacités de rappel inhérentes aux radios Maxtream. Ce mode n’est pas compatible avec les
anciennes radios.
Le nombre de variables qui sont sous-dimensionnées ; c’est à dire que la taille de la ligne de données est insuffisante pour contenir la variable.
Le nombre de scrutations qui ont été manquées du fait que la scrutation précédente n’était pas finie.
Le nombre de fois où le processeur a été ré-initialisé par le compteur de chien de garde.
Cette commande est utilisée afin de ré-initialiser toutes les données de la centrale de mesure. Pour effectuer l’initialisation, donner la valeur
8888 à la variable ResetTables, soit écrire : SetStatus(ResetTables,
8888)
La valeur qui sera envoyée dans le champ spécifié par l’instruction, dans la tableau d’état.
Ticker250ms
L’instruction Ticker250ms stocke la valeur totale de 250ms dans une variable.
Le système d’horloge de 250ms est indépendant de l’horloge de la centrale d’acquisition et n’est pas affecté par un changement de l’horloge. Cependant, cette instruction peut être utilisée pour exécuter une ou plusieurs instruction basée sur le temps, ou basé sur le temps de l’horloge de la centrale d’acquisition (qui peut être changé par l’utilisateur) pour affecter les sorties. C’est une horloge de 24 bits, qui une fois démarrée effectuera un cycle tout les 48,5 jours. Cette instruction commence lorsque le programme démarre. Elle ne peut être remise à zéro.
L’instruction Ticker250ms a un paramètre – la destination dans laquelle la valeur de l’houloge sera stockée.
9-11
Manuel de la CR200
While … Wend
Les instructions While … Wend sont utilisées afin d’exécuter une série d’instructions à l’intérieur d’une boucle, jusqu’à tant que la condition soit vraie.
Syntaxe
While Condition
[bloc_d_instruction]
Wend
Remarques
Les boucles de type While … Wend, peuvent être imbriquées.
Les instructions While … Wend ont les paramètres suivants :
While
Condition
Cette balise débute la structure de la boucle de contrôle While … Wend.
La condition est une expression quelconque qui peut être évaluée en tant que vraie (différent de zéro) ou faux (0 et Nul). Si la Condition est vraie, toutes les commandes du bloc_d_instruction sont exécutées jusqu’à ce que le Wend soit lu. Le contrôle retourne alors jusqu’à la balise While, et la condition est de nouveau testée. Si la Condition est encore vraie, le processus est répété. Si la condition n’est pas vraie, l’exécution de la boucle s’arrête, et les instructions suivant la balise Wend sont alors exécutées.
bloc_d_instruction C’est la portion du programme qui devra être répétée jusqu’à ce que la boucle se termine. Ces instructions sont écrites entre les balises While et
Wend.
Wend Cette balise termine la structure de la boucle de contrôle While … Wend.
Note:
Le bloc de contrôle Do … Loop permet d’effectuer des boucles d’une façon plus flexible encore, que la boucle While … Wend
Exemple de programme avec While … Wend
Ce programme crée une boucle While … Wend, de laquelle on ne sort que si « Reply » (Reponse) est contenue dans une certaine étendue de mesure.
Dim Reponse
While Reponse < 90
‘Déclaration de la Variable
Reply = Reply + 1
Wend
9-12
Chapitre 10. Instructions pour communiquer d’une centrale de mesure à : une autre centrale / une radio / un capteur déporté
La CR200 est souvent utilisée en tant qu’interface pour capteur déporté, pour une centrale d’acquisition « Hôte ». Généralement, la centrale de mesure Hôte et les capteurs (CR200) auront des programmes qui permettront aux capteurs de fonctionner avec un minimum de consommation
électrique (110-µA). Ces programmes synchronisent les capteurs CR200 afin qu’ils reportent les données à des intervalles de temps spécifiés.
Pour des applications qui demandent des communications plus fréquentes, l’instruction de récupération de la variable (get/set variable) dans la centrale d’acquisition hôte, peut être utilisée avec un capteur CR200 qui est configuré pour une consommation en courant plus importante (250-
µA pour une réponse toutes les 8 Secondes ; 20-mA pour une réponse toutes les secondes).
Dans le mode synchronisé demandant le moins d’alimentation, la CR200 initie toujours la communication. A l’exception du moment où la centrale sort de l’état de veille pour émettre, sa radio est éteinte et ne consomme pas de courant. La radio de la centrale de mesure hôte sera en mode entièrement actif durant la période où elle attend une communication en provenance du capteur, prête à recevoir et à répondre instantanément.
Exemple de programme de faible consommation pour capteur / contrôleur :
‘Exemple de programme pour capteur sans fil sur une CR200
Const MT = 20 ‘Temps de mesure (secs) du SDI-12; ici cela prend 20 ‘secondes
Const Port = 0
Const RouterAddr = 1
Const HostAddr = 1
Const NumVals = 8
‘Envoi des données vers : 0 = Radio, 1 = RS-232
‘Adresse PakBus d’un router, ici c’est la même adresse que ‘l’hôte
‘Adresse PakBus de la centrale de mesure hôte
‘8 mesures
Const Security = 0 ‘utiliser une valeur différente de zéro si l’hôte a un code de ‘sécurité qui est activé
Const NumControl = 4
Public Measurements(NumVals) ‘Valeurs du capteur, à envoyer
Public Control(NumControl)
Public Response
‘Valeurs de contrôle renvoyées par l’hôte
BeginProg
If TimeUntilTransmit(Port) = MT then ‘Si c’est le moment pour effectuer les ‘mesures de début, les mesures ‘applicables qui prennent MT secondes, sont ‘insérées ici
Endif
If TimeUntilTransmit(Port) = 0 then ‘c’est le moment pour communiquer
SendGetData(Response,Control(),Measurements(),Port,RouterAddr,HostAddr,Security)
Endif
NextScan
EndProg
TimeUntilTransmit(port) est une fonction qui donne comme résultat le nombre de secondes avant que ce soit le moment pour communiquer. Elle utilisera les informations reçues par la centrale de mesure afin de déterminer le temps qu’il reste avant la prochaine tentative de communication (via le marqueur de temps, time slot).
SendGetData(..) permettra d’envoyer une ligne de données vers la centrale de mesure hôte et de recevoir de cette centrale un marqueur de temps, une configuration de l’heure, et en option une ligne de données provenant de la centrale hôte. La ligne de donnée en entrée, en sortie ou bien les deux, peuvent être mises à la valeur « 0 », ce qui implique que le flux de données dans la direction associée, soit annulé.
Manuel de la CR200
Le paramètre HostAddr est l’adresse PakBus du « maître » (master) du réseau, l’endroit où les données du capteur sont envoyées. L’adresse du Router (RouterAddr) est l’adresse PakBus du router, si la distance est trop importante pour rejoindre l’hôte directement. Généralement il n’y a pas de router, donc cette adresse est identique à celle de l’hôte. Si cette adresse est fixée à 0, alors le système cherchera automatiquement un voisin par lequel il puisse rejoindre l’hôte. (cela n’était pas programmé lors de la première version de PakBus en Août 2002, donc pour l’instant cela doit
être vérifié avant utilisation).
A noter que toutes les communications avec la centrale de mesure hôte sont décrites dans l’instruction SendGetData. La fonction TimeUntilWireless() aura déterminé un marqueur de temps pour son exécution. Cette communication fixera les valeurs des variables dans l’hôte, et récupèrera une ligne de données provenant de l’hôte, ainsi qu’un marqueur de temps et une vérification de l’heure.
GetValue (ResponseDest, Dest, Swath, RemoteVar, Port, RemoteAddr, RepeatAddr, Security)
L’instruction GetValue est utilisée afin de recevoir une ou plusieurs valeurs en provenance de variables faisant partie du tableau de valeurs publiques (public table) d’une centrale de mesure distante, et de les placer dans des variables de la CR200.
Les paramètres RemoteVar et Swath sont utilisés afin de déterminer quelles valeurs seront rapatriées depuis la centrale de mesure hôte. RemoteVar est le nom de la variable sur la centrale de mesure distante, et le nombre de valeurs est spécifié dans le paramètre Swath. Si le paramètre
Swath est supérieur à la valeur « 1 », RemoteVar doit être une ligne de données.
Paramètres
& type de donnée
ResponseDest
Variable ou ligne de données
Entrée
C’est la variable dans laquelle sera stocké le code de réponse décrivant la transmission. Ce code indique si la transmission a eu lieu avec succès ou non.
Code Description
0
-1
-16
-17
Transmission réussie
Réponse reçue, mais permission refusée
Réponse reçue, mais RemoteVar n’est pas « public »
Réponse reçue, mais conversion de données impossible
1, 2.. n Nombre de « timeouts » avant d’avoir la réponse
La ligne de données dans laquelle stocker la variable reçue depuis la centrale de mesure distante. Le paramètre Dest doit avoir une taille supérieure ou égale au paramètre Swath.
Dest
Variable ou ligne de données
Swath
Constante
RemoteVar
Variable ou ligne de données
Le nombre de valeur à récupérer à partir de la centrale distante.
Port
Constante
La variable ou la ligne de données de la table « public » de la centrale de mesure distante, à partir desquelles on va prendre les valeurs. Si Swath est supérieur à 1, la variable doit être une ligne de données de dimension supérieure ou égale à celle de Swath.
Le port de communication utilisé pour communiquer avec l’appareil distant
Code Description
1 RF
2 RS-232
L’adresse Pakbus de la centrale distante.
RemoteAddr
Constante
RepeatAddr
Constante
Security
Constante
Adresse de la première centrale de mesure via laquelle la centrale de mesure doit passer, afin de communiquer avec le reste du réseau. S’il n’y a pas de « Repeater », on entre l’adresse de RemoteAddr.
Code de sécurité pour le réseau Pakbus.
10-2
Chapitre 10. Instructions pour communiquer d’une centrale de mesure à : une autre centrale / une radio / un capteur déporté
ReadSendGetInfo (Dest, Port)
L’instruction ReadSendGetInfo retourne l’intervalle et l’Offset de l’instruction SendGetData .
La centrale d’acquisition hôte ( typiquement une CR10X-PB, CR510-PB ou une CR23X-PB) procure le temps de transmission pendant lesquels la CR200 transmet les données.
Vous devez vous référer à l’instruction 193 dans le menu d’aide de Edlog pour de plus amples détails.
L’instruction ReadSendGetInfo a les paramètres suivants :
Entrée Paramètres
& type de donnée
Dest
Variable ou
Port
Constante
Le paramètre de Dest est un champ qui contient les résultats de l’instruction. Il doit être dimensionner en 2 pour contenir l’intervalle et l’offset de l’instruction SendGetData. Le résultat de l’intervalle est contenu dans Dest(1) et l’Offset dans Dest(2).
Les ports de communication qui doivent être utilisés avec le dispositif à distance
Code Description
1
2
RF
RS-232
SendGetData (ResponseDest, Control, Measurement, Port, HostAddr, RepeatAddr, Security)
L’instruction SendGetData est utilisée sur une centrale d’acquisition distante, afin de d’envoyer une ligne de donnée à une centrale de mesure hôte, et/ou afin de recevoir une ligne de données depuis cette centrale.
L’instruction SendGetData enverra une ligne de données de mesure vers la centrale de mesure hôte et recevra un marqueur de temps, une configuration de l’horloge et si cela est demandé (en option) une ligne de données de valeurs provenant de l’hôte. La ligne de donnée Control ou
Measurement (ou les deux) peut être mise à « 0 », indiquant qu’il n’y aura pas de flux de données dans le sens indiqué.
Le paramètre de HostAddr, est l’adresse Pakbus du « maître » (master) du réseau, là où les données du capteur sont envoyées. L’adresse RouterAddr, est l’adresse Pakbus du router, dans le cas où la distance est trop importante pour relier la centrale de mesure hôte directement. Le plus souvent il n’y a pas de router, et l’adresse sera identique à HostAddr. Si la valeur de l’adresse est
0, alors le système trouvera automatiquement un voisin par lequel il atteindra la centrale hôte. (cela n’était pas programmé lors de la version PakBus en juillet 2007, donc pour l’instant cela doit être vérifié avant utilisation).
On note que toutes les communications avec la centrale de mesure hôte, sont décrites dans cette instruction. L’instruction TimeUntilTransmit a déterminé un marqueur de temps (time slot) pour elle. Cette communication fixera une variable à l’intérieure de l’hôte et récupèrera une ligne de données de variables depuis l’hôte, ainsi qu’un marqueur de temps et une configuration de l’horloge.
10-3
Manuel de la CR200
Paramètres
& type de donnée
ResponseDest
Variable ou ligne de données
Control
Variable ou ligne de données
Measurement
Variable ou ligne de données
Port
Constante
HostAddr
RouterAddr
Security
Constante
Entrée
C’est la variable dans laquelle sera stocké le code de réponse décrivant la transmission. Ce code indique si la transmission a eu lieu avec succès ou non.
Code Description
0
-1
-2
1, 2.. n
Transmission réussie
Réponse reçue, mais permission refusée
Réponse reçue, mais pas assez de ressources disponibles
Nombre de « timeouts » avant d’avoir la réponse
Le paramètre de Control, est une variable ou la ligne de données variable dans lequel la ligne de données sera stocké dans la centrale de mesure hôte,. Si on le met à 0, aucune valeur ne sera stockée.
Le paramètre Measurement est la variable ou la ligne de données de variables qui sera transmise à la centrale de mesure hôte. Si on lui donne la valeur 0, aucune valeur n’est transmise.
Le port de communication utilisé pour communiquer avec l’appareil distant
Code Description
1
2
RF
RS-232
L’adresse Pakbus de la centrale de mesure hôte.
Cette adresse est utilisée afin de spécifier l’adresse d’un router sur le réseau Pakbus, par laquelle la centrale de mesure doit passer, afin de communiquer avec le reste du réseau. S’il n’y a pas de router, on entre alors l’adresse de HostAddr.
Code de sécurité pour le réseau Pakbus.
SetValue
(ResponseDest, Source, Swath, RemoteVar, Port, RemoteAddr, RepeatAddr, Security)
L’instruction SetValue est utilisée afin de fixer les valeurs de une ou plusieurs variables, à l’intérieur du tableau des valeurs publiques d’une centrale de mesure distante.
Les paramètres source et Swath, sont utilisés afin de déterminer quelles valeurs seront envoyées à la centrale de mesure distante. La source est la ligne de données variable de la CR200, qui contient les variables, et le nombre de valeurs est spécifié dans le paramètre Swath. Si le paramètre Swath est supérieur à 1, RemoteVar doit être une ligne de données.
10-4
Chapitre 10. Instructions pour communiquer d’une centrale de mesure à : une autre centrale / une radio / un capteur déporté
Paramètres
& type de donnée
ResponseDest
Variable ou ligne de données
Source
Variable ou ligne de données
Swath
Constante
RemoteVar
Variable ou ligne de données
Port
Constante
RemoteAddr
Constante
RepeatAddr
Constante
Security
Constante
Entrée
C’est la variable dans laquelle sera stocké le code de réponse décrivant la transmission. Ce code indique si la transmission a eu lieu avec succès ou non.
Code Description
0
- 1
-16
-17
1, 2.. n
Transmission réussie
Réponse reçue, mais permission refusée
Réponse reçue, mais RemoteVar n’existe pas
Réponse reçue, mais conversion de données impossible
Nombre de « timeouts » avant d’avoir la réponse
Le paramètre de Source, est la ligne de données variable dans laquelle seront stockées les valeurs envoyées à la centrale de mesure distante.
Le paramètre Swath indique le nombre de valeurs qui seront transmises à la centrale de mesure distante.
RemoteVar est utilisée afin de spécifier la variable (ligne de données) de la centrale de mesure distante, dans laquelle on enverra les valeurs.
Le port de communication utilisé pour communiquer avec l’appareil distant ; on entre un code numérique :
Code Description
1
2
RF
RS-232
L’adresse Pakbus de la centrale de mesure distante.
Cette adresse est utilisée afin de spécifier l’adresse d’un «relais »
(repeater) sur le réseau Pakbus, par lequel la centrale de mesure doit passer, afin de communiquer avec la centrale de mesure distant n’y a pas de relais, on entre alors l’adresse de RemoteAddr.
Code de sécurité pour le réseau Pakbus. e. S’il
TimeUntilTransmit(port)
La fonction TimeUntilTransmit donne comme résultat le nombre de secondes qu’il reste avant la prochaine communication. Elle utilise des informations reçues par la centrale de mesure hôte, afin de déterminer le temps qu’il reste avant le marqueur de temps qui est défini pour la communication.
Entrée Paramètres
& type de donnée
Port
Constante
C’est le port d programmée e communication sur lequel la communication est
Code Port de communication
1
2
RF
RS-232
10-5
10-6
Manuel de la CR200
Annexe A. Mode terminal pour CR200/SDI12
La CR200 dispose d’une interface de terminale simple, à laquelle on peut accéder à partir d’un PC et d’un émulateur de terminal tel que ; ceux que l’on trouve avec PC200W, PC400 ou LoggerNet.
Une des options du mode terminal de la CR200 est celle qui permet d’entrer en mode SDI12 transparent, ce qui permet de passer des commandes entrées au clavier de l’ordinateur, directement vers l’appareil SDI12 connecté à la CR200.
Pour effectuer cela on connecte un câble série entre l’ordinateur/terminal et la CR200. On configure le terminal pour qu’il communique sur le port COM à 9600 baud, puis on appuie 4 fois sur la touche entrée (carriage return) afin d’entrer en mode terminal. La CR200 répondra par :
^ ^ ^ ^
CR2xx>
La CR200 sortira du mode terminal si elle ne reçoit pas de commandes dans les 12 secondes qui suivent l’entrée en mode terminal.
Pour entrer une commande il faut entrer la commande puis taper sur entrée (carriage return). Les commandes sont les suivantes :
1
2
Commandes Action (ce qui se produit)
A Informations sur le paramètre Trap Code 16
« Done » = mémoire OK
« 2005-7-14 13 :56 :6=13 » veut dire qu’il y a eu un problème détecté sur la mémoire (code 16), à la date mentionnée.
NOTE : Lorsqu’un code 16 est obtenu pour Trap Code, la centrale de mesure arrête d’exécuter le programme et la LED rouge clignote deux fois à chaque intervalle de scrutation supposé.
Lorsqu’il y a un code 16 en Trap Code, il faut remplacer la mémoire de la CR200 (en usine).
3
Affiche l’horloge (l’heure actuelle)
Met à jour l’heure (après la mise à jour on sort du mode terminal)
Codes d’état (Status Codes)
7
8
5
6
9
SDI12
Tableau des valeurs Public (valeurs en temps réel)
Données les plus récentes du tableau 1
Données les plus récentes du tableau 2
Données les plus récentes du tableau 3
Données les plus récentes du tableau 4
Entre en mode terminal SDI12 et garde ce mode actif
A-1
A-2
Annexe B. Centrale de mesure CR295
Le jeu d’instructions pour le CR295 ajoute les instructions CRBasic suivantes, afin de communiquer avec le transmetteur HDR GOES de Campbell Scientific. La CR295 ne permet pas de faire de la communication radio, ni le calcul de l’évapotranspiration. Elle n’est pas conforme aux normes CE (et GOES n’est accessible que sur la zone Américaine).
Figure B-1 Centrale CR295.
GOESData (Dest, Table, TableOption, BufferControl, DataFormat)
L’instruction GOESData est utilisée afin de transmettre les données vers le transmetteur de données satellite SAT HDR GOES ou le transmetteur satellite TX312. L’instruction GOESData n’est pas incorporée à la déclaration du tableau de données, elle est incluse au programme, typiquement dans la boucle de scrutation (scan).
Le transfert de données vers le transmetteur peut advenir au travers du port CS I/O de la centrale de mesure uniquement. L’instruction GOESData a les paramètres suivants :
Note:
Lorsque la centrale de mesure envoie une commande, les tâches de traitement suivantes ne seront effectuées qu’une fois qu’une réponse sera reçue du transmetteur HDR GOES.
B-1
B-2
Manuel de la CR200
Paramètre
& Type de
donnée
Dest
Variable ou
Ligne de
données
Table
Nom du tableau
TableOption
Constante
Entrée
La variable qui contient un code de résultat pour la transmission. Les codes sont :
Code de
Résultat
0
2
3
4
Description
Commande exécutée avec succès
Temporisation dépassée pour attendre le caractère STX provenant du transmetteur, après l’adressage SDC
Mauvais caractère reçu après l’adressage SDC
Autre chose que “ACK” a été retourné quand la commande “select data buffer” (sélectionner la mémoire tampon de données) a été exécutée
5
6
Temporisation dépassée pour attendre le caractère ACK
Le port CS I/O n’est pas disponible
7
Message aléatoire d’erreur de transmission (peut être qu’il n’y a pas de données dans la mémoire tampon)
Le tableau de données à partir duquel les enregistrements devraient être transmis.
BufferControl
Constante
DataFormat
Constante
TableOption indique quels enregistrements devraient être envoyés à partir du tableau de données.
Code Description
0 Envoyer tous les enregistrements depuis la dernière exécution
1
Envoyer uniquement les enregistrements sauvegardés le plus récemment dans le tableau
Le paramètre BufferControl spécifie quelle mémoire tampon devrait être utilisée (aléatoire ou autotemporisé - random or self-timed) ainsi que si les données devraient être écrasées ou ajoutées aux données existantes. Les données enregistrées dans la mémoire tampon auto-temporisée ne sont transmises que lorsqu’il y a une fenêtre de temps prédéterminée. Les données sont effacées de la mémoire tampon du transmetteur après chaque transmission. Les données de la mémoire tampon aléatoire sont transmises immédiatement après que le seuil soit dépassé. La transmission est répétée de façon aléatoire afin de s’assurer qu’elle soit bien reçue.
Code Description
0 Ajouter à la mémoire tampon auto-temporisée
1
2
Ecraser la mémoire tampon auto-temporisée
Ajouter à la mémoire tampon aléatoire
3
9
Ecraser la mémoire tampon aléatoire
Nettoyer la mémoire tampon aléatoire
Le paramètre DataFormat spécifie le format de la donnée envoyée au transmetteur
4
5
6
7
8
Code Description
0 Format FP2 de CSI; 3 octets (bytes) par point de donnée
1
2
ASCII à virgule flottante; 7 octets (bytes) par point de donnée
Entier binaire à 18-bit; 3 octets (bytes) par point de donnée, les nombre à la droite de la décimale sont tronqués
3 RAWS7; 7 points de donnée :
Points de donnée
1
Description
Pluviométrie totale en “inches”, format = xx.xxx
Vitesse du vent en “MPH”, format = xxx 2
3
4
Vecteur moyen de la direction du vent en degrés, format = xxx
Température de l’air en °F, format = xxx
5
6
Pourcentage d’HR, format = xxx
Température du combustible en °F , format = xxx
7 Tension batterie en V CC, format = xx.x
ASCII à décimale pré-positionnée de type xxx.x
ASCII à décimale pré-positionnée de type xx.xx
ASCII à décimale pré-positionnée de type x.xxx
ASCII à décimale pré-positionnée de type xxx
ASCII à décimale pré-positionnée de type xxxxx
GOESGPS (GoesArray1(6), GoesArray2(7) )
L’instruction GOESGPS est utilisée afin de stocker dans des lignes de données variables, les données du GPS provenant du satellite.
La syntaxe est :
GOESGPS (GoesArray1(6), GoesArray2(7) )
Remarques :
L’instruction GOESGPS donne pour réponse deux lignes de données. La première ligne de donnée, qui doit avoir une dimension de 6 éléments, contient le code de résultat indiquant si l’instruction a été exécutée avec succès, suivie par les informations de positionnement global.
Les codes de résultat sont ceux qui suivent :
Code Description
0 Commande exécutée avec succès
2
3
4
Temporisation dépassée pour attendre le caractère STX provenant du transmetteur, après l’adressage SDC
Mauvais caractère reçu après l’adressage SDC
Autre chose que “ACK” a été retourné quand la commande “select data buffer”
(sélectionner la mémoire tampon de données) a été exécutée
5
6
7
Temporisation dépassée pour attendre le caractère ACK
Le port CS I/O n’est pas disponible; GOES n’est pas connecté
ACK n’est pas renvoyé après la commande d’ajout ou re remplacement des données
Les valeurs des données du GPS sont de la forme suivante :
Valeur Description
Temps - Time Secondes depuis le 1er janvier 2000
Latitude
Longitude
Altitude - Elevation
Variation magnétique -
Magnetic Variation
Fraction de degrés; résolution de 100 nanodegrés
Fraction de degrés; résolution de 100 nanodegrés
Nombre signé à 32-bit, en centimètres
Fraction de degrés; résolution de 1 millidegré
La seconde ligne de données, qui doit avoir une taille de 7 éléments, contient les valeurs de temps suivantes : année, mois, jour, heure (GMT), minutes, secondes, microsecondes.
GOESSetup (ResultCode, PlatformID, MsgWindow, STChannel, STBaud, RChannel,
RBaud, STInterval, STOffset, RInterval)
L’instruction GOESSetup est utilisée afin de programmer le transmetteur GOES afin qu’il communiqué avec le satellite.
La Syntaxe est :
GOESSetup (ResultCode, PlatformID, MsgWindow, STChannel, STBaud, RChannel, RBaud,
STInterval, STOffset, RInterval)
Remarques :
Etant donné que le but de cette instruction est de configurer le transmetteur pour la communication, elle ne devra être exécutée qu’une seule fois à l’intérieur du programme de la centrale de mesure. Les informations pour tous les paramètres de cette instruction sont fournies par
NESDIS.
Reportez-vous à l’éditeur CRBasic ou au manuel de SATHDRGOES afin d’avoir plus de détails sur cette instruction.
GOESStatus (Dest, StatusCommand)
L’instruction GOESStatus est utilisée afin de demander les informations d’état et de diagnostique en provenance du transmetteur pour satellite SAT HDR GOES.
Note:
Lorsque la centrale de mesure envoie une commande, les tâches de traitement supplémentaires ne seront effectuées qu’après que le transmetteur HDR GOES ait envoyé une réponse.
B-3
B-4
Manuel de la CR200
Paramètres
& type de donnée
Dest
Ligne de données
StatusCommand
Constante
Entrée
Une ligne de données qui contiendra les codes de résultat renvoyés par le transmetteur.
La taille de la ligne de données est déterminée par l’option choisie dans
StatusCommand.
Code
Description
0 Commande exécutée avec succès
1
2
Erreur de Checksum dans la réponse
Temporisation dépassée pour attendre le caractère STX provenant du transmetteur, après l’adressage SDC
5
6
3
4
7
Mauvais caractère (différent de STX) reçu après l’adressage SDC
En train de recevoir un « NAK »
Temporisation dépassée pour attendre le caractère ACK
Le port CS I/O n’est pas disponible
Message aléatoire d’erreur de transmission (peut être qu’il n’y a pas de données)
9
StatusCommand spécifie le type d’information demandée par le transmetteur.
Code Description
0
2
3
4
5
6
Temps réel - Read time
Etat du dernier message
Transmet un message aléatoire
Lire le registre des erreurs
Ré-initialise le registre des erreurs
Remet le transmetteur en mode “en ligne”
Taille de la ligne de donnée nécessaire
4
13
14
1
10
1
1
Annexe C. Mise en garde de conformité sur les émissions radio
Les changements effectuée aux systèmes radio de la CR200 sans l’accord préalable de Campbell
Scientific, peuvent engendrer la non conformité à l’utilisation du produit par l’utilisateur.
Merci de vous conformer aux réglementations locales pour les télécommunications (ART en
France, ou FCC aux USA).
C-1
C-2
Manuel de la CR200
LISTE DES AGENCES CAMPBELL SCIENTIFIC DANS LE MONDE
Campbell Scientific, Inc.(CSI)
815 West 1800 North
Logan, Utah 84321
ETATS UNIS www.campbellsci.com
Campbell Scientific Africa Pty. Ltd. (CSAf)
PO Box 2450
Somerset West 7129
AFRIQUE DU SUD www.csafrica.co.za
Campbell Scientific Australia Pty. Ltd. (CSA)
PO Box 444
Thuringowa Central
QLD 4812 AUSTRALIE www.campbellsci.com.au
Campbell Scientific do Brazil Ltda. (CSB)
Rua Luisa Crapsi Orsi, 15 Butantã
CEP: 005543-000 São Paulo SP BREZIL www.campbellsci.com.br
Campbell Scientific Canada Corp. (CSC)
11564 – 149th Street NW
Edmonton, Alberta T5M 1W7
CANADA www.campbellsci.ca
Campbell Scientific Ltd. (CSL)
Campbell Park
80 Hatern Road
Shepshed, Loughborough LE12 9GX
GRANDE BRETAGNE www.campbellsci.co.uk
Campbell Scientific Ltd. (France)
Miniparc du Verger – Bat. H
1, rue de terre Neuve – Les Ulis
91967 COURTABOEUF CEDEX
FRANCE www.campbellsci.fr
Campbell Scientific Spain, S. L.
Psg. Font 14, local 8
08013 Barcelona
Espagne www.campbellsci.es
Campbell Scientific Ltd. (Allemagne)
Fahrenheistrasse1, D-28359 Bremen
Allemagne www.campbellsci.de

Öffentlicher Link aktualisiert
Der öffentliche Link zu Ihrem Chat wurde aktualisiert.