Vous êtes sur la page 1sur 628

Généralités sur le SCADA Basic _____________________________________________________________ 10

Généralités sur cet Aide ___________________________________________________________________ 11


Mise au Point des Programmes _____________________________________________________________ 12
Généralités sur la Fenêtre d'Edition _________________________________________________________ 14
La Barre d'Outils de l'Editeur _______________________________________________________________ 16
Utilisation de Mots Clés et Complétion Automatique ___________________________________________ 17
Fonctions d'Insertion Spéciale ______________________________________________________________ 18
Navigation dans le Fichier Programme _______________________________________________________ 19
Lecture et Vérification de Programmes _______________________________________________________ 20
Quelques Conseils sur le SCADA Basic ________________________________________________________ 21
Exécution d'un Programme SCADA Basic _____________________________________________________ 22
Structure des Programmes_________________________________________________________________ 24
Les Fonctions____________________________________________________________________________ 25
Le Programme Global_____________________________________________________________________ 27
Les variables de l'Arbre des Variables ________________________________________________________ 28
Les Variables Temporaires _________________________________________________________________ 30
Les Variables de Travail ___________________________________________________________________ 31
Généralités sur les Opérateurs _____________________________________________________________ 33
Les Opérateurs Logiques __________________________________________________________________ 34
Les Opérateurs Arithmétiques ______________________________________________________________ 35
Généralités sur la Classification des Instructions _______________________________________________ 36
Arbre des variables_______________________________________________________________________ 38
Communication _________________________________________________________________________ 39
Conversion de Données ___________________________________________________________________ 40
Debug _________________________________________________________________________________ 41
Déclaration _____________________________________________________________________________ 42
Divers _________________________________________________________________________________ 43
Données Historiques______________________________________________________________________ 44
Entrées/Sorties __________________________________________________________________________ 45
Exécution de Programmes _________________________________________________________________ 46
Fenêtres _______________________________________________________________________________ 47
Fonctions Mathématiques _________________________________________________________________ 48
Gestion de Buffer ________________________________________________________________________ 49
Gestion de Fichiers _______________________________________________________________________ 50

SV_SCADABasic_fr 1
Heure et Date ___________________________________________________________________________ 51
IHM ___________________________________________________________________________________ 52
Manipulation de Chaînes de Caractères ______________________________________________________ 53
Structuration de Programmes ______________________________________________________________ 54
ACOS __________________________________________________________________________________ 55
ADDSTRING _____________________________________________________________________________ 56
ALARM ________________________________________________________________________________ 57
ALARMDISPLAY _________________________________________________________________________ 63
ALLOC_BUFFER __________________________________________________________________________ 73
ANIMATION ____________________________________________________________________________ 74
APPLICATION ___________________________________________________________________________ 75
ASC ___________________________________________________________________________________ 77
ASCIIFIELD ______________________________________________________________________________ 78
ASIN___________________________________________________________________________________ 80
ASSOCIATEDACTIONS _____________________________________________________________________ 81
ASSOCLABEL ____________________________________________________________________________ 82
ATAN __________________________________________________________________________________ 83
BACNET ________________________________________________________________________________ 84
BEEP __________________________________________________________________________________ 89
BIN____________________________________________________________________________________ 90
BREAK _________________________________________________________________________________ 91
BUFTOEXCEL ____________________________________________________________________________ 92
BUFTOFILE______________________________________________________________________________ 93
CAPTION _______________________________________________________________________________ 95
CGET_BUFFER ___________________________________________________________________________ 96
CHART _________________________________________________________________________________ 97
CHECKLIST _____________________________________________________________________________ 107
CHR __________________________________________________________________________________ 111
CIMWAY ______________________________________________________________________________ 112
CMPSTRING ___________________________________________________________________________ 118
COMBOBOX ___________________________________________________________________________ 119
CONST ________________________________________________________________________________ 122
CONVERT______________________________________________________________________________ 123
COPY_BUFFER __________________________________________________________________________ 125
COS __________________________________________________________________________________ 126

SV_SCADABasic_fr 2
CRONTAB _____________________________________________________________________________ 127
CYCLIC ________________________________________________________________________________ 131
DATETIME _____________________________________________________________________________ 135
DATETIMESTRING _______________________________________________________________________ 136
DATETIMEVALUE _______________________________________________________________________ 137
DDE __________________________________________________________________________________ 139
DDECONV _____________________________________________________________________________ 142
DECLARE FUNCTION / DECLARE SUB ________________________________________________________ 144
DELAY ________________________________________________________________________________ 145
DGET_BUFFER __________________________________________________________________________ 146
DIM __________________________________________________________________________________ 147
DVAL _________________________________________________________________________________ 149
EMAIL ________________________________________________________________________________ 150
ERROR ________________________________________________________________________________ 153
EVENT ________________________________________________________________________________ 155
EXCELTOBUF ___________________________________________________________________________ 161
EXP __________________________________________________________________________________ 162
EXPORT _______________________________________________________________________________ 163
EXPORT_LOG __________________________________________________________________________ 165
EXPORT_TREND ________________________________________________________________________ 170
EXPRESSION ___________________________________________________________________________ 174
FCLOSE _______________________________________________________________________________ 176
FCOPY ________________________________________________________________________________ 177
FEOF _________________________________________________________________________________ 178
FGETC ________________________________________________________________________________ 179
FGETS ________________________________________________________________________________ 180
FILETOBUF_____________________________________________________________________________ 181
FMOVE _______________________________________________________________________________ 183
FOPEN ________________________________________________________________________________ 184
FOR ... NEXT ___________________________________________________________________________ 185
FORMAT ______________________________________________________________________________ 186
FORMULA _____________________________________________________________________________ 188
FPUTC ________________________________________________________________________________ 190
FPUTS ________________________________________________________________________________ 191
FREAD ________________________________________________________________________________ 192

SV_SCADABasic_fr 3
FREE_BUFFER __________________________________________________________________________ 193
FSEEK _________________________________________________________________________________ 194
FSTAT ________________________________________________________________________________ 195
FTP___________________________________________________________________________________ 196
FWRITE _______________________________________________________________________________ 199
GETARG _______________________________________________________________________________ 200
GETPROJECTDIR ________________________________________________________________________ 203
GETTREE ______________________________________________________________________________ 204
GROUPALARM _________________________________________________________________________ 205
HARDCOPY ____________________________________________________________________________ 206
HEX __________________________________________________________________________________ 208
HISTORY ______________________________________________________________________________ 209
IF...THEN...ELSE...END IF__________________________________________________________________ 216
IGET_BUFFER __________________________________________________________________________ 217
IRAND ________________________________________________________________________________ 218
IVAL __________________________________________________________________________________ 219
KEY __________________________________________________________________________________ 220
LAN __________________________________________________________________________________ 224
LANGUAGE ____________________________________________________________________________ 231
LCASE_________________________________________________________________________________ 232
LEFT __________________________________________________________________________________ 233
LEN __________________________________________________________________________________ 234
LGET_BUFFER __________________________________________________________________________ 235
LISTBOX _______________________________________________________________________________ 236
LOG __________________________________________________________________________________ 239
LOGDISPLAY ___________________________________________________________________________ 240
LOGICAL ______________________________________________________________________________ 248
LOGICAL64 ____________________________________________________________________________ 249
LONWORKS ____________________________________________________________________________ 251
LPRINT ________________________________________________________________________________ 253
LTRIM ________________________________________________________________________________ 254
LVAL _________________________________________________________________________________ 255
M104 _________________________________________________________________________________ 256
M61850 _______________________________________________________________________________ 260
MAPDISPLAY ___________________________________________________________________________ 263

SV_SCADABasic_fr 4
MDNP3 _______________________________________________________________________________ 269
MID __________________________________________________________________________________ 274
MULTIMEDIA __________________________________________________________________________ 275
OCT __________________________________________________________________________________ 277
OPC __________________________________________________________________________________ 278
OPTIONLIST ____________________________________________________________________________ 281
POPULATION___________________________________________________________________________ 285
POW _________________________________________________________________________________ 287
PRINT ________________________________________________________________________________ 288
PRINTER ______________________________________________________________________________ 289
PROGRAM _____________________________________________________________________________ 291
PUT_BUFFER ___________________________________________________________________________ 293
RECIPE ________________________________________________________________________________ 294
REFRESH_DB ___________________________________________________________________________ 300
REGION _______________________________________________________________________________ 302
REGVAR2D ____________________________________________________________________________ 304
RENAME ______________________________________________________________________________ 305
REPLACE ______________________________________________________________________________ 306
RETURN _______________________________________________________________________________ 307
RIGHT ________________________________________________________________________________ 308
RTRIM ________________________________________________________________________________ 309
SELECTOR _____________________________________________________________________________ 310
SELECTOR mode HISTORICAL ______________________________________________________________ 318
SENDLIST ______________________________________________________________________________ 322
SEQ_BUFFER ___________________________________________________________________________ 324
SET ___________________________________________________________________________________ 328
SGET_BUFFER __________________________________________________________________________ 329
SIN ___________________________________________________________________________________ 330
SMS __________________________________________________________________________________ 331
SNMP ________________________________________________________________________________ 332
SPACE ________________________________________________________________________________ 335
SQRT _________________________________________________________________________________ 336
STATION_FILTER ________________________________________________________________________ 337
STOP _________________________________________________________________________________ 339
STRING _______________________________________________________________________________ 340

SV_SCADABasic_fr 5
SUB...ENDSUB __________________________________________________________________________ 341
SVAL _________________________________________________________________________________ 342
SVALA ________________________________________________________________________________ 343
SVBATCH ______________________________________________________________________________ 345
SVBRANCH ____________________________________________________________________________ 354
SVKEY ________________________________________________________________________________ 357
SVLOG ________________________________________________________________________________ 359
SVSQL ________________________________________________________________________________ 361
SVTREND ______________________________________________________________________________ 367
SYSTEM _______________________________________________________________________________ 370
TAN __________________________________________________________________________________ 377
TEMPORARY_DB________________________________________________________________________ 378
TEXTVAR ______________________________________________________________________________ 380
TOC __________________________________________________________________________________ 383
TOD __________________________________________________________________________________ 384
TODOUBLE ____________________________________________________________________________ 385
TOHMS _______________________________________________________________________________ 386
TOI ___________________________________________________________________________________ 387
TOL __________________________________________________________________________________ 388
TOLL _________________________________________________________________________________ 389
TOS __________________________________________________________________________________ 390
TRACE ________________________________________________________________________________ 391
TRACEON/TRACEOFF ____________________________________________________________________ 392
TREE _________________________________________________________________________________ 393
TREEVIEW _____________________________________________________________________________ 394
TREND ________________________________________________________________________________ 397
UCASE ________________________________________________________________________________ 410
UNLINK _______________________________________________________________________________ 411
VARIABLE _____________________________________________________________________________ 412
WEBVUE ______________________________________________________________________________ 426
WHILE...WEND _________________________________________________________________________ 431
WINDOW _____________________________________________________________________________ 432
XMLPATH _____________________________________________________________________________ 439
Généralités sur les Exemples ______________________________________________________________ 443
Exemple ALARMDISPLAY _________________________________________________________________ 444

SV_SCADABasic_fr 6
Exemple APPLICATION ___________________________________________________________________ 446
Exemple ASCIIFIELD _____________________________________________________________________ 449
Exemple ASSOCLABEL ____________________________________________________________________ 452
Exemple BACNET _______________________________________________________________________ 453
Exemple BUFTOFILE _____________________________________________________________________ 455
Exemple CGET_BUFFER __________________________________________________________________ 456
Exemple CHECKLIST _____________________________________________________________________ 457
Exemple CHECKLIST _____________________________________________________________________ 459
Exemple CIMWAY _______________________________________________________________________ 461
Exemple CMPSTRING ____________________________________________________________________ 463
Exemple COMBOBOX ____________________________________________________________________ 464
Exemple CONVERT ______________________________________________________________________ 466
Exemple COPY_BUFFER __________________________________________________________________ 468
Exemple CRONTAB ______________________________________________________________________ 469
Exemple CYCLIC_________________________________________________________________________ 470
Exemple DATETIME _____________________________________________________________________ 472
Exemple DDE___________________________________________________________________________ 475
Exemple DDECONV ______________________________________________________________________ 478
Exemples DECLARE ______________________________________________________________________ 480
Exemple DIM___________________________________________________________________________ 481
Exemple EMAIL _________________________________________________________________________ 482
Exemple EVENT _________________________________________________________________________ 483
Exemple EXCELTOBUF ___________________________________________________________________ 485
Exemple EXPORT _______________________________________________________________________ 486
Exemple EXPORT_LOG ___________________________________________________________________ 487
Exemple EXPORT_TREND _________________________________________________________________ 490
Exemple EXPRESSION ____________________________________________________________________ 493
Exemple FCLOSE et FOPEN ________________________________________________________________ 495
Exemple FCOPY _________________________________________________________________________ 496
Exemple FMOVE ________________________________________________________________________ 497
Exemple FORMAT _______________________________________________________________________ 498
Exemple FORMULA______________________________________________________________________ 499
Exemple FPUTC _________________________________________________________________________ 501
Exemple FPUTS _________________________________________________________________________ 502
Exemple FSEEK _________________________________________________________________________ 503

SV_SCADABasic_fr 7
Exemple FTP ___________________________________________________________________________ 504
Exemple GETARG _______________________________________________________________________ 505
Exemple HARDCOPY _____________________________________________________________________ 511
Exemple HISTORY _______________________________________________________________________ 512
Exemple LAN Configuration Multipostes ____________________________________________________ 514
Exemple LANGUAGE _____________________________________________________________________ 516
Exemple LISTBOX _______________________________________________________________________ 517
Exemple LOGDISPLAY ____________________________________________________________________ 519
Exemple LOGICAL _______________________________________________________________________ 522
Exemple MULTIMEDIA ___________________________________________________________________ 525
Exemple OPTIONLIST ____________________________________________________________________ 526
Exemple POPULATION ___________________________________________________________________ 528
Exemple PRINTER _______________________________________________________________________ 529
Exemple PROGRAM _____________________________________________________________________ 531
Exemple RECIPE ________________________________________________________________________ 533
Exemple REGION _______________________________________________________________________ 534
Exemple RETURN _______________________________________________________________________ 535
Exemple SELECTOR ______________________________________________________________________ 536
Exemple SEQ_BUFFER ___________________________________________________________________ 544
Exemple STATION_FILTER ________________________________________________________________ 550
Exemple SUBENDSUB ____________________________________________________________________ 551
Exemple SVALA Information d'Alarme ______________________________________________________ 552
Exemple Extraction SVLOG________________________________________________________________ 557
Exemple Base de Données SVSQL __________________________________________________________ 559
Exemple Données SVTREND _______________________________________________________________ 562
Exemple Information SYSTEM _____________________________________________________________ 567
Exemple TEMPORARY_DB ________________________________________________________________ 572
Exemple TEXTVAR ______________________________________________________________________ 573
Exemple TREEVIEW _____________________________________________________________________ 576
Exemple Affichage TREND ________________________________________________________________ 578
Exemple VARIABLE ______________________________________________________________________ 579
Exemple WEBVUE _______________________________________________________________________ 585
Exemple WINDOW ______________________________________________________________________ 586
Exemple XMLPATH ______________________________________________________________________ 590
Mots Réservés _________________________________________________________________________ 593

SV_SCADABasic_fr 8
Codes de Touches de Fonctions ____________________________________________________________ 595
Définition d'une Population _______________________________________________________________ 597
Encodage de Message ___________________________________________________________________ 598
Expressions de Filtres ____________________________________________________________________ 599
Expressions Régulières ___________________________________________________________________ 600
Format du Buffer de Paramètre pour Alarmes ________________________________________________ 602
Format du Buffer de Paramètre pour Consignations ___________________________________________ 604
Format du Buffer de Recette ______________________________________________________________ 605
Format du Rapport d'Import de Variable ____________________________________________________ 606
Paramètres d'Objets de Communication_____________________________________________________ 607
Poids des Droits d'Accès __________________________________________________________________ 610
Maintenance des Actions Associées par Programme ___________________________________________ 612
Maintenance des Actions Evénementielles par Programme _____________________________________ 615
Masquage par Programme _______________________________________________________________ 616
Masques d'Evénements __________________________________________________________________ 617
Mode d'envoi SENDLIST __________________________________________________________________ 619
Mode Réseau de SVBATCH________________________________________________________________ 621
Modification du Son joué par WEBVUE Mode MULTIMEDIA _____________________________________ 622
Structures des Données Batch _____________________________________________________________ 623
Suppression d'une Variable, Tendance ou Expression __________________________________________ 625
Utilisation des Branches dans les Programmes _______________________________________________ 626
Variables de Conditions __________________________________________________________________ 627

SV_SCADABasic_fr 9
Généralités sur le SCADA Basic
Voir aussi
Les programmes utilisateur sont écrits dans un langage propriétaire appelé SCADA Basic. SCADA Basic est
un langage interprété structuré en bloc avec une syntaxe proche du standard industriel Basic.
Un projet peut être configuré pour lancer des programmes de différentes façons :

• Au démarrage.
• Sur changements de valeur de variables.
• Cycliquement.
• A partir du clavier.
• A partir de zones de contrôle de l'écran.
• Pour appeler d'autres programmes.

SV_SCADABasic_fr 10
Généralités sur cet Aide
Voir aussi

Table des matières


Dans la table des matières de cet aide, les instructions sont classées dans le chapitre Instructions par
catégories (par type d'instruction) et par ordre alphabétique (par exemple ACOS).

Navigation et recherche dans l'aide


Vous pouvez également localiser les chapitres par les manières suivantes :

• Cliquer sur le lien 'Voir aussi' dans un chapitre pour ouvrir un autre chapitre en relation.
• Sélectionner un mot clé ou une phrase dans l'index ; double-cliquer ou cliquer sur le bouton Afficher.
• Saisir un mot ou une phrase dans l'onglet Rechercher et sélectionner Liste des rubriques ; double-
cliquer dans une ligne ou en sélectionner une et cliquer sur Afficher.

SV_SCADABasic_fr 11
Mise au Point des Programmes
Voir aussi
Les fichiers de programmes peuvent être créés, débogués et testés en ligne en utilisant les possibilités de
la boîte de dialogue Mise au point des Programmes. Cette dernière est affichée soit par la commande
Programmes du sous-menu Actions, soit par la touche F9. Les programmes sont sauvegardés dans des
fichiers texte dans le répertoire "P" de votre projet.
La boîte de dialogue des programmes est organisée en plusieurs zones distinctes :Voir l'image

La zone de Résultats
La zone de résultats se trouve dans le haut de la boîte de dialogue et affiche les messages des
programmes (instruction PRINT), les messages de trace des programmes et les erreurs de syntaxe.

• Montrer résultats - Affiche les résultats.


• Effacer les résultats - Efface les résultats.
• Suivi - Affiche la fenêtre de suivi.
• Défilement - Cette case à cocher active le fil de l'eau (scrolling) des messages affichés dans la zone
de résultat.

La zone des Données et Fonctions globales et celles des Programmes


Ces deux zones sont similaires en apparence et en fonctionnement, excepté que l'une traite des
déclarations des programmes globaux et que l'autre de tous les autres programmes.

• Un programme peut être sélectionné soit en tapant son nom soit en ouvrant la boîte de dialogue
Ouvrir programme et en choisissant son nom dans la liste des programmes existants. Un nouveau
programme peut être créé en tapant un nouveau nom, et en cliquant sur le bouton d'édition pour le
créer et le sauvegarder.
• Le bouton d'édition permet d'afficher le programme sélectionné dans la fenêtre de l'éditeur depuis
laquelle il peut être édité, modifié et sauvegardé.
• Charger : Le programme sélectionné est chargé, prêt à être exécuté. Si un programme du même
nom est en cours d'exécution, il est stoppé et remplacé par le nouveau (mais non exécuté). Toutes
les erreurs de syntaxe sont listées dans la zone de résultats (Voir Montrer résultats et Défilement ci-
dessus).

SV_SCADABasic_fr 12
Le programme global doit toujours être chargé avant les autres programmes.

Pour plus d'informations au sujet du fonctionnement et du comportement du programme global, voir le


chapitre Le Programme Global.

La zone d'état des programmes


La partie inférieure de la boîte de dialogue comprend la liste des programmes qui sont chargés. En
cliquant sur la ligne d'état du programme et en utilisant les boutons de contrôle du bas, les programmes
peuvent être exécutés, stoppés ou déchargés.

Le programme de déclarations globales peut uniquement être chargé, il ne peut pas être
exécuté.

Exemple
La ligne d'état du program AutoLoad peut montrer les informations suivantes : Voir l'image

Ligne Signification
AUTOLOAD.SV Le nom du programme.
B
OK L'état du programme. OK signifie que le programme est correct. (NOK signifie qu'il y a
une erreur dans le programme).
Sleep(10) L'instruction courante exécutée. Dans la pratique, comme le status n'est mis-à-jour qu'à
la fin du programme ou suite à une instruction DELAY, le champ affiche toujours Sleep ou
est vide.
1 0010 La ligne courante du programme. Dans cet exemple 10 (notez que le premier caractère
est toujours la lettre "l" en minuscule).
S5 Le nombre de symboles (fonctions) déclarés dans le programme.

SV_SCADABasic_fr 13
Généralités sur la Fenêtre d'Edition
La fenêtre d'édition est utilisée pour visualiser, éditer et sauvegarder les programmes SCADA Basic. Voir
l'image

Principales caractéristiques
• Raccourcis standards Windows pour couper, copier, coller, etc ... Voir le chapitre La Barre d'Outils de
l'Editeur
• Textes de couleurs prédéfinies pour aider au développement des programmes :
• Vert - commentaires
• Bleu - mots clés
• Rouge foncé - chaînes de caractères
• Rouge clair - mots réservés
• Mots clés et complétion automatique. Voir le chapitre Utilisation de Mots Clés et Complétion
Automatique
• Fonctions d'insertions spéciales (nom de variable, etc ...). Voir le chapitre Fonctions d'Insertions
Spéciales
• Navigation vers le numéro de ligne ou fonction. Voir le chapitre Navigation du Fichier Programme
• Ligne d'état incluant le nom du programme et la position actuelle du curseur (numéro de ligne et de
colonne).
• Aide contextuelle. Cliquer sur la touche de fonction F1 dans la fenêtre d'édition ouvre le fichier
d'aide du SCADA Basic. Si le curseur est sur un mot clé connu, l'aide va directement vers le chapitre
correspondant.

Options de l'Editeur

SV_SCADABasic_fr 14
La police et la taille utilisées par l'éditeur, ainsi que la taille des tabulations, peuvent être modifiées à
partir de l'onglet Général de la boîte de dialogue Options. Cette boîte de dialogue s'affiche à partir de la
commande Fenêtre.Options du menu.

SV_SCADABasic_fr 15
La Barre d'Outils de l'Editeur
Icône Touche clavier Fonction
Ctrl+S Sauvegarde le fichier programme.
Ctrl+X Ferme l'éditeur. Si vous avez fait des modifications, vous
serez invités à les sauvegarder.
Ctrl+Z Annule l'action précédente. Sans limite de profondeur.
Ctrl+Y Recrée la précédente action annulée.
Ctrl+C Copie la sélection dans le presse-papier.
Ctrl+V Copie le contenu du presse-papier vers le fichier à la
position du curseur.
Ctrl+F Ouvre la boîte de dialogue Rechercher.
F3 Recherche l'occurence suivante de la chaîne de caractère
saisie dans la boîte de dialogue Rechercher.
Ctrl+F3 Recherche l'occurence précédente de la chaîne de
caractère saisie dans la boîte de dialogue Rechercher.
Ctrl+H Ouvre la boîte de dialogue Rechercher et Remplacer.
Ctrl+Shift+F Ouvre la boîte de dialogue Aller à la fonction.
Ctrl+I, Ctrl+V Ouvre le sélecteur de variable afin de sélectionner et
insérer une variable.
Ctrl+I, Ctrl+B Ouvre le sélecteur de branche afin de sélectionner et
insérer une branche.
Ctrl+I, Ctrl+M Ouvre le sélecteur de synoptique afin de sélectionner et
insérer un synoptique.
Ctrl+I, Ctrl+P Ouvre le sélecteur de programme afin de sélectionner et
insérer un programme.
F11 Affiche les numéros de lignes dans une colonne sur le côté
gauche de l'éditeur.
Ouvre le fichier d'aide SCADA Basic.

SV_SCADABasic_fr 16
Utilisation de Mots Clés et Complétion Automatique
L'éditeur SCADA Basic gère les mots clés et la complétion automatique.

Complétion de mots clés


Presser simultanément les touches Ctrl+Barre espace permet d'afficher une fenêtre contenant une liste de
tous les mots clés. Si vous saisissez un ou plusieurs caractères sur une ligne avant d'utiliser Ctrl+Barre
espace, la liste se positionnera automatiquement sur le premier mot clé correspondant. Par exemple, si
vous saisissez Fr et puis pressez Ctrl+Barre espace, la liste défilera vers FREAD. Voir l'image

Il est possible de se deplacer dans la liste à l'aide des flèches du clavier. La sélection du mot clé peut se
faire en utilisant les touches Entrée, Tabulation ou en cliquant avec la souris.

Complétion de paramètre
En saisissant un crochet ouvert, l'éditeur vérifie le texte précédent le crochet. Si le texte est identifié
comme un mot clé, la fenêtre pop-up Complétion s'ouvre en affichant une liste d'options pour ce mot clé.
Voir l'image

Il est possible de se deplacer dans la liste à l'aide des flèches du clavier. La sélection du mot clé peut se
faire en utilisant les touches Entrée, Tabulation ou en cliquant avec la souris.

Casse de caractère
Par défaut, le texte auto-complété est inséré tel qu'il apparaît dans la liste des mots clés ou celle des
paramètres. En utilisant les options de l'onglet Complétion de la boîte de dialogue Options, vous pouvez
forcer le texte en majuscule ou en minuscule. La boîte de dialogue Options s'affiche à partir de la
commande Fenêtre.Options dans le menu.

SV_SCADABasic_fr 17
Fonctions d'Insertion Spéciale
L'éditeur propose des commandes d'insertion spéciale spécifiques à l'environnement SCADA Basic.

Insérer le nom d'un objet SCADA


Objet Mot clé Commentaires
Variable Ctrl+I+V Affiche le sélecteur de variable afin de permettre la sélection
d'une variable.
Branche Ctrl+I+B Affiche le sélecteur de branche afin de permettre la sélection
d'une branche.
Synoptique Ctrl+I+M Affiche le sélecteur de synoptique afin de permettre la sélection
d'un synoptique.
Programme Ctrl+I+P Affiche le sélecteur de variable afin de permettre la sélection
d'un programme.

Insérer un code snippet


Un code snippet est une petite section de code programme pré-défini. Une liste des codes snippets
disponibles est affichée en utilisant les touches Ctrl+I+X.Voir l'image

Il est possible de se déplacer dans la liste à l'aide des flèches du clavier. La sélection du mot clé peut se
faire en utilisant les touches Entrée, Tabulation ou en cliquant avec la souris.

Mise en commentaire d'une section de code


Lors de la mise au point d'un programme, il est utile de pouvoir mettre en commentaire une section de
code programme. Ceci consiste à convertir le code en commentaires en précédant chaque ligne d'un
caractère apostrophe (commentaire).

• Pour mettre en commentaire une section de code, sélectionner les lignes et utiliser les touches
Ctrl+I+C.
• Pour retourner aux lignes de code, sélectionner de nouveau les lignes et utiliser les touches
Ctrl+I+U.

SV_SCADABasic_fr 18
Navigation dans le Fichier Programme

Aller directement à la ligne en utilisant le numéro de ligne


Les erreurs de programmation se reportent généralement à un numéro de ligne et, lors de la mise au
point, il est plus simple d'aller directement à cette ligne. Vous pouvez ouvrir une boîte de dialogue dans
laquelle vous saisissez le numéro de ligne en utilisant soit les touches Ctrl+G soit en double cliquant sur le
numéro de ligne dans la barre d'état.
Pour afficher les numéros de ligne dans l'éditeur, utiliser la touche de fonction
F11 ou l'outil Afficher numéro de ligne de la barre d'outils.

Aller directement à une fonction


Vous pouvez naviguer directement vers une fonction spécifique en utilisant la boîte de dialogue Aller à la
fonction ouverte en utilisant les touches Ctrl+Shift+F. La boîte de dialogue contient la liste des fonctions
du programme. Le fait de cliquer sur la fonction permet de positionner l'éditeur directement sur cette
fonction.

Rechercher et remplacer
L'éditeur supporte les fonctions standards de Windows Rechercher et Remplacer activées en utilisant soit
les touches Ctrl+F et Ctrl+H soit la barre d'outils. La liste déroulante de chaîne de caractères mémorise
jusqu'à 20 chaînes de caractères recherchées précédemment.

SV_SCADABasic_fr 19
Lecture et Vérification de Programmes
Les programmes SCADA BASIC diffèrent du BASIC classique dans le sens où ils doivent d'abord être
chargés avant d'être exécutés. Lors du chargement, le programme est précompilé c'est-à-dire que la
syntaxe générale des instructions est vérifiée et que le programme est transformé en une suite de codes
dans laquelle les verbes sont codés sur 1 octet (8 bits). Les références aux variables de la base ne sont
pas vérifiées de même que l'existence des fonctions appelées puisqu'elles peuvent être chargées
postérieurement.
Lors de l'exécution du programme les noms des variables sont alors complétés (selon la branche) et leur
existence est vérifiée. Il en va de même pour les fonctions qui doivent être chargées avant leur exécution.
Dans les cas où la vitesse d'exécution est critique, il est recommandé que les routines gourmandes en
temps CPU soient écrites dans un langage compilé, puis enregistrées en DLL. Ces fonctions peuvent être
appelées depuis un programme SCADA BASIC .

Création d'un programme utilisateur


Si vous n'avez pas créé de programme global, ou ouvert de projet en contenant, vous devez en
premier lieu en créer un comme décrit dans le chapitre Mise au Point des Progammes.

Pour créer et charger un programme utilisateur :

1. Si elle n'est pas déjà ouverte, presser la touche de fonction F9 du clavier pour ouvrir la fenêtre de
mise au point des programmes SCADA BASIC.
2. Saisir un nom de programme (par exemple "user1") dans la section Programmes.
3. Cliquer sur le bouton Edition ('...') pour ouvrir la fenêtre d'édition.
4. Saisir le code pour une SUB, par exemple :

SUB user1 ( )
'declarations...
'instructions...
END SUB

5. Cliquer sur OK pour fermer la fenêtre d'édition et retourner à la fenêtre de mise au point des
programmes.
6. Cliquer sur le bouton Charger dans la section Programmes. Son nom apparaît dans la zone
Programme pour montrer qu'il est chargé.

SV_SCADABasic_fr 20
Quelques Conseils sur le SCADA Basic
Voir aussi
Le SCADA Basic doit partager le temps CPU avec plusieurs autres tâches exécutées par le système, il est
important de réfléchir à la structure de chaque programme de façon à éviter de charger excessivement la
CPU et par conséquent d'amoindrir les performances de votre système. Les conseils qui suivent sont
fournis afin de vous assister dans la conception de votre application :

• Dès qu'un traitement long doit être exécuté, par exemple pour des calculs complexes, il est
préférable d'appeler une DLL qui est compilée et beaucoup plus rapide en temps d'exécution.
• Les routines DLL doivent être développées pour des opérations rapides car pendant que les DLL sont
exécutées le superviseur est interrompu.
• Les applicatifs indépendants sont adaptés pour des traitements algorithmiques importants ou à la
gestion de fichiers (tableur EXCEL, SGBD ACCESS) sans interrompre le superviseur et en utilisant un
lien DDE pour l'échange de données.
• De manière générale il faut utiliser les programmes cycliques (CYCLIC) avec modération et leur
préférer systématiquement des programmes événementiels qui sont appelés sur événement
(EVENT).
• Les instructions de type branche (TREE) permettent d'écrire des programmes génériques utilisables
pour différentes entités de même niveau (avec des variables utilisant une branche différente).

Utiliser l'instruction DELAY avec une extrème prudence. Le programme est suspendu pendant la
période DELAY durant laquelle il est impossible d'exécuter une autre fonction de ce programme.

L'utilisation de DELAY avec une fonction appelée cycliquement peut produire des résultats
imprévisibles et doit être évité.

• L'affectation d'une variable n'est effectuée que lorsque le superviseur reprend la main, par exemple
après une instruction DELAY (0.1) ou à la fin de l'exécution du programme.
• Lorsqu'un programme utilisateur prend la main, il ne la cède que volontairement, il faut donc éviter
toute boucle de traitement trop longue (WHILE ou FOR) sans rendre périodiquement la main au
superviseur par une instruction de type DELAY.
• Lors du calcul de variables, il faut considérer l'emploi d'expressions. Pour plus de détails, voir le
chapitre sur les expressions.

SV_SCADABasic_fr 21
Exécution d'un Programme SCADA Basic
Les programmes SCADA Basic peuvent être démarrés de plusieurs façons suivant les nécessités de votre
projet. Ci-dessous une liste complète :

• A partir d'une action événementielle. Déclenchement par un changement de valeur d'une variable.
Pour plus d'informations sur la configuration d'une action événementielle, voir le chapitre
Configuration.Actions Cycliques et Evénementielles.Actions Evénementielles.
• A partir d'une action cyclique. Périodiquement chaque N seconde. Pour plus d'informations sur la
configuration d'une action cyclique, voir le chapitre Configuration.Actions Cycliques et
Evénementielles.Actions Cycliques.
• A partir du séquenceur. Suivant un séquencement (par exemple, le premier jour de chaque mois à
12 heures). Pour plus d'informations sur la configuration du séquenceur, voir le chapitre
Configuration.Séquenceur.
• Lors du démarrage du Superviseur. Les options de démarrage du Superviseur peuvent être
configurées afin de démarrer des programmes avant et/ou après le démarrage de la communication.
Voir le chapitre Généralités sur les Projets.Options de démarrage du projet.
• Par l'utilisateur à partir d'une zone de commande sur un synoptique. Voir le chapitre Développement
de l'IHM.Animation.Exécution.Exécution d'un Programme SCADA Basic.
• Lors de la connexion et/ou déconnexion d'un utilisateur. Voir le chapitre Configuration.Compte
Utilisateur.Profils.
• Lors de l'ouverture d'un synoptique. Voir ci-dessous.
• A partir de l'affichage d'une alarme en utilisant l'action associée d'une variable alarme. Voir le
chapitre Configuration.Base de données.Configuration des Variables.Variables Alarme.Associer une
Action à une Alarme.
• A partir d'un autre programme.

Vous pouvez exécuter jusqu'à cinq lignes de SCADA Basic en utilisant l'animation
Macro sans avoir à écrire un programme. Voir le chapitre Développement de
l'IHM.Animation.Exécution.Exécution d'un Programme SCADA Basic.

Exécution automatique d'un programme lors de l'ouverture de synoptiques


Pour exécuter automatiquement un programme lors de l'ouverture d'un synoptique, vous devez éditer
manuellement le fichier synoptique en utilisant un éditeur de texte comme le Bloc-notes.

1. Dans le Superviseur, sauvegarder le synoptique en format ASCII.


2. Ouvrir le synoptique avec un éditeur de texte comme le Bloc-notes. Les fichiers synoptiques sont
localisés dans le répertoire W du projet.
3. Au début du fichier synoptique, vous trouverez la définition de la fenêtre. Editer la ligne débutant
par le mot clé BEFORE en y ajoutant le nom du programme que vous désirez démarrer lors de
l'ouverture du synoptique. Voir l'exemple ci-dessous. Vous pouvez inclure une branche de variable
(option), un nom de sous-routine et des arguments si nécessaire.
4. Sauvegarder le fichier.

Le programme démarré à partir du synoptique doit être pré-chargé. La façon


normale de pré-charger un programme est d'utiliser l'instruction PROGRAM dans
un autre programme.
Faites une copie du fichier synoptique avant l'édition manuelle afin de pouvoir
revenir à l'original dans le cas où des complications interviendraient. Ne faire
aucun autre changement dans le fichier synoptique.

ASCII32,24,6,2005,16:30,46 W,BEGIN,"MyMimic","Mimic1",""
TEMPLATE,"",0,0,0,0,0,0,0,0,0,0,0,0,1
POSITION,208,0
SIZE,498,337,498,337,0,0,0,1024,768,486,299
BACKCOLOR,236,233,216,0,0,0
TITLE,1,"Mimic1",""
STYLE,1,1,1,1,0,1,0,1,1,1,1,1,1,0,0,0,0

SV_SCADABasic_fr 22
GRID,1,1,8,8,160,160,160,0,0,0
LAYERS,65535
RIGHTS,0,1,0.000000,64.000000,1,65535,0,0
INCLUDED,0,0,0,0,0
LINK,1,"","","",""
LINK,2,"","","",""
LINK,3,"","","",""
LINK,4,"","","",""
LINK,5,"","","",""
LINK,6,"","","",""
LINK,7,"","","",""
LINK,8,"","","",""
LINK,9,"","","",""
LINK,10,"","","",""
BACKBMP,"",0,0
BACKOBJECT,"",0,0
BEFORE,"ProgName","BranchName","SubName","Arguments"
EVENTS,1
BINOBJ,"MyMimic.binary"
W,END

SV_SCADABasic_fr 23
Structure des Programmes
Voir aussi
Chaque programme est composé d'une partie de déclarations optionnelles et d'un certain nombre de
fonctions (sous-programmes). La partie des déclarations doit toujours apparaître avant les fonctions et
être utilisée pour définir les fonctions externes (DLL) qui sont appelées par le programme.
Le programme doit avoir au moins une fonction, appelée MAIN, qui est le point d'entrée de l'exécution
(excepté pour le programme GLOBAL - voir ci-après).
La structure d'un programme est comme suit. Le texte entre crochets est optionnel.
[external declaration 1];
[external declaration 2];
. .
[external declaration n];
SUB main ()
[declaration 1];
.
[declaration n];
[instruction 1];
.
[instruction n];
END SUB
[SUB proc1 ([parameters])]
[END SUB]
[SUB proc2 ([parameters])]
[END SUB]
.
[SUB procn ([parameters])]
[END SUB]

Chaque ligne de texte à la droite de l'apostrophe est traitée comme un commentaire.

SV_SCADABasic_fr 24
Les Fonctions
Voir aussi
Une fonction est composée d'une partie déclarations optionnelles et d'une suite d'instructions. La partie
des déclarations vient toujours avant la suite d'instructions.
Exécution
Une fonction peut recevoir jusqu'à 10 paramètres en entrée, excepté pour le programme MAIN qui n'en
reçoit aucun. Les paramètres sont passés par valeur et non par référence, c'est-à-dire que c'est la valeur
du paramètre qui est passée, et pas son nom.
La structure d'une fonction est la suivante :
SUB proc name ([parameter list])
[declaration 1];
[declaration 2];
.
.
[declaration N];
[instruction 1];
[instruction 2];
.
.
[instruction N];
END SUB
Notes
Les instructions et les déclarations se terminent toujours par un point-virgule.

Dans plusieurs des exemples qui suivent, les instructions tiennent parfois sur plus d'une ligne. Le
symbole est utilisé pour indiquer où cela se produit. Ceci est seulement le fait des restrictions
d'impression et dans un programme réel une instruction complète doit être contenue dans une
seule ligne.
Chaque programme possède un seul contexte d'exécution, ce qui interdit que deux fonctions d'un
même programme soient exécutées en même temps. Ainsi deux fonctions lancées avec EVENT,
CYCLIC, CRONTAB, KEY ou SELECTOR ne peuvent pas tourner en même temps.
Pour éviter cette situation, l'instruction DELAY doit être utilisée avec une extrème prudence dans le
cas de fonctions événementielles.
Appel asynchrone
Les effets d'un appel à une fonction ne se déroule pas selon une séquence fixe (voir l'exemple ci-dessous).
Exemple
Dans cet exemple, le programme P1 appelle le programme P2 avec un argument :
Programme P1 :
SUB main()
PROGRAM("FUNCTION","P2","", "message1");
PRINT("message 2");
END SUB
Programme P2 :
SUB message1()
PRINT("message1");
END SUB
Lorsque le programme P1 tourne, il peut afficher :
message1
message2
ou:

SV_SCADABasic_fr 25
message2
message1

SV_SCADABasic_fr 26
Le Programme Global
Voir aussi
Le programme GLOBAL est utilisé pour déclarer les variables de travail et les fonctions qui sont utilisées
dans tout le projet. Il n'exécute pas lui-même directement des fonctions. Le programme GLOBAL peut
avoir n'importe quel nom et son fichier source est sauvegardé dans le même répertoire que les autres
programmes (P).
Un exemple de programme GLOBAL est décrit ci-après :
' Declare global working variables
DIM WatchDog AS SINGLE;
DIM RunTime AS SINGLE;
DIM WindowName AS STR

' Global functions

SUB setdog ( )
watchdog = 1;
END SUB

SUB cleardog ( )
watchdog = 0;
END SUB

Caractéristiques essentielles à comprendre au sujet du programme global


• Le programme global doit toujours être chargé avant les autres programmes. Si vous ne
chargez pas de programme global, le premier des autres programmes chargés sera traité
comme le programme global avec les différences de comportement correspondantes.
• Un seul programme GLOBAL peut être chargé en même temps.
• Le programme GLOBAL n'a pas de fonction MAIN et peut seulement être chargé, mais il ne s'exécute
pas.
• Chaque variable de travail qui a été déclarée dans un programme GLOBAL est connue de tous les
autres programmes et est référencée seulement par son nom. Elle ne doit pas être déclarée de
nouveau dans un autre programme.
• Chaque fonction qui a été déclarée dans un programme GLOBAL est connue de tous les autres
programmes et est référencée seulement par son nom. Elle ne doit pas être déclarée de nouveau
dans un autre programme.
• Le programme GLOBAL peut être (re)chargé à n'importe quel moment à l'aide de la boîte de
dialogue Mise au point des programmes. Toutefois, si un programme global est rechargé, tous les
autres programmes qui tournent sont stoppés et enlevés.
• Pour charger un programme global automatiquement au démarrage du projet, ajoutez le dans la
configuration du démarrage du poste (Application Explorer.Paramètres.Démarrage des postes).

SV_SCADABasic_fr 27
Les variables de l'Arbre des Variables
Voir aussi
Les variables l'arbre des variables sont accessibles par tous les programmes.

Si la valeur d'une variable doit être modifiée dans un programme, elle doit avoir l'attribut
de commande.

Si une variable doit être substituée, la déclaration doit être faite dans la fonction Sub, et
non globalement dans l'entête de programme ni passée comme argument de l'animation
Exécuter Programme (voir exemple 2 dans le chapitre de l'instruction DIM).

Les variables de l'arbre des variables peuvent être référencées directement en utilisant leur nom complet,
ou bien en utilisant l'instruction branche et le nom relatif à cette branche. Une chaîne de caractères peut
définir une partie ou la totalité du nom d'une variable.

Lors d'une référence à une variable de l'arbre des variables dans un programme, vous
devez vous assurer que le programme prend correctement en compte le type de la
variable. Voir la table suivante.

Variable Type Rang


Etat Integer 0 or 1
Mesure Single -3.37E+38 à +3.37E+38
Texte Str Jusqu'à 32 000 caractères

Utilisation d'une branche


Voir la section sur l'utilisation des programmes avec une branche.

Utilisation d'un nom indirect


Normalement lorsqu'une variable de l'arbre des variables est référencée dans un programme, le nom de la
variable est écrit en dur. Parfois il est plus intéressant de construire le nom de la variable dans le
programme lui-même, par exemple si vous voulez passer le nom de la variable comme un argument.
Lorsque vous utilisez cette technique, le nom de la variable est stocké dans une autre variable de type
texte.

Si un nom indirect est utilisé, la variable qui contient le nom de la variable de l'arbre des
variables doit être déclarée dans la fonction Sub où elle est utilisée (voir les exemples ci-
dessous).

Pour référencer cette variable vous devez utiliser le nom de la chaîne précédée par un point
d'interrogation. Voir exemple ci-après.
Sub Init ()
Dim VarName As Str;
Dim Index as Integer;
For(Index = 0; Index < 11; Index ++)
VarName = AddString("Réservoir", TOC(Index));
Varname = Addstring(Varname, ".Niveau.SP");
?Varname = 0;
Delay(0.1);

SV_SCADABasic_fr 28
Next (Index)
End Sub
Vous pouvez également utiliser l'adressage indirect pour référencer seulement une partie du nom de la
variable (cependant cette partie de nom doit former une branche complète). L'exemple précédent peut
être réécrit de la façon suivante :
Sub Init ()
Dim VarName As Str;
Dim Index as Integer;
For(Index = 0; Index < 11; Index ++)
VarName = AddString("Réservoir", TOC(Index));
?Varname.Niveau.SP = 0;
Delay(0.1);
Next (Index)
End Sub

SV_SCADABasic_fr 29
Les Variables Temporaires
Voir aussi
Les variables temporaires sont créées par l'instruction TEMPORARY_DB. Elles sont visibles par le langage
de programmation et par l'interface utilisateur. Elles utilisent moins de mémoire que les variables
conventionnelles et sont idéales pour l'utilisation dans un gros projet où un programme calcule une
variable utilisée seulement pour une animation.
Pour plus d'information sur les variables temporaires voir le chapitre sur les variables et les explications
sur l'instruction TEMPORARY_DB.

SV_SCADABasic_fr 30
Les Variables de Travail
Voir aussi
Les variables de travail sont à usage interne d'un programme. Elles ne font pas partie de l'arborescence
des variables.

Types de variables de travail


Type Description Rang
Integer Entier 2 octets -32768 à +32768
Long Entier 4 octets -2147483648 à +2147483648
Longlong Entier 8 octets -9,223,372,036,854,775,807 à
9,223,372,036,854,775,807
Single Réel 4 octets -3.37E+38 à +3.37E+38
Double Réel 8 octets -1.67D+308 à +1.67D+308
Str Chaîne de caractères 2047 caractères
Const Constantes numériques avec double précision -1.67D+308 +1.67D+308

Les variables de travail ne peuvent pas être utilisées pour des actions de déclenchement.

Modifier la longueur maximum d'une chaîne de caractères


La longueur maximum d'une chaîne de caractères est 2047. Elle peut être modifiée en ajoutant la ligne
suivante au programme GLOBAL :
SYS MAXARGSTRINGS=nnnn
où nnnn est le nombre maximum de caractères dans la plage 2047 à 8191.

Exemples
Sub func1 ()
‘--------local variable
Dim cMystring as STR;
cMmystring = Addstring(“”, “…..”); ‘up to 32000 chars

‘--------variable in variables tree


@textvar = mystring; ‘up to 32000 chars
End sub

Sub func2 ()
'--------64-bit variable
Dim LL1 as longlong;
Dim LL2 as longlong;
Dim LLRes as longlong;
LL1 = 2147491969;
Print(LL1); '2147491969
LL2 = 1;
LLRes = logical64("AND", LL1, LL2);
Print(LLRes); '1
End Sub

Portée des variables

SV_SCADABasic_fr 31
La portée des variables de travail est déterminée par leur emplacement de déclaration. Le comportement
depuis la version 11.2 est contrôlé de façon stricte de la façon suivante :
Déclaré dans Visible pour
Le programme GLOBAL Tous les autres programmes et procédures.
La procédure MAIN d'un programme Toutes les procédure de ce programme et
ne peuvent pas être re-déclarées dans les
procédures de ce programme.
Une procédure Seulement cette procédure.

Antérieurement à la version 11.2, la portée n'était pas contrôlée de façon stricte et les exceptions
suivantes étaient permises :

• Les variables déclarées dans une procédure était également visibles de toutes les procédures
appelées. Par exemple :

Sub Func1()
Dim I as Integer;
Func2();
End Sub

Sub Func2()
I = 99;
Print(I);
End Sub

• Une variable déclarée dans la procédure MAIN d'un programme peuvent être re-déclarées dans une
fonction. Par exemple :

Dim cString as Str;

Sub Main ()
Dim cString as Str;
cString = "Hello";
End Sub

Compatibilité ascendante de la portée


La compatibilité ascendante d'une portée de variable est contrôlée par le paramètre Contrôle de portée
pour les variables de travail dans la boîte de dialogue des paramètres des programmes (Application
Explorer).

SV_SCADABasic_fr 32
Généralités sur les Opérateurs
Voir aussi
Il existe deux catégories d'opérateurs : arithmétiques et logiques.

Tous les opérateurs ne s'appliquent que sur des variables ou expressions de type
numérique (integer, long, single, double, const). Ils ne peuvent être utilisés qu'entre
variables ou expressions du même type.

SV_SCADABasic_fr 33
Les Opérateurs Logiques
Voir aussi
Symbole Opération
!= Différence
== Egalité
> Supériorité
>= Supériorité ou égalité
< Infériorité
<= Infériorité ou égalité
! Négation
|| Ou logique
&& Et logique

Exemple
Const Buffer_Size = 500;
Dim I1 As Integer, I2 As Integer;
I1 = I1+ 5;
'Correct
I1 = I1+ I2;
'Correct
I1 = I2+ Buffer_Size;
'Correct
I1 = 5+ I1;
'Incorrect

Exemple
DIM Str1 As Str, Str2 AS STR;
Str1 = "I Am A String"
'Correct
Str2 = Str1+Str2;
'Incorrect

Les chaînes de concaténations et de comparaisons ne peuvent seulement être utilisées


par des fonctions spécialisées.

Les opérations logiques sur des variables sont faites par le verbe LOGICAL.

SV_SCADABasic_fr 34
Les Opérateurs Arithmétiques
Voir aussi
Symbole Opération
= Affectation
+ Addition
- Soustraction
* Multiplication
/ Division
++ Incrémentation par 1
-- Décrémentation par 1

Les constantes peuvent être combinées à n'importe quel type numérique si elles sont
positionnées à droite dans l'expression.

Exemple
Const Buffer_Size = 500;
Dim I1 As Integer, I2 As Integer;
I1 = I1+ 5;
'Correct
I1 = I1+ I2;
'Correct
I1 = I2+ Buffer_Size;
'Correct
I1 = 5+ I1;
'Incorrect

Exemple
DIM Str1 As Str, Str2 AS STR;
Str1 = "I Am A String"
'Correct
Str2 = Str1+Str2;
'Incorrect

Seulement les opérateurs d'affectation sont interdits dans les chaînes de caractère.

SV_SCADABasic_fr 35
Généralités sur la Classification des Instructions
Voir aussi
Ce chapitre présente la manière d'accéder aux différents chapitres au travers de catégories d'instructions
ainsi que de liens "Voir aussi" pour les thèmes associés aux instructions.
Les instructions sont documentées dans la section suivante "Instructions de A à Z" avec un chapitre
par instruction.

Quelques instructions ont de multiples syntaxes et modes. Le dernier paragraphe décrit la manière
d'accéder aux syntaxes et modes des instructions.
Liste des instructions
Les liens suivants résument en une phrase les fonctions de chaque instruction. Les instructions sont
classées dans les catégories suivantes :
• IHM • Exécution de programme
• Base de données • Fenêtres
• Communication • Fonctions mathématiques
• Conversion de données • Gestion de buffer
• Debug • Gestion de fichiers
• Déclaration • Heure et date
• Divers • Manipulation de chaîne de caractères
• Données historiques • Structuration de programme
• Entrées/Sorties

Vous pouvez utiliser le lien "Voir aussi' en haut de chaque liste pour accéder aux chapitres des instructions
dans cette catégorie.

Thèmes des liens "Voir aussi"


Dans le chapitre "Instructions de A à Z", le chapitre de chaque instruction possède également un lien "Voir
aussi". Celui-ci fournit un accès - soit directement, soit au travers d'une liste déroulante de liens - pour les
autres instructions dans la même catégorie.

Syntaxes et modes
Le chapitre d'une instruction spécifie la syntaxe pour l'instruction. S'il existe plus d'une syntaxe et des
paramètres différents, le chapitre contient une section pour chaque syntaxe. Voir l'image

SV_SCADABasic_fr 36
Une instruction peut avoir plusieurs modes correspondant à différents fonctionnements. Dans ce cas, le
chapitre de l'instruction débute par un index de chaque syntaxe à utiliser pour chaque mode. La colonne
syntaxe de l'index fournit les liens aux syntaxes. Le fonctionnement de chaque mode est défini dans la
syntaxe concernée.
Pour les instructions utilisant un argument MODE, l'argument peut être soit un entier valeur 1, 2 ...,
soit une chaîne de caractères avec des guillemets (par exemple : "OPEN", "CLOSE").

SV_SCADABasic_fr 37
Arbre des variables
Instruction Action
ALARM Teste ou force l'état d'une alarme.
GETTREE Renvoie la branche courante.
GROUPALARM Démarre ou arrête une synthèse sélectionnée ou toutes les synthèses.
POPULATION Création de populations par verbe.
REFRESH_DB Limiter des fonctions de supervision à des populations de variables pour le poste
courant.
SENDLIST Envoi d'une liste de variables.
SET Constitution d'une liste de variables à envoyer.
STATION_FILTER Limiter des fonctions de supervision à des populations de variables pour le poste
courant.
SVBRANCH Change le status des variables d'une branche de la base de données.
TEMPORARY_DB Création ou destruction de variables temporaires, ainsi qu'activation ou
désactivation du mode de génération automatique.
TREE Sélection d'une branche de la nomenclature.
VARIABLE Teste ou force la status d'une variable.

SV_SCADABasic_fr 38
Communication
Instruction Action
BACNET Exécute des commandes relatives au protocole BACnet.
CIMWAY Arrête, démarre ou teste l'état de la communication.
DDE Gestion des échanges DDE avec une application serveur DDE non configurée
dans le superviseur.
DDECONV Gestion de conversation DDE avec une application serveur DDE.
LAN Pilotage de postes distants.
LONWORKS Gère et contrôle le réseau LonWorks configuré dans le Superviseur.
M104 Arrête ou démarre une communication via le protocole IEC60870-5-104.
M61850 Gère la communication via le protocole M61850.
MDNP3 Gère la communication via le protocole DNP3.
SNMP Gère la communication via le protocole SNMP.
OPC Gère les échanges avec un serveur OPC configuré dans le Superviseur.

SV_SCADABasic_fr 39
Conversion de Données
Voir aussi
Instruction Action
BIN Renvoie une chaîne représentant en binaire un nombre passé en base 10.
CONVERT Conversion de chaîne alphanumérique en Héxadécimal, Octal, Binaire, BCD et
inversement.
DVAL Donne la valeur numérique dans un double d'une chaîne de caractère.
HEX Renvoie une chaîne représentant en hexa un nombre passé en base 10.
IVAL Donne la valeur numérique dans un entier d'une chaîne de caractère.
LVAL Donne la valeur numérique dans un entier long d'une chaine de caractères.
OCT Renvoie une chaîne représentant en octal un nombre passé en base 10.
SVAL Donne la valeur numérique dans un single d'une chaîne de caractère.
TOC Convertit un nombre en chaîne de caractères d'après le format standard.
TOD Convertit un nombre en double.
TODOUBLE Convertit une variable de la base de données en double.
TOI Convertit un nombre en entier.
TOL Convertit un nombre en long.
TOLL Convertit un nombre en longlong.
TOS Convertit un nombre en single.

SV_SCADABasic_fr 40
Debug
Instruction Action
ERROR Renvoie le status de la dernière erreur.
PRINT Affiche des données dans la fenêtre programme.
TRACE Exécute une trace dans SCADA Basic sans utiliser la fonction PRINT.
TRACEON / TRACEOFF Permet de tracer les appels de procédures.

SV_SCADABasic_fr 41
Déclaration
Voir aussi
Instruction Action
CONST Déclare une constante.
DECLARE FUNCTION Déclare une fonction externe.
DECLARE SUB Déclare un sous-programme externe.
DIM Déclare une variable ou un tableau.
REGVAR2D Contrôle l'utilisation de variables mesure de type DOUBLE dans un
programme.
SUB ... END SUB Début et fin de sous-programme.

SV_SCADABasic_fr 42
Divers
Instruction Action
APPLICATION Lancement d'une application en parallèle.
ASSOCIATEDACTIONS Importe les actions associées d'une alarme, à partir d'un fichier ou d'un buffer.
ASSOCLABEL Modifie un libellé associé.
BEEP Emet un signal sonore.
CRONTAB Activation modification d'actions horodatées.
EXPRESSION Importation de modèles d'expressions ou d'expressions de variables à partir
d'un fichier ou d'un buffer.
FORMULA Activation modification de formules de calcul.
GETPROJECTDIR Renvoie le chemin du projet courant.
RECIPE Gestion de recettes.
SMS Gestion d'envoi de données par SMS.
SYSTEM Modification ou lecture de l'heure, de la date du système et du mode
graphique.
WEBVUE Gère la connexion aux clients WebVue.
XMLPATH Processus XML formatant des données selon les spécifications XPath (XML Path
Language).

SV_SCADABasic_fr 43
Données Historiques
Instruction Action
EXPORT Exécute un export configuré précédemment (Application Explorer)
EXPORT_LOG Génère des données de consignations d'historiques en utilisant la fonctionnalité
fournie par l'Export de données.
EXPORT_TREND Génère des données de tendance d'historiques en utilisant la fonctionnalité fournie
par l'Export de données.
HISTORY Gestion des historiques.
SVALA Gestion des listes d'alarmes.
SVBATCH Suivi et traçabilité de lots.
SVLOG Gestion des listes de consignation.
SVTREND Récupération entre deux dates des valeurs historisées d’un ensemble de variables.

SV_SCADABasic_fr 44
Entrées/Sorties
Instruction Action
FTP Copie un fichier vers ou depuis un serveur de transfert de fichier (site FTP).
EMAIL Fonctions de messagerie électronique basiques utilisant le composant
MailSender de Microsoft.
HARDCOPY Impression d'écran.
KEY Programmation de touche clavier.
LPRINT Envoie un message vers une imprimante.
MULTIMEDIA Pilotage de périphériques audio et vidéo.
PRINTER Mise en service ou hors service d'une imprimante.
SVKEY Lit le contenu d'une clé de protection dans un système multi-postes.
SVSQL Gestion des bases de données.

SV_SCADABasic_fr 45
Exécution de Programmes
Instruction Action
CYCLIC Exécution cyclique d'une fonction.
DELAY Suspend l'exécution du programme en cours pendant n secondes.
EVENT Exécution d'une fonction sur changement de valeur d'une variable.
GETARG Récupération des paramètres sur le contexte d'appel d'une fonction.
PROGRAM Chargement, lancement, exécution ou arrêt d'un programme.
STOP Arrête le programme en cours.

SV_SCADABasic_fr 46
Fenêtres
Instruction Action
CAPTION Affiche un texte dans la barre de titre de la fenêtre principale.
LANGUAGE Changement de la langue de travail.
REGION Gère les numéros de régions d'affichage.
WEBVUE Gère les connexions aux clients WebVue.
WINDOW Ouverture et fermeture de fenêtre.

SV_SCADABasic_fr 47
Fonctions Mathématiques
Voir aussi
Instruction Action
ACOS Arc cosinus.
ASIN Arc sinus.
ATAN Arc tangente.
COS Cosinus.
EXP Exponentiation.
IRAND Renvoie un nombre aléatoire.
LOG Logarithme néperien.
LOGICAL Opérations logiques sur des variables mesure pour des entiers 32 octets.
LOGICAL64 Opérations logiques sur des entiers 64 octets.
POW Puissance.
SIN Sinus.
SQRT Racine carrée.
TAN Tangente.

SV_SCADABasic_fr 48
Gestion de Buffer
Instruction Action
ALLOC_BUFFER Alloue une zone mémoire de n octets.
BUFTOFILE Création d'un fichier à partir d'un buffer.
BUFTOEXCEL Crée un fichier Excel au format XLSX en utilisant le contenu d'un buffer
mémoire.
CGET_BUFFER Récupère un caractère dans une zone mémoire réservée par un
ALLOC_BUFFER.
COPY_BUFFER Copie le contenu d'un buffer dans un autre buffer.
DGET_BUFFER Récupère un double dans une zone mémoire réservée par un ALLOC_BUFFER.
EXCELTOBUF Crée un buffer mémoire depuis un fichier Excel au format XLSX.
FILETOBUF Création d'un buffer à partir d'un fichier.
FREE_BUFFER Libère une zone mémoire réservée par ALLOC_BUFFER.
IGET_BUFFER Récupère un entier dans une zone mémoire réservée par un ALLOC_BUFFER.
LGET_BUFFER Récupère un long dans une zone mémoire réservée par un ALLOC_BUFFER à
l'offset précisé.
PUT_BUFFER Insère une donnée dans une zone mémoire réservée par un ALLOC_BUFFER.
SEQ_BUFFER Manipulation de lignes dans un buffer alloué par ALLOC_BUFFER.
SGET_BUFFER Récupère un single dans une zone mémoire réservée par un ALLOC_BUFFER.

SV_SCADABasic_fr 49
Gestion de Fichiers
Instruction Action
FCLOSE Ferme le fichier spécifié.
FCOPY Copie un fichier d'une source vers une destination.
FEOF Détermine si la fin d'un fichier a été atteinte.
FGETC Lit un caractère dans un fichier.
FGETS Lit une chaîne de caractères dans un fichier.
FMOVE Déplace un fichier d'une source vers une destination.
FOPEN Ouvre le fichier spécifié selon le mode d'accès.
FPUTC Ecrit un caractère dans un fichier.
FPUTS Ecrit une chaîne de caractère dans un fichier.
FREAD Lit un nombre n de données de même type dans un fichier et les stocke dans
un buffer précédemment alloué par ALLOC_BUFFER.
FSEEK Déplace le pointeur d'un fichier vers une nouvelle position.
FSTAT Permet d'obtenir des informations de taille et de date sur un fichier.
FWRITE Ecrit un nombre n de données de même type dans un fichier à partir de
données stockées dans un buffer précédemment alloué par ALLOC_BUFFER.
RENAME Permet de renommer un fichier.
UNLINK Permet de détruire un fichier.

Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

SV_SCADABasic_fr 50
Heure et Date
Voir aussi
Instruction Action
DATETIME Fournit les composants d'une horodate.
DATETIMESTRING Conversion d'une horodate en chaîne de caractères.
DATETIMEVALUE Conversion d'une horodate en numérique.
TOHMS Convertit une valeur en secondes au format Heures:Minutes:Secondes.

SV_SCADABasic_fr 51
IHM
Instruction Action
ANIMATION
Exécution d'une animation à partir du SCADA Basic.
ALARMDISPLAY Simulation du bandeau de commande d'une animation fenêtre d'alarme.
CHART Gère le fonctionnement d'un graphique dans l'IHM.
CHECKLIST Propriétés d'accès au contrôle de formulaire CHECKLIST
COMBOBOX Propriétés d'accès au contrôle de formulaire COMBOBOX
LISTBOX Propriétés d'accès au contrôle de formulaire LISTBOX
LOGDISPLAY Simulation du bandeau de commande d'une animation fenêtre de consignation.
OPTIONLIST Propriétés d'accès au contrôle de formulaire OPTIONLIST
SELECTOR Sélectionne les données qui s'affichent dans une animation contrôle grid.
TREEVIEW Propriétés d'accès au contrôle de formulaire TREEVIEW
TREND Modification d'une animation tendance.

SV_SCADABasic_fr 52
Manipulation de Chaînes de Caractères
Instruction Action
ADDSTRING Concaténation de 2 chaines de caractères.
ASC Renvoie le code ASCII du 1er caractère d'une chaîne.
ASCIIFIELD Récupération des champs séparés par un caractère donné dans des buffers
ASCII.
CHR Renvoie le caractère ASCII du code passé en argument.
CMPSTRING Comparaison de 2 chaînes de caractères.
FORMAT Représente sous forme de chaîne une expression selon un format.
LCASE Convertit tous les caractères d'une chaîne en minuscule.
LEFT Copie les n premiers caractères de la chaîne.
LEN Renvoie la longueur d'une chaîne.
LTRIM Renvoie la copie d'une chaîne sans les espaces à gauche.
MID Renvoie une sous chaîne d'une chaîne de caractère.
RIGHT Copie les n derniers caractères de la chaîne.
RTRIM Renvoie la copie d'une chaîne sans les espaces à droite.
SPACE Renvoie une chaîne constituée de n espaces.
STRING Renvoie une chaîne constituée de n fois un caractère.
TEXTVAR Manipulation de chaînes de caractères.
UCASE Convertit tous les caractères d'une chaîne en majuscule.

SV_SCADABasic_fr 53
Structuration de Programmes
Voir aussi
Instruction Action
BREAK Sortie d'un bloc d'instructions.
FOR...NEXT Répète un groupe d'instructions un certain nombre de fois.
IF...THEN...ELSE ...END IF Exécution conditionnelle d'instructions.
RETURN Sortie de procédure.
WHILE...WEND Exécution d'instructions en boucle tant qu'une condition reste vraie.

SV_SCADABasic_fr 54
ACOS
Voir aussi
Fonction arccosinus.

Syntaxe
DblVal = ACOS(arc);
Type de retour : DOUBLE
Argument Valeur
arc arc peut être de tout type numérique mais doit être compris entre -1 et 1, sinon la
fonction retourne 0.
Exécution
La valeur de retour est exprimée en degrés.
Les variables de la base de données sont de type SINGLE.
En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si l'on veut
éviter une erreur de type.

Exemple
'database variables required:
' @ARC - type REGISTER, value range -1 to +1
' @ANGLE - type REGISTER, value range 0° to 360°

SUB Main()
DIM sngarc As Single;
DIM dblangle As Double;
sngarc = @ARC;
'Apply Arc cosine function
dblangle = ACOS (sngarc);
@ANGLE = TOS(dblangle);
END SUB

SV_SCADABasic_fr 55
ADDSTRING
Voir aussi
Concatène jusqu'à 10 chaînes de caractères.

Syntaxe
StrVal = ADDSTRING(string1, string2[, string3[, string4[, string5[, string6[, string7[, string8[, string9[,
string10]]]]]]]]);
Type de retour : STR
Argument Valeur
string1, string2 etc. Chaînes de caractères à concaténer. Minimum 2, maximum 10.
Exécution
La longueur d'une chaîne est au maximum de 2 047 caractères. Lorsque la longueur résultante excède
limite, la chaîne est tronquée.

Exemple
Cet exemple concatène 2 chaînes de caractères.
'database variables required:
' @TEXT01 - type TEXT
' @TEXT02 - type TEXT
' @TEXT03 - type TEXT

SUB Main()
'Declare
DIM strch1 As Str;
DIM strch2 As Str;
DIM strch3 As Str;

'Initialise
strch1="TEXT1";
strch2="TEXT2";

'Concatenate
strch3 = ADDSTRING(strch1,strch2);
Print("Result of ADDSTRING(strch1,strch2) = ", strch3 );
END SUB

SUB AddStringProc1()
'Same function with database variables
@TEXT03=ADDSTRING(TEXT01,TEXT02);
END SUB

SV_SCADABasic_fr 56
ALARM
Voir aussi
Teste ou force l'état d'une alarme.
Mode Mnémonique Syntaxe
1 ACK 1, 5
2 MASK 1
3 UNMASK 1
4 VALUE 1
5 ACKALL 2
6 ACKLAST 2
7 ACKTAG 3
9 ACKOLDEST 2
11 ACKDOMNAT 4
12 ACKPRIO 6
13 SETMAINTENANC 1, 5
E
14 RESETMAINTENA 1, 5
NCE
15 GETMAINTENANC 1
E
16 SETALARMLEVEL 7
17 RESTOREALARML 1, 5
EVEL
18 ALARMON 8
19 RESETANDSETAL 1
ARM
20 GETACKLEVEL 1
21 GETMASKLEVEL 1
22 GETMAINTENANC 1
ELEVEL

Syntaxe 1
IntVal = ALARM (Mode, Alarm_name);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
1 ACK Acquitte l'alarme nom_variable.
Retour : 1 si OK, 0 sinon.
2 MASK Masque l'alarme nom_variable.
Retour : 1 si OK, 0 sinon.
3 UNMASK Démasque l'alarme nom_variable.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 57
4 VALUE Teste l'état de l'alarme nom_variable.
Retour:
0 absente acquittée (ou au repos).
1 présente non acquittée.
2 absente non acquittée.
3 présente acquittée.
4 invalide.
13 SETMAINTENANC Force une alarme en mode maintenance (ou mode prise en compte).
E
Retour : 1 si OK, 0 sinon.
14 RESETMAINTENA Supprime le mode maintenance d'une alarme.
NCE
Retour : 1 si OK, 0 sinon.
15 GETMAINTENANC Vérifie l'état de maintenance d'une alarme.
E
Retour :
0 l'alarme n'existe pas
1 l'alarme est en mode maintenance
2 l'alarme n'est pas en mode maintenance.
17 RESTOREALARML Restaure le niveau de priorité d'une alarme.
EVEL
Retour : 1 si OK, 0 sinon.
19 RESETANDSETAL Force un basculement absente/présente de l'alarme présente dont le nom est
ARM AlarmName.
20 GETACKLEVEL Retourne le niveau d'acquittement de l'alarme.
21 GETMASKLEVEL Retourne le niveau de masquage de l'alarme.
22 GETMAINTENANC Retourne le niveau de maintenance de l'alarme.
ELEVEL

Le mode Maintenance ne peut être positionné que lorsque l'alarme est Présente et
Acquittée. Le mode maintenance ne peut être effacé lorsque l'alarme est Au repos.

Syntaxe 2
IntVal = ALARM(Mode [, Flag]);
Argument Signification
Flag est un entier facultatif qui prend la valeur 0 ou 1.
Flag
Si Flag est à 1 l'acquittement est consigné comme pour un acquittement opérateur.

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


5 ACKALL Acquitte toutes les alarmes présentes ou absentes non

SV_SCADABasic_fr 58
acquittées.
Retour : 1 si OK, 0 sinon.
6 ACKLAST Acquitte la dernière alarme qui est apparue non acquittée.
Retour : 1 si OK, 0 sinon.
9 ACKOLDEST Acquitte la première alarme non acquittée c'est-à-dire la plus
ancienne.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
IntVal = ALARM(Mode, Alarm_ID [, Flag]);

Flag est un entier facultatif qui prend la valeur 0 ou 1.


Flag
Si Flag est à 1 l'acquittement est consigné comme pour un acquittement opérateur.

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


7 ACKTAG Acquitte une alarme en désignant son rang. Lorsque l'alarme est dans
une liste d'alarmes, son rang peut être récupéré par le verbe
ALARMDISPLAY (Mode SELECTED).
Retour : 1 si OK, 0 sinon.

Syntaxe 4
IntVal = ALARM(Mode, Domain, Nature[, Flag]);

Argument Signification
Flag Flag est un entier facultatif qui prend la valeur 0 ou 1.
1: activé (consigné pour le compte de l'utilisateur)
0: desactivé

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


11 ACKDOMNAT Acquitte les alarmes du domaine et de la nature spécifiés.
Retour : 1 si OK, 0 sinon.

Lorsque beaucoup d'alarmes sont acquittées, cette instruction peut être très longue et
bloquer temporairement le programme. Elle se fait par paquet de 50 alarmes chaque
seconde.

SV_SCADABasic_fr 59
Syntaxe 5
IntVal = ALARM (Mode, Alarm_name[, Flag]);

Argument Signification
Flag Flag est un entier facultatif qui prend la valeur 0 ou 1.
1: activé (consigné pour le compte de l'utilisateur)
0: desactivé

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


1 ACK Acquittement de l'alarme.
Retour : 1 si OK, 0 sinon.

13 SETMAINT Force une alarme en mode maintenance (ou mode prise en compte).
ENANCE
Retour : 1 si OK, 0 sinon.
14 RESETMAI Supprime le mode maintenance d'une alarme.
NTENANCE
Retour : 1 si OK, 0 sinon.
17 RESTOREA Restaure le niveau de priorité d'une alarme.
LARMLEVE
L
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal = ALARM(Mode, Priority[, Flag]);

Argument Action
Priority Priorité d'une alarme. Type : INTEGER.
Flag Flag est un entier facultatif qui prend la valeur 0 ou 1.
1: activé (consigné pour le compte de l'utilisateur)
0: desactivé

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


12 ACKPRIO Acquitte toutes les alarmes du niveau spécifié.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 60
Lorsque beaucoup d'alarmes sont acquittées, cette instruction peut être très longue et
bloquer temporairement le programme. Elle se fait par paquet de 50 alarmes chaque
seconde.

Syntaxe 7
IntVal = ALARM(Mode, Variable_name, Level);

Argument Action
Variable_n Nom de la variable alarme dont le niveau est à modifier.
ame
Level Niveau de priorité des alarmes (entre 0 et 29).

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


16 SETALARMLEV Modifie le niveau de priorité d'une alarme.
EL
Retour : 1 si OK, 0 sinon.

Le changement est temporaire. Il n'affecte pas la configuration de la variable, il n'est actif que
lors de la phase d'exécution.

Syntaxe 8
IntVal = ALARM(Mode, Variable_name, Transition);

Argument Action
Variable_n Nom de la variable alarme dont la propriété sera modifiée.
ame
Transition Si Transition vaut 1 l’alarme Variable_name sera présente sur passage à 1 du bit
associé à l’alarme.
Si Transition e vaut 0 l’alarme Variable_name sera présente sur passage à 0 du bit
associé à l’alarme.

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


18 ALARMON Modifie dynamiquement la propriété de l’alarme qui spécifie si celle-ci est présente
sur passage à 0 ou à 1 du bit dont elle est l’origine.
Retour : 1 si OK, 0 sinon.

La transition est temporaire. Elle n'affecte pas la configuration de la variable, elle n'est active que

SV_SCADABasic_fr 61
lors de la phase d'exécution.

Exemple
Cet exemple teste ou force l'état d'une variable. Il utilise le mode ACK (Syntaxe 1) du verbe ALARM.
SUB AckVar (variance)
DIM res As Integer;
res = ALARM(1,VarName); ' acknowledge alarm
Print ("AckVar returned ",res);
END SUB

SUB AckAllAlarms ()
DIM res As Integer;
res = ALARM("ACKALL");
Print ("AckAllALarms returned ",res);
END SUB
Cet exemple positionne Alarm1 en mode maintenance :
ALARM("SETMAINTENANCE", "Alarm1", 1 );
Cet exemple supprime le mode maintenance de Alarm1 :
ALARM("RESETMAINTENANCE", "Alarm1", 1);
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 62
ALARMDISPLAY
Voir aussi Exemple Plus d'informations
Simule le bandeau de commande d'une animation fenêtre d'alarme.
Lors de l'utilisation de régions multiples, vous devez positionner la région avant l'exécution
d'instructions qui interagissent avec l'IHM. Pour plus d'informations, voir le chapitre REGION.

Mode Mnémonique Syntaxe


0 BEGIN 1
1 BEFORE 1
2 SELECT 8
3 AFTER 1
4 END 1
5 LINEUP 1
6 LINEDOWN 1
7 MODE 1
8 DYNAMIC 1
9 DOMAIN 2
10 NATURE 2
11 MINPRIO 3
12 MAXPRIO 3
13 ACK_ON 4
14 ACK_OFF 4
15 NOACK_ON 4
16 NOACK_OFF 4
17 NS 4
18 SELECTED 5
19 SELECNAME 5
20 ACTION1 1
21 ACTION2 1
22 FORMAT 15
23 USERMASK 4
24 LIST 1
25 PRINTALL 1, 11
26 FILTER 7
27 ACK_SELECTED 1
28 ACK_DISPLAY 1
29 MASK_SELECTED 1
30 UNMASK_SELECTED 1
31 PRINT_SELECTED 1, 11

SV_SCADABasic_fr 63
32 PRINT_DISPLAY 1, 11
33 PROGMASK 4
34 VARMASK 4
35 IS_ACTION1 1
36 IS_ACTION2 1
37 DATERANGE 6
38 MAINTENANCEMASK 4
39 UNSELECTALL 1
40 ONLINESELECT 9
41 SELECDATETIME 10
42 MASK_DISPLAY 1
43 UNMASK_DISPLAY 1
44 LINSELECT 12
45 SETSORT 13
46 GETSORT 14
47 ISLINEVISIBLE 16
48 ISLINESELECTED 16
49 GETLINECOUNT 1
50 GET_NAME_FROM_LI 17
NE
51 COPY_CLIPBOARD 18
52 GETCELL 20
53 GETLINES 19
54 GETSELECTEDLINES 19
Pour tous les modes :

Argument Signification
Window Nom de la fenêtre qui contient l'animation à piloter. Type STR
Branch Branche éventuelle de la fenêtre ("#B" pour utiliser la branche courante du
programme). Type STR
Identity Identifiant de l'animation fenêtre d'alarme. Type STR

Syntaxe 1
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
0 BEGIN Début de liste.
1 BEFORE Remonte d'une page.
3 AFTER Descend d'une page.
4 END Fin de liste.
5 LINEUP Remonte d'une ligne.
6 LINEDOWN Descend d'une ligne.

SV_SCADABasic_fr 64
7 MODE Passage aux modes liste ou figé.
8 DYNAMIC Passage en mode fil de l'eau.
20 ACTION 1 Exécute l'action associée n° 1 à l'alarme sélectionnée.
21 ACTION 2 Exécute l'action associée n° 2 à l'alarme sélectionnée.
24 LIST Bascule dans le mode Liste quel que soit le mode préalable.
25 PRINTALL Imprime toutes les lignes du buffer configuré dans la fenêtre d'alarme.
27 ACK_SELECTED Acquitte l'alarme sélectionnée.
28 ACK_DISPLAY Acquitte les alarmes visibles dans la fenêtre.
29 MASK_SELECTED Masque l'alarme sélectionnée.
30 UNMASK_SELECTE Démasque l'alarme sélectionnée.
D
31 PRINT_SELECTED Imprime l'alarme sélectionnée.
32 PRINT_DISPLAY Imprime les alarmes visibles dans la fenêtre.
Pour tous les modes, exceptés 35 et 36 : Retour : 1 si OK, 0 sinon.
35 IS_ACTION1 Permet de savoir si l'alarme sélectionnée a une action associée 1.
36 IS_ACTION2 Permet de savoir si l'alarme sélectionnée a une action associée 2.
Pour les modes 35 et 36 : Retour :
-1 Alarme non sélectionnée
0 Actions associées non configurées
1 Actions associées configurées
39 UNSELECTALL Désélectionne toutes les lignes affichées.
42 MASK_DISPLAY Masque toutes les alarmes visible dans la fenêtre.
43 UNMASK_DISPLAY Démasque toutes les alarmes visibles dans la fenêtre.
Retour : 1 si OK, 0 sinon (fenêtre non-existante, mauvais type
d'animation, repère non-existant).
49 GETLINECOUNT Retourne le nombre de lignes dans l'affichage.
Retour pour tous les modes sauf indication contraire : 1 si OK, 0 sinon
(fenêtre inexistante, mauvais type d'animation, position inexistante).

Syntaxe 2
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Name);
Type de retour : INTEGER
Argument Signification
Name Nouveau domaine, nouvelle nature ou nouveau format.
Pour spécifier tous les domaines ou toutes les natures, Name doit être une chaîne vide "".
Type STR.
Exécution
Sélectionne un nouveau domaine, nature ou format.
Mode Mnémonique Action
9 DOMAIN Nouveau domaine.
10 NATURE Nouvelle nature.

SV_SCADABasic_fr 65
Pour tous les modes : Retour : 1 si OK, 0 sinon .

Syntaxe 3
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Priority);
Type de retour : INTEGER
Argument Signification
Priority Spécifie le niveau de priorité pour le filtre d'alarme

Priority doit être de type numérique. Si priority est hors bornes (<0 ou >29), la fonction
renvoie 0.
Exécution
Sélectionne les nouveaux niveaux minimum et maximum des priorités des alarmes à visualiser.
Mode Mnémonique Action
11 MINPRIO Priorité minimum.
12 MAXPRIO Priorité maximum.
Pour les deux modes : Retour : 1 si OK, 0 sinon.

Syntaxe 4
Ret = ALARMDISPLAY(Mode, Window, Branch, Identity, Flag);
Type de retour : INTEGER
Argument Signification
Flag flag de type numérique = 1 pour activer, = 0 pour désactiver le mode sélectionné.
Exécution
Sélectionne l'état des alarmes à visualiser.
Mode Mnémonique Action
13 ACK_ON Présentes acquittées.
14 ACK_OFF Absentes acquittées.
15 NOACK_ON Présentes non acquittées.
16 NOACK_OFF Absentes non acquittées.
17 NS Invalides.
23 USERMASK Masquées opérateurs.
33 PROGMASK Masquées par programme.
34 VARMASK Masquées par variable.
38 MAINTENANCEMASK Alarmes prises en compte.
Pour tous les modes : Retour : 1 si OK, 0 sinon.

Syntaxe 5
StrVal = ALARMDISPLAY(Mode, Window, Branch, Identity);
Type de retour : STR
Exécution

SV_SCADABasic_fr 66
Mode Mnémonique Action
18 SELECTED Récupére le rang de la dernière alarme sélectionnée; représentée en
inverse vidéo dans la fenêtre d'alarme.
La chaîne retournée peut être passée en argument au mode ACKTAG
du verbe ALARMDISPLAY pour un acquittement.
19 SELECNAME Récupére le nom de la dernière alarme sélectionnée; représentée en
inverse vidéo dans la fenêtre d'alarme.

Syntaxe 6
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, StartDate, EndDate);
Type de retour : INTEGER
Argument Signification
StartDate Date de début, exprimée en millisecondes depuis 1980. (Voir l'instruction
DateTimeValue.)
EndDate Date de fin, exprimée en millisecondes depuis 1980. (Voir l'instruction
DateTimeValue.)
Exécution
Mode Mnémonique Action
37 DATERANGE Sélection de date à date de l'ensemble des alarmes en cours et
affichage dans l'animation.
Retour : 1 si OK, 0 sinon (la fenêtre n'existe pas, etc.)

Pour annuler ce filtre il faut forcer Start Date et End Date à 0.


Notes pour les cas particuliers :

Si seulement Start Date est renseignée (EndDate=0) : l'animation restitue l'ensemble


des alarmes depuis la date de début jusqu'à celles qui arrivent en temps réel. (à
concurrence du nombre d'alarmes paramétrées dans la liste).
Si seulement End Date est renseignée (StartDate=0) : l'animation restitue l'ensemble
des alarmes depuis la plus ancienne réelle (à concurrence du nombre d'alarmes
paramétrées dans la liste).

Syntaxe 7
Ret = ALARMDISPLAY(Mode, Window, Branch, Identity, Filter);
Argument Signification
Filter Expression de filtre. Voir le chapitre Expressions de Filtres pour plus informations. Type STR.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
26 FILTER Sélectionne les alarmes à visualiser en appliquant le filtre.
Retour : 1 si OK, 0 sinon (la fenêtre n'existe pas, etc.)

Syntaxe 8
IntVal =ALARMDISPLAY(Mode, Window, Branch, Identity, AlarmName, Selected );

SV_SCADABasic_fr 67
Argument Action
AlarmNam Nom de l'alarme à laquelle la ligne sélectionnée fait référence.
e
Selected Etat de la ligne : sélectionnée (0) ou non (1).

Type de retour : INTEGER


Exécution

Mode Mnémonique Action


2 SELECT Sélectionne une ligne de la fenêtre d'alarmes, en mode Liste.
Retour : 1 si OK, 0 sinon (fenêtre non-existante, mauvais type
d'animation, repère non-existant, variable non trouvée).

Syntaxe 9
IntVal =ALARMDISPLAY(Mode, Window, Branch, Identity, Program, Branch, Function, [Farg]);

Argument Action
Program Programme à utiliser.
Function Fonction à exécuter.
Farg Contient de 1 à 8 arguments séparés par des virgules "," (Facultatif, maximum 255
caractères.

Vous pouvez utiliser la commande GETARG pour récupérer la valeur de ces arguments.

Type de retour : INTEGER


Exécution
Autorise la spécification d'une fonction SCADA BASIC qui s'exécutera lorsqu'une ligne d'alarme sera
sélectionnée dans une animation, soit par un clic souris soit par programme avec le mode SELECT.

Mode Mnémonique Action


40 ONLINESELEC Répond à l'événement de la sélection d'une ligne.
T
Retour : 1 si OK, 0 sinon (fenêtre non-existante, mauvais type
d'animation, repère non-existant).

Syntaxe 10
DblVal =ALARMDISPLAY(Mode, Window, Branch,Identity);
Type de retour : DOUBLE (peut être 0 si aucune sélection n'a été faite).
Exécution

Mode Mnémonique Action


41 SELECDATETI Récupère l'horodate de la dernière alarme sélectionnée dans une

SV_SCADABasic_fr 68
ME fenêtre d'alarme.
Retour : 1 si OK, 0 sinon (fenêtre non-existante, mauvais type
d'animation, repère non-existant).

Le mnémonique de l'instruction est 'SELECDATETIME (et non 'SELECT...').

Syntaxe 11
IntVal =ALARMDISPLAY(Mode, Window, Branch,Identity[,PrintFormat]);
Type de retour : INTEGER.

Argument Action
PrintForma Paramètre optionnel pour la sélection du format d'impression :
t 0 : Format d'affichage (défaut).
1 : Format d'impression.
Exécution

Mode Mnémonique Action


25 PRINTALL Imprime toutes les lignes du buffer configuré dans la fenêtre d'alarme.
31 PRINT_SELECTE Imprime l'alarme sélectionnée.
D
32 PRINT_DISPLAY Imprime toutes les alarmes visibles dans la fenêtre.
Retour pour tous ces modes : 1 si OK, 0 sinon.

Syntaxe 12
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Program, ProgramBranch, Function,
Arguments);
Type de retour : INTEGER.
Argument Signification
Program Programme a exécuter.
ProgramBra Branche du programme.
nch
Function Fonction du programme à exécuter.
Arguments Paramètres du programme.

Exécution
Mode Mnémonique Action
44 LINESELECT Spécifie un programme à exécuter lorsque une ligne
sélectionnée/désélectionnée apparaît.
Retour : 1 si OK, 0 si paramètre erroné.

L'instruction XMLPATH est utilisée pour obtenir les informations du mode GETSORT. Un espace de
nom est créé automatiquement lors de l'utilisation des paramètres Branch, Window et Identit. Pour
des informations sur son format, voir le chapitre XMLPATH.

Les significations des chemins XML sont les suivantes :

SV_SCADABasic_fr 69
Chemin Signification
getsort/colu Valeurs 0 à 7 pour identifier la colonne, -1 pour réinitialiser le tri.
mn
getsort/sort Valeurs 1 pour un tri ascendant, 0 pour un tri descendant.

Syntaxe 13
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Column, Sort);
Type de retour : INTEGER.
Argument Signification
Column Valeurs de 0 à 7 pour indentifier la colone, - 1 pour réinitialiser le tri.
Sort Valeur 1 pour un tri ascendant, 0 pour descendant.

Exécution
Mode Mnémonique Action
45 SETSORT Tri dynamique d'une liste d'alarme par une colonne.
Retour : 1 si OK, 0 si paramètre erroné.

Syntaxe 14
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Column, Sort);
Type de retour : INTEGER.
Argument Signification
Column Valeurs de 0 à 7 pour indentifier la colone, - 1 pour réinitialiser le tri.
Sort Valeur 1 pour un tri ascendant, 0 pour descendant.

Exécution
Mode Mnémonique Action
46 GETSORT Obtient le status d'un tri.
Retour : 1 si OK, 0 si paramètre erroné.

XMLPATH est utilisé pour obtenir les informations du mode GETSORT.

Un espace de nom est créé automatiquement lors de l'utilisation de Branch, Window et Identity.

Les significations des chemins XML sont les suivantes :


Chemin Signification
getsort/column Valeurs de 0 à 7 pour indentifier la colone, - 1 pour réinitialiser le tri.
getsort/sort Valeur 1 pour un tri ascendant, 0 pour descendant.

Syntaxe 15
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, DateFormat);
Type de retour : INTEGER
Argument Signification
DateFormat Chaîne de caractères définissant un nouveau format d'affichage pour des dates dans une

SV_SCADABasic_fr 70
alarme.
Exécution
Sélectionne un nouveau format pour la fenêtre d'alarmes.
Mode Mnémonique Action
22 FORMAT L'argument DateFormat fournit un nouveau format d'affichage.
Exemple de cette syntaxe : #h:#m:#s\t#D/#M/#y\t#T\t#E où \t
marque le début de chaque colonne et les caractères de substitution
sont ceux utilisés dans une fenêtre d'alarmes.

Il est n'est pas possible de modifier dynamiquement les titres des


colonnes.
Retour : 1 si OK, 0 sinon .

Syntaxe 16
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, LineNumber);
Type de retour : INTEGER
Argument Signification
LineNumber Numéro correspondant à la position de la ligne.
Exécution
Sélectionne un nouveau format d'affichage de la fenêtre d'alarmes.
Mode Mnémonique Action
47 ISLINESELECTED Test si la ligne est sélectionnée.
Retour : 1 si la ligne est sélectionnée, 0 si la ligne
n'est pas sélectionnée, - 1 si la ligne n'existe pas.
48 ISLINEVISIBLE Test si la ligne est visible.
Retour : 1 si la ligne est visible, 0 si la ligne est dans
le buffer mais n'est pas visible, -1 si la ligne n'existe
pas.

Syntaxe 17
StrVal = ALARMDISPLAY(Mode, Window, Branch, Identity, LineNumber);
Type de retour : STRING
Argument Signification
LineNumber Numéro correspondant à la position de la ligne.
Exécution
Sélectionne un nouveau format d'affichage de la fenêtre d'alarmes.
Mode Mnémonique Action
50 GET_NAME_FROM_LINE Retourne le nom de l'alarme de la ligne sélectionnée.

Syntaxe 18
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Separator);
Argument Signification
Separator Caractère(s) utilisé(s) pour délimiter le contenu de chaque colonne. Type STR.
Type de retour : INTEGER.
Exécution

SV_SCADABasic_fr 71
Mode Mnémonique Action
51 COPY_CLIPBOARD Copie les lignes sélectionnées vers le presse-papier Windows.
Retour : 1 si OK, 0 sinon.

Syntaxe 19
StrVal = ALARMDISPLAY(Mode, Window, Branch, Identity, LineStart[, LineEnd, ColSeparator,
LineSeparator]);
Argument Signification
Linestart Numéro de ligne (1ère ligne = 1) dans le buffer de la fenêtre d'alarmes. Type INTEGER.
LineEnd Numéro de ligne (1ère ligne = 1) dans le buffer de la fenêtre d'alarmes. Type INTEGER.
ColSeparator Caractère(s) utilisé(s) pour séparer les colonnes dans la chaîne de retour. Par défaut : virgule
",". Type STR.
LineSeparator Caractère(s) utilisé(s) pour séparer les lignes dans la chaîne de retour. Par défaut : nouvelle
ligne "\n". Type STR.
Type de retour : STR.
Exécution
Mode Mnémonique Action
53 GETLINES Retourne les lignes de LineStart à LineEnd (inclusive) dans une seule chaîne
délimitée par les caractères ColSeperator et LineSeperator. Si LineEnd est omis,
une seule ligne est retournée en utilisant les caractères par défaut pour délimiter
les colonnes.
Retour : Lignes sélectionnées de la fenêtre d'alarmes.
54 GETSELECTEDLINES Idem à GETLINES excepté que seules les lignes sélectionnées sont retournées.

Syntaxe 20
StrVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Line, Column);
Argument Signification
Line Numéro de colonne (1ère colonne = 1) dans le buffer de la fenêtre d'alarmes. Type INTEGER.
Column Numéro de colonne (1ère colonne = 1) dans le buffer de la fenêtre d'alarmes. Type INTEGER.
Type de retour : STR.
Exécution
Mode Mnémonique Action
52 GETCELL Retourne le contenu de la cellule spécifique.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus. En particulier, pour les syntaxes 12 et 14, voir
des exemples similaires dans les modes 23 et 25 du verbe LOGDISPLAY.

SV_SCADABasic_fr 72
ALLOC_BUFFER
Voir aussi
Alloue une zone mémoire de n octets.

Syntaxe
LongVal = ALLOC_BUFFER(N);
Type de retour : LONG
Exécution
La valeur de retour sert à référencer ultérieurement la zone mémoire réservée.

Modification de la taille du buffer


La taille maximum du buffer (par défaut 10 Mo) peut être modifiée en ajoutant les lignes suivantes dans le
fichier de configuration UICONF.DAT du répertoire C du projet.
[ScadaBasic\Alloc_Buffer]
MaxSize = 10
La taille maximum autorisée est de 100 Mo.

Lors de l'allocation d'un important buffer, vous devez accorder une attention particulière à la
désallocation de ce buffer après son utilisation.

Exemple
Cet exemple alloue une zone mémoire de n octets.
SUB Main()
DIM hbuffer As Long;
DIM intvalue As Integer;
intvalue = 50;

hbuffer = ALLOC_BUFFER(intvalue);
PRINT("Buffer handle = ",hbuffer);

'After using the memory area created with ALLOC_BUFFER,


'always release the memory area
FREE_BUFFER(hbuffer);
END SUB

SV_SCADABasic_fr 73
ANIMATION
Voir aussi
Permet l'exécution d'une animation à partir du SCADA BASIC.
Mode Mnémonique Syntaxe
1 EXECUTE 1

Syntaxe 1
ANIMATION(Mode, Window, Branch, Identity)

Argument Signification
Window Nom de la fenêtre qui contient l'animation à utiliser. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utilisation de "*" pour indiquer la branche
courante du programme. Type STR
Identity Identifiant (ou repère) de l'animation dans la fenêtre spécifiée. Type STR.

Exemple
Cet exemple initie une action à partir d'une animation. Pour l'utiliser :

1. Créer un synoptique appelé MENU.


2. Insérer un bouton dans le synoptique et configurer son identifiant en tant que BUTTON01.
3. Associer au bouton n'importe une animation forçage (Envoi/Chaînage/Exécution).

SUB AnimationExecute()
ANIMATION("EXECUTE","MENU","","BUTTON01");
END SUB

SV_SCADABasic_fr 74
APPLICATION
voir aussi Exemple
Lancement d'une autre application.
Mode Mnémonique Syntaxe
1 ISLOADED 1
2 ACTIVATE 1
3 LOAD 2
4 UNLOAD 2

Syntaxe 1
IntVal = APPLICATION(Mode, Command);
Type de retour : INTEGER
Argument Signification
Command Nom de fichier de l'application. Il peut comprendre un chemin d'accès (nom de lecteur et
nom de répertoire). Type STR.
Exécution
Mode Mnémoniq Action
ue
1 ISLOADED Teste si l'application spécifiée est en cours d'exécution.
Retour : 1 si en cours d'exécution, 0 sinon.
2 ACTIVATE Active une application en cours d'exécution.
Retour : 1 si OK, 0 sinon.
4 UNLOAD Ferme une application.
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = APPLICATION(Mode, Command[, Argument[, Start][,Folder]]);
Type de retour : INTEGER
Argument Signification
Command Nom de fichier de l'application. Il peut comprendre un chemin d'accès (nom de lecteur et
nom de répertoire). Type STR.
Argument Contient des arguments ou des options de lignes de commande valides de l'application à
lancer. Facultatif. Type STR.
Start Détermine le style de fenêtre dans laquelle l'application doit être exécutée. Type INTEGER.
1 Normale active (valeur par défaut).
2 Réduite active.
3 Agrandie active.
4 Normale non active (en arrière-plan).
5 Réduite non active (en arrière-plan).
Folder Unité et répertoire courant de travail ("Démarrer dans" (Working Folder)) pour le
programme).
La chaîne de caractères doit être un chemin complet incluant l'unité. Si celui-ci n'est pas

SV_SCADABasic_fr 75
correct, le programme aura la même unité et répertoire que le Superviseur. Type STR.
Exécution
Mode Mnémonique Action
3 LOAD Charge et lance une application.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 76
ASC
Voir aussi
Renvoie le code ASCII du 1er caractère d'une chaîne.

Syntaxe
IntVal = ASC(string[, iExtended]);
Type de retour : INTEGER
Exécution
Argument Valeur
string Chaîne de texte. Seul le premier caractère est utilisé.
iExtended Pour l'utilisation de caractères avec les codes ANSI étendus :
0 : (défaut) renvoie une valeur négative lorsque le code est supérieur à 127. Pour
renvoyer le bon code, ajouter 256.
1 : Renvoie une valeur positive lorsque le code est supérieur à 127.
IntVal Le code renvoyé est compris entre 0 et 255. Si la chaîne est vide la fonction retourne 0.

Le code renvoyé est compris entre 0 et 255. Si la chaîne est vide la fonction retourne 0.

Exemple
Cet exemple renvoie les codes ASCII des nombres jusqu'à 256.
Sub TestASC()
Dim i As Integer;
Dim c As Str;
Dim j As Integer;

For (i=0; i<256; i++)


c = Chr (i);
j = Asc (c);
Print (i, " ", c, " ", j );
Next
End Sub

SV_SCADABasic_fr 77
ASCIIFIELD
Voir aussi Exemple
Récupération des champs séparés par un caractère donné dans des buffers ASCII.
Mode Mnémonique Syntaxe
1 LEN 1
2 COUNT 2
3 STR 1
4 INTEGER 1
5 LONG 1
6 DOUBLE 1

Le buffer ASCII doit se terminer par un caractère de saut de ligne, soit \n, soit CHR(10).

Si vous ne terminez pas le buffer correctement, le dernier champ (le plus à droite) ne
sera pas reconnu.
Vous ne pouvez pas saisir de caractère de saut de ligne dans l'animation Envoi de Texte.

Syntaxe 1
RetVal = ASCIIFIELD(Mode, Handle, Index [, Sepa]);
Argument Signification
Handle Handle du buffer duquel on veut récupérer des champs. Type LONG.
Index Indice du champ à partir de 1 pour le premier champ. Type INTEGER.
Sepa Séparateur de champ il s'agit de la virgule "," par défaut. Type STR.
Exécution
Mode Mnémonique Action
1 LEN Renvoie la longueur du index ième champ du buffer hdl. Si index n'est pas
spécifié, c'est la capacité totale (taille d'allocation) du buffer hdl qui est
retournée. Type de retour : INTEGER.
3 STR Renvoie la chaîne caractère contenue dans le index ième champ dubuffer hdl. Si
index est supérieur au nombre de champs contenu dans le buffer, renvoie une
chaîne vide. Type de retour : STR.
4 INTEGER Renvoie la valeur entière contenue dans le index ième champ du buffer hdl. Si
index est supérieur au nombre de champs contenu dans le buffer, renvoie 0.
Type de retour : INTEGER.
5 LONG Renvoie la valeur LONG contenue dans le index ième champ du buffer hdl. Si
index est supérieur au nombre de champs contenu dans le buffer, renvoie 0.
Type de retour : LONG.
6 DOUBLE Renvoie la valeur réelle contenue dans le index ième champ du buffer hdl. Si
index est supérieur au nombre de champs contenu dans le buffer, renvoie 0.
Type de retour : DOUBLE.

Syntaxe 2
RetVal = ASCIIFIELD(Mode, Handle [, Sepa]);
Argument Signification
Handle Handle du buffer duquel on veut récupérer des champs. Type LONG.

SV_SCADABasic_fr 78
Sepa Séparateur de champs, par défaut c'est une virgule ",". Type STR.
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
2 COUNT RRenvoie le nombre de champs contenus dans le buffer hdl, en prenant sepa
comme séparateur de champs.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 79
ASIN
Voir aussi
Fonction arcsinus.

Syntaxe
DblVal = ASIN(arc);
Type de retour : DOUBLE
Exécution
Argument Valeur
DblVal Tout type numérique mais doit être compris entre -1 et 1, sinon la fonction retourne 0. La
valeur de retour est exprimée en degrés.

Les variables de la base de données sont de type SINGLE.


En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si l'on veut
éviter une erreur de type.

Exemple
'database variables required:
' @ARC - type REGISTER, value range -1 to +1
' @ANGLE - type REGISTER, value range 0° to 360°

SUB Main()
DIM sngarc As Single;
DIM dblangle As Double;
sngarc = @SB_EXAMPLES.TRIG.ARC;

'Apply arc sine function


dblangle = ASIN (sngarc);
@SB_EXAMPLES.TRIG.ANGLE = TOS(dblangle);
Delay(0.1);
Print (@SB_EXAMPLES.TRIG.ANGLE);
END SUB

SV_SCADABasic_fr 80
ASSOCIATEDACTIONS
Voir aussi Formats de fichiers
Importe les actions associées d'une alarme, à partir d'un fichier ou d'un buffer.
Mode Mnémonique Syntaxe Depuis la
version
0 IMPORTBYFILE 1 7.20a
1 IMPORTBYHANDLE 2 7.20a

Syntaxe 1
IntVal = ASSOCIATEDACTIONS(Mode, FileName);
Type de retour : INTEGER
Argument Signification
FileName Nom du fichier texte situé dans le répertoire TP du projet ou dans un répertoire choisi par
un chemin absolu. Type STR.

Exécution
Mode Mnémonique Action
0 IMPORTBYFILE Import des actions associées pour les alarmes à partir du fichier
spécifié.

Retour : 0 si OK, 1 sinon.

Exemple
ASSOCIATEDACTIONS(0, "addAAA.dat");
ASSOCIATEDACTIONS("IMPORTBYFILE", "addAAA.dat");

Syntaxe 2
IntVal = ASSOCIATEDACTIONS(Mode, Handle);
Type de retour : INTEGER
Argument Signification
Handle Adresse du buffer mémoire retournée par ALLOC_BUFFER. Type LONG.

Exécution
Mode Mnémonique Action
1 IMPORTBYHANDLE Import des actions associées pour les alarmes à partir d’un buffer.

Retour : 0 si OK, 1 sinon.

Example
DIM hbuf AS LONG;
hbuf = FILETOBUF("addAAA.dat");
ASSOCIATEDACTIONS(1, hbuf);
'OR
ASSOCIATEDACTIONS("IMPORTBYHANDLE", hbuf);

SV_SCADABasic_fr 81
ASSOCLABEL
Voir aussi Exemple
Modifie un libellé associé.
Mode Mnémonique Syntaxe
1 SETLABEL 1

Syntaxe 1
IntVal = ASSOCLABEL(Mode, AssocLabelName, EventCode, Label [, Language]);
Type de retour : INTEGER
Argument Valeur
AssocLabelNam Nom du libellé associé.
e
EventCode Code du type d'événement :
0 état à 0
1 état à 1
2 passage à 0
3 passage à 1
4 commande à 0
5 commande à 1
Label Libellé de l'événement.
Language Code de la langue : 0 (langue de base) ou 1 (langue alternée).
Retour : 1 si OK, 0 sinon.
Exécution
Mode Mnémonique Action
1 SETLABEL Modification du libellé lié à l'événement CodeEvent.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 82
ATAN
Voir aussi
Fonction arctangente.

Syntaxe
DblVal = ATAN(arc);
Type de retour : DOUBLE
arc peut être de tout type numérique
Exécution
Argument Signification
DblVal La valeur de retour est exprimée en degrés.

Les variables de la base de données sont de type SINGLE.


En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si l'on veut
éviter une erreur de type.

Exemple
'database variables required:
' @ARC - type REGISTER, value range -1 to +1
' @ANGLE - type REGISTER, value range 0° to 360°

SUB Main()
DIM sngarc As Single;
DIM dblangle As Double;
sngarc = @ARC;

'Apply Arc tangent function


dblangle = ATAN (sngarc);
@ANGLE = TOS(dblangle);

END SUB

SV_SCADABasic_fr 83
BACNET
Voir aussi Exemple
Exécute des commandes relatives au protocole BACnet.
Mode Mnémonique Syntaxe
0 RESET_PRIORITY 1
1 RESET_ALL_PRIORITIES 2
2 TIME_SYNCHRONIZATION 3
3 START_NETWORK 4
4 STOP_NETWORK 4
5 START_DEVICE 5
6 STOP_DEVICE 5
7 WRITE_PRIORITY 6
8 RESTART_NETWORK 4
9 START_NOTIFICATION 7
10 STOP_NOTIFICATION 7
11 START_LOG 8
12 STOP_LOG 8
13 LOG_RETRIEVAL 9
14 BACKUP_DEVICE 5
15 RESTORE_DEVICE 5

Vous pouvez spécifier la valeur par défaut, pour écrire et réinitialiser la priorité, dans les propriétés
avancées d'une variable : BACnet.Priorité d'écriture.

Syntaxe 1
Return = BACNET(Mode, VariableName, Priority[, ResultVar]);
Argument Signification
VariableNam Nom de la variable BACnet dans le Superviseur. Type STR.
e
Priority Priorité de la variable BACnet dans le Superviseur (entre 1 et 16, ou 0 pour utiliser la priorité
d'écriture par défaut). Type INTEGER.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande est terminée.
-1: La variable n'est pas reconnue.
-2: La variable n'est pas une variable BACnet.
-3: L'élément BACnet est désactivé.
-4: Le numéro de priorité est invalide.
-5: La réinitialisation a échouée.
Return: 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom de la variable est manquant.
-3: La priorité est manquante.

Exécution
Mode Mnémonique Action
0 RESET_PRIORITY Réinitialiser la valeur écrite dans un niveau de priorité en particulier.

Syntaxe 2

SV_SCADABasic_fr 84
Return = BACNET(Mode, VariableName[, ResultVar]);
Argument Signification
VariableName Nom de la variable BACnet dans le Superviseur. Type STR.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande est terminée.
-1: La variable n'est pas reconnue.
-2: La variable n'est pas une variable BACnet.
-3: L'élément BACnet est désactivé.
Return: 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom de la variable est manquant.

Exécution
Mode Mnemonic Action
1 RESET_ALL_PRIORITIES Réinitialise les valeurs de priorité des variables pour tous les niveaux de
priorité.

Syntaxe 3
Return = BACNET(Mode, NetworkName[, ResultVar]);
Argument Signification
NetworkNam Nom du réseau BACnet dans le Superviseur. Type STR.
e
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont :0: La commande est suspendue.
1: La commande est terminée.
-1: Le réseau n'est pas reconnu.
La variable résultat confirme l'envoi de la commande de synchronisation de l'heure mais
les équipements BACnet n'envoie pas d'acquittement.
Return:
0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le réseau est manquant.

Exécution
Mode Mnemonic Action
2 TIME_SYNCHRONIZATION Synchronise le temps de tous les équipements du réseau.

Syntaxe 4
Return = BACNET(Mode, NetworkAlias[, ResultVar]);
Argument Signification
NetworkAlias Nom du réseau BACnet dans le Superviseur. Type STR.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande est terminée ; le réseau a été démarré (mode START_NETWORK)
ou arrêté (mode STOP_NETWORK).
-1: Le réseau n'est pas reconnu.

SV_SCADABasic_fr 85
-2: La commande a échouée. Le réseau n'a pas été démarré (mode
START_NETWORK).
Dans le cas d'un échec de la commande (-2), vous pouvez vérifier les variables
système STATUS de BACnet pour plus d'informations.
Return: 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le réseau est manquant.

Exécution
Mode Mnemonic Action
3 START_NETWORK Démarre le réseau.
4 STOP_NETWORK Arrête le réseau.
8 RESTART_NETWORK Redémarre le réseau.

Syntaxe 5
Return = BACNET(Mode, NetworkAlias, DeviceAlias[, ResultVar]);
Argument Signification
NetworkAlias Nom du réseau BACnet dans le Superviseur. Type STR.
DeviceAlias Nom de l'équipement BACnet dans le Superviseur. Type STR.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande est terminée ; l'équipement a été démarré (mode
START_DEVICE) ou arrêté (mode STOP_DEVICE).
-1: L'équipement n'est pas reconnu.
-2: La commande a échouée ; L'équipement n'a pas été démarré. (mode
START_DEVICE)
Dans le cas d'un échec de la commande (-2), vous pouvez vérifier la variable
système STATUS de BACnet pour plus d'informations.
Return: 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom du réseau est manquant.
-3: Le nom de l'équipement est manquant.

Exécution
Mode Mnemonic Action
5 START_DEVICE Démarre l'équipement.

6 STOP_DEVICE Arrête l'équipement.


14 BACKUP_DEVICE Sauvegarde la configuration de l'équipement.
15 RESTORE_DEVICE Restaure la configuration de l'équipement.

Syntaxe 6
Return = BACNET(Mode, VariableName, Value, Priority[, ResultVar]);
Argument Signification
VariableName Nom de la variable BACnet dans le Superviseur. Type STR.
Value Valeur à écrire. Elle est du même type que la variable.
Priority Priorité de la variable BACnet dans le Superviseur (entre 1 et 16, ou 0 pour utiliser la
priorité d'écriture par défaut). Type INTEGER.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.

SV_SCADABasic_fr 86
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande est terminée.
-1: La variable n'est pas reconnue.
-2: La variable n'est pas une variable BACnet.
-3: L'élément BACnet est désactivé.
-4: Le numéro de priorité est invalide.
-5: La réinitialisation a échouée.
Return:0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom de la variable est manquant.
-3: La priorité est manquante.
-4: Le type de la variable n'est pas reconnu.
-5: Le type de valeur est différent du type de variable.

Exécution
Mode Mnémonique Action
7 WRITE_PRIORITY Ecrit la variable avec une priorité particulière.

Syntaxe 7
Return = BACNET(Mode, NetworkAlias, DeviceAlias, NotificationAlias[, ResultVar]);
Argument Signification
NetworkAlias Nom du réseau BACnet dans le Superviseur. Type STR.
DeviceAlias Nom de l'équipement BACnet dans le Superviseur. Type STR.
NotificationAlias Nom d'une notification BACnet dans le Superviseur. Type STR.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande a été envoyée à l'équipement.
-1: La notification n'existe pas.
-2: La commande a échoué.
Dans le cas d'un échec de la commande (-2), vous pouvez vérifier les
variables système STATUS de BACnet pour plus d'informations.
Retour : 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom du réseau est manquant.
-3: Le nom de l'équipement est manquant.
-4: Le nom de la notification est manquant.

Exécution
Mode Mnémonique Action
9 START_NOTIFICATION Démarre les notifications.
10 STOP_NOTIFICATION Stoppe les notifications.

Syntaxe 8
Return = BACNET(Mode, NetworkAlias, DeviceAlias, LogAlias[, ResultVar]);
Argument Signification
NetworkAlias Nom du réseau BACnet dans le Superviseur. Type STR.
DeviceAlias Nom de l'équipement BACnet dans le Superviseur. Type STR.
LogAlias Nom du Log BACnet dans le Superviseur. Type STR.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)

SV_SCADABasic_fr 87
Ses valeurs sont : 0: La commande est suspendue.
1: La commande a été envoyée à l'équipement.
-1: Le Log n'existe pas.
-2: La commande a échoué.
Dans le cas d'un échec de la commande (-2), vous pouvez vérifier les
variables système STATUS de BACnet pour plus d'informations.
Retour : 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom du réseau est manquant.
-3: Le nom de l'équipement est manquant.
-4: Le nom de la notification est manquant.

Exécution
Mode Mnémonique Action
11 START_LOG Arrête le Log.
12 STOP_LOG Stoppe le Log.

Syntaxe 9
Return = BACNET(Mode, NetworkAlias, DeviceAlias, LogAlias, Date, Count[, ResultVar]);
Argument Signification
NetworkAlias Nom du réseau BACnet dans le Superviseur. Type STR.
DeviceAlias Nom de l'équipement BACnet dans le Superviseur. Type STR.
LogAlias Nom du Log BACnet dans le Superviseur. Type STR.
Date Horodate de référence pour le premier enregistrement à lire. Type DOUBLE.
Count Numéro de l'enregistrement à lire. Type INTEGER.
ResultVar Nom de la variable mesure qui contient le résultat de l'instruction. Type STR.
(Optionnel)
Ses valeurs sont : 0: La commande est suspendue.
1: La commande a été envoyée à l'équipement.
-1: Le Log n'existe pas.
-2: La plage de lecture demandée n'existe pas.
Dans le cas d'un échec de la commande (-2), vous pouvez vérifier la var
système STATUS de BACnet pour plus d'informations.
Retour : 0: OK.
-1: Le mode commande n'est pas reconnu.
-2: Le nom du réseau est manquant.
-3: Le nom de l'équipement est manquant.
-4: Le nom du Log est manquant.
-5: La variable résultat n'existe pas.
-6: La date est incorrecte.
-7: Le nombre d'enregistrements est inférieur à -1000 ou supérieur à 10000.

Exécution
Mode Mnémonique Action
13 LOG_RETRIEVAL Récupére le buffer de Log en utilisant les paramètres fournis. Si la date
est vide ou non définie et le nombre d'enregistrements est 0 ou non
défini, le buffer sera lu dans son intégralité si l'équipement le permet.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 88
BEEP
Voir aussi
Emet un signal (beep) sonore.

Syntaxe
IntVal = BEEP([Freq, [Period]]);
Type de retour : INTEGER
Argument Signification
Freq Fréquence du son généré en hertz. Type DOUBLE.
Period Durée du son généré en millisecondes. Type DOUBLE.

Exécution
Déclenche le haut-parleur de l'unité centrale.

Retour : Toujours 1.

Il y a un délai après l'utilisation de l'instruction BEEP, ce qui signifie qu'elle ne peut être utilisée que
toutes les 2 secondes.

Si l'instruction BEEP n'est pas exécutée pendant une longue période, l'opération est suspendue.

Exemple
Cet exemple produit un son de 1000 Hz pendant un dixième de seconde.
SUB main()
DIM dblfrequency as double; 'in Hz
DIM dbldelay as double; ' in ms

dblfrequency = 1000;
dbldelay = 100;
BEEP (dblfrequency,dbldelay);
END SUB

SV_SCADABasic_fr 89
BIN
Voir aussi
Renvoie une chaîne représentant en binaire un nombre passé en base 10.

Syntaxe
StrVal = BIN(N);
Type de retour : STR
N peut être de tout type numérique.
Exécution
Argument Signification
N Chaîne représentant en binaire un nombre passé en base 10.

La taille de la chaîne dépend de la valeur de retour du nombre à convertir.

Exemple
Cet exemple donne l'équivalent binaire d'un nombre décimal.
SUB Main()
DIM intNumber as integer;
DIM strResult as Str;

intNumber = 3;
strResult = BIN(intNumber);
Print(intNumber," in base 10 => ",strResult," in base 2");
'3 in base 10 => 11 in base 2
END SUB

SV_SCADABasic_fr 90
BREAK
Voir aussi
Sortie d'un bloc d'instructions.

Syntaxe
BREAK;
Pas de retour
Exécution
Sortie d'un bloc d'instructions.

Exemple
SUB main()
DIM i As Integer;
For (i=1;i<1000;i++)
If (i>500) Then
BREAK;
End If
Next

PRINT("value = ",i);
'value = 501
END SUB

SV_SCADABasic_fr 91
BUFTOEXCEL

Voir aussi
Crée un fichier Excel au format XLSX en utilisant le contenu d'un buffer mémoire.

Syntaxe
IntVal = BUFTOEXCEL (Handle, LineSeparator, ColumnSeparator, WorkbookPath, SheetName, FileMode,
[FirstLineNumber, FirstColumnNumber])
Argument Meaning
Handle Localisation du buffer mémoire. Type LONG.
LineSeparator Séparateur de ligne utilisé dans le buffer (un caractère comme ‘;’ ou ‘\n’). Type
STR.
ColumnSeparator Séparateur de colonne utilisé dans le buffer (un caractère comme ‘,’ ou ‘\t’).
Type STR.
WorkBookPath Chemin complet du classeur de travail y compris le nom du fichier. Par exemple
E:\\WorkBooks\\MyBook.xlsx.
SheetName Nom de la feuille de calcul. Type STR.
FileMode Mode d'écriture du fichier. Type STR.
CLEARSHEET - Le classeur est ouvert s'il existe, autrement il est créé. La feuille
est écrasée si elle existe, autrement elle est créée. Les caractères du buffer
mémoire sont écrits jusqu'à ce que le premier caractère nul soit rencontré dans
le buffer.
APPEND - Le classeur est ouvert s'il existe, autrement il est créé. La feuille est
ouverte si elle existe autrement elle est créée. Les caractères du buffer
mémoire sont ajoutés à la fin de la feuille jusqu'à ce que le premier caractère
nul soit rencontré dans le buffer.
FirstLineNumber Première ligne à écrire dans la feuille Excel (Valeur par défaut = 1). Type
INTEGER.
FirstColumnNumber Première colonne à écrire dans la feuille Excel (valeur par défaut = 1). Type
INTEGER.

Exécution
Action
Crée un fichier Excel au format XLSX en utilisant le contenu d'un buffer mémoire.
Retour :
0 - OK
-1 - Paramètre du buffer invalide
-2 - Buffer inconnu
-3 - Paramètre LineSeparator invalide
-4 - Paramètre ColumnSeparator invalide
-5 - Paramètre WorkBookPath invalide
-6 - Paramètre SheetName invalide
-7 - Paramètre FileMode invalide
-8 - Paramètre FileMode inconnu
-9 - Paramètre FirstLineNumber doit être plus grand que 1
-10 - Paramètre FirstColumnNumber doit être plus grand que 1
-11 - Mauvais contenu de buffer (le compte de colonne n'est pas le même pour chaque ligne)
-12 - Erreur d'écriture (Détails dans l'observateur d'événements)

SV_SCADABasic_fr 92
BUFTOFILE
Voir aussi Exemple
Crée un fichier ASCII à partir d'un buffer.
Action Syntaxe
Create ou overwrite 1
Write ou append 2

Syntaxe 1
IntVal = BUFTOFILE(Handle, FileName);
Type de retour : INTEGER
Argument Signification
Handle Départ du bloc mémoire. Type LONG.
FileName Nom du fichier à écrire. Type STR.
Exécution
Le fichier est créé, son contenu correspond au contenu strict du buffer.
Le fichier est écrasé s'il existe déjà.

Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = BUFTOFILE(Handle, FileName, BufferMode[, FileMode]);
Type de retour : INTEGER
Argument Signification
Handle Départ du bloc mémoire. Type LONG.
FileName Nom du fichier à écrire. Type STR.
BufferMode Toujours "USEFULL_PART". Type STR.
FileMode Mode d'ouverture du fichier cible. Type STR.
Exécution

Argument Signification
FileMode Write (par défaut si option non spécifiée). Le fichier est créé et les caractères du
buffer mémoire sont écrits jusqu'au 1er caractère nul du buffer. Si le fichier existe
déjà, il est écrasé.
Append (permet d'écrire le buffer en fin de fichier). Le fichier est ouvert en écriture
et les caractères du buffer mémoire sont écrits en fin du fichier jusqu'au 1er
caractère nul du buffer.

Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 93
Tous les fichiers créés par cette fonctions sont localisés dans le répertoire projet TP.

Exemple
Dim Handle As Long;
Handle = Alloc_Buffer(50);
Put_Buffer (Handle,0, "Hello World");
Buftofile(Handle,"GREET.TXT");
Free_Buffer (Handle);
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 94
CAPTION
Voir aussi
Affiche un texte dans la barre de titre de la fenêtre principale.

Syntaxe
StrVal = CAPTION(NewTitle);
Type de retour : STR
Argument Signification
NewTitle Nouveau titre dans la barre de titre de la fenêtre principale. Type STR.
Exécution
CAPTION affiche la chaîne de caractères passée en argument dans la barre de titre de la fenêtre
principale. Il faut donc auparavant autoriser l'affichage du titre dans la boîte "Comportement" du menu
(CONFIGURER.Ergonomie.Fenêtre principale) si on veut le voir apparaître.

Retour : 1 si OK, 0 sinon.

Exemple
SUB Main()
DIM strCaption as Str;
DIM intResult as Str;

strCaption="Main Project 1";


intResult = CAPTION(strCaption);
END SUB

SV_SCADABasic_fr 95
CGET_BUFFER
Voir aussi Exemple
Récupère un ou plusieurs caractères dans une zone mémoire.

Syntaxe
StrVal = CGET_BUFFER(Handle, Offset [, Chars[, Flag]]);
Type de retour : STR
Argument Signification
Handle Localisation du buffer en mémoire. Type LONG.
Offset L'offset en octet (1 octet par caractère) représentant le point auquel la lecture débutera. Tout
type numérique.
Chars Nombre de caractères à retourner. Si ce champ est vide, seulement un caractère sera
retourné. Tout type numérique.
Flag Conversion d'une chaîne de caractères ASCII vers ANSI. Flag = 1 désactive la conversion,
Flag = 0 l'active.
Exécution
Récupère un ou plusieurs caractères dans une zone mémoire allouée par un ALLOC_BUFFER à l'offset
précisé, à partir de la position Offset précisée et les stocke dans une chaîne (type STR).

Retour : Une chaîne de caractères.

Les caractères récupérés sont convertis en ANSI par défaut sauf si Flag = 1.

Exemple
SUB Main()
DIM bufh as LONG;
CONST SIZE = 0;
CONST MODI = 4;
CONST ALLOC = 22;
bufh = ALLOC_BUFFER(ALLOC);
PRINT(FSTAT("myfile.dat", bufh));
PRINT("Size (bytes) :",IGET_BUFFER(bufh,SIZE));
PRINT("Date changed :",CGET_BUFFER(bufh,MODI));
FREE_BUFFER(bufh);
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 96
CHART

Voir aussi Exemple


Gère le fonctionnement d'un graphique XY dans l'IHM.

Mode Mnémonique Syntaxe


1 AXE_SETRANGE 1
2 AXE_SETTITLE 2
3 LINE_CLEAR 3
4 LINE_START 4
5 LINE_END 4
6 PRINT 5
7 RANGE_ADDPOINT 6
8 RANGE_CLEAR 7
9 RANGE_REMOVEPOINT 8
10 REFRESH 9
11 SERIES_ADDPOINT 10
12 SERIES_CLEAR 11
13 SERIES_GETCOUNT 11
14 SERIES_GETTS 12
15 SERIES_GETXVALUE 12
16 SERIES_GETYVALUE 12
17 SERIES_IDXFROMX 13
18 SERIES_IDXFROMXY 14
19 SERIES_REMOVEPOINT 12
20 SERIES_SETVAR 15
21 SERIES_SHOW 16
22 SERIES_SORT 11
23 SERIES_STATS 17
24 SERIES_YCOUNTFROMX 18
25 SERIES_YVALUEFROMX 13
26 SETDATETIME 19
27 SETENDTIMEPERIOD 20
28 SETSTARTTIMEPERIOD 21
29 SETSAMPLEPERIOD 22
30 SETSOURCEVAR 23
31 SETTITLE 24
32 SERIES_TOFRONT 11
33 COPY_CLIPBOARD 10
34 SAVE_IMAGE 25

Propriétés communes à tous les modes


Argument Signification
Window Nom de la fenêtre contenant le graphique. Type STR.
Branch Branche de la fenêtre contenant le graphique. Type STR.
Identifier Identifiant du graphique (dans la fenêtre). Type STR

Syntaxe 1
LongVal = CHART (Mode, Window, Branch, Identifier, Axis, Min, Max);
Argument Signification
Axis Nombre représentant l'axe à modifier. Type LONG.
1=X

SV_SCADABasic_fr 97
2 = Y (Gauche)
3 = Y (Droit)
Min Nouvelle valeur minimum pour l'axe . Type DOUBLE.
Max Nouvelle valeur maximum pour l'axe . Type DOUBLE.

Exécution
Mode Mnémonique Action
1 AXE_SETRANGE Positionne la plage de l'axe. Si 0 est utilisé pour max et min, la plage
est positionnée automatiquement.
Retour : 1 si OK, 0 si NOK.

Syntaxe 2
IntVal = CHART (Mode, Window, Branch, Identifier, Axis, Title);
Argument Signification
Axis Nombre représentant l'axe à modifier. Type LONG.
1=X
2 = Y (à gauche)
3 = Y (à droite)
Title Nouveau titre de l'axe. Type STR.

Exécution
Mode Mnémonique Action
2 AXE_SETTITLE Positionne le titre de l'axe.
Retour : 1 si OK, 0 si NOK.

Syntaxe 3
IntVal = CHART (Mode, Window, Branch, Identifier, LineID);
Argument Signification
LineID Identifiant de l'objet Ligne. Soit 1, soit 2. Type LONG.

Exécution
Mode Mnémonique Action
3 LINE_CLEAR Efface l'objet Ligne.
Retour : 1 si OK, 0 si NOK.

Syntaxe 4
IntVal = CHART (Mode, Window, Branch, Identifier, LineID, X, Y);
Argument Signification
LineID Identifiant de l'objet Ligne. Soit 1, soit 2. Type LONG.
X, Y Nouvelles coordonnées X et Y. Type DOUBLE.

Exécution
Mode Mnémonique Action
4 LINE_END Positionne de nouvelles coordonnées pour le point de fin de la ligne.
Retour : 1 si OK, 0 si NOK.
5 LINE_START Positionne de nouvelles coordonnées pour le point de départ de la
ligne.
Retour : 1 si OK, 0 si NOK.

Syntaxe 5
IntVal = CHART (Mode, Window, Branch, Identifier [, Orientation [, Printer]]);
Argument Signification

SV_SCADABasic_fr 98
Orientation Orientation de l'impression. Optionnel. Type LONG.
1 = Paysage
2 = Portrait
X, Y Nom de l'imprimante à utiliser pour l'impression. Type STR.

Exécution
Mode Mnémonique Action
6 PRINT Imprime le graphique sur l'imprimante sélectionnée.
Retour : 1 si OK, 0 si NOK.

Syntaxe 6
IntVal = CHART (Mode, Window, Branch, Identifier, RangeID, X, YLow, YHigh);
Argument Signification
RangeID Identifiant de l'objet Range. Soit 1, soit 2. Type LONG.
X Valeur X du point. Type DOUBLE.
YLow Valeur basse Y du point. Type DOUBLE.
YHigh Valeur haute Y du point. Type DOUBLE.

Exécution
Mode Mnémonique Action
7 RANGE_ADDPOINT Ajoute un point à l'objet Range.
Retour : 1 si OK, 0 si NOK.

Syntaxe 7
IntVal = CHART (Mode, Window, Branch, Identifier, RangeID);
Argument Signification
RangeID Identifiant de l'objet Range. Soit 1, soit 2 Type LONG.

Exécution
Mode Mnémonique Action
8 RANGE_CLEAR Efface l'objet Range.
Retour : 1 si OK, 0 si NOK.

Syntaxe 8
IntVal = CHART (Mode, Window, Branch, Identifier, RangeID, Index);
Argument Signification
RangeID Identifiant de l'objet Range. Soit 1, soit 2. Type LONG.
Index Index basé sur zéro du point à supprimer. Type DOUBLE.

Exécution
Mode Mnémonique Action
9 RANGE_REMOVEPOINT Supprime un point de l'objet Range.
Retour : 1 si OK, 0 si NOK.

Syntaxe 9
IntVal = CHART (Mode, Window, Branch, Identifier);

Exécution
Mode Mnémonique Action
10 REFRESH Rafraîchit le graphique en ré-éxécutant la requête d'historique.
Retour : 1 si OK, 0 si NOK.
33 COPY_CLIPBOARD Copie une image représentant le graphique vers le presse-papier pour

SV_SCADABasic_fr 99
de futures utilisations (Word etc.).
Retour : 1 si OK, 0 si NOK.

Syntaxe 10
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID, X, Y [, TS]);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
X Valeur X du point. Type DOUBLE.
Y Valeur Y du point. Type DOUBLE.
TS Horodate du point. Optionnel. Type DOUBLE.

Exécution
Mode Mnémonique Action
11 SERIES_ADDPOINT Ajoute un points aux séries.
Retour : 1 si OK, 0 si NOK.

Syntaxe 11
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.

Exécution
Mode Mnémonique Action
12 SERIES_CLEAR Efface les séries.
Retour : 1 si OK, 0 si NOK.
13 SERIES_GETCOUNT Retourne le nombre de points dans les séries.
Retour : Le nombre de points dans les séries si aucune erreur, -1
sinon.
22 SERIES_SORT Trie les séries selon l'axe des X.
Retour : 1 si OK, 0 si NOK.
32 SERIES_TOFRONT Positionne les séries au premier plan de le graphique.
Retour : 1 si OK, 0 si NOK.

Syntaxe 12
DblVal = CHART (Mode, Window, Branch, Identifier, SeriesID, Index);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
Index Index basé sur zéro du point à supprimer. Type DOUBLE.

Exécution
Mode Mnémonique Action
14 SERIES_GETTS Obtient l'horodate du point.
Retour : La valeur de l'horodate si OK, - 1 si l'index est hors
plage, 0 pour toutes les autres erreurs.
15 SERIES_GETXVALUE Obtient la valeur X du point.
Retour : La valeur X si OK, - 1 si l'index est hors plage, 0
pour toutes les autres erreurs.
16 SERIES_GETYVALUE Obtient la valeur Y du point.
Retour : La valeur Y si OK, - 1 si l'index est hors plage, 0
pour toutes les autres erreurs.
19 SERIES_REMOVEPOINT Supprime un point d'les séries.
Retour : 1 si OK, - 1 si l'index est hors plage, 0 pour toutes
les autres erreurs.

SV_SCADABasic_fr 100
Syntaxe 13
DblVal = CHART (Mode, Window, Branch, Identifier, SeriesID, X [, Rank]);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
X Obtient la valeur X. Type DOUBLE.
Rank Rang du point avec la valeur X. Optionnel. Type DOUBLE.

Exécution
Mode Mnémonique Action
17 SERIES_IDXFROMX Retourne l'index du point s'il existe, - 1 si le point n'existe
pas, 0 pour toutes les autres erreurs.
Pour plus d'informations, voir ci-dessous.
25 SERIES_YVALUEFROMX Retourne la valeur Y si le point existe, - 1 si le point n'existe
pas, 0 pour toutes les autres erreurs.

Syntaxe 14
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID, X, Y [, IndexStart [,IndexEnd]]);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
X Obtient la valeur X. Type DOUBLE.
Y Obtient la valeur Y. Type DOUBLE.
IndexStart Index de début de la requête. Type DOUBLE.
IndexEnd Index de fin de la requête. Type DOUBLE.

Exécution
Mode Mnémonique Action
18 SERIES_IDXFROMXY Retourne l'index du point s'il existe, - 1 si le point n'existe
pas, 0 pour toutes les autres erreurs.
Pour plus d'informations, voir ci-dessous.

Syntaxe 15
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID, VarName);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
VarName Nom d'une variable de l'arbre des variables. Type STR.

Exécution
Mode Mnémonique Action
20 SERIES_SETVAR Modifie la variable utilisée pour la source d'les séries.
Retour : 1 si OK, 0 si NOK.

Syntaxe 16
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID, Show);
Argument Signification
SeriesID Identifiant des séries. Plage de 1 à 8. Type LONG.
Show Flag pour sélectionner Show ou Hide.
1 = Show
0 = Hide

Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 101
21 SERIES_SHOW Montre ou cache les séries.
Retour : 1 si OK, 0 si NOK.

Syntaxe 17
DblVal = CHART (Mode, Window, Branch, Identifier, SeriesID, Stats);
Argument Signification
SeriesID Identifiant des séries. Plage 1 to 8. Type LONG.
Show Flag pour sélectionner la statistique à retourner :
1 = X minimum
2 = X maximum
3 = Y minimum
4 = Y maximum
5 = Average (Moyenne)
6 = Median (Médian)

Exécution
Mode Mnémonique Action
23 SERIES_STATS Retourne la statistique sélectionnée.
Retour : la statistique sélectionnée.

Syntaxe 18
IntVal = CHART (Mode, Window, Branch, Identifier, SeriesID, Show);
Argument Signification
SeriesID Identifiant d'les séries. Plage de 1 à 8. Type LONG.
X Obtient la valeur X.

Exécution
Mode Mnémonique Action
25 SERIES_YCOUNTFROMX Retourne le nombre de points ayant la valeur X si aucune
erreur, 0 sinon.

Syntaxe 19
IntVal = CHART (Mode, Window, Branch, Identifier, StartTime [, EndTime]);
Argument Signification
StartTime Temps de départ Type DOUBLE.
EndTime Temps de fin. Optionnel. Type DOUBLE.

Exécution
Mode Mnémonique Action
26 SETDATETIME Initie une requête aux historiques de la date de début à la date de fin.
Si la date de fin est omise, la date courante sera utilisée.
1 si OK, -1 si le nombre de points résultats est plus grand que le
maximum autorisé, -2 pour un intervalle de temps invalide, 0 pour
toutes les autres erreurs.

Syntaxe 20
IntVal = CHART (Mode, Window, Branch, Identifier, EndTime, Period [, TimeUnit]);
Argument Signification
EndTime Date de fin. Type DOUBLE.
Period Période de données historiques. Type DOUBLE.
TimeUnit Unité de temps pour la période :
0 = Millisecondes

SV_SCADABasic_fr 102
1 = Secondes
2 = Minutes
3 = Heures
4 = Jours

Exécution
Mode Mnémonique Action
27 SETENDTIMEPERIOD Initie une requête d'historique avec l'Heure de début positionnée à
EndTime moins la période et l'Heure de fin positionnée à EndTime.
1 si OK, -1 si le nombre de points résultats est plus grand que le
maximum autorisé, -2 pour un intervalle de temps invalide, 0 pour
toutes les autres erreurs.
Pour plus d'informations, voir ci-dessous.

Syntaxe 21
IntVal = CHART (Mode, Window, Branch, Identifier, StartTime, Period [, TimeUnit]);
Argument Signification
StartTime Date de début. Type DOUBLE.
Period Période de données historiques. Type DOUBLE.
TimeUnit Unité de temps pour la période :
0 = Millisecondes
1 = Secondes
2 = Minutes
3 = Heures
4 = Jours

Exécution
Mode Mnémonique Action
28 SETSTARTTIMEPERIOD Initie une requête d'historique avec l'Heure de début positionnée à
StartTime et l'Heure de fin positionnée à StartTime plus la période.
1 si OK, -1 si le nombre de points résultat est plus grand que le
maximum autorisé, -2 pour un intervalle de temps invalide, 0 pour
toutes les autres erreurs.
Pour plus d'informations, voir ci-dessous.

Syntaxe 22
IntVal = CHART (Mode, Window, Branch, Identifier, StartPeriod [, TimeUnit]);
Argument Signification
SamplePeriod Période d'échantillonnage. Type DOUBLE.
TimeUnit Unité de temps pour la période :
0 = Millisecondes
1 = Secondes
2 = Minutes
3 = Heures
4 = Jours

Exécution
Mode Mnémonique Action
29 SETSAMPLEPERIOD Positionne la période d'échantillonnage à utiliser pour des requêtes aux
historiques ultérieures.
Retour : 1 si OK, -2 pour une plage de temps invalide, 0 pour toutes
les autres erreurs.

Syntaxe 23

SV_SCADABasic_fr 103
IntVal = CHART (Mode, Window, Branch, Identifier, VarName);
Argument Signification
VarName Nom d'une variable de l'arbre des variables. Type STR.

Exécution
Mode Mnémonique Action
30 SETSOURCEVAR Modifie la variable utilisée pour l'axe X.
Retour : 1 si OK, 0 si NOK.

Syntaxe 24
IntVal = CHART (Mode, Window, Branch, Identifier, Title);
Argument Signification
Title Titre du graphique. Type STR.

Exécution
Mode Mnémonique Action
31 SETTITLE Modifie le titre affiché dans le graphique.
Retour : 1 si OK, 0 si NOK.

Syntaxe 25
IntVal = CHART (Mode, Window, Branch, Identifier, Path, ImageFormat);
Argument Signification
Path Soit le chemin complet de l'image. Par exemple E:\\ChartImages\\hangar18.png,
soit juste le nom de l'image dans quel cas l'image sera enregistrée dans le répertoire TP
du projet.
ImageFormat Format de l'image :
0 = BMP
1 = GIF
2 = PNG

Exécution
Mode Mnémonique Action
34 SAVE_IMAGE Enregistre une image du graphique vers l'emplacement spécifié dans le
format spécifié.
Retour : 1 si OK, 0 si NOK.

Plus d'informations
Considérons les séries S0 comprenant les points suivants : P1(10,15), P2(11,20), P3(15,20), P4(18,25),
P5(18,25), P6(21,100) ,P7(21,105).

SERIES_IDXFROMXY
SERIES_IDXFROMXY retourne l'index du premier point dans les séries avec X et Y spécifiés. Donc le code :
CHART ("SERIES_IDXFROMXY", cWindow, cBranch, cIdentifier, cSeriesID, 18, 25);
retournera 4 représentant P4(18,25). Vous pouvez également spécifier un point de début et un point de
fin optionnels pour la recherche.

SERIES_IDXFROMX

SV_SCADABasic_fr 104
SERIES_IDXFROMX est similaire à SERIES_IDXFORMXY sauf que vous ne spécifiez que X. Donc pour les
séries S0, si X = 15, le retour sera 3 représentant P3(15,20). Vous pouvez également spécifier un rang
optionnel. Par exemple, si vous cherchiez le deuxième point avec X = 21 vous spécifierez un rang de 1 (le
rang de 0 est le premier point). Le retour serait 7 représentant P7 (21,105).

SETENDTIMEPERIOD
Le fragment de code suivant génère l'équivalent de la requête d'historiques. Voir l'image

Dim dTime As Double;


Dim lReturn As Long;
dTime = DateTimeValue("14/05/2015", "10:00:00");
lReturn = Chart("SETENDTIMEPERIOD", "MyChartMimic", "", "Chart1", dTime, 10, 2);

SETSTARTTIMEPERIOD
Le fragment de code suivant génère l'équivalent de la requête d'historiques. Voir l'image

Dim dTime As Double;


Dim lReturn As Long;
dTime = DateTimeValue("14/05/2015", "10:00:00");

SV_SCADABasic_fr 105
lReturn = Chart("SETSTARTTIMEPERIOD", "MyChartMimic", "", "Chart1", dTime, 10, 2);

SV_SCADABasic_fr 106
CHECKLIST
Voir aussi Exemple
Propriétés d'accès du contrôle Check-box list.
Mode Mnémonique Syntaxe
1 COUNT 1
2 GETSELECTEDINDEX 1
3 SETSELECTEDINDEX 2
4 GETTEXT 4
5 GETUSERDATA 4
6 GETSTATE 4
7 SETSTATE 3
8 LOAD 5
9 GETEVENTTYPE 1
10 INSERT 6
11 REMOVE 7
12 SORT 8

Note importante sur la terminologie utilisée et le fonctionnement du contrôle Check-box list dans
le Superviseur :

• L'élément qui est POSITIONNE est celui dont la case est cochée.
• L'élément qui est SELECTIONNE est celui dont le texte est en surbrillance (changement de
couleur d'arrière-plan).

Un item POSITIONNE n'est pas nécessairement SELECTIONNE (et vice versa). En programmation
vous n'êtes normalement intéressés que par les éléments POSITIONNES. L'élément SELECTIONNE
a une moindre importance.
Pour plus d'information sur le comportement du contrôle Check-box list, voir l'aide principale du
Superviseur.

Toutes les syntaxes


Argument Signification
Window Nom de la fenêtre contenant le contrôle. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utiliser "*" pour indiquer la branche courante du
programme. Type STR.
Identity Identifiant du contrôle dans la fenêtre spécifiée. Type STR.

Syntaxe 1
Return = CHECKLIST(Mode, Window, Branch, Identity);

Exécution
Mode Mnémonique Action
1 COUNT Retourne le nombre d'éléments. Type LONG.
2 GETSELECTEDINDEX Retourne l'index de l'élément actuellement sélectionné. Type LONG.
9 GETEVENTTYPE Retourne le type de l'événement le plus récent. Type LONG.
Le retour est une valeur de poids binaire.
Bit 0: La sélection a été modifiée.
Bit 1: L'état d'un élément a été modifié.

Syntaxe 2

SV_SCADABasic_fr 107
Return = CHECKLIST(Mode, Window, Branch, Identity, Index, Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Pour que cela fonctionne, il doit être aussi autorisé dans l'onglet Opérations de la
boîte de dialogue des propriétés Check-box list.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Exécution
Mode Mnémonique Action
3 SETSELECTEDINDEX Sélectionne l'élément correspondant à l'index fourni. Type LONG.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
Return = CHECKLIST(Mode, Window, Branch, Identity, Index, State,Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
State Etat à positionner. La valeur peut être 0 ou 1. Type INTEGER
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Pour que cela fonctionne, doit être aussi autorisé dans l'onglet Opérations de la boîte de
dialogue des propriétés Check-box list. Type INTEGER.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Exécution
Mode Mnémonique Action
7 SETSTATE Positionne l'état de l'élément correspondant à l'index fourni. Type LONG.
Retour : 1 si OK, 0 sinon.

Syntaxe 4
Return = CHECKLIST(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index de l'élément à retourner.

Exécution
Mode Mnémonique Action
4 GETTEXT Retourne le Texte de l'élément comme défini dans la langue actuellement
utilisée. Type STR.
5 GETUSERDATA Retourne les données utilisateur associées à l'élément. Type STR.
6 GETSTATE Retourne l'Etat de l'élément (coché ou non). Type LONG.

Syntaxe 5

SV_SCADABasic_fr 108
Return = CHECKLIST(Mode, Window, Branch, Identity, FileName);
Argument Signification
FileName Nom du fichier contenant les données du contrôle.

Exécution
Mode Mnémonique Action
8 LOAD Charge le contenu du fichier de la liste du contrôle des éléments. Type INTEGER.
Retour : 1 si OK (fichier chargé), 0 sinon.

Syntaxe 6
Return = CHECKLIST(Mode, Window, Branch, Identity, Text, Userdata, [Index]);
Argument Signification
Text Texte à insérer. Type STR.
Userdata Donnée utilisateur à insérer. Type STR.
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
10 INSERT Insère le texte et les données utilisateur optionnelles dans la liste du contrôle.
Si l'index est omis, le texte est inséré au début. Si l'index est -1, le texte est
inséré à la fin. Autrement, le texte est inséré à la position indiqué par l'index.
Retour : 1 si OK, 0 sinon.

Syntaxe 7
Return = CHECKLIST(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
11 REMOVE Supprime l'élément sélectionné dans la liste.
Retour : 1 si OK, 0 sinon.

Syntaxe 8
Return = CHECKLIST(Mode, Window, Branch, Identity[, Sortorder, Orderby]);
Argument Signification
Sortorder Flag indiquant l'ordre du tri. 0 = ascendant, 1 = descendant.
Orderby Flag indiquant quelles données à trier. 0 = Texte, 1 = Données utilisateur.
Type de retour : LONG.

Exécution
Mode Mnémonique Action
12 SORT Trie la liste du contrôle en utilisant le critère spécifié.

SV_SCADABasic_fr 109
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 110
CHR
Voir aussi
Renvoie le caractère du code ASCII passé en argument.

Syntaxe
StrVal = CHR(AsciiCode);
Type de retour : STR
Argument Signification
AsciiCode Code ASCII passé en argument. Tout type numérique.
Exécution
Le code doit être compris entre 0 et 255. Dans les autres cas, la valeur est tronquée modulo 256.

Exemple
SUB Main()
DIM intCharCode as integer;
DIM strChar as Str;

'ASCII code - Integer type


intCharCode = 97;
strChar=Chr(intCharCode);
Print ("ASCII code 97 corresponds to:", strChar);
'Displays "LASCII code 97 corresponds to: a"
END SUB

SV_SCADABasic_fr 111
CIMWAY
Voir aussi Exemple Spécifiques
Arrête, démarre ou teste l'état de la communication.
Mode Mnémonique Syntaxe
0 OFF 1
1 ON 1
2 STATCIM 1
3 SCANMDF 2
4 STATUS 3
5 ERROR 4
7 EXIST 3
8 CFG 6
9 START 3
10 STOP 3
11 READAFTERWRITE 7
12 SCANALWAYS 1
13 WRITEGROUP 8
14 OVERWRITEFILE 9
15 SENDMSG 12
17 SEQUENCINGWRITE 1, 10
18 GETPENDINGWRITE 1
19 READFRAME 11

Syntaxe 1
IntVal = CIMWAY (Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
0 OFF Arrêt de la communication Cimway.
Retour : 1 si OK, 0 sinon.
1 ON Lancement de la communication Cimway.
Retour : 1 si OK, 0 sinon.
2 STATCIM Renvoie l'état de la communication.
Retour : 1 si ON, 0 si OFF.
12 SCANALWAYS Lancement de la scrutation de toutes les trames cycliques. La
scrutation est réalisée même si aucune variable n'est liée à la trame.
Retour : 1.
17 SEQUENCINGWRITE Active ou désactive le mode séquentiel des écritures.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 112
18 GETPENDINGWRITE Récupère le nombre d’écritures dans la file du gestionnaire
d'équipements.
Type de retour : LONG
Retour : le nombre d'écritures.

Syntaxe 2
IntVal = CIMWAY(Mode, Network.Node.Frame, Period);
Type de retour : INTEGER
Argument Signification
Period Nouvelle période à laquelle la trame doit être scrutée (exprimée en secondes). La valeur
maximum est 1600. Tout type numérique.

Exécution
Mode Mnémonique Action
3 SCANMDF Modification de la période de scrutation d'une trame. Le comportement de la
scrutation peut être modifié comme suit en fonction de la valeur de l’argument
Period :
>0 Applique la nouvelle période de scrutation.
0 Désactive la scrutation.
-1 Applique la période de scrutation précédente si la période actuelle est
0 ou après un appel à CIMWAY("STOP", "frame object"). Sinon, l’appel
est sans effet.
-2 Applique la période de scrutation définie dans la configuration de la
trame.
Retour : 1 si la trame existe, sinon 0.
Exemple
Utilise une période de scrutation d'une trame configurée à 20 secondes.
Période Période de scrutation actuelle
5 5 secondes
-2 20 secondes
10 10 secondes
0 Arrêt de la scrutation
-1 10 secondes
5 5 secondes
-1 5 secondes

Syntaxe 3
IntVal = CIMWAY(Mode, ComObj);
Type de retour : INTEGER
Argument Signification
ComObj L'objet de communication. Peut être un réseau, un équipement ou une trame.
Network Network name
Node Network_name.Node_name
Frame Network_name.Node_name.Frame_name
Exécution
Mode Mnémonique Action
4 STATUS Retourne l'état d'un objet de communication.
Retour : 1 si défaut, 0 OK, -1 si objet inexistant.

SV_SCADABasic_fr 113
7 EXIST Teste l'existence d'un objet de communication.
Retour : 1 si existe, 0 sinon.
9 START Démarrage de l'objet de communication.
Retour : 1 si OK, 0 sinon (erreur de syntaxe ou objet inexistant).
10 STOP Arrêt de l'objet de communication.
Retour : 1 si OK, 0 sinon (erreur de syntaxe ou objet inexistant).

Les variables liées à l'objet de communication ne sont pas passées en status NS (Non
Significative) et NA (Non Accessible).

Syntaxe 4
LongVal = CIMWAY(Mode, ComObj);
Argument Signification
ComObj L'objet de communication. Peut être un réseau, un équipement ou une trame.
Network Network name
Node Network_name.Node_name
Frame Network_name.Node_name.Frame_name

Type de retour : LONG


Exécution
Mode Mnémonique Action
5 ERROR Retourne le compteur d'erreur de l'objet de communication.
Retour : Valeur du compteur d'erreurs.

Le compteur d'erreurs donne le nombre d'erreur de communication.

Syntaxe 6
IntVal = CIMWAY(Mode, ComObj, Modif, Param.[, VarName]);
Type de retour : INTEGER
Argument Signification
ComObj L'objet de communication. Peut être un réseau, un équipement ou une trame.
Modif Valeur de l'objet de communication à modifier :
1: PORT_NUMBER Modification du numéro de port.
2: EQT_ADDRESS Modification de l'adresse d'un équipement.
3: MEMORY_ADDRESS Modification de l'adresse mémoire.
param Ce champ paramètre a différentes significations dépendantes de la valeur de Modif. voir le
chapitre Paramètres d'Objets de Communication pour leurs configurations.
VarName Le nom de registre de la base de données. Type STR.
Exécution
Mode Mnémonique Action
8 CFG Modification des paramètres d'un objet de communication. Le champ
VarName peut prendre les valeurs suivantes:

SV_SCADABasic_fr 114
0 = REQUEST
1 = ACK
2 = NACK
Retour : 1 si OK, 0 si l'objet de communication n'existe pas ou si les
paramètres sont incorrects.

Syntaxe 7
IntVal = CIMWAY(Mode, network_name.Equipment_name.Frame_name, RM);
Type de retour : INTEGER
Argument Signification
RM Lecture après le mode d'écriture :
1 - YES
2 - NO
Exécution
Mode Mnémonique Action
11 READAFTERWRITE Exécution d'une lecture de contrôle après chaque écriture d'au moins un
élément d'une trame.
Retour : 1 si OK, 0 sinon (erreur de syntaxe ou trame inexistante).

Syntaxe 8
IntVal = CIMWAY(Mode, network_name.Equipment_name.Frame_name, Delay, Mode, Flag);
Type de retour : INTEGER
Argument Signification
Delay Délai en secondes.
Mode Correspond aux modes du verbe SENDLIST :
0 pour le mode BLOC
1 pour le mode MULTIPLE
Flag Soit 1 ou 0.
Exécution
Mode Mnémonique Action
13 WRITEGROUP Optimisation des écritures des variables équipement.
Normalement une écriture dans l'équipement est envoyée à chaque
changement de valeur d'une variable.
Les variables forcées sur une trame sont mémorisées pendant la durée
délai passée en paramètre.
Les variables sont regroupées selon le GroupeMode choisi. Chaque
groupe obtenu est envoyé sur le réseau en une seule écriture.
Si transition est positionnée à 0, une variable passant de 0 à 1, puis à
nouveau à 0 dans l'intervalle délai, ne sera pas vue par l'équipement.
Retour : 1 si OK, 0 sinon.

If you enter a fraction for Delay, it will be rounded down to a whole number (e.g. 0.5 will
become 0 and 1.8 will become 1).

Syntaxe 9

SV_SCADABasic_fr 115
IntVal = CIMWAY (Mode, FileName);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
14 OVERWRITEFILE Remplace le fichier de configuration de la communication.
Le fichier FileName est renommé en COMM.DAT et copié dans les
répertoires C et CTEMP du projet.
Retour : 0 si OK, sinon :
-1 si le fichier à importer n'existe pas
-2 si le nom du fichier est un répertoire
-3 si la copie vers COMM.DAT n'est pas possible (droits d'écriture,
etc.)
-4 si la copie vers CTEMP\COMM.DAT n'est pas possible (droits
d'écriture, etc.)

Le fichier COMM.DAT original est écrasé.

Syntaxe 10
IntVal = CIMWAY(Mode, Sequence/not);
Type de retour : INTEGER
Argument Signification
Sequence/no "YES" : activé
t
"NO" : désactivé
Exécution
Mode Mnémonique Action
17 SEQUENCINGWRITE Active ou désactive le mode séquentiel des écritures.
Retour : 1 si OK, 0 sinon.

Syntaxe 11
IntVal = CIMWAY(Mode, Frame, VarName);
Type de retour : INTEGER
Argument Signification
Frame Pour identifier la trame, par exemple "NETWORK.EQUIPMENT.FRAME1"
VarName Nom de la variable dans laquelle l'état de la lecture est fourni.
Exécution
Mode Mnémonique Action
19 READFRAME Demande le rafraîchissement de la trame, et fournit le status de la
lecture par le biais de la variable passée en argument.
Retour : 1 si l’action c’est réalisée correctement
0 si les arguments sont erronés
2 si la variable est déjà utilisé par une autre demande de type
READFRAME.

SV_SCADABasic_fr 116
Etat indiqué dans la variable nommée VarName :
0 : demande de lecture en cours.
1 : lecture effectuée avec succès, les variables sont rafraîchies.
2 : erreur de lecture, les variables sont en erreur.

Syntaxe 12
IntVal = CIMWAY(Mode, ObjectID, CommandString[, VariableName]);
Type de retour : INTEGER
Argument Signification
ObjectId Identifiant de l'objet cible, pour accéder à :
Tous les réseaux.
Un réseau : NetworkId.
Un équipement : NetworkdId.EquipmentId.
Une trame : NetworkId.EquipmentId.FrameId.
Type : STR.
CommandStr Texte libre dont le contenu est spécifique au protocole qui va le recevoir. Type STR.
ing
VariableNam Optionnel. Nom de la variable d'état positionnée à 1 par le gestionnaire d'équipement. Le
e gestionnaire de protocole aura positionné cette variable à 0 avant l'envoi du message vers
l'équipement.
Exécution
Mode Mnémonique Action
15 SENDMSG Message envoyé aux objets de communication.

CIMWAY n'interprète pas le contenu.

Exemple
Pour activer le mode séquentiel d'enregistrement :
CIMWAY ("SEQUENCINGWRITE", "YES");
Pour récupérer le nombre d'écritures dans la file :
IntVal = CIMWAY ("GETPENDINGWRITE");
Pour mettre à jour la trame de communication :
CIMWAY ("READFRAME", "NETWORK.EQT1.WORD", "RESULT");
Pour un exemple plus complet, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 117
CMPSTRING
Voir aussi Exemple
Compare 2 chaînes de caractères.

Syntaxe
IntVal = CMPSTRING(string1, string2);
Type de retour : INTEGER
Exécution
Les deux chaînes sont comparées en utilisant la valeur ASCII des caractères. Si la chaîne est plus longue
que 1 caractère, alors chaque caractère est comparé un par un jusqu'à ce qu'une inégalité soit trouvée.
Retour Signification
-1 string1 si inférieur à string2.
0 Les deux chaînes sont identiques.
1 string1 si supérieur à string2.

Exemple
DIM Chain1 As Str, Chain2 As Str;
DIM Chain3 As Str, Chain4 As Str;
DIM Res As Integer;
Chain1 = "A";
Chain2 = "B";
Chain3 = "ABCDEG";
Chain4 = "ABDDEF";
Res = CmpString(Chain1, Chain1); ' Res = 0
Res = CmpString(Chain1, Chain2); ' Res = -1
Res = CmpString(Chain2, Chain1); ' Res = 1
Res = CmpString(Chain3, Chain4); ' Res = -1
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 118
COMBOBOX
Voir aussi Exemple
Propriétés d'accès du contrôle Combo-box.
Mode Mnémonique Syntaxee
1 COUNT 1
2 GETSELECTEDINDEX 1
3 SETSELECTEDINDEX 2
4 GETTEXT 3
5 GETUSERDATA 3
6 LOAD 4
7 INSERT 5
8 REMOVE 6
9 SORT 7

Toutes les Syntaxes


Argument Signification
Window Nom de la fenêtre contenant le contrôle de formulaire. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utiliser "*" pour indiquer la branche courante du
programme. Type STR.
Identity Identifiant du contrôle dans la fenêtre spécifiée. Type STR.

Syntaxe 1
Return = COMBOBOX(Mode, Window, Branch, Identity);
Type de retour : LONG

Exécution
Mode Mnemonic Action
1 COUNT Retourne le nombre d'éléments. Type LONG.
2 GETSELECTEDINDEX Retourne l'index de l'élément actuellement sélectionné. Type LONG.

Syntaxe 2
Return = COMBOBOX(Mode, Window, Branch, Identity, Index, Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.

Type de retour : LONG

Exécution
Mode Mnemonic Action
3 SETSELECTEDINDEX Sélectionne l'élément selon son index. Type LONG.
Retour : 1 si OK, 0 sinon.

Syntaxe 3

SV_SCADABasic_fr 119
Return = COMBOBOX(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index de l'élément à retourner.

The return type is STR.

Exécution
Mode Mnemonic Action
4 GETTEXT Retourne le Texte de l'élément comme défini dans la langue actuellement
utilisée. Type STR.
5 GETUSERDATA Retourne les données utilisateur associées à l'élément. Type STR.

Syntaxe 4
Return = COMBOBOX(Mode, Window, Branch, Identity, FileName);
Argument Signification
FileName Nom du fichier contenant les données du contrôle.

Type de retour : INTEGER

Exécution
Mode Mnémonique Action
6 LOAD Charge le contenu du fichier de la liste du contrôle de formulaire des
éléments. Type INTEGER.
Retour : 1 si OK (fichier chargé), 0 sinon.

Syntaxe 5
Return = COMBOBOX(Mode, Window, Branch, Identity, Text, Userdata, [Index]);
Argument Signification
Text Texte à insérer. Type STR.
Userdata Donnée utilisateur à insérer. Type STR.
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
7 INSERT Insère le texte et les données utilisateur optionnelles dans la liste du contrôle.
Si l'index est omis, le texte est inséré au début. Si l'index est -1, le texte est
inséré à la fin. Autrement, le texte est inséré à la position indiqué par l'index.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
Return = COMBOBOX(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution

SV_SCADABasic_fr 120
Mode Mnémonique Action
8 REMOVE Supprime l'élément sélectionné dans la liste.
Retour : 1 si OK, 0 sinon.

Syntaxe 7
Return = COMBOBOX(Mode, Window, Branch, Identity[, Sortorder, Orderby]);
Argument Signification
Sortorder Flag indiquant l'ordre du tri. 0 = ascendant, 1 = descendant.
Orderby Flag indiquant quelles données à trier. 0 = Texte, 1 = Données utilisateur.
Type de retour : LONG.

Exécution
Mode Mnémonique Action
9 SORT Trie la liste du contrôle en utilisant le critère spécifié.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 121
CONST
Voir aussi
Déclaration de constantes.
Les constantes doivent toujours être déclarées en en-tête du programme (en dehors des
procédures).

Syntaxe
CONST ConstName = Value;

Argument Signification
ConstNam Nom de la constante.
e
Value Valeur de la constante.
Exécution
Les constantes ne peuvent être que numériques. Nous appellerons également constantes les valeurs
numériques non nommées.

Exemple
'Declare constants
Const constant1 = 10;
Const constant2 = 10;
SUB Main()
DIM intparameter as integer;
DIM intresult as integer;

intparameter= 15;
intresult = (intparameter + constant1)/ constant2;
Print("Result is: ",intresult);
'Display: Result is: 2
END SUB

SV_SCADABasic_fr 122
CONVERT
voir aussi Exemple
Conversion de chaîne alphanumérique en Hexadécimal, Octal, Binaire, BCD et inversement.
Mode Mnémonique Syntaxe
1 BINTOA 1
2 OCTTOA 1
3 HEXTOA 1
4 BCDTOA 1
11 ATOBIN 2
12 ATOOCT 2
13 ATOHEX 2
14 ATOBCD 2

Syntaxe 1
StrVal = CONVERT(Mode, Val);
Argument Signification

Val Valeur numérique à convertir. Tout type numérique.

Type de retour : STR


Exécution
Mode Mnémonique Action
1 BINTOA Convertit une valeur numérique (base 10) en une chaîne de caractère
représentant la valeur en base 2.
2 OCTTOA Convertit une valeur numérique (base 10) en une chaîne de caractère
représentant la valeur en base 8.
3 HEXTOA Convertit une valeur numérique (base 10) en une chaîne de caractère
représentant la valeur en base 16.
4 BCDTOA Convertit une valeur numérique (base 10) en une chaîne de caractère
représentant la valeur en BCD.

Syntaxe 2
LongVal = CONVERT(Mode, Val);
Argument Signification
Val Chaîne à convertir. Type STR.

Type de retour : LONG


Exécution
Mode Mnémoniq Action
ue
Renvoie la valeur numérique (base 10) d'une chaîne de caractère représentant :
11 ATOBIN - sa forme binaire
12 ATOOCT - sa forme octale.
13 ATOHEX - sa forme hexadécimale.

SV_SCADABasic_fr 123
14 ATOBCD - sa forme BCD.

Exemple
sub main()
DIM ch1 as str;
ch1 = "01111111111111111111111111111111";
print( convert("ATOBIN",ch1)); 'Return: 2147483647
ch1 = "A9F7";
print( convert("ATOHEX",ch1)); 'Return: 43511
ch1 = "24";
print(convert("BINTOA",convert("ATOBCD",ch1) ));
'Return: 100100
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 124
COPY_BUFFER
Voir aussi Exemple
Copie le contenu d’un buffer dans un autre buffer

Syntaxe
Ret=COPY_BUFFER (Target, Source[, OffsetTarget]);
Argument Signification
Target Handle du buffer de destination alloué par ALLOC_BUFFER. Type LONG.
Source Handle du buffer source alloué par ALLOC_BUFFER. Type LONG.
OffsetTarget Position de début de copie dans le buffer de destination. Valeur par défaut = 0. Tout type
numérique.

Type de retour : INTEGER


Exécution
Retour Signification
Ret 1 si OK
-1 si le buffer Target n'a pas été alloué
-2 si le buffer Source n'a pas été alloué
-3 si la taille du buffer Target est plus petit que celle de Source + OffsetTarget

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 125
COS
Voir aussi
Fonction cosinus.

Syntaxe
DblVal = COS(Angle);
Argument Signification
Angle Degrés. Tout type numérique.
Type de retour : DOUBLE
Exécution
Les variables de la base de données sont de type SINGLE. En cas d'affectation avec cette fonction, la
conversion en SINGLE est donc nécessaire si l'on veut éviter une erreur de type.

Exemple
'Database variables
'@ARC - Register type
'@ANGLE - Register type
sub Main()
'Declare
DIM dblangle as double;
DIM dblarc as double;

dblangle = 45;
dblarc = COS(dblangle);
print("COS(",dblangle,") = ",dblarc);
END SUB

SUB Proc2()
'COS() used in a database variable function
'using TOS to convert DOUBLE to SINGLE (Register variable)
@ARC= TOS( COS (@ANGLE) ) ;
END SUB

SV_SCADABasic_fr 126
CRONTAB
Voir aussi Exemple
Activation, modification d'actions horodatées dans le séquenceur.
Mode Mnémonique Syntaxe
1 ADDPROG 1
2 DELPROG 1
3 ADDVAR 2
4 DELVAR 2
6 DELALL 3
7 TABLE_STATUS 4
8 TABLE_ELAPSED 4
9 TABLE_REMAINING 4
11 NETWORKBROADCAST 5
12 SAVE 3
13 TRACE 6

Syntaxe 1
IntVal = CRONTAB(Mode, CRONTYPE, Date, Time, Program, Branch, Function [, Farg [, ActivBit] ]);
Argument Signification
CRONTYPE Type d'horodate de l'événement :
1 ONCE
2 EACH_HOUR
3 EACH_DAY
4 EACH_WEEK
5 EACH_MONTH
Date Chaîne représentant la date ou le jour selon le type d'événement spécifié par CRONTYPE.
Une date est spécifiée au format dd/mm/yy ou au format dd/mm/yyyy, par exemple
05/08/2003.
Si le jour est spécifié, le nom du jour est donné.
"monday" ou "mon"
"tuesday" ou "tue"
"wednesday" ou "wed"
"thursday" ou "thu"
"saturday" ou "sat"
"sunday" ou "sun"
Time Heure au format standard ou la minute selon le type d'événement : "17:38" ou "38". Type
STR.
Program Le nom du programme contenant la fonction à exécuter. Type STR.
Branch La branche de la base de données du programme. Type STR.
Function Le nom de la fonction a exécuter. Type STR.

SV_SCADABasic_fr 127
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés
par des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le
verbe GETARG.
ActivBit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.
Exécution
Mode Mnémonique Action
1 ADDPROG Création d'un événement de type exécution de programme.
L'événement ainsi créé est dit temporaire. Il n'est pas possible de modifier un
événement permanent créé par la configurateur.
Renvoie 1 si l'événement a été correctement créé, 0 sinon.
2 DELPROG Suppression d'un événement de type exécution de programme.
Il n'est pas possible de supprimer un événement permanent.
Renvoie 1 si l'événement a été supprimé, 0 sinon.

Le programme doit être préchargé (PRELOAD) pour être exécuté. Si vous le modifiez,
vous devez le recharger.

L'utilisation d'une instruction de type DELAY dans une fonction peut produire des
résultats imprévisibles et doit être évitée.

Le format de la date utilisant le mode ONCE peut être soit dd/mm/yy ou dd/mm/yyyy.

Syntaxe 2
IntVal =CRONTAB(Mode, TYPE, Date, Time, Variable, Send_Mode, Delay [, "", ActivBit] );
Argument Signification
TYPE Type d'horodate de l'événement :
ONCE 1
EACH_HOUR 2
EACH_DAY 3
EACH_WEEK 4
EACH_MONTH 5
Date Chaîne représentant la date ou le jour selon le type d'événement spécifié par CRONTYPE.
Une date est spécifiée au format dd/mm/yy ou au format dd/mm/yyyy, par exemple
05/08/2003.
Si le jour est spécifié, le nom du jour est donné.
"monday" ou "mon"
"tuesday" ou "tue"
"wednesday" ou "wed"
"thursday" ou "thu"
"saturday" ou "sat"
"sunday" ou "sun"

SV_SCADABasic_fr 128
Time Heure au format standard ou la minute selon le type d'événement : "17:38" ou "38". Type
STR.
Variable Nom complet en absolu de la variable à forcer (Etat ou Alarme uniquement)
S_Mode 0: forçage à 0
1: sforçage à 1
2: forçage à l'état inverse
Delay Si différent de 0, le forçage est impulsionnel avec une durée en secondes.
"" Paramètre inutilisé. A inclure seulement lors de l'utilisation du paramètre facultatif ActivBit.
ActivBit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
3 ADDVAR Création (ou modification s'il existe) d'un événement de type forçage de
variable.
L'événement ainsi créé est dit temporaire. Il n'est pas possible de modifier un
événement permanent.
Renvoie 1 si l'événement a été correctement créé, 0 sinon.
4 DELVAR Suppression, s'il existe, d'un événement de type forçage de variable.
Il n'est pas possible de supprimer un événement permanent.
Renvoie 1 si l'événement a été correctement créé, 0 sinon.

Syntaxe 3
IntVal = CRONTAB(Mode);
Exécution
Mode Mnémonique Action
6 DELALL Suppression de tous les événements temporaires existants.
Retour : 1 si OK, 0 sinon.
12 SAVE Sauvegarde les actions horodatées du séquenceur dans le fichier
CRON.DAT
Retour : Toujours 0.

Syntaxe 4
LongVal = CRONTAB(Mode, TableName);
Argument Signification
TableName Nom d'une table. Type STR.
Exécution
Mode Mnémonique Action
7 TABLE_STATUS Renvoie 0 (hors occupation), 1 (en occupation) ou -1 si la table n'existe
pas
8 TABLE_ELAPSED Renvoie le temps écoulé, en secondes, depuis la dernière transition ou -
1 si la table n'existe pas ou si calcul impossible (pas d'horaires).
9 TABLE_REMAINING Renvoie le temps restant, en secondes, avant la prochaine transition ou
-1 si la table n'existe pas ou si calcul impossible (pas d'horaires).

SV_SCADABasic_fr 129
Syntaxe 5
IntVal =CRONTAB(Mode, List, HStatus, EventVar, LocalRemote);
Argument Signification
List Nom de la liste des postes de l'architecture multipostes destinataires des modifications (créée
à partir du menu Configuration.Communication.Multipostes). Type STR.
HStatus Handle du buffer alloué par ALLOC_BUFFER. Après l'exécution de l'instruction, le buffer
contenant la liste des postes et leur statut de mise-à-jour suivant le format :
StaNum,Status,...;
où StaNum est le numéro du poste et Status est à 1 si OK, 0 sinon. Type LONG.
EventVar Nom de la variable état de la base de données positionnée à 1 après exécution de
l'instruction. Type STR.
LocalRemot Détermine l'emplacement de la modification du fichier de configuration du séquenceur
e CRON.DAT :
1 : Tous les postes (y compris le poste local)
0 : Seulement les postes déportés (par défaut).
Retour : 1 si OK, 0 sinon.
Exécution
Mode Mnémonique Action
11 NETWORKBROADCAST Envoie le fichier de configuration du séquenceur CRON.DAT vers
tous les postes dans la liste de modifications clients.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal =CRONTAB(Mode, SubMode);
Argument Signification
SubMode Type STR. "ON" ou "OFF".

Exécution
Mode Mnémonique Action
1 TRACE Active ("ON") ou désactive ("OFF") des messages trace dans le
séquenceur. Des messages trace apparaissent dans l'observateur
d'événements (F7).
Retour : toujours 1.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 130
CYCLIC
Voir aussi Exemple
Exécute cycliquement une fonction.
Mode Mnémonique Syntaxe
0 ADD 3
1 ADDPROG 1
2 ADDPROG_EX 1
5 DEL 3
6 DELALL 2
7 DEL_EX 1
8 ADDPROGBYID 4

Depuis la version 8.2, l'instruction ADDPROG est identique à l'instruction ADD.

Syntaxe 1
IntVal = CYCLIC(Mode, Delay, ProgName, Branch, Function [, Farg [, ActivBit]]) ;
Type de retour : INTEGER
Argument Signification
Delay Nombre de seconde entre chaque activation de programme. Type INTEGER. Le delai
maximum est 2 x 106 secondes ou environ 20 jours.
ProgName Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR. Une chaîne nulle peut
être utilisée pour n'indiquer aucune branche.
Function Nom de la fonction à exécuter. Type STR. Une chaîne nulle peut être utilisée pour n'indiquer
aucune fonction (par exemple, juste pour exécuter un programme).
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG.
Activbit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement. Type STR.
Exécution
Mode Mnémonique Action
1 ADDPROG Ajout d'un cyclique.
Il est possible de créer plusieurs cycles de la même fonction avec des
valeurs de Delay différentes. Si une autre fonction cyclique est déjà
créée avec les propriétés Delay, Prog, Branch, Fonc identiques au
cyclique ajouté, alors elle est détruite.
Retour : 1 si OK, 0 sinon.
2 ADDPROG_EX Ajout d'un cyclique.
Identique au mode 1, excepté que les champs Farg et ActivBit peuvent
être utilisés pour distinguer les fonctions cycliques qui sont
normalement identiques.
Il est possible de créer plus d'une action cyclique pour la même fonction
à condition qu'une des propriétés Delay, Branch, Farg ou ActivBit soient
différentes.

SV_SCADABasic_fr 131
5 DEL Suppression d'un cyclique existant.
La valeur des champs Delay, ProgName, Branch et Function doit être la
même que lors de la création.
Si Delay est 0, alors tous les cycliques existants de la fonction sont
supprimés.
Si Farg et ActivBit ne sont pas spécifiés, tous les cycles de la fonction
sont supprimés.
Si Farg et ActivBit sont vides, alors tous les cycles de la fonction sont
supprimés indépendamment de la valeur de l'argument.
Retour : 1 si la suppression est prise en compte, 0 sinon.
7 DEL_EX Suppression d'un cyclique existant.
Si appelé avec Delay = 0, supprime toutes les fonctions cycliques
appelant la fonction Function dans un programme ProgName avec une
branche Branch (même comportement que le mode DEL en ignorant
Farg et ActivBit passés comme paramètres au moment de la création du
cyclique).
Si appelé avec Delay différent de 0, ne supprime que la fonction
cyclique appelant la fonction Function dans un programme ProgName
avec une branche Branch avec Delay, Farg et ActivBit passés comme
arguments. S'il n'existe aucune fonction cyclique, une erreur est
retournée (IntVal = 0).
Retour : 1 si 0K, 0 sinon.

Retour : 1 si OK, 0 sinon.

Le programme doit être préchargé (PRELOAD) pour être exécuté. Il ne doit pas contenir
de "MAIN".

La fonction appelée ainsi que les autres fonctions de ce programme susceptibles de se


dérouler concurremment, ne doivent pas contenir d'instruction de type DELAY.

Syntaxe 2
IntVal = CYCLIC(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
6 DELALL Suppression de tous les cycliques existants.
Retour : toujours 1.

Le programme doit être préchargé (PRELOAD) pour être exécuté. Il ne doit pas contenir
de "MAIN".

Une fonction cyclique ne peut être modifiée une fois démarrée. Elle doit être stoppée et
reprogrammée.

La fonction appelée ainsi que les autres fonctions de ce programme susceptibles de se


dérouler concurremment, ne doivent pas contenir d'instruction de type DELAY.

SV_SCADABasic_fr 132
Syntaxe 3
IntVal = CYCLIC(Mode, Delay, ProgName, Branch, Function [, Farg [, ActivBit]]) ;
Type de retour : INTEGER
Argument Signification
Delay Nombre de seconde entre chaque activation de programme. Type INTEGER. Le delai
maximum est 2 x 106 secondes ou environ 20 jours.
ProgName Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR. Une chaîne nulle peut
être utilisée pour n'indiquer aucune branche.
Function Nom de la fonction à exécuter. Type STR. Une chaîne nulle peut être utilisée pour n'indiquer
aucune fonction (par exemple, juste pour exécuter un programme).
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG.
Activbit Nom complet de la variable état ou alarme d'activation de l'événement. Type STR.
Exécution
Mode Mnémonique Action
0 ADD Ajout d'un cyclique.

5 DEL Suppression d'un cyclique existant. Les valeurs des champs doivent être
les mêmes que les valeur d'origine, voir Syntaxe 1 ci-dessus.
Retour : 1 si la suppression est prise en compte, 0 sinon.

Depuis la version 8.2, les modes ADD et ADDPROG sont les mêmes.

Syntaxe 4
IntVal = CYCLIC(Mode, Name, Description, ServerListName, Delay, ProgName, Branch, Function, [Farg[,
FactiveBit]]);
Type de retour : INTEGER
Argument Signification
Name Identifiant de l'action cyclique tel qu'il apparaît dans le champ Nom de l'Application
Explorer. Type STR.
Description Description de l'action cyclique tel qu'elle apparaît dans le champ Description de
l'Application Explorer. Type STR.
ServerListName Nom de Liste des serveurs dans la configuration du réseau. Le cyclique ne sera actif
que si le poste appartient à cette liste. Si ce paramètre est vide, le cyclique sera actif
sur tous les postes. Type STR.
Delay Nombre de secondes entre chaque activation de programme. Type INTEGER. Le delai
maximum est 2 x 106 secondes ou environ 20 jours.
ProgName Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR. Une chaîne nulle
peut être utilisée pour n'indiquer aucune branche.
Function Nom de la fonction à exécuter. Type STR. Une chaîne nulle peut être utilisée pour
n'indiquer aucune fonction (par exemple, juste pour exécuter un programme).
Farg Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par des
, (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG.

SV_SCADABasic_fr 133
Activbit Nom complet de la variable état ou alarme d'activation de l'événement. Type STR.
Exécution
Mode Mnémonique Action
8 ADDPROGBYID Ajoute une action cyclique à une fonction en utilisant le nom, la description et
la liste des serveurs fournis.
Retour : 1 si OK, 0 sinon.

Exemple
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 134
DATETIME
Voir aussi Exemple
Fournit divers composants d'une horodate.
Mode Mnémonique Syntaxe
1 DAY 1
2 MONTH 1
3 YEAR 1
4 HOUR 1
5 MINUTE 1
6 SECOND 1
7 MILLISECOND 1
8 WEEKDAY 1
9 YEARDAY 1
10 ISLEAPYEAR 1

Syntaxe 1
IntVal = DATETIME(Mode [, DateTime]);
Type de retour : INTEGER
Argument Signification
DateTime Paramètre facultatif. S'il est omis, c'est l'horodate courante qui est utilisée. Type STR.
Exécution
Mode Mnémonique Action
1 DAY Retourne le jour dans le mois (1 à 31).
2 MONTH Retourne le mois de l'année (1 à 12).
3 YEAR Retourne l'année (1980 à 2106).
4 HOUR Retourne les heures (0 à 23).
5 MINUTE Retourne les minutes (0 à 59).
6 SECOND Retourne les secondes (0 à 59).
7 MILLISECOND Retourne les millisecondes (0 à 999)..
8 WEEKDAY Retourne le jour de la semaine (0 à 6 avec dimanche = 0, lundi = 1,
etc).
9 YEARDAY Retourne le jour de l'année (1 à 366).
10 ISLEAPYEAR Retourne 1 si l'année est bissextile, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 135
DATETIMESTRING
Voir aussi
Conversion d'une horodate en chaîne de caractère.

Cette instruction ne fonctionne pas pour des valeurs équivalentes aux dates antérieures
au 01/01/1980 (L'heure de départ est 00:00:00.000 à partir de cette date).

Syntaxe
StrVal = DATETIMESTRING(TimeDate [, Format]);
Type de retour : STR
Argument Signification
TimeDate Nombre de millisecondes écoulées depuis le 1er janvier 1980 à 00:00:00.000. Type DOUBLE.
Format Chaîne de caractères contenant le format de conversion.
U Format UTC (équivalent à ###Y-#M-#DT#h:#m:#s:##IZ)
#D Jour
#M Mois
#Y Année (sur deux caractères. Exemple : 93).
###Y Année (sur quatre caractères. Exemple : 1993).
#h Heures
#m Minutes
#s Secondes
##l Millisecondes
D le format "#D/#M/#Y" est utilisé.
T le format "#h:#m:#s" est utilisé.
(null) le format par défaut "#D/#M/#Y #h:#m:#s" est utilisé.
Exécution
L'heure et ou la date sont retournées dans une chaîne de caractères selon le format spécifié.

Exemple
SUB Main
'Declare
DIM dbldatetime as double;
DIM strformatdefault as Str;

dbldatetime = DATETIMEVALUE ( );
'Retrieve the current date & time
strformatdefault=DATETIMESTRING(dbldatetime,"D");
END SUB

SV_SCADABasic_fr 136
DATETIMEVALUE
Voir aussi
Conversion d'une horodate en nombre de millisecondes écoulées depuis le 1er janvier 1980 à
00:00:00.000.

Bien que cette instruction retourne le nombre de millisecondes depuis 1970, elle ne
fonctionne pas avec des dates antérieures au 01/01/1980.

Condition Syntaxe
When executed 1
Date-time parameters 2
Formatted date & time 3

Syntaxe 1
DblVal = DATETIMEVALUE();
Type de retour : DOUBLE
Exécution
L'appel sans paramètre retourne l'horodate courante.

Syntaxe 2
DblVal = DATETIMEVALUE(Day, Month, Year, Hour, Minute, Second [, Millisecond]);
Type de retour : DOUBLE
Argument Signification
Day Jour du mois (1 à 31). Type INTEGER.
Month Numéro du mois (1 à 12). Type INTEGER.
Year Année (1980 à 2106). Type INTEGER.
Hour Heure (0 à 23). Type INTEGER.
Minute Minutes (0 à 59) Type INTEGER.
Second Secondes (0 à 59). Type INTEGER.
Millisecond Millisecondes (0 à 999). Egal à 0 par défaut. Type INTEGER.
Exécution
Retourne le nombre de millisecondes pour l'horodate spécifiée.

Syntaxe 3
DblVal = DATETIMEVALUE(DD/MM/YY [, HH:MM:SS[:Msc]]);
Type de retour : DOUBLE
Argument Signification
DD/MM/YY Date en format DD/MM/YY ou DD/MM/YYYY. Par exemple, 01/01/94 ou 28/04/1984. Type
STR.
HH:MM:SS Heure en format HH:MM:SS ou HH:MM:SS:Msc. Par exemple 22:30:00 ou 10:30:05:500.
Type STR.
Exécution
Retourne le nombre de millisecondes pour l'horodate spécifiée.

SV_SCADABasic_fr 137
Exemple
SUB Main()
'Declare
DIM dbldatetime as double;
DIM dbldatetime2 as double;
DIM dbldatetime3 as double;

dbldatetime = DATETIMEVALUE();
'Retrieve the current date & time
Print(dbldatetime);
dbldatetime2 = DATETIMEVALUE(4, 6, 2002, 22, 12, 12 , 654);
Print(dbldatetime2);
dbldatetime3 = DATETIMEVALUE("04/06/2002", "22:12:12:654");
Print(dbldatetime3);
END SUB

SV_SCADABasic_fr 138
DDE
Voir aussi Exemple
Gestion des échanges DDE avec une application serveur DDE non configurée dans le superviseur.
Mode Mnémonique Syntaxe
1 INITIATE 1
2 TERMINATE 2
3 TERMINATEALL 3
4 TIMEOUT 4
5 EXECUTE 4
6 REQUEST 4
7 POKE 7

Syntaxe 1
LongVal = DDE (Mode, ServiceName, Topicname);
Type de retour : LONG
Argument Signification
ServiceNam Nom du serveur DDE. Type STR
e
TopicName Nom de la rubrique DDE. Type STR
Exécution
Mode Mnémonique Action
1 INITIATE Démarrage d'une conversation DDE non configurée avec une application
serveur DDE.
Retour : Contient l'identificateur de la conversation établie (ou 0 si erreur).

Syntaxe 2
IntVal = DDE (Mode, Channel);
Type de retour : INTEGER
Argument Signification
Channel Identificateur de la conversation. Type LONG
Exécution
Mode Mnémonique Action
2 TERMINATE Arrêt d'une conversation établie avec une application serveur DDE.
Retour : 1 si 0K, 0 sinon.

Syntaxe 3
IntVal = DDE (Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
3 TERMINATEALL Arrêt de toutes les conversations établies avec les applications serveur
DDE.

SV_SCADABasic_fr 139
Retour : 1 si 0K, 0 sinon.

Syntaxe 4
IntVal = DDE (Mode, Channel, Timeout);
Type de retour : INTEGER
Argument Signification
Channel Identificateur de la conversation. Type LONG
Timeout Durée exprimée en millisecondes.Type LONG
Exécution
Mode Mnémonique Action
4 TIMEOUT Modification de la durée du "timeout" d'une conversation établie avec une
application serveur DDE.
Retour : 1 si 0K, 0 sinon.

Syntaxe 5
IntVal = DDE (Mode, Channel, Command);
Type de retour : INTEGER
Argument Signification
Channel Identificateur de la conversation. Type LONG
Command Chaîne de caractères contenant une instruction envoyée au serveur DDE. Type STR.
Exécution
Mode Mnémonique Action
5 EXECUTE Demande l'exécution d'une commande par le serveur DDE.
Retour : 1 si 0K, 0 sinon.

Syntaxe 6
IntVal = DDE (Mode, Channel, ItemName);
Type de retour : STRING
Argument Signification
Channel Identificateur de la conversation. Type LONG
ItemName Chaîne de caractères contenant le nom de l'item. Type STR.
Exécution
Mode Mnémonique Action
6 REQUEST Demande la valeur d'un élément spécifique d'une conversation d'un serveur
DDE.
Retour : La valeur de l'élément.

Syntaxe 7
IntVal = DDE (Mode, Channel, ItemName,Data);
Type de retour : INTEGER
Argument Signification
Channel Identificateur de la conversation. Type LONG

SV_SCADABasic_fr 140
ItemName Chaîne de caractères contenant le nom de l'item. Type STR.
Data Chaîne de caractères contenant une nouvelle valeur de l'item. Type STR.
Exécution
Mode Mnémonique Action
7 POKE Ecrit la valeur d'un élément spécifique d'une conversation d'un serveur DDE.
Retour : 1 si 0K, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 141
DDECONV
Voir aussi Exemple
Gestion de conversation DDE avec une application serveur DDE.
Mode Mnémonique Syntaxe
0 START 1
1 STOP 1
2* STATUS 1
3* ON 2
4* OFF 2

Syntaxe 1
Channel = DDECONV (Mode, ConvName);
Type de retour : INTEGER
Argument Signification
ConvName Nom de la conversation DDE. Type STR
Exécution
Mode Mnémonique Action
0 START Démarrage de la conversation spécifiée.
Retour :
0 si OK
1 si erreur
-1 si la conversation n'existe pas.
1 STOP Arrêt de la conversation.
Retour :
0 si OK
1 si erreur
-1 si la conversation n'existe pas.
2 STATUS Teste l'état de la conversation.
Retour :
0 si marche
1 si arrêt
-1 si la conversation n'existe pas.

Syntaxe 2
IntVal = DDECONV (Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
3 ON Arrêt de toutes les conversations.
Retour : 1 si défaut, 0 sinon.
4 OFF Démarrage de toutes les conversations DDE.

SV_SCADABasic_fr 142
Retour : 1 si défaut, 0 sinon.

* Ces modes sont maintenant obsolètes et ont été remplacés par les variables système :
SYSTEM.DDE.Conversation Name.ON est une variable état avec une valeur de 1 quand
la conversation est lancée et 0 lorsqu'elle est stoppée.
SYSTEM.DDE.Conversation Name.STATUS est une variable mesure contenant l'état de la
conversation.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 143
DECLARE FUNCTION / DECLARE SUB
Voir aussi Exemple
Déclare une fonction ou un sous-programme se trouvant en DLL.
Mode Mnémonique Syntaxe
- FUNCTION 1
- SUB 2

Les fonctions ou subroutines doivent toujours être déclarées en en-tête du programme


(en dehors des procédures).

Syntaxe 1
DECLARE FUNCTION GlobalName LIB Libname [ALIAS AliasName] ([Arguments]) AS Type;
Argument Signification
GlobalName Nom de la SUB ou FUNCTION.
LibName Nom de la DLL ou se trouve la procédure déclarée. Type STR.
AliasName Nom de la procédure dans la DLL s'il est différent de celui donné dans le programme. Type
STR.
Type Type retourné par la fonction nomglobal (INTEGER, LONG, SINGLE, DOUBLE,u STR).
Arguments Liste d'arguments a la syntaxe suivante :
[BYVAL]Variable AS Type, [BYVAL]Variable AS Type, ...
Variable Nom de la variable passée en argument.
Type Type de la variable passée en argument (INTEGER, LONG, SINGLE, DOUBLE).
Exécution
La fonction retourne toujours une valeur.

Syntaxe 2
DECLARE SUB GlobalName LIB LibName [ALIAS AliasName] ([Arguments]);
Exécution
Le sous-programme ne retourne pas de valeur.

Le sous-programme DLL ainsi déclaré est visible des autres sous-programmes du


programme courant et de tous les autres programmes s'il est déclaré dans le programme
GLOBAL.

Exemple
DECLARE SUB DosBeep lib "DOSCALLS" (X as integer);
DECLARE FUNCTION WinExec LIB "KERNEL" (BYVAL File AS STR,BYVAL SH AS INTEGER) AS INTEGER;

SV_SCADABasic_fr 144
DELAY
Voir aussi
Suspend l'exécution du programme en cours pendant n secondes.

Syntaxe
DELAY(Period);
Type de retour : aucun
Argument Signification
Period Nombre de secondes pour la période 0.1 à 3277. Tout type numérique.
Exécution
Le programme en cours rend la main au superviseur et demande à être exécuté dans n secondes.
Si l'instruction DELAY est utilisée dans le programme GLOBAL, c'est le programme qui a appelé GLOBAL
qui est suspendu.

L'emploi de DELAY est interdit dans les fonctions susceptibles de s'exécuter en parallèle
dans un même programme, c'est-à-dire dans les cas suivants :
· Fonctions appelées par CYCLIC, EVENT, CRONTAB, KEY ou SELECTOR.
· Animation forçage programme.
· Action associée à une alarme.
Un DELAY est global à un programme et suspend l'exécution de toutes ses fonctions.

Exemple
SUB MainDelay()
DIM dblFrequency as double; 'in Hz
DIM dblPeriod as double; ' in ms
DIM intSeconds as integer; ' seconds

dblFrequency = 1000;
dblPeriod = 100;
intSeconds = 4;
BEEP (dblFrequency,dblPeriod);
DELAY (intSeconds);
BEEP (dblFrequency,dblPeriod);
END SUB

SV_SCADABasic_fr 145
DGET_BUFFER
Voir aussi
Récupère un DOUBLE dans une zone mémoire.

Syntaxe
DblVal = DGET_BUFFER(Handle, Offset);
Type de retour : DOUBLE
Argument Signification
Handle Adresse du buffer en mémoire. Type LONG.
Offset Offset en octets qui, ajouté au handle, fournit la position mémoire de la variable à retourner.
Tout type numérique.
Exécution
Récupère un DOUBLE dans une zone mémoire réservée par un ALLOC_BUFFER à l'offset précisé.

Exemple
i1 = DGET_BUFFER(handle,2);

SV_SCADABasic_fr 146
DIM
Voir aussi Exemple
Déclare des variables et des tableaux de variables.
Mode Mnémonique Syntaxe
- Variable 1
- Array 2

Syntaxe 1
DIM VarName As Type [, VarName2 As Type, ...];
Type de retour : aucun
Argument Signification
VarName Nom de la variable
Type Type de la variable (INTEGER, LONG, SINGLE, DOUBLE ou STR).
Exécution
La variable peut être déclarée en entête d'une procédure ou en entête du programme (en dehors des
procédures). Si elle est déclarée dans un entête de programme, elle sera disponible pour toutes les
fonctions. Si elle est déclarée dans une procédure, elle ne sera disponible que pour cette fonction.
Si une variable est substituée, la déclaration doit être faite à l'intérieur d'une fonction Sub, et non
globalement dans l'entête de programme ou passée comme un argument à partir d'une animation
Exécution Programme. Voir exemple 1 ci-dessous.

Syntaxe 2
DIM VarName [Size1] [Size2] As Type [, VarName2 As Type, ...];
Type de retour : aucun
Argument Signification
Size1, Size2 Nombre d'éléments pour chaque dimension
Exécution
La variable peut être déclarée en en-tête d'une procédure ou en en-tête du programme (en dehors des
procédures). Si elle est déclarée dans un entête de programme, elle sera disponible pour toutes les
fonctions. Si elle est déclarée dans une procédure, elle ne sera disponible que pour cette fonction.
Le nombre maximum de dimensions pour une variable tableau est de 10. Par exemple, TAB[i][j][k]
est un tableau à trois dimensions.
Le nombre maximum d'éléments dans un tableau dans une fonction particulière est de 600 moins le
nombre de fonctions dans le programme. Les indices du tableau commencent à 0.

Durant l'itération d'un tableau, l'affichage du synoptique est figé. L'itération d'un tableau est très
consommateur de temps et doit être évité au maximum.

Exemple
SUB Main()
DIM i As integer;
DIM j As integer;
DIM strString1 As str;
DIM intArray1 [3][5] As integer;

'The table always starts at value 0;


strString1 ="1";

SV_SCADABasic_fr 147
'Display strString1 value
PRINT (strString1);

FOR (i=0;i<3;i=i+1)
FOR (j=0;j<5;j=j+1)
intArray1[i][j]=1;
'Display the table value
PRINT (intArray1[i][j]);
NEXT
NEXT
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 148
DVAL
Voir aussi
Donne la valeur numérique d'une chaîne de caractères.

Syntaxe
DblVal = DVAL(string);
Type de retour : DOUBLE
Exécution
Lorsque la chaîne est vide ou démarre par un caractère non numérique la fonction retourne 0. La
conversion s'arrête dès qu'elle rencontre un caractère non numérique en partant de la gauche vers la
droite.

Exemple
SUB Main()
DIM dblResult as double;
DIM strString1 as Str;
strString1 = "125.35TEST";
dblResult = DVAL( strString1 );
Print("Result:", dblResult );
SUB Main

SV_SCADABasic_fr 149
EMAIL
Voir aussi Spécifiques Exemple
Contrôle par programme du composant MailSender de Microsoft, version 1.0. Il initialise des fonctions de
messagerie électronique basiques pour un message, pièce jointe, compte utilisateur ou modèle.
Mode Mnémonique Syntaxe
0 SEND 1
1 ADDPROFILE 2
2 DELPROFILE 3
3 DELALLPROFILES 4

Syntaxe 1
EMAIL(Mode, EmailProfile, To, Cc, Bcc, Subject, Message [, FileAttachments [, Priority [, MessageFormat [,
MessageEncoding]]]] )
Type de retour : INTEGER.
Argument Signification
EmailProfile Nom du profil de messagerie électronique tel que configuré dans Actions.Messagerie
électronique.Profils. Le profil fournit des informations comme le nom du serveur sortant
(SMTP). Si aucun profil n'est spécifié, le profil par défaut sera utilisé. Type STR.
To Adresse du destinataire dans une liste où les noms sont délimités par des points-virgules.
Type STR.
Cc Adresse du destinataire en copie dans une liste où les noms sont délimités par des points-
virgules. Type STR.
Bcc Adresse du destinataire en copie cachée dans une liste où les noms sont délimités par des
points-virgules. Type STR.
Subject Ligne de l'objet du message électronique. Type STR.
Message Corps du message électronique. Type STR.
FileAttachm Liste de pièces jointes délimitée par des points-virgules. Les fichiers de la liste doivent avoir
ents un chemin d'accès absolu. Type STR.
Priority Importance du message. Tout type numérique.
0 = Normale.
1 = Basse.
2 = Haute.
MessageFor Format du corps du message électronique. Tout type numérique.
mat 0 = Texte seulement
1 = HTML
MessageEnc Encodage du corps du message éléctronique. Voir le chapitre Encodage de message.
oding

Exécution
Mode Mnémonique Action
0 SEND Envoi d'un message électronique.
Retourne 1 si OK, sinon 0.

Syntaxe 2

SV_SCADABasic_fr 150
EMAIL(MODE, ProfileName, ProfileDescription, AccountName, AccountDescription, SenderAddress,
SenderDisplayName, ReplyToAddress, ServerHost, ServerPort, DeliveryMethod, EncryptionMethod,
AuthenticationMode, UserName, UserPassword);
Type de retour : INTEGER.
Argument Signification
ProfileName Nom du profil. Type STR.
ProfileDescription Description du profil. Type STR.
AccountName Nom du compte. Type STR.
AccountDescription Description du compte. Type STR.
SenderAddress Adresse e-mail qui apparaît dans le champ De du client destinataire de l'e-mail.
Type STR.
SenderDisplayName Si configuré, s'affichera dans le champ De du client destinataire de l'e-mail au
lieu de l'adresse e-mail source. Type STR.
ReplyToAddress Adresse e-mail qui sera utilisée par le client destinataire de l'e-mail s'il choisit
de répondre au message. Type STR.
ServerHost Nom du serveur sortant. Type STR.
ServerPort Numéro du port du serveur sortant. Tout type numérique.
DeliveryMethod Flag indiquant la méthode d'envoi de l'e-mail. 1 via IIS, 0 via le réseau.
EncryptionMethod Flag indiquant la méthode d'encryptage. 1 pour SSL, sinon 0.
AuthenticationMode Flag indiquant si l'authentification est requise. 1 pour authentification, sinon 0.
UserName Nom de l'utilisateur si l'authentification est requise. Type STR.
UserPassword Mot de passe de l'utilisateur si l'authentification est requise. Type STR.

Exécution
Mode Mnémonique Action
1 ADDPROFILE Ajoute un compte et un profil e-mail temporaires.
Retourne 1 si OK, sinon 0 (erreur de paramètre).

Syntaxe 3
EMAIL(MODE, ProfileName);
Type de retour : INTEGER.
Argument Signification
ProfileName Nom du profil. Type STR.

Exécution
Mode Mnémonique Action
2 DELPROFILE Supprime un compte et un profil e-mail temporaires. Seuls un profil et un
compte créés par programme peuvent être supprimés.
Retourne 1 si OK, sinon 0 (erreur de paramètre).

Syntaxe 4
EMAIL(MODE);
Type de retour : INTEGER.

Exécution
Mode Mnémonique Action
3 DELALLPROFILES Supprime tous les comptes et profils e-mail temporaires. Seuls les profils et

SV_SCADABasic_fr 151
les comptes créés par programme peuvent être supprimés.
Retourne toujours 1.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 152
ERROR
Voir aussi
Renvoie le status de la dernière erreur.

Mode Mnémonique Syntaxe


1 ERRNO 1
2 PROGRAM 2
3 FUNCTION 2
4 LINE 1
5 TOFILE 3

Syntaxe 1
IntVal = ERROR(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
1 ERRNO Retourne le code de la dernière erreur apparue.
Retour :
0 = s'il n'y a pas eu d'erreur
1 = argument de chaîne erroné.
2 = si affectation de variable < au minimum physique.
3 = si affectation de variable > au maximum physique.
5 = fichier déjà ouvert (fopen).
6 = fichier déjà fermé (fclose, fseek, fputs).
7 = échec à l'ouverture (fopen).
4 LINE Retourne le numéro de la ligne ou s'est produit la dernière erreur, 0 s'il n'y a pas
eu d'erreur.

Syntaxe 2
IntVal = ERROR(Mode);
Type de retour : STR
Exécution

Mode Mnémonique Action


2 PROGRAM Retourne le nom du programme où s'est produit la dernière erreur,
Chaîne vide s'il n'y a pas eu d'erreur.
3 FUNCTION Retourne le nom de la fonction ou s'est produit la dernière erreur.
Chaîne vide s'il n'y a pas eu d'erreur.

Syntaxe 3
IntVal = ERROR(Mode, Filename);

SV_SCADABasic_fr 153
Type de retour : INTEGER
Exécution
Mode Mnémonique Action

5 TOFILE Redirige toutes les erreurs qui s'affichent dans la fenêtre de mise au point des
programmes vers le fichier "filename".

Retour : Le nom du programme dans lequel la dernière erreur s'est produite.

Veiller à utiliser \\ pour indiquer un nom de fichier avec son chemin. Pour désactiver la
redirection, utiliser "" pour le nom du fichier. Lorsque le chemin n'est pas spécifié, le
fichier est redirigé dans le répertoire TP du projet.

Exemple
SUB Main()
DIM intResult as integer;
'open the file
intResult = Error("TOFILE","errorfile.txt");
If (FOPEN("MESSAGE.TXT","R")==0) Then
'If error in opening:
PRINT ("code=\t",ERROR("ERRNO"));
PRINT ("prog=\t",ERROR("PROGRAM"));
PRINT ("fonc=\t",ERROR("FUNCTION"));
PRINT ("line=\t",ERROR("LINE"));
Else
'If no error in opening MESSAGE.TXT:
'...
End If
END SUB

SV_SCADABasic_fr 154
EVENT
Voir aussi Exemple Plus d'informations
Exécution d'une fonction sur changement de valeur d'une variable.
Mode Mnémonique Syntaxe
1 ADD ou 1
ADDPROG
2 ADDPROGEVT 7
3 DELPROGEVT 8
5 DEL 2
6 DELALL 3
7 IMPORTBYFILE 5
8 IMPORTBYHANDL 6
E
9 ADDEMAIL 9
10 DELEMAIL 8
11 ADDPROGS 1
12 ADDSMS 10
13 DELSMS 8
21 DELPROG 4

Tous les programmes depuis lesquels les procédures sont déclenchées doivent être
préchargés.

L'utilisation de DELAY dans une procédure appelée périodiquement peut produire des
résultats imprévisibles et doit être évitée.

Les noms de variables ne doivent pas être précédés par le caractère @.

Syntaxe 1
IntVal = EVENT(Mode, VarName, Sense, Prog, Branch, Func[, Farg [, ActivBit]]) ;
Type de retour : INTEGER
Argument Signification
VarName Nom de variable de la base de données. Type STR.
Sense Sens de la transition.
Prog Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR.
Func Nom de la fonction à exécuter. Type STR.
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG.
ActivBit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.
Exécution

SV_SCADABasic_fr 155
Mode Mnémonique Action
1 ADD ou Création d'un événement déclenchant un programme. Annule et remplace le
ADDPROG déclenchement de même identifiant précédent (name + sense).
11 ADDPROGS Création d'un événement déclenchant un programme pouvant porter sur la
même variable et le même sens mais avec une fonction différente.

Syntaxe 2
IntVal = EVENT(Mode, VarName[, Sense, Prog, Branch, Func] );
Type de retour : INTEGER
Argument Signification
VarName Nom de la base de données. Type STR.
Sense Sens de la transition. Voir ci-dessous
Prog Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR.
Func Nom de la fonction à exécuter. Type STR.
Exécution
Mode Mnémonique Action
5 DEL Suppression de tous les déclenchements existants, si les paramètres facultatifs
sont précisés seul le déclenchement nommé est supprimé. Sense doit être
identique à celui indiqué lors de la programmation.
Retour : 1 si au moins une suppression est prise en compte, 0 sinon.

Syntaxe 3
IntVal = EVENT(Mode, [, Type]);
Type de retour : INTEGER
Argument Signification
Type Type de déclenchements à supprimer. Type INTEGER.
0 = Supprime tous les déclenchements existants créés par programme. Paramètre par défaut
si Type n'est pas utilisé.
1 = Supprime tous les déclenchements de programmes créés par programme.
2 = Supprime tous les déclenchements de messages électroniques créés par programme.

Exécution
Mode Mnémonique Action
6 DELALL Suppression de tous les déclenchements créés par programme selon le type
précisé.
Retour : toujours 1.

Syntaxe 4
IntVal = EVENT(Mode, Name, Sense, Program, Branch, Function);
Type de retour : INTEGER
Argument Signification
Name Nom de la base de données. Type STR.
Sense Sens de la transition.

SV_SCADABasic_fr 156
Prog Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR.
Func Nom de la fonction à exécuter. Type STR.
Exécution
Mode Mnémonique Action
21 DELPROG L'événement déclenchant un programme unique identifié est détruit. Tous les
arguments sont obligatoires.
Retour : 1 si l'événement correspondant a été détruit, 0 sinon.

La fonction appelée ainsi que les autres fonctions de ce programme susceptibles de se


dérouler concurremment, ne doivent pas contenir d'instruction de type DELAY.

Sense
Sense est un exemple qui définit les conditions dans lesquelles l'événement est déclenché. Les options
disponibles dépendent du type de variable avec laquelle l'événement est associée.

Conditions de variables
Voir le chapitre Conditions de Variables.

Syntaxe 5
IntVal = EVENT(Mode, FileName);
Type de retour : INTEGER
Argument Signification
FileName Nom du fichier texte dans le répertoire TP du projet ou dans le répertoire sélectionné par un
chemin absolu. Type STR.
Exécution
Mode Mnémonique Action
7 IMPORTBYFILE Import d’événements à partir du fichier dans le répertoire spécifié.
Retour : 1 si OK, 0 sinon.

Exemple
EVENT(7, "addEvent.dat");
EVENT("IMPORTBYFILE", "addEvent.dat");

Syntaxe 6
IntVal = EVENT(Mode, Handle);
Type de retour : INTEGER
Argument Signification
Handle Adresse du buffer d’allocation mémoire retourné par ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
8 IMPORTBYHANDLE Import d’événements à partir d’un buffer.
Retour : 1 si OK, 0 sinon.

Exemple

SV_SCADABasic_fr 157
DIM hbuf AS LONG;
hbuf = FILETOBUF("addevent.dat");
EVENT(8, hbuf);
'OR
EVENT("IMPORTBYHANDLE", hbuf);

Syntaxe 7
IntVal = EVENT(Mode, Name, Description, ServerListName, VarName, Sense, Prog, Branch, Func, [, Farg
[, ActiveBit]];
Type de retour : INTEGER
Argument Signification
Name Nom de l'événement. La chaîne de caractères saisie apparaîtra dans le champ Nom de la
boîte de dialogue de configuration de l'événement. Elle est également utilisée comme
identifiant lors de la suppression automatique du déclenchement. Type STR.
Description Description de l'événement. La chaîne de caractères saisie apparaîtra dans le champ
Description de la boîte de dialogue de configuration de l'événement. Type STR.
ServerListN Nom de la liste serveur. Dans une application multi-postes, l'événement ne sera actif que sur
ame la liste serveur apparaissant dans la liste. Type STR.
VarName Nom de la base de données. Type STR.
Sense Sens de la transition. Voir ci-dessus.
Prog Nom du programme contenant la fonction. Type STR.
Branch Nom de branche passé en argument à la fonction appelée. Type STR.
Func Nom de la fonction à exécuter. Type STR.
Farg Facultatif. Chaîne de 255 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG.
ActiveBit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.
Exécution
Mode Mnémonique Action
2 ADDPROGEVT Création d'un événement déclenchant un programme. Les conditions dans
lesquelles l'événement est déclenché sont définies par l'expression Sense. Si un
nom de fonction n'est pas fournie, la fonction MAIN sera déclenchée. Un
événement existant avec le même nom sera déclenché.
Retour : 1 si OK, 0 sinon.

Syntaxe 8
IntVal = EVENT(Mode, Name);
Type de retour : INTEGER
Argument Signification
Name Nom de l'événement. La chaîne de caractères saisie est celle qui apparaît dans le champ Nom
de la boîte de dialogue de configuration de l'événement.
Exécution
Mode Mnémonique Action
3 DEPROGEVT Suppression du nom de l'événement.
10 DELEMAIL Suppression de l'événement e-mail.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 158
13 DELSMS Suppression de l'événement SMS.

Syntaxe 9
IntVal = EVENT(Mode, Name, Description, ServerListName, VarName, Sense, EmailTemplate, [, ActiveBit
[, EmailProfile [, To [, Cc [, Bcc [, Subject [, Message [, FileAttachments [, Priority [, MessageFormat [,
MessageEncoding]]]]]]]]]]])
Type de retour : INTEGER
Argument Signification
Name Nom de l'événement. La chaîne de caractères saisie apparaîtra dans le champ Nom de la
boîte de dialogue de configuration de l'événement. Elle est également utilisée comme
identifiant lors de la suppression de l'événement par programme.
Description Description de l'événement. La chaîne de caractères saisie apparaîtra dans le champ
Description de la boîte de dialogue de configuration de l'événement.
ServerListN Nom de la liste serveur. Dans une application multi-postes, l'événement ne sera actif que sur
ame le poste serveur apparaissant dans la liste.
VarName Nom d'une variable de l'arbre des variables. Type STR.
Sense Chaîne de caractères ou nom d'une variable de texte définissant la condition de
déclenchement.
EmailTempl Nom du modèle de messagerie tel que configuré dans Actions.Messages.Modèles de
ate message. Le champ Modèle peut être vide. Type STR.
ActiveBit Facultatif. Nom de la variable état ou alarme qui active l'événement.
EmailProfile Facultatif. Nom du profil de messagerie électronique tel que configuré dans
Actions.Messages.Profils de messagerie. Le profil fournit des informations comme le nom du
serveur sortant (SMTP). Si aucun profil n'est spécifié, le profil par défaut sera utilisé. Type
STR.
To Facultatif. Adresse des destinataires dans une liste où les noms sont délimités par des points-
virgules. Type STR.
Cc Facultatif. Adresse des destinataires en copie dans une liste où les noms sont délimités par
des points-virgules. Type STR.
Bcc Facultatif. Adresse des destinataires en copie cachée dans une liste où les noms sont
délimités par des points-virgules. Type STR.
Subject Facultatif. Objet du message électronique. Type STR.
Message Facultatif. Corps du message électronique. Type STR.
FileAttachm Facultatif. Liste de pièces jointes délimitées par des points-virgules. Les fichiers de la liste
ents doivent avoir un chemin d'accès absolu. Type STR.
Priority Facultatif. Importance du message. Tout type numérique.
0 = Normale.
1 = Basse.
2 = Haute.
MessageFor Facultatif. Format du corps du message électronique. Tout type numérique.
mat 0 = Texte seulement
1 = HTML
MessageEnc Facultatif. Encodage du corps du message éléctronique. Voir le chapitre Encodage de
oding message.

Si un modèle est spécifié et si, dans le modèle, le comportement d'une propriété est
configuré comme Imposé par le modèle, les propriétés du modèle écraseront la

SV_SCADABasic_fr 159
configuration de l'instruction. Les propriétés affectées sont EmailProfile, To, Cc, Bcc,
Subject, Message, Attachments, Priority, MessageFormat et MessageEncoding.
Exécution
Mode Mnémonique Action
9 ADDEMAIL Création d'un événement déclenchant un message électronique. Les conditions
dans lesquelles l'événement est déclenché sont définies par l'expression Sense.
Si un événement avec le même nom existe déjà, il sera remplacé.
Retour : 1 si OK, 0 sinon.

Syntaxe 10
IntVal = EVENT(Mode, Name, Description, ServerListName, VarName, Sense, MsgTemplate, [, ActiveBit [,
SMSProfile [, PhoneNumbers [, Subject [, Message [, Format]]]]]])
Type de retour : INTEGER
Argument Signification
Name Identifiant de l'événement. Type STR.
Description Description de l'événement. Type STR.
ServerListN Nom de la liste serveur lors de l'utilisation dans une application multi-postes. Type STR.
ame
VarName Nom d'une variable de l'arbre des variables, utilisée pour déclencher l'événement SMS. Type
STR.
Sense Chaîne de caractères ou nom d'une variable de texte définissant la condition de
déclenchement.
MsgTemplat Nom du modèle de message tel que configuré dans Actions.Messages.Modèles de message.
e Type STR.
ActiveBit Facultatif.Nom complet de la variable état ou alarme qui active de l'événement. Type STR.
SMSProfile Facultatif. Nom du profil SMS tel que configuré dans Actions.Messages.Profils SMS. Le profil
fournit des informations au sujet du port de connexion et de la simcard du modem. Type
STR.
PhoneNumb Facultatif. Numéros de téléphone des destinataires du SMS. Plusieurs numéros doivent être
ers séparés par des points-virgules. Type STR.
Subject Facultatif. Objet du SMS. Type STR.
Message Facultatif. Corps du SMS. Type STR.
Format Facultatif. Format du message.
0 = Auto (valeur par défaut).
1 = Texte.
2 = PDU 7 octets.
3 = Unicode
Exécution
Mode Mnémonique Action
12 ADDSMS Création d'un événement déclenchant un SMS. Les conditions dans lesquelles
l'événement est déclenché sont définies par l'expression Sense.

Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 160
EXCELTOBUF

Voir aussi Exemple


Crée un buffer mémoire depuis un fichier Excel au format XLSX. Taille maximum du buffer : 128 Ko.

Syntaxe
LongVal = EXCELTOBUF (WorkbookPath, SheetName, LineSeparator, ColumnSeparator [, RangeFirstRow,
RangeFirstColumn, RangeLastRow, RangeLastColumn]);
Argument Meaning
WorkbookPath Chemin et/ou nom du classeur. Si le chemin n'est pas fourni, le Superviseur
prendra le classeur dans le dossier TP du projet. Type STR.
SheetName Nom de la feuille (30 caractères maximum). Type STR.
LineSeperator Séparateur de ligne utilisé dans le buffer (un caractère comme ‘;’ ou ‘\n’). Type
STR.
ColumnSeperator Séparateur de colonne utilisé dans le buffer (un caractère comme ‘,’ ou ‘\t’).
Type STR.
RangeFirstRow Première ligne lue dans la feuille Excel (Valeur par défaut à 1).
RangeFirstColumn Première colonne lue dans la feuille Excel (Valeur par défaut à 1)
RangeLastRow Dernière ligne lue dans la feuille Excel (Valeur par défaut à 1)
RangeLastColumn Dernière colonne lue dans la feuille Excel (Valeur par défaut à 1)

Si les paramètres optionnels de rang sont utilisés, tous les quatre doivent être utilisés.

Exécution
Action
Crée un buffer mémoire depuis un fichier Excel dans un format XLSX. Taille maximum du buffer : 128 Ko.
Retour : Localisation du buffer mémoire OK, 0 sinon.

SV_SCADABasic_fr 161
EXP
Voir aussi
Fonction exponentielle (base e).

Syntaxe
DblVal = EXP(Val);
Argument Signification
Val Tout type numérique.

Type de retour : DOUBLE


Exécution

Noter que les variables de la base de données sont de type SINGLE.


En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si
l'on veut éviter une erreur de type.

Exemple
SUB Main()
'Declare
DIM dblExponential as double;
DIM sngValue as single;

sngValue = 2.23456;
dblExponential = Exp ( sngValue );
Print("Exp( ",sngValue," ) = ",dblExponentielle);
'Display "Exp( 2.23456 ) = 9.34237"
END SUB

SV_SCADABasic_fr 162
EXPORT

Voir aussi Exemple


Exécute un export configuré précédemment (Application Explorer).
Mode Mnémonique Syntaxe
1 GENERATE 1
2 GENERATE_DATES 2
3 GENERATE_PERIOD 3

Syntaxe 1
IntVal = EXPORT (Mode, ExportName, [ExportPageName], [ExportAbsoluteFilePath ], [ReferenceDate ],
[StatusVariable]);
Argument Signification
ExportName Nom de l'export à exécuter (tel que configuré dans l'Application Explorer).
Type STR.
ExportPageName Nom de la page à exporter. Si non spécifié, toutes les pages seront exportées.
Type STR.
ExportAbsoluteFilePath Nom du fichier résultat de l'export à générer. Si non spécifié, c'est le nom du
fichier par défaut, tel que configuré dans l'Application Explorer, qui sera utilisé.
Type STR.
ReferenceDate Horodatage utilisé comme date de référence pour calculer les dates de début
et de fin. Si non spécifié, c'est la date actuelle d'exécution de la fonction qui
sera utilisée. Type DOUBLE (format DateTimeValue)
StatusVariable Nom d'une variable mesure dans laquelle le status de l'export est sauvegardé.
Si non spécifié, c'est la variable de status, telle que configurée dans
l'Application Explorer, qui sera utilisée. Si spécifié, la variable de status
configurée dans l'Application Explorer, ne sera pas utilisé. Type STR.
Exécution
Mode Mnémonique Action
1 GENERATE Génère l'export.
Retour : 1 si OK, 0 ou une variable négative si NOK (ExportName ne
correspond pas à l'export configuré, ExportPageName ne correspond
pas à la page configurée, nom de fichier invalide, ne peut pas créer le
fichier de sortie, horodatage invalide ou configuration d'export
invalide).

Syntaxe 2
IntVal = EXPORT (Mode, ExportName, [ExportPageName], [ExportAbsoluteFilePath ], [StartDate],
[EndDate ], [StatusVariable]);
Argument Signification
ExportName Nom de l'export à exécuter (tel que configuré dans l'Application Explorer).
Type STR.
ExportPageName Nom de la page à exporter. Si non spécifié, toutes les pages seront exportées.
Type STR.
ExportAbsoluteFilePath Nom du fichier résultat de l'export à générer. Si non spécifié, c'est le nom du
fichier par défaut, tel que configuré dans l'Application Explorer, qui sera utilisé.
Type STR.
StartDate Horodatage à utiliser comme date de début. Type DOUBLE (format
DateTimeValue)
EndDate Horodatage à utiliser comme date de fin. Type DOUBLE (format
DateTimeValue)
StatusVariable Nom d'une variable mesure dans laquelle le status de l'export est sauvegardé.
Si non spécifié, c'est la variable de status, telle que configurée dans

SV_SCADABasic_fr 163
l'Application Explorer, qui sera utilisée. Si spécifié, la variable de status
configurée dans l'Application Explorer, ne sera pas utilisé. Type STR.
Exécution
Mode Mnémonique Action
2 GENERATE_DATES Génère l'export en utilisant des horodatages de début et de fin.
Retour : 1 si OK, 0 ou une variable négative si NOK (ExportName ne
correspond pas à l'export configuré, ExportPageName ne correspond
pas à la page configurée, nom de fichier invalide, ne peut pas créer le
fichier de sortie, horodatage invalide ou configuration d'export
invailde).

Syntaxe 3
IntVal = EXPORT (Mode, ExportName, [ExportPageName], [ExportAbsoluteFilePath ], [ReferenceDate ],
[PeriodType], [PeriodValue], [PeriodInterval], [StatusVariable]);
Argument Signification
ExportName Nom de l'export à exécuter (tel que configuré dans l'Application Explorer).
Type STR.
ExportPageName Nom de la page à exporter. Si non spécifié, toutes les pages seront exportées.
Type STR.
ExportAbsoluteFilePath Nom du fichier résultat de l'export à générer. Si non spécifié, c'est le nom du
fichier par défaut, tel que configuré dans l'Application Explorer, qui sera utilisé.
Type STR.
ReferenceDate Horodatage utilisé comme date de référence pour calculer les dates de début
et de fin. Si non spécifié, c'est la date actuelle d'exécution de la fonction qui
sera utilisée. Type DOUBLE (format DateTimeValue)
PeriodType Type de période. Complète ou courante. Type INTEGER.
0 = Courante
1 = Complète
-1 = Ignore l'argument.
PeriodValue Valeur de la période. Type INTEGER.
1 à 65535.
-1 = Ignore l'argument.
PeriodInterval Type d'intervalle (Année, mois, jour ...). Type INTEGER.
0 = Minutes
1 = Heures
2 = Jours
3 = Semaines
4 = Mois
5 = Années
-1 = Ignore l'argument.
StatusVariable Nom d'une variable mesure dans laquelle le status de l'export est sauvegardé.
Si non spécifié, c'est la variable de status, telle que configurée dans
l'Application Explorer, qui sera utilisée. Si spécifié, la variable de status
configurée dans l'Application Explorer, ne sera pas utilisé. Type STR.
Exécution
Mode Mnémonique Action
3 GENERATE_PERIOD Génère l'export en utilisant l'horodate de début et une période.
Retour : 1 si OK, 0 ou une variable négative si NOK (ExportName ne
correspond pas à l'export configuré, ExportPageName ne correspond
pas à la page configurée, nom de fichier invalide, ne peut pas créer le
fichier de sortie, horodatage invalide ou configuration d'export
invalide).

SV_SCADABasic_fr 164
EXPORT_LOG

Voir aussi Exemple


Génère des données de consignations d'historiques en utilisant la fonctionnalité fournie par l'Export de
données. Pour plus d'informations, voir l'aide sur l'Analyse de données (L'Application Explorer.Analyse de
données). Voir également les Notes fonctionnelles importantes ci-dessous.

L’Export de données est protégé par une option de licence dans la clé de protection du
Superviseur. Si vous ne possédez pas cette option, l’Export de données ne s’effectuera qu’en
mode démonstration.

Mode Mnémonique Syntaxe


1 GETRECORD 1
2 GETSTATISTIC 2
3 READBUFFER 3
4 CANCEL 4
5 DISPOSE 4

Argument communs
Argument Signification
LogListName Nom de la liste de consignations à partir de laquelle les données sont obtenues.
Type STR.
StartTime Heure de début de la requête d'historiques. L'heure de début doit être
antérieure à l'heure de fin. Type DOUBLE.
EndTime Heure de fin de la requête d'historiques. L'heure de fin doit être postérieure à
l'heure de début. Type DOUBLE.
Events Nombre, calculé en utilisant des valeurs de poids binaires, représentant les
événements à générer. Type DOUBLE.
0x0000 0001 = Alarme présente
0x0000 0002 = Alarme au repos
0x0000 0004 = Alarme présente non acquittée
0x0000 0008 = Alarme absente non acquittée
0x0000 0010 = Alarme présente acquittée
0x0000 0020 = Alarme absente acquittée
0x0000 0040 = Alarme non accessible
0x0000 0080 = Alarme inhibée
0x0000 0100 = Alarme masquée par programme
0x0000 0200 = Alarme masquée par variable
0x0000 0400 = Alarme masquée par opérateur
0x0000 0800 = Alarme masquée par expression
0x0000 1000 = Alarme prise en compte
0x0000 2000 = Transition à 0
0x0000 4000 = Transition à 1
0x0000 8000 = Invalide
0x0001 0000 = Actions opérateur commande
0x0002 0000 = Actions opérateur acquittement
0x0004 0000 = Actions opérateur connexion/déconnexion
0x0008 0000 = Actions opérateur exécution programme
0x0010 0000 = Actions opérateur masquage d'alarme
AlarmLevelMin Niveau d'alarme minimum (0 à 29). Type INTEGER.
AlarmLevelMax Niveau d'alarme maximum (0 à 29). Type INTEGER.
ExpressionFilter Expression de filtre sur attributs. Voir le chapitre :
L'Application Explorer.Archives.Configuration des unités d'archivage.Unité
d'archivage propriétaire.Configuration de l'enregistrement des

SV_SCADABasic_fr 165
consignations.Utilisation de filtre d'expression sur attributs.
StatusVariable Nom de la variable de mesure dans laquelle le status de la requête
d'historiques est reportée. Type STR.
LineSeparator Caractère utilisé comme séparateur de ligne dans le buffer de sortie.
ColumnSeparator Caractère utilisé comme séparateur de colonne dans le buffer de sortie.
MaxRetLines Nombre maximum de lignes retournées par la requête. 0 = pas de maximum.
Type INTEGER.

Syntaxe 1
IntVal = EXPORT_LOG(Mode, LogListName, StartTime, EndTime, Events, AlarmLevelMin, AlarmLevelMax,
ExpressionFilter, StatusVariable, LineSeparator, ColumnSeparator, MaxRetLines, DataFormat,
DataHeader)
Argument Signification
DataFormat Format de données des colonnes. Le format de chaque colonne est séparé par
le caractère "|". Type STR.
Exemple: #D/#M/#Y|#h:#m:#s|#E|#T
DataHeader Texte d'entête. Chaque entête de colonne est séparée par le caractère "|". Type
STR.
Exemple: Date|Time|Event|Title
Exécution
Mode Mnémonique Action
1 GETRECORD Génère une requête d'historiques pour renvoyer les enregistrements
consignés contenues dans une liste de consignations.
Retour : Voir Notes fonctionnelles ci-dessous.

Syntaxe 2
IntVal = EXPORT_LOG(Mode, LogListName, StartTime, EndTime, Events, AlarmLevelMin, AlarmLevelMax,
ExpressionFilter, StatusVariable, LineSeparator, ColumnSeparator, MaxValuesToProcess, MaxRetLines,
StatFlag, StatSortOrder, StatCountersFormat, StatRounded)
Argument Signification
StatFlag Nombre, calculé en utilisant des valeurs de poids binaires, représentant les
statistiques à générer. Type LONGLONG.
0x0000 0000 0001 = Compteur de toutes les transitions
0x0000 0000 0002 = Transition à 0 (Occurrences)
0x0000 0000 0004 = Transition à 1 (Occurrences)
0x0000 0000 0008 = Invalide (Occurrences)
0x0000 0000 0010 = Transition à 0 (Durée)
0x0000 0000 0020 = Transition à 1 (Durée)
0x0000 0000 0040 = Invalide (Durée)
0x0000 0000 0080 = Alarme au repos (Occurrences)
0x0000 0000 0100 = Alarme présente (Occurrences)
0x0000 0000 0200 = Alarme absente acquittée (Occurrences)
0x0000 0000 0400 = Alarme absente non acquittée (Occurences)
0x0000 0000 0800 = Alarme présente acquittée (Occurrences)
0x0000 0000 1000 = Alarme présente non acquittée (Occurrences)
0x0000 0000 2000 = Alarme invalide (Occurrences)
0x0000 0000 4000 = Alarme masquée par expression (Occurrences)
0x0000 0000 8000 = Alarme inhibée (Occurrences)
0x0000 0001 0000 = Alarme non accessible (Occurrences)
0x0000 0002 0000 = Alarme masquée par programme (Occurrences)
0x0000 0004 0000 = Alarme masquée par opérateur (Occurrences)
0x0000 0008 0000 = Alarme masquée par variable (Occurrences)
0x0000 0010 0000 = Alarme au repos (Durée)
0x0000 0020 0000 = Alarme présente (Durée)
0x0000 0040 0000 = Alarme absente acquittée (Durée)

SV_SCADABasic_fr 166
0x0000 0080 0000 = Alarme absente non acquittée (Durée)
0x0000 0100 0000 = Alarme présente acquittée (Durée)
0x0000 0200 0000 = Alarme présente non acquittée (Durée)
0x0000 0400 0000 = Alarme invalide (Durée)
0x0000 0800 0000 = Alarme masquée par expression (Durée)
0x0000 1000 0000 = Alarme inhibée (Durée)
0x0000 2000 0000 = Alarme non accessible (Durée)
0x0000 4000 0000 = Alarme masquée par programme (Durée)
0x0000 8000 0000 = Alarme masquée par opérateur (Durée)
0x0001 0000 0000 = Alarme masquée par variable (Durée)
StatSortOrder Statistique utilisée pour trier les résultats. Sélectionné en utilisant une des
valeurs utilisées pour StatFlag. 0 = aucun tri. Type LONGLONG
StatCountersFormat Numéro indiquant les unités des compteurs. Type INTEGER.
0 = Aucun
1 = Secondes
2 - Minutes
3 = Heures
4 = Jours
StatRounded Type INTEGER.
0 = Aucun arrondi
1 = Arrondi
Exécution
Mode Mnémonique Action
2 GETSTATISTIC Génère une requête d'historiques pour retourner des valeurs de
statistiques depuis la liste de consignations.
Retour : Voir Notes fonctionnelles ci-dessous.

Syntaxe 3
IntVal = EXPORT_LOG(Mode, BufferHandle);
Argument Signification
BufferHandle Handle du buffer précédemment créé en utilisant ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
5 READBUFFER Lit un buffer de données après un GETRECORD ou GETSTATISTIC.
Le status de la variable doit être 0 (Terminé), 4 (Terminé mais le
nombre maximum de points a été atteint) ou 5 (Terminé mais le
nombre maximum de valeurs traitées a été atteint).
Retour : Nombre de lignes extraites ou si plus petit que 1 :
0 = Fin du buffer
-1 = Handle du buffer invalide
-2 = Aucune demande d'historiques précédente a été envoyée
-3 = Aucune réponse reçue
-4 = Rien à lire
-5 = Buffer trop petit

Syntaxe 4
IntVal = EXPORT_LOG(Mode);
Exécution
Mode Mnémonique Action
6 CANCEL Annule la requête d'historiques courante. Un CANCEL doit toujours
être suivi par un DISPOSE.
Retour : Toujours 0.
7 DISPOSE Libère le buffer interne utilisé par une requête d'historiques. Doit
toujours être appelé avant de faire une nouvelle demande

SV_SCADABasic_fr 167
d'historiques ou après un CANCEL.
Retour : Toujours 0.

Notes fonctionnelles importantes


L'instruction EXPORT_LOG fonctionne de façon asynchrone. Une fois qu'une requête d'historiques a été
générée par les modes GETRECORD ou GETSTATISTIC, le script continue d'être exécuté sans attendre les
données d'historiques qui seront générées. La valeur de retour de l'instruction indique si la requête
d'historiques a été envoyée avec succès, ou non.
Lorsque la requête d'historiques est terminée (avec succès ou non) la valeur de la variable de status est
modifiée en conséquence. Sur ce changement, si la valeur de la variable de status indique un succès, le
mode READBUFFER être utilisé pour récupérer les données dans une mémoire tampon (buffer) à partir
duquel un traitement ultérieur peut être effectué (par exemple un export vers Excel en utilisant le verbe
BUFTOEXCEL).
Il sera probablement nécessaire d'utiliser plusieurs fois READBUFFER jusqu'à ce que le code retour de
READBUFFER soit égal à 0 indiquant que toutes les données ont été traitées.

Si vous utilisez une boucle comprenant READBUFFER, vous devez respecter la limite de 30
secondes autorisée pour une exécution SCADA Basic. Si vous dépassez ceci (ce qui est possible si
vous traitez de grandes quantités de données), l'exécution sera annulée avec une erreur.

A la fin, le mode DISPOSE doit être exécuté pour libérer le buffer interne utilisé dans la requête
d'historiques.

Valeurs de retour
Toutes les valeurs de retour autres que zéro indiquent une erreur. Noter en particulier un retour de -30
qui indique qu'une requête précédente est toujours en cours et devra être gérée dans le script.
Value Signification
0 Requête envoyée
-1 LogListName n'est pas un STR
-2 LogList n'existe pas
-3 Start time est indéfini ou invalide
-4 End time est indéfini ou invalide
-5 Event Code ne peut pas être lu
-6 Event Code est plus petit ou égal à 0
-7 AlarmLevelMin ne peut pas être lu
-8 AlarmLevelMin doit être entre 0 et 29
-9 AlarmLevelMax ne peut pas être lu
-10 AlarmLevelMax doit être 0 et 29
-11 AlarmLevelMin doit être plus petit que AlarmLevelMax
-12 ExpressionFilter n'est pas un STR
-13 StatusVariable n'est pas un STR
-14 StatusVariable n'est pas une mesure
-15 LineSeparator ne peut pas être lu
-16 ColumnSeparator ne peut pas être lu
-20 DataFormat n'est pas un STR
-21 DataHeader n'est pas un STR
-22 Format et header ont un nombre de colonnes différents
-23 StatFlag ne peut pas être lu
-24 StatFlag doit être plus petit ou égal à 0
-25 StatSortingOrder ne peut pas être lu
-26 StatSortingOrder doit être plus petit que 0
-27 StatCountersFormat ne peut pas être lu
-28 StatCountersFormat doit être entre 0 et 4
-29 StatRoundedToRequest ne peut pas être lu
-30 Une requête d'historiques précédente est toujours en cours.

SV_SCADABasic_fr 168
Valeurs de variable de status
Status de la dernière requête d'historiques.
Valeur Signification
0 Terminé avec succès.
1 En exécution.
3 Annulé.
4 Terminé mais le nombre maximum de points a été atteint.
5 Terminé mais le nombre maximum de valeurs traitées a été atteint.
10 Echec.
11 Echec dû à une mauvaise configuration.
12 Echec dû à un échec de la requête d'historiques.

Exemples
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 169
EXPORT_TREND

Voir aussi Exemple


Génère des données de tendance d'historiques en utilisant la fonctionnalité fournie par l'Export de
données. Pour plus d'informations, voir l'aide sur l'Analyse de données (L'Application Explorer.Analyse de
données). Voir également les importantes Notes fonctionnelles importantes ci-dessous.
L’Export de données est protégé par une option de licence dans la clé de protection du
Superviseur. Si vous ne possédez pas cette option, l’Export de données ne s’effectuera qu’en
mode démonstration.

Mode Mnémonique Syntaxe


1 GETRAW 1
2 GETSAMPLE 2
3 GETSTATISTIC 3
4 GETAGGREGATED 4
5 READBUFFER 5
6 CANCEL 6
7 DISPOSE 6

Argument communs
Argument Signification
ListVariables Liste des variables à partir de laquelle les données sont collectées comme une
chaîne ou un pointeur vers un buffer contenant la chaîne. Type STR ou
DOUBLE.
Branch Branche préfixant tous les noms de variables. Type STR
Unit Nom de l'unité d'archivage contenant les données d'historiques. Si vide, l'unité
d'archivage primaire de chaque variable est utilisée. Type STR.
StartTime Heure de début de la requête d'historiques. L'heure de début doit être
antérieure à l'heure de fin. Type DOUBLE.
EndTime Heure de fin de la requête d'historiques. L'heure de fin doit être postérieure à
l'heure de début. Type DOUBLE.
StatusVariable Nom de la variable mesure dans laquelle le status de la requête d'historiques
est reporté. Type STR.
LineSeparator Caractère utilisé comme séparateur de ligne dans le buffer de sortie.
ColumnSeparator Caractère utilisé comme séparateur de colonne dans le buffer de sortie.
MaxReturnLines Nombre maximum de lignes retournées par la requête. 0 = pas de maximum.
Type INTEGER.
MaxValuesToProcess Nombre maximum de valeurs retournées par la requête. 0 = pas de maximum.
Type INTEGER.

Syntaxe 1
IntVal = EXPORT_TREND(Mode, VariableName, Branch, Unit, StartTime, EndTime, StatusVariable,
LineSeparator, ColumnSeparator, MaxRetLines);
Argument Signification
VariableName Variable à partir de laquelle les données d'historiques sont collectées. Type
STR.
Exécution
Mode Mnémonique Action
1 GETRAW Génère une requête d'historiques retournant les valeurs brutes d'une
seule variable.
Retour : Voir Notes fonctionnelles ci-dessous.

SV_SCADABasic_fr 170
Syntaxe 2
IntVal = EXPORT_TREND(Mode, ListVariables, Branch, Unit, StartTime, EndTime, StatusVariable,
LineSeparator, ColumnSeparator, MaxValuesToProcess, MaxRetLines, SamplingRateInterval,
SamplingRateValue [,SynchroSecondValue, SynchroMinuteValue, SynchroHourValue, SynchroDayValue]);
Argument Signification
SamplingRateInterval Unités de taux d'échantillonnage comme un nombre. Type INTEGER.
0 = Secondes
1 = Minutes
2 = Heures
3 = Jours
4 = Semaines
5 = Mois
6 = Années
SamplingRateValue Valeur du taux d'échantillonnage. Type INTEGER.
SynchroSecondValue Equivalent aux propriétés Synchronisation Heure et Jour dans l'onglet
SynchroMinuteValue Echantillonnage de l'Export de données. Pour plus d'informations, voir l'aide sur
SynchroHourValue l'Analyse de données (L'Application Explorer.Analyse de données). Type
SynchroDayValue INTEGER.
Exécution
Mode Mnémonique Action
2 GETSAMPLE Génère une requête d'historiques retournant des valeurs
échantillonnées pour la liste des variables.
Retour : Voir Notes fonctionnelles ci-dessous.

Syntaxe 3
IntVal = EXPORT_TREND (Mode, ListVariables, Branch, Unit, StartTime, EndTime, StatusVariable,
LineSeparator, ColumnSeparator, MaxValuesToProcess, MaxRetLines, StatFlag);
Argument Signification
StatFlag Nombre, calculé en utilisant des valeurs de poids binaires, représentant les
statistiques à générer. Type DOUBLE.
0x0001 = Minimum
0x0002 = Maximum
0x0004 = Moyenne
0x0008 = Somme
0x0010 = Ecart-type
0x0020 = Première valeur
0x0040 = Dernière valeur
0x0080 = Compteur
0x0100 = Horodate de la valeur minimum
0x0200 = Horodate de la valeur maximum
0x0400 = Horodate de la première valeur
0x0800 = Horodate de la dernière valeur
0x1000 = Moyenne pondérée
Exécution
Mode Mnémonique Action
3 GETSTATISTIC Génère une requête d'historiques retournant des valeurs de
statistiques pour la liste des variables.
Retour : Voir Notes fonctionnelles ci-dessous.

Syntaxe 4
IntVal = EXPORT_TREND(Mode, ListVariables, Branch, Unit, StartTime, EndTime, StatusVariable,
LineSeparator, ColumnSeparator, MaxValuesToProcess, MaxRetLines, StatFlag, SamplingRateInterval,
SamplingRateValue [,SynchroSecondValue, SynchroMinuteValue, SynchroHourValue, SynchroDayValue]);
Voir Syntaxe 2 et 3 pour la description des arguments.

SV_SCADABasic_fr 171
Exécution
Mode Mnémonique Action
4 GETAGGREGATED Génère une requête d'historiques retournant des valeurs de
statistiques agrégées pour la liste des variables.
Retour : Voir Notes fonctionnelles ci-dessous.

Syntaxe 5
IntVal = EXPORT_TREND(Mode, BufferHandle);
Argument Signification
BufferHandle Handle du buffer précédemment créé en utilisant ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
5 READBUFFER Lit un buffer de données après un GETRAW, GETSAMPLED,
GETSTATISTIC ou GETAGGREGATED.
Le status de la variable doit être 0 (Terminé), 4 (Terminé mais le
nombre maximum de points a été atteint) ou 5 (Terminé mais le
nombre maximum de valeurs traitées a été atteint).
Retour : Nombre de lignes extraites ou si plus petit que 1 :
0 = Fin du buffer
-1 = Handle du buffer invalide
-2 = Aucune demande d'historiques précédente a été envoyée
-3 = Aucune réponse reçue
-4 = Rien à lire
-5 = Buffer trop petit

Syntaxe 6
IntVal = EXPORT_TREND(Mode);
Exécution
Mode Mnémonique Action
6 CANCEL Annule la requête d'historiques courante. Un CANCEL doit toujours
être suivi par un DISPOSE.
Retour : Toujours 0.
7 DISPOSE Libère le buffer interne utilisé dans une requête d'historiques. Doit
toujours être appelé avant de faire une nouvelle demande
d'historiques ou après un CANCEL.
Retour : Toujours 0.

Notes fonctionnelles importantes


L'instruction EXPORT_TREND fonctionne de façon asynchrone. Une fois qu'une requête d'historiques a été
générée par les modes GETRAW, GETSAMPLED, GETSTATISTIC ou GETAGGREGATED, le script continue
sans attendre les données d'historiques qui seront générées. La valeur de retour de l'instruction indique si
la requête d'historiques a été envoyée avec succès, ou non.
Lorsque la requête d'historiques est terminée (avec succès ou non) la valeur de la variable de status est
modifiée en conséquence. Sur ce changement, si la valeur de la variable de status indique un succès, le
mode READBUFFER doit être utilisé pour récupérer les données dans une mémoire tampon (buffer) à
partir duquel un traitement ultérieur peut être effectué (par exemple un export vers Excel en utilisant le
verbe BUFTOEXCEL).
Il sera probablement nécessaire d'utiliser plusieurs fois READBUFFER jusqu'à ce que le code retour de
READBUFFER soit égal à 0 indiquant que toutes les données ont été traitées.

Si vous utilisez une boucle comprenant READBUFFER, vous devez respecter la limite de 30
secondes autorisée pour une exécution SCADA Basic. Si vous dépassez ceci (ce qui est possible si
vous traitez de grandes quantités de données), l'exécution sera annulée avec une erreur.

SV_SCADABasic_fr 172
A la fin, le mode DISPOSE doit être exécuté pour libérer le buffer interne utilisé dans la requête
d'historiques.

Valeurs de retour
Toutes les valeurs de retour autres que zéro indiquent une erreur. Noter en particulier un retour de -30
qui indique qu'une requête précédente est toujours en cours et devra être intégrée dans le script.
Valeur Signification
0 La requête d'historiques a été envoyé avec succès.
-1 VariableName ou ListVariable est de type mauvais ou ne peut pas être lu.
-2 Branch est de type mauvais ou ne peut pas être lu.
-3 UnitName est de type mauvais ou ne peut pas être lu.
-4 Branch plus VariableName n'existent pas.
-5 La variable, ou une des variables, n'est pas configurée en tendance.
-6 StartTime est invalide ou indéfini.
-7 EndTime est invalide ou indéfini.
-8 StatusVariable n'est pas une chaîne ou la variable n'est pas une mesure.
-9 LineSeparator ne peut pas être lu.
-10 ColumnSeparator ne peut pas être lu.
-20 StatFlag n'est pas un double.
-21 SamplingRateInterval n'est pas un entier.
-22 SamplingRateValue n'est pas un entier.
-23 Le paramètre Synchronise n'est pas valide.
-30 Une requête d'historiques précédente est toujours en cours.

Valeurs de variable de status


Status de la dernière requête d'historiques.
Valeur Signification
0 Terminé avec succès.
1 En exécution.
3 Annulé.
4 Terminé mais le nombre maximum de points a été atteint.
5 Terminé mais le nombre maximum de valeurs traitées a été atteint.
10 Echec.
11 Echec dû à une mauvaise configuration.
12 Echec dû à un échec de la requête d'historiques.

Exemples
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 173
EXPRESSION
Voir aussi Exemple
Importe dynamiquement des modèles d’expression ou des expressions sur variables à partir du fichier ou
d’un buffer.
Mode Mnémonique Syntaxe
0 IMPORT_FILE_TEMP 2
1 IMPORT_BUFFER_TEMP 1
2 IMPORT_FILE_ONVAR 2
3 IMPORT_BUFFER_ONVAR 1
4 RECALCULATION 3

Syntaxe 1
IntVal = EXPRESSION(Mode, Handle[, Overwrite]);
Type de retour : INTEGER
Argument Signification
Handle L'allocation du buffer en mémoire retournée par le verbe ALLOC_BUFFER or FILETOBUF. Type
LONG.
Overwrite Optionnel. Remplace le buffer précédent :
0 : Non (valeur par défaut)
1 : Oui
Exécution
Mode Mnémonique Action
1 IMPORT_BUFFER Import de modèles d'expression à partir du buffer spécifié.
_TEMP
Retour : 1 si OK, 0 sinon.
3 IMPORT_BUFFER Import d’expression sur variables à partir du buffer spécifié
_ONVAR
Retour :
>0 si OK et indique le nombre total d'expressions importées
0 si format inconnu ou buffer vide
-1 si la variable résultat d’une expression est déjà utilisée pour une autre
expression. Dans ce cas cette expression ne peut être importée
-2 si la variable résultat n’existe pas
-3 si l’expression est incorrecte

Syntaxe 2
IntVal = EXPRESSION(Mode, FileName[, Overwrite]);
Type de retour : INTEGER
Argument Signification
FileName Nom du fichier texte à lire dans le répertoire TP du projet ou dans le répertoire spécifié en
chemin absolu. Type STR.
Overwrite Optionnel. Remplace le fichier précédent :
0 : Non (valeur par défaut)
1 : Oui
Exécution

SV_SCADABasic_fr 174
Mode Mnémonique Action
1 IMPORT_FILE_T Import de modèles d'expression à partir du fichier spécifié.
EMP
Retour : 1 si OK, 0 sinon.
3 IMPORT_FILE_O Import d’expression sur variables à partir du fichier spécifié
NVAR
Retour :
>0 si OK et indique le nombre total d'expressions importées
0 si format inconnu ou fichier vide
-1 si la variable résultat d’une expression est déjà utilisée pour une autre
expression. Dans ce cas cette expression ne peut être importée
-2 si la variable résultat n’existe pas
-3 si l’expression est incorrecte

Syntaxe 3
IntVal = EXPRESSION(Mode [, ExpressionName]);
Type de retour : INTEGER
Argument Signification
ExpressionName Nom d'une expression. (Type STR)
Exécution
Mode Mnémonique Action
4 RECALCULATION Force un recalcul de l'expression nommée sur une variable. Si
le nom de l'expression n'est pas fournie, toutes les
expressions sont recalculées.
Retour : 1 si OK, -1 si l'expression n'est pas trouvée.

Ne peut être utilisé que sur des expressions dont le résultat est une variable. Ne peut pas être
utilisé pour des modèles d'expression.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 175
FCLOSE
Voir aussi Exemple
Ferme le fichier spécifié.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FCLOSE(Filename);
Argument Signification
Filename
Nom du fichier à fermer. Type STR.

Type de retour : INTEGER


Exécution
Retour : 1 si OK, sinon 0.

Exemple
i1 = FCLOSE("histo.fil");
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 176
FCOPY

Voir aussi Exemple


Copie un fichier d'une source vers une destination.

Syntaxe
IntVal = FCOPY (ExistingFileName, NewFileName[, AllowOverwrite]);
Argument Signification
ExistingFileName Nom et chemin optionnel du fichier à copier. Type STR.
NewFileName Nom et chemin optionnel du fichier à créer. Type STR.
AllowOverwrite Flag autorisant l'écrasement d'un fichier ayant le même nom.
0 = Ne pas autoriser.
1 = Autoriser.
Exécution
Copie le fichier spécifié. Le flag optionnel AllowOverwrite peut être utilisé afin de permettre à un fichier
existant d'être écrasé par un autre fichier ayant le même nom.
Retour :
1 - OK.
0 - Echec. Le fichier source n'existe pas ou est ouvert et verrouillé par une autre application.
-1 - Echec. Le fichier destination existe déjà et AllowOverwrite est positionné à 0.
-2 - Echec. Le fichier source est ouvert (instruction Fopen).

Plus d'informations
ExistingFileName et NewFileName peuvent être soit juste un nom de fichier, soit inclure un chemin
complet ou relatif. Si un chemin n'est pas inclus, l'exécution aura lieu dans le dossier TP du projet. Si un
chemin est inclus dans NewFileName et que le dossier n'existe pas, il sera alors créé.
Exemples
FileName Exemple
File name MyFile.dat
With full path C:\\temp\\MyFile.dat
With relative path ..\\..\\Files\\MyFile.dat

Notez la nécessité d'utiliser un double anti-slash comme séparateur de dossier.

SV_SCADABasic_fr 177
FEOF
Voir aussi
Détermine si la fin de fichier a été atteinte.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FEOF(Filename);
Argument Signification
Filename
Nom du fichier. Type STR.

Type de retour : INTEGER


Exécution
FEOF retourne zéro tant que des fonctions de lecture (comme FGETS ou FGETC) n'ont pas atteint la fin du
fichier "Fileneame".
La fonction FEOF ne déplace par le pointeur du fichier en lecture. Par conséquent, la boucle suivante
balayera le fichier une fois de plus et L pointera sur NULL à la dernière ligne. Le test de fin de fichier se
fera directement après l'instruction de lecture (FGETS) :
WHILE(FEOF(filename) == 0)
L = FGETS(filename,80);
PRINT(L);
WEND

Exemple
Une instruction structure de contrôle de type DO{......}WHILE(CONDITION) n'est pas disponible dans le
SCADA BASIC, toutefois, l'exemple suivant remplit la même fonctionnalité :
eof = 0;
WHILE(eof == 0)
L = FGETS(filename,80);
eof = FEOF(filename);
IF(eof == 0) THEN
PRINT(L);
END IF
WEND

SV_SCADABasic_fr 178
FGETC
Voir aussi
Lit un caractère dans un fichier.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
StrVal = FGETC(Filename);
Argument Signification
Filename
Nom du fichier dans lequel le caractère doit être lu. Type STR.

Type de retour : STR


Exécution
StrVal Lit le caractère pointé dans le fichier et ensuite avance le pointeur d'un octet.

Exemple
str1 = FGETC("histo.fil");

SV_SCADABasic_fr 179
FGETS
Voir aussi
Lit une chaîne de caractères dans un fichier.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
StrVal = FGETS(Filename, Num);
Type de retour : STR
Argument Signification
Filename Nom du fichier dans lequel la chaîne de caractères doit être lue. Type STR.
Num Nombre de caractères à lire. Tout type numérique.
Exécution
StrVal Lit le nombre de caractères à partir du caractère pointé dans le fichier et avance le pointeur
du nombre d'octets.

Si la fin du fichier est atteinte avant que le nombre de caractères soit retourné, ou qu'un caractère
"Retour à la ligne" soit trouvé, la chaîne de retour sera tronqué en conséquence. Le pointeur de
fichier avance du nombre de caractères lus.

Exemple
str1 = FGETS("HELP.TXT",20);

SV_SCADABasic_fr 180
FILETOBUF
Voir aussi
Crée un buffer à partir d'un fichier.
Syntaxe
1
2

Syntaxe 1
LongVal = FILETOBUF(Filename);
Argument Signification
Filename Nom du fichier a partir duquel le buffer est créé. Type STR.

Type de retour : LONG


Exécution
Lecture du fichier et retour du handle du buffer. Le buffer est automatiquement alloué à la taille exacte du
fichier.

Syntaxe 2
LongVal = FILETOBUF(Filename, Size);
Argument Signification
Filename Nom du fichier a partir duquel le buffer est créé. Type STR.
Size Taille du buffer à créer. Tout type numérique.

Type de retour : LONG


Exécution
Lecture du fichier et retour du handle du buffer. Le buffer est alloué à la taille demandée. Si la taille
demandée est inférieure à la taille du fichier, la valeur du handle retournée est nulle. Si le fichier n'existe
pas, la valeur du handle retournée est nulle.
Retour : 1 si OK, l'handler du buffer, sinon 0.

Le répertoire par défaut est le répertoire TP du projet courant.

La taille maximum du buffer mémoire est 32 Ko.

Il n'est pas nécessaire d'utiliser l'instruction ALLOC_BUFFER car l'espace mémoire buffer est
automatiquement alloué.

Exemple
'This program uses the file util.txt in the project TP folder
SUB Main()
DIM StrFilename as Str;
DIM strLine as Str;
DIM lngBuffer as Long;

StrFilename = "util.txt"; 'File name


lngBuffer = FILETOBUF(StrFilename); 'The test file must exist
strLine = CGET_BUFFER (lngBuffer,0,20); 'Print the first 20 characters
FREE_BUFFER(lngBuffer );

SV_SCADABasic_fr 181
Print(strLine);
END SUB

SV_SCADABasic_fr 182
FMOVE

Voir aussi Exemple


Déplace un fichier d'une source vers une destination.

Syntaxe
IntVal = FMOVE (ExistingFileName, NewFileName[, AllowOverwrite]);
Argument Signification
ExistingFileName Nom et chemin optionnel du fichier source. Type STR.
NewFileName Nom et chemin optionnel du fichier destination. Type STR.
AllowOverwrite Flag autorisant l'écrasement d'un fichier ayant le même nom.
0 = Ne pas autoriser.
1 = Autoriser.
Exécution
Déplace le fichier spécifié. Le flag optionnel AllowOverwrite peut être utilisé afin de permettre à un fichier
existant d'être écrasé par un autre fichier ayant le même nom.
Retour :
1 - OK.
0 - Echec. Le fichier source n'existe pas ou est ouvert et verrouillé par une autre application.
-1 - Echec. Le fichier destination existe déjà et AllowOverwrite est positionné à 0.
-2 - Echec. Le fichier source est déjà ouvert par SCADA Basic (instruction Fopen).

Plus d'informations
ExistingFileName et NewFileName peuvent être soit juste un nom de fichier, soit inclure un chemin
complet ou relatif. Si un chemin n'est pas inclus, l'exécution aura lieu dans le dossier TP du projet. Si un
chemin est inclus dans NewFileName et que le dossier n'existe pas, il sera alors créé.
Exemples
FileName Exemple
File name MyFile.dat
With full path C:\\temp\\MyFile.dat
With relative path ..\\..\\Files\\MyFile.dat

Notez la nécessité d'utiliser un double anti-slash comme séparateur de dossier.

SV_SCADABasic_fr 183
FOPEN
Voir aussi Exemple
Ouvre le fichier spécifié selon le mode d'accès spécifié.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FOPEN(Filename, Access);
Type de retour : INTEGER
Argument Signification
Filename Nom du fichier à ouvrir. Type STR.
Access Mode d'accès pour la fonction d'ouverture. Type STR.
r Ouvre un fichier texte pour lecture.
w Crée un fichier texte en écriture ; écrase le contenu précédent si le fichier existait.
a Ouvre ou crée un fichier texte et se positionne en écriture à la fin du fichier.
r+ Ouvre un fichier texte en mode lecture et écriture.
w+ Crée un fichier texte et l'ouvre en mode lecture et écriture ; écrase le contenu précédent
si le fichier existait.
a+ Ouvre un fichier existant en mode lecture et écriture et se positionne à la fin du fichier.
b Ouvre un fichier en mode binaire.
Exécution
Ouverture du fichier.
Retour : 1 si OK, 0 sinon.

Le répertoire par défaut est le répertoire TP du projet courant.

Une ouverture non réussie peut être fatale si l'on tente par la suite d'exécuter des lectures sur le
fichier.

Lorsque le fichier est en mode texte, les caractères saut de ligne (LF) du buffer sont transformés en
CRLF sur le fichier.

Exemple
'write file histo.fil in the TP folder
i1 = FOPEN("histo.fil","w+");
'read file in the C:\Test folder
i1 = FOPEN("C:\\TEST\\histo.fil","r");

SV_SCADABasic_fr 184
FOR ... NEXT
Voir aussi
Répète un groupe d'instructions un certain nombre de fois.

Syntaxe
FOR(expression1;expression2; [expression3])
[block of instructions]
NEXT
Type de retour : Aucun
Exécution
Expression1 est évaluée lorsque l'exécution de la boucle débute. Il représente l'initialisation de la boucle.
Expression2 est évaluée (c'est le test de la boucle). Si sa valeur vraie, le bloc d'instruction est exécuté
puis expression3 est évaluée.
Expression3 représente la ré-initialisation ou la mise à jour de la boucle.

Exemple
SUB Main()
'Declare
DIM i as Integer;

'Integer i increases from 0 to 7 by steps of 2


For (i=0;i<7;i=i+2)
Print(i);
Next
END SUB

SV_SCADABasic_fr 185
FORMAT
Voir aussi Exemple
Représente sous forme de chaîne une expression selon le format passé en paramètre.

Contrairement à l'instruction PRINTF trouvée dans la plupart des langages de


programmation, FORMAT ne permet le formatage que d'une seule variable en même
temps.

Syntaxe
StrVal = FORMAT("xxxxx%FormatString yyyyy", Variable);
Type de retour : STR
Argument Signification
xxxxx Chaîne de caractères apparaissant avant la valeur formatée dans le champ retourné.
Facultatif.
yyyyy Chaîne de caractères apparaissant après la valeur formatée dans le champ retourné.
Facultatif.
FormatStrin Chaîne de caractères du paramètre qui détermine le format et la position de la valeur insérée.
g Cela commence avec le caractère % et contient Width, Precision et Modifier.
Width Nombre spécifiant la longueur du champ retourné (nombre de caractères). Si celui-ci est
précédé d'un signe moins, les caractères seront justifiés à gauche, autrement ils seront
justifiés à droite.
Precision Nombre indiquant soit le nombre maximum de caractères à retourner pour une chaîne, soit le
nombre de chiffres pour un INTEGER, soit le nombre de chiffres après le point décimal pour
un nombre flottant. La précision est toujours précédée par un point.
Modifier Caractère spécifiant le type de retour de la variable. Type STR.
Variable Nom de la variable à formater.

Le premier argument est entièrement entouré de guillemets et ne contient aucun autre


séparateur que le signe % qui marque le départ de la chaîne de caractères, par exemple
"Resultat = %d approx.".
Exécution
Les caractères de conversion sont présentés dans la table ci-dessous. Si le caractère qui suit le % n'est
pas une spécification de conversion, le comportement est indéterminé.
Modifier Variable Retour
d, I Integer Nombre décimal.
o Integer Nombre octal non signé (non précédé d'un zéro).
x, X Integer Nombre hexadécimal non signé (non précédé de 0x ou 0X), en utilisant
abcdef ou ABCDEF pour 10, ..., 15.
u Integer Nombre décimal non signé.
c, C Integer Caractère isolé.
s Str Retourne les caractères d'une chaîne jusqu'à rencontrer un '\0' ou jusqu'à
avoir retourné le nombre de caractères indiqué par la précision.
f Double Notion décimale de la forme [-]m.dddddd, où le nombre de d est donné par
la précision (par défaut, 6).
e, E Double [-]m.dddddd +xx ou [d]m.ddddddE+xx, où l nombre de d est donné par la
précision (par défaut, 6).
g, G Double Equivaut à %e ou %E si l'exposant est inférieur à -4 ou supérieur ou égal à

SV_SCADABasic_fr 186
la précision; sinon, équivaut à %f. Les zéros ou le point décimal de
terminaison ne sont pas retournés.

Les zéros ou les points décimaux finaux ne sont pas retournés.

Id Long Entier 4 octets.


IId LongLon Entier 8 octets.
g

Exemple
Pour un exemple d'affichage de différentes chaînes de caractères par la commande FORMAT, sélectionner
le lien Exemple ci-dessus.

SV_SCADABasic_fr 187
FORMULA
Voir aussi Exemple
Activation modification de formules de calcul.
Mode Mnémonique Syntaxe
1 ADD 1
2 ENABLE 2
3 DISABLE 2
5 DEL 2
6 DELALL 3

Syntaxe 1
IntVal = FORMULA(Mode, handle);
Argument Signification
handle Pointe sur le buffer dans lequel tous les arguments nécessaires pour la formule sont
spécifiés. Type LONG.

Type de retour : INTEGER


Exécution
Mode Action
1 Création (ou modification si elle existe) de la formule "libellé" du type indiqué. Tous les
arguments doivent être indiqués dans le buffer pointé par handle de type LONG.
Le contenu de ce buffer doit être conforme à la syntaxe du fichier FORMULA.DAT. Il est
donc possible d'ajouter plusieurs formules par le même buffer.
La formule ainsi crée est dite temporaire. Il n'est pas possible de modifier une formule
permanente créée par le configurateur.
Retour : Nombre de formules qui ont été correctement paramétrées et prises en compte.

Syntaxe 2
IntVal = FORMULA(Mode, label, branch);
Type de retour : INTEGER
Exécution
Mode Action
2 Rend active la formule identifiée par "label" et "branch". La portée de ce verbe s'étend à
toutes les formules paramètrées.
Retour : 1 si la formule existe et la syntaxe correcte, 0 sinon.
3 Rend inactive la formule identifiée par "label" et "branch". La portée de ce verbe s'étend à
toutes les formules paramètrées.
Retour : 1 si la formule existe et la syntaxe correcte, 0 sinon.
5 Suppression de la formule temporaire identifiée par "label" et "branch".
Retour : 1 si elle existe, 0 sinon.

Syntaxe 3
IntVal = FORMULA(Mode [, Class] );
Argument Signification
Class Identifie le type (classe) de formule configurée.

SV_SCADABasic_fr 188
Type de retour : INTEGER
Exécution
Mode Action
6 Suppression de toutes les formules temporaires existantes. Si type est renseigné :
suppression de toutes les formules temporaires existantes du type indiqué seulement.
Retour : 1 si elle(s) existe(nt) et sont correctement supprimées, 0 sinon.

Exemple
SUB main()
DIM hdl as LONG;
hdl = filetobuf("ftest.dat"); 'formula file
print(formula("ADD",hdl));
free_buffer (hdl);
END SUB

sub actif()
formula("ENABLE","formula test1 tempo","");
END SUB

sub noactif()
formula("DISABLE","formula test1","");
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 189
FPUTC
Voir aussi Exemple
Ecrit un caractère dans un fichier.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FPUTC(Filename, Char);
Type de retour : INTEGER
Argument Signification
Filename Nom du fichier dans lequel le caractère doit être écrit. Type STR.
Char Caractère à écrire. Type STR
Exécution
Retour : 1 si OK, 0 sinon.

Exemple
err = FPUTC("histo.fil","A");
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 190
FPUTS
voir aussi Exemple
Ecrit une chaîne de caractères dans un fichier.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FPUTS(Filename, Chars);
Type de retour : INTEGER
Argument Signification
Filename Nom du fichier dans lequel la chaîne de caractères doit être écrite. Type STR.
Chars Chaîne de caractères à écrire. Type STR.
Exécution
Retour : 1 si OK, 0 sinon.

Exemple
i1 = FPUTS("histo.fil",str1);
i1 = FPUTS("histo.fil",CHR(10)); 'Line feed
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 191
FREAD
Voir aussi
Lit un nombre n de données de même type dans un fichier et les range dans un buffer mémoire.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
LongVal = FREAD(Filename, Handle, Size, N);
Type de retour : LONG
Argument Signification
Filename Nom du fichier dans lequel les données sont écrites. Type STR.
Handle Localisation du buffer en mémoire. Type LONG.
Size Taille en octets. Tout type numérique.
N Nombre de données à lire. Tout type numérique.
Exécution
Les données sont stockées dans un buffer précédemment alloué par ALLOC_BUFFER qui fournit en retour
le handle.
Retour : Nombre de données lues.

Exemple
i1 = FREAD("histo.fil",handle,4,20);
'------ reads 20 data items of 4 bytes

SV_SCADABasic_fr 192
FREE_BUFFER
Voir aussi
Libère une zone mémoire réservée par un ALLOC_BUFFER.

Syntaxe
FREE_BUFFER(Handle);
Type de retour : aucun
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER.
Exécution
Il est conseillé de libérer les buffers qui ne sont plus utilisés afin de restituer la mémoire au système.

Exemple
SUB Main()
'Declare the return code
DIM lngPointer as long;
DIM intValue as integer;

intValue = 50;
'intValue <=> intValue*4 bytes
lngPointer = ALLOC_BUFFER (intvalue);
PRINT("pointer =", lngPointer );

'The memory area from ALLOC_BUFFER must always be released after use
FREE_BUFFER (lngPointer);
END SUB

SV_SCADABasic_fr 193
FSEEK
Voir aussi Exemple
Déplace le pointeur d'un fichier vers une nouvelle position.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
IntVal = FSEEK(Filename, Offset, Origin);
Type de retour : INTEGER
Argument Signification
Filename Nom du fichier dans lequel le pointeur sera déplacé. Type STR.
Offset L'offset en octets dans lequel le pointeur sera déplacé. Tout type numérique.
Origin Origin doit avoir une des valeurs suivantes : 0 spécifie le début du fichier, 1 la position
courante du pointeur et 2 la fin du fichier.
Exécution
La prochaine opération sur le fichier se fera à partir de la nouvelle position.
Retour : 1 si OK, 0 sinon.

Exemple
i1 = FSEEK("histo.fil",20,0);
'----- move the pointer to the 20th byte from the start
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 194
FSTAT
Voir aussi
Fournit des informations de taille et de date sur un fichier.

Syntaxe
IntVal = FSTAT(Filename, Handle);
The return type is INTEGER.
Argument Signification
Filename Nom du fichier. Type STR.
Handle Localisation du buffer mémoire dans lequel la donnée est retournée. Type LONG.
Exécution
Les statistiques de fichier sont retournées dans un buffer mémoire précédemment alloué par
ALLOC_BUFFER ou par FILETOBUF. La taille du fichier se trouve à la position 0 (début du buffer) et la date
à partir de la position 4. La taille minimum du buffer est 22. Le fichier peut être ouvert ou fermé.
Retour : 1 si OK, 0 sinon.

Exemple
DIM bufh as LONG; 'buffer handle
CONST SIZE=0; 'offset to read the size
CONST MODIF=4; 'offset to read the date
CONST ALLOC=22; '22 is the minimum required
bufh=ALLOC_BUFFER(ALLOC);
IF(FSTAT("file.txt",bufh))==1) THEN
PRINT("Size in bytes:",LGET_BUFFER(bufh,SIZE));
PRINT("Date of last modification:",CGET_BUFFER (bufh,MODIF,18));
ENDIF

SV_SCADABasic_fr 195
FTP
Voir aussi Exemple
Copie un fichier vers ou depuis un serveur de transfert de fichier (site FTP).
Mode Mnémonique Syntaxe
1 DOWNLOAD 1
2 UPLOAD 2

Syntaxe 1
FTP("DOWNLOAD", FTPfilesource, Filedestination [, HMIdisplay [, UserName, Password [,
VariableName]]);
Argument Signification
FTPfilesource Chemin complet du fichier à télécharger, par exemple "ftp:\\server\path”. Type
STR.
Filedestination Chemin de destination locale d'enregistrement du fichier. Il peut être absolu ou
relatif depuis le dossier TP du projet, mais pas le chemin d'un site FTP. Type
STR.
HMIdisplay Affichage de la barre de progression :
0: Aucune.
1: Boîte de dialogue sans un bouton Annuler (par défaut).
2: Boîte de dialogue avec un bouton Annuler.
Type: INTEGER.
UserName Nom de l'utilisateur du compte utilisé pour la connexion au serveur FTP. Si omis,
une connexion anonyme sera utilisée. Type STR.
Password Mot de passe du compte utilisé pour la connexion au serveur FTP. Type STR.
VariableName Nom d'une variable mesure utilisée pour fournir une indication de status :
0: En attente.
1: Terminé.
2: Annulé par l'utilisateur.
3: Le nom du serveur distant destinataire ne peut pas être trouvé.
4: Login ou mot de passe incorrect.
7: Transfert annulé par erreur.
Type STR.

Si la variable n'exite pas, le transfert s'effectue, mais aucun status ne sera retourné. Un message
d'information s'affichera dans l'observateur d'événement.

Exécution
Mode Mnémonique Action
1 DOWNLOAD Copie un fichier depuis un serveur FTP vers une destination locale.
La valeur de retour est la suivante :
0: Aucun erreur.
-1: Premier argument manquant.
-2: Second argument manquant.
-3: Troisième argument hors limite.

Syntaxe 2
FTP("UPLOAD", Filesource, FTPfiledestination [, HMIdisplay [, UserName, Password [, VariableName]]);

SV_SCADABasic_fr 196
Argument Signification
Filesource Chemin complet du fichier à télécharger. Il peut être absolu ou relatif depuis le
dossier TP du projet, mais pas le chemin d'un site FTP. Type STR.
FTPfiledestination Chemin du FTP de destination. Type STR.
HMIdisplay Affichage de la barre de progression :
0: Aucune.
1: Boîte de dialogue sans bouton Annuler (par défaut).
2: Boîte de dialogue avec bouton Annuler.
Type: INTEGER.
UserName Nom de l'utilisateur du compte utilisé pour la connexion au serveur FTP. Si
omis, une connexion anonyme sera utilisée. Type STR.
Password Mot de passe du compte utilisé pour la connexion au serveur FTP. Type STR.
VariableName Nom d'une variable mesure utilisée pour fournir une indication de status :
0: En attente.
1: Terminé.
2: Annulé par l'utilisateur.
3: Le nom du serveur distant destinataire ne peut pas être trouvé.
4: Login ou mot de passe incorrect.
5: Le fichier source à télécharger n'existe pas.
6: Connecté mais permission refusée pour téléchargement.
7: Transfert annulé par erreur.
Type STR.

Si la variable n'exite pas, le transfert s'effectue, mais aucun status ne sera retourné. Un message
d'information s'affichera dans l'observateur d'événement.

Exécution
Mode Mnémonique Action
1 UPLOAD Copie un fichier enregistré localement vers un serveur FTP.
La valeur de retour est la suivante :
0: Aucun erreur.
-1: Premier argument manquant.
-2: Second argument manquant.
-3: Troisième argument hors limite.

L'interface utilisateur du transfert de fichier


Durant le transfert, une boîte de dialogue s'affiche en option avec les deux chemins, la vitesse de transfert
des données et une barre de progression. voir l'image

SV_SCADABasic_fr 197
Exemple
Ce programme copie un fichier depuis un site FTP et ensuite le recopie vers un site FTP.
Sub Down ()
Dim cFTPsource As Str, cLocalDestn As Str;
Dim cName As Str, cPass As Str, cStatusVar As Str;
Dim iReturn As Integer;

cFTPsource = "ftp://ftp.xxxxxxx.com/test.txt";
cLocalDestn = "test.txt";
cName = "xyz123";
cPass = "abc890";
cStatusVar = "FTPSTATUS";

iReturn = FTP("DOWNLOAD", cFTPsource, cLocalDestn, 1, cName, cPass, cStatusVar);


Print ("Return from FTP download is "iReturn);
End Sub

Sub Up ()
Dim cFTPdestn As Str, cLocalSource As Str;
Dim cName As Str, cPass As Str, cStatusVar As Str;
Dim iReturn As Integer;

cFTPdestn = "ftp://ftp.xxxxxxx.com/test.txt";
cLocalSource = "test.txt";
cName = "xyz123";
cPass = "abc890";
cStatusVar = "FTPSTATUS";

iReturn = FTP("UPLOAD", cLocalSource, cFTPdestn, 1, cName, cPass, cStatusVar);


Print ("Return from FTP upload is "iReturn);
End Sub

SV_SCADABasic_fr 198
FWRITE
Voir aussi
Ecrit un nombre n de données de même type dans un fichier à partir de données stockées dans un buffer
précédemment alloué par ALLOC_BUFFER.
Avant d'utiliser une des instructions de gestion de fichiers, exceptés FSTAT, RENAME, UNLINK,
FILETOBUF ou BUFTOFILE, vous devez ouvrir en premier lieu le fichier en utilisant l'instruction
FOPEN.
A la fin de chaque programme utilisant une instruction FOPEN vous devez exécuter l’instruction
FCLOSE.

Syntaxe
LongVal = FWRITE(Filename, Handle, Size, N);
Type de retour : LONG
Argument Signification
Filename Nom du fichier dans lequel la donnée est écrite. Type STR.
Handle Localisation du mémoire buffer dans lequel la donnée est lue. Type LONG
Size Taille en octets pour chaque donnée. Any numeric type.
N Nombre de données à écrire. Any numeric type.
Exécution
Les N données de même type sont écrites dans le fichier. Le buffer doit être précédemment alloué par
ALLOC_BUFFER, qui fournira également le handle.
Retour : Nombre de données écrites.

Exemple
i1 = FWRITE("histo.fil",handle,4,20);
'------ writes 20 items of 4 bytes each

SV_SCADABasic_fr 199
GETARG
Voir aussi Exemple
Récupération des paramètres du contexte d'appel d'une fonction.
Mode Mnémonique Syntaxe Retour
0 MAINBRANCH 1 STR
1 ARG1 1 STR
2 ARG2 1 STR
3 ARG3 1 STR
4 ARG4 1 STR
5 ARG5 1 STR
6 ARG6 1 STR
7 ARG7 1 STR
8 ARG8 1 STR
10 SOURCE 1 STR
11 PROGRAM 1 STR
12 BRANCH 1 STR
13 FUNCTION 1 STR
14 WINDOW 1 STR
15 WBRANCH 1 STR
16 IDENTIFIER 1 STR
17 VARNAME 1 STR
18 VARVALUE 1 SINGLE
19 VARSTATUS 1 INTEGE
R
20 KEYTYPE 1 STR
21 KEYCODE 1 INTEGE
R
22 CRONTYPE 1 INTEGE
R
23 CRONDATE 1 STR
24 CRONTIME 1 STR
25 ARG9 1 STR
26 ARG10 1 STR
27 ARG11 1 STR
28 ARG12 1 STR
29 WEB 1 INTEGE
R

Syntaxe 1
RtnVal = GETARG(Mode);
Voir tableau ci-dessus pour les types de retour.
Exécution
Mode Action

SV_SCADABasic_fr 200
0 Renvoie la branche d'instanciation du programme qui contient la fonction d'où l'appel à
GETARG est effectué, c'est-à-dire la branche avec laquelle le programme a été chargé.
1-8 Renvoie respectivement du 1er au 8ème champ (séparés par des virgules) contenu dans
le paramètre d'appel.
25-28 Renvoient respectivement du 9ème au 12ème champ (séparés par des virgules) contenu
dans le paramètre d'appel qui se trouve dans :
CYCLIC
EVENT
CRONTAB
KEY
EDITOR.Animation.Envoi.Programme
Action liée à une alarme.
Sélection ou validation d'une animation table par SELECTOR.
10 Renvoie une chaîne identifiant l'origine de l'appel de la fonction :
CYCLIC
EVENT
CRONTAB
KEY
MIMIC
ACTIONS
ARRAY_SELEC
ARRAY_INPUT
SCRIPT
11 Renvoie le nom du programme courant.
12 Renvoie la branche passée en argument à la fonction courante.
13 Renvoie le nom de la fonction courante.
14 Renvoie le nom de la fenêtre dans le cas d'une animation de type forçage programme ou
d'une action associée à une alarme ou à une animation tableau.
15 Renvoie la branche de la fenêtre dans le cas d'une animation de type forçage programme
ou d'une action associée à une alarme ou à une animation tableau.
16 Renvoie le repère de l'animation de type forçage programme ou d'une action associée à
une alarme ou à une animation tableau.
17 Renvoie le nom de la variable qui a changé de valeur dans le cas d'un EVENT.
18 Renvoie la nouvelle valeur de la variable qui a changé dans le cas d’un EVENT.
19 Renvoie la région d'appel dans le cas d'une animation forçage programme.
20 Renvoie le type de programmation de touche "Down/Shift/Control" dans le cas d'un KEY.
21 Renvoie le code de la touche enfoncée dans la cas d'un KEY.
22 Renvoie le type de programmation horaire dans le cas d'un CRONTAB :
ONCE
EACH_HOUR
EACH_DAY
EACH_WEEK
EACH_MONTH

SV_SCADABasic_fr 201
23 Renvoie la date ou le jour du déclenchement horaire selon le type dans le cas d'un
CRONTAB.
24 Renvoie l'heure ou la minute du déclenchement horaire selon le type dans le cas d'un
CRONTAB
29 Renvoie un flag pour indiquer l'accès :
0 = Utilisateur local
différent de zéro = Client WebVue (utilisant une animation Forçage Programme).

Exemple
Pour une exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 202
GETPROJECTDIR
Voir aussi
Renvoie le chemin du projet courant.

Syntaxe
StrVal = GETPROJECTDIR();
Type de retour : STR
Exécution
Le chemin d'accès au projet courant est retourné.

Exemple
SUB Main()
'Declare
DIM strPath as Str;

strPath = GETPROJECTDIR();
Print("The project path is: ",strPath);
END SUB

SV_SCADABasic_fr 203
GETTREE
Voir aussi
Fournit la branche courante.

Syntaxe
StrVal = GETTREE();
Type de retour : STR
Exécution
La branche courante utilisée est celle passée en argument à la fonction appelée. Elle est propagée en
descendant vers les fonctions appelées.
'A function that can only be used after TREE
SUB Main()
'Declare
DIM strBranch as Str;
DIM strTree as Str;

strBranche = "BRANCHE01";
TREE (strBranch);
strTree = GETTREE();
Print("The branch is: ",strTree);
propagationGetTree();
END SUB

SUB propagationGetTree()
DIM strTree as Str;

strTree = GETTREE();
Print("The branch is: ",strTree);
END SUB

SV_SCADABasic_fr 204
GROUPALARM
Voir aussi
Démarre ou arrête une synthèse sélectionnée ou toutes les synthèses.
L'instruction est exécutée sur le poste qui produit a synthèse d'alarmes.

Mode Mnémonique Syntaxe


1 START 1
2 STOP 1

Syntaxe
IntVal = GROUPALARM(Mode, Name);
Type de retour : INTEGER.
Argument Signification
Name Nom de la synthèse. Type STR.
Utiliser '*' pour indiquer toutes les synthèses.

Exécution
Mode Mnemonique Action
1 START Démarre toutes les alarmes dans la(es) synthèse(s).
Retour: 1 si OK, 0 sinon.
2 STOP Arrête toutes les alarmes dans la(es) synthèse(s).
Return: 1 si OK, else 0.

SV_SCADABasic_fr 205
HARDCOPY
Voir aussi Exemple
Impression d'écran sur l'imprimante par défaut ou annulation des tâches d'impression.
Mode Mnémonique Syntaxe
1 SCREEN 1
2 OPTION 1
4 PREVIOUSWIND 1
OW
6 DELALL 1
7 DESKTOP 1

Syntaxe 1
IVAL = HARDCOPY (Mode);
Exécution
Mode Mnémonique Action
1 SCREEN Impression de la totalité de l'écran sur l'imprimante par défaut.
4 PREVIOUSWINDOW Impression de la fenêtre qui a précédemment reçu le focus sur
l'imprimante par défaut. La fenêtre doit être ouverte.
6 DELALL Annulation de toutes les tâches d'impression du spooler de l'imprimante
par défaut.
Retour : 1 si OK, 0 sinon.
7 DESKTOP Impression de la totalité du bureau lors de l'utilisation d'un système multi-
régions/multi-écrans.

Le comportement de HARDCOPY dépend du système d'exploitation. Si vous rencontrez des


difficultés, veuillez contacter le support technique.

Syntaxe 2
IVAL = HARDCOPY (Mode, Sub-mode, Value);
Argument Meaning
Sub-mode Impression suivant le paramètre Value.
1 Taille:
1 Ajuster à la page.
2 Utiliser la page entière.
3 Utiliser les échelles.
2 Appliquer l'échelle de l'axe des X.
3 Appliquer l'échelle de l'axe des Y.
4 Imprimer via le spooler nommé.
5 Appliquer nom à la boîte de dialogue de l'imprimante.
6 Message.
7 Sortie.
8 Texte pourcentage, de 0 à 100.
9 Texte pour le bouton Annuler.
Value Utilisé dans les actions d'impression (voir ci-dessus).

Exécution

SV_SCADABasic_fr 206
Mode Mnémonique Action
2 OPTION Impression de la totalité de l'écran sur l'imprimante par défaut selon Sub-
mode
Retour : 1 si OK, 0 sinon.

Les programmes comprenant des Hardcopy


Le Superviseur possède également une instruction intégrée portant le nom de Hardcopy. Celui-ci est
appelé en utilisant l'animation Exécution.Macro. Le programme n'apparaît pas dans la fenêtre de gestion
de programme.
Le programme Hardcopy a deux fonctions :

• Ecran – imprime la fenêtre entière


• Fenêtre – imprime seulement la fenêtre active

Lancement de HARDCOPY par une animation macro


L'instruction HARDCOPY est également supportée par l'animation macro.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 207
HEX
Voir aussi
Renvoie une chaîne représentant en hexa un nombre passé en base 10.

Syntaxe
StrVal = HEX(Num);
Type de retour : STR
Argument Signification
Num Le nombre à convertir. Tout type numérique.
Exécution
Retour : Chaîne qui représente, en hexa, le nombre passé en base 10.

Exemple
SUB Main()
DIM intNumBase10 as Integer;
DIM strNumberHex as Str;

intNumBase10 = 14;
strNumberHex = Hex (intNumBase10);
Print(intNumBase10, " to base 10 is equivalent to ",strNumberHex, " to base 16");
'Displays "14 to base 10 is equivalent to E to base 16"
END SUB

SV_SCADABasic_fr 208
HISTORY
Voir aussi Exemple
Gestion des historiques. Ce verbe permet d'extraire et d'importer des valeurs selon un format spécifié afin
de renseigner les historiques de tendance.
Mode Mnémonique Syntaxe
1 GETTREND 1
2 IMPORTTREND 2
3 UNIT 3, 4, 5, 11, 12
4 TREND 6, 7, 8, 9, 10, 13

Syntaxe 1
LVAL = HISTORY (Mode, VarName, TimeStart, TimeEnd, FileName [,FileMode[, Format[, StateVar [,
NbVar]]]]);
Argument Signification
VarName Variable en tendance sur laquelle l'extraction doit être effectuée. Type STR.
TimeStart Horodate de début de l'extraction. Type DOUBLE. (Voir l'instruction DATETIMEVALUE
pour la conversion des horodates).
TimeEnd Horodate de fin de l'extraction. Type DOUBLE. (Voir l'instruction DATETIMEVALUE pour
la conversion des horodates).
FileName Nom du fichier résultat de l'extraction de la variable en tendance. Type STR.
FileMode Type d'ouverture du fichier résultat de l'extraction lorsque ce dernier existe déjà. La
valeur 0 permet d'ouvrir le fichier en effaçant son précédant contenu (valeur par
défaut du paramètre). La valeur 1 permet d'ouvrir le fichier en se positionnant à la fin
(mode ajout).
Format Format des lignes ajoutées dans le fichier de l'extraction. Les chaînes de caractères
suivantes sont utilisables dans le format :
Elément Description
###Y année sur 4 chiffres (exemple : 1994).
#Y année sur 2 chiffres (exemple : 94).
#M mois (01 à 12).
#D jour (01 à 31).
#h heures (00 à 23).
#m minutes (00 à 59).
#s secondes (00 à 59).
##l millisecondes (000 à 999).
#V valeur de la variable.
Si Format est omis ou égal à une chaîne de caractères vide "", le format par défaut est
"#Y#M#D#h#m#s##l,#V".
StateVar Variable de la base de données de type état. Cet état est initialisé à 0 puis est mis à 1
lorsque l'extraction est terminée. Ceci permet de déclencher l'exécution d'une fonction
à la fin d'une extraction (voir l'instruction EVENT).
Ce paramètre est facultatif et ignoré s'il est égal à une chaîne de caractères vide "".
NbVar Variable de la base de données de type mesure. Cette variable contient le nombre de
valeurs extraites lorsque l'extraction s'est terminée correctement.
Une valeur négative indique une erreur lors de l'extraction. Ce paramètre est facultatif

SV_SCADABasic_fr 209
et ignoré s'il est égal à une chaîne de caractères vide "". Type STR.

Type de retour : LONG


Exécution
Mode Action
1 Extraction d'une variable en tendance depuis son unité d'archivage.
Retour : 0 si erreur, différent de 0 si OK.

Syntaxe 2
LVAL = HISTORY (Mode, FileName [, StateVar [, NbVar [, FORMAT [,VARNAME]]]]);
Argument Signification
FileName Nom du fichier résultat de l'extraction de la variable en tendance. Type STR.
StateVar Variable de la base de données de type état. Cet état est initialisé à 0 puis est mis à 1
lorsque l'extraction est terminée. Ceci permet de déclencher l'exécution d'une fonction à la
fin d'une extraction (voir l'instruction EVENT).
Ce paramètre est facultatif et ignoré s'il est égal à une chaîne de caractères vide "".
NbVar Variable de la base de données de type mesure. Cette variable contient le nombre de valeurs
extraites lorsque l'extraction s'est terminée correctement.
Une valeur négative indique une erreur lors de l'extraction. Ce paramètre est facultatif et
ignoré s'il est égal à une chaîne de caractères vide "". Type STR.
FORMAT Format par défaut des points tendances stockés dans le fichier d'importation (voir la syntaxe
du mot clé FORMAT). Ce paramètre est facultatif et ignoré s'il est égal à une chaîne de
caractères vide "". Type STR.
VARNAME Identifiant de variable par défaut des points tendances stockés dans le fichier d'importation
(voir la syntaxe des mots clés VARNAME et VARTAGNAME). Ce paramètre est facultatif et
ignoré s'il est égal à une chaîne de caractères vide "". Type STR.

Type de retour : LONG


Syntaxe de la Chaîne FORMAT
La chaîne format peut être utilisée comme partie de l'instruction HISTORY, ou bien comme une ligne dans
le fichier d'importation lui-même. La syntaxe est la suivante :
FORMAT,Msflag,VarFlag,TSFormat
Format String Signification
MsFlag Flag indiquant si les millisecondes sont utilisées dans l'horodate :
0 les millisecondes ne sont pas utilisées
1 les millisecondes sont utilisées
VarFlag Flag spécifiant si le nom de la variable est présent sur chaque ligne du fichier
d'importation :
0 pas d'identifiant de variable
1 l'identifiant de la variable est le nom de la variable
2 l'identifiant de la variable est l'identifiant interne de la variable.
TSFormat Format temporaire de l'horodate du fichier d'import :
0 YYMMDDhhmmss[ms]
1 MM/DD/YY:hh:mm:ss[:ms]
2 DD/MM/YY:hh:mm:ss[:ms]
3 YY/MM/DD:hh:mm:ss[:ms]

SV_SCADABasic_fr 210
4 MM/DD/YYYY:hh:mm:ss[:ms]
5 DD/MM/YYYY:hh:mm:ss[:ms]
6 YYYY/MM/DD:hh:mm:ss[:ms]
YYYY est l'année sur 4 chiffres.
YY est l'année sur 2 chiffres.
DD est le jour (1 à 31).
MM est le mois (1 à 12).
hh est l'heure (0 à 23).
mm sont les minutes (0 à 59).
ss sont les secondes (0 à 59).
ms sont les millisecondes (0 à 999).
Syntaxe de la chaîne VARNAME
La chaîne VARNAME peut être utilisée soit comme partie de l'instruction HISTORY, ou bien comme une
ligne dans le fichier d'importation lui-même. La syntaxe est la suivante :
VARNAME,Varname
Argument Signification
VarName Nom de la variable de la base de données pour laquelle les données historiques sont
importées.
Format du fichier Import
Le fichier import doit être en format ASCII avec au début de chaque ligne, un commentaire, un mot-clé ou
une donnée.
Toutes les lignes précédées par un guillement simple (') ou bien par un dièse (#) sont traitées comme
commentaires et ne sont pas exécutées.
Toutes lignes commençant par FORMAT sont traitées comme une chaîne définissant le format
d'horodatage (voir ci-dessus).
Toutes lignes commençant par VARNAME sont traitées comme une définition de variable (voir ci-dessus).
Toutes les autres lignes sont traitées comme données et doivent être conformes à la syntaxe suivante :
TimeStamp,Value[,Varname]
Données Signification
TimeStamp Horodate dans le format sélectionné.
Value Valeur de la variable correspondant à l'horodate.
VarName Nom de la variable de la base de données concernée.
Exécution
Mode Action
2 Importation de données historiques pour une variablée définie en tendance.
L'importation de tendances est exclusivement réservée à des variables déclarées en
tendance et pour lesquelles la case "Importation des données par fichier" est cochée.
Retour : différent de 0 si OK, 0 si erreur.

Syntaxe 3
LVAL = HISTORY (Mode, UnitName, Operation);
Argument Signification
UnitName Nom de l'unité d'archivage. Type STR.
Operation Chaîne représentant le type d'opération. Type STR.

SV_SCADABasic_fr 211
Type de retour : LONG
Exécution
Mode Action
3 Manipulation de l'unité d'archivage Nom_Unité. La chaîne de caractères contenue dans le
paramètre Operation détermine l'action :

Flush Ecriture de tous les buffers sur le disque (pour tous les types d'unité).
Retour : différent de 0 si OK, 0 si erreur.
Next Changement de numéro de fichier (pour unités propriétaires et libres).
Retour : différent de 0 si OK, 0 si erreur.
Enable Autorise l'archivage. (pour les unités libres uniquement).
Retour : différent de 0 si OK, 0 si erreur.
Disable Interdit l'archivage. (pour les unités libres uniquement).
Retour : différent de 0 si OK, 0 si erreur.
Isreadonly Teste le status lecture seule de l'unité.
Retour : -1 si erreur, 1 si en lecture seule, 0 sinon.
Lock Inhibition temporaire.
Retour : 0 si erreur, tout autre nombre si OK.
Unlock Fin de l'inhibition temporaire.
Retour : 0 si erreur, tout autre nombre si OK.

Syntaxe 4
LVAL = HISTORY (Mode, UnitName, "READONLY", Flag);
Argument Signification
UnitName Nom de l'unité d'archivage. Type STR.
Flag Modification de la propriété lecture seulement de l'unité d'archivage. Tout type numérique.

Type de retour : LONG


Exécution
Mode Action
3 Modifie la propriété lecture-seule de l'unité d'archivage.
Si le flag est à 0 alors la propriété lecture-seule est désactivée (vous pouvez écrire dans
l'unité d'archivage). Si le flag est à 1 alors la propriété lecture-seule est activée.

Syntaxe 5
LVAL = HISTORY (Mode, UnitName, Operation [, StateVar, Flag]);
Argument Signification
UnitName Nom de l'unité d'archivage. Type STR.
Operation Chaîne représentant le type d'opération. Type STR.
StateVar Nom de la variable état. Type STR.
Flag Un flag (0 ou 1)

Type de retour : LONG


Exécution
Mode Action

SV_SCADABasic_fr 212
3 Manipulation de l'unité d'archivage Nom_Unité. La chaîne contenue dans le paramètre
"Operation" détermine l'action. Voir la syntaxe 3 pour plus de détails.
La variable état StateVar sera positionnée à la valeur du flag lorsque l'opération est complète.

Syntaxe 6
LVAL = HISTORY (Mode, "SETPRIMARY", VarName, UnitName);
Argument Signification
VarName Nom de la variable en tendance historisée sur plus d'une unité d'archivage. Type STR.
UnitName Nom d'unité d'archivage secondaire sur laquelle est historisée la tendance. Type STR.

Type de retour : LONG


Exécution
Mode Action
4 Permet de spécifier une unité d'archivage secondaire pour relecture.
Retour : 0 si erreur, 1 sinon.

Ce changement est temporaire et n'est pas sauvegardé dans la configuration lors de l'arrêt du
Superviseur.

Syntaxe 7
LVAL = HISTORY (Mode, "CLEARPRIMARY", VarName;
Argument Signification
VarName Nom de la variable en tendance. Type STR.

Type de retour : LONG


Exécution
Mode Action
Mode 4 Permet de sélectionner l'unité d'archivage principale suite à des affectations par verbe (sous
mode SETPRIMARY). Le sous-mode CLEARPRIMARY permet d'affecter comme unité
principale, l'unité qui a été configurée comme telle.
Retour : 0 si erreur, 1 sinon.

Syntaxe 8
LVAL = HISTORY (Mode, "SETPRIMARY_UNIT", PrimaryUnit, SecondaryUnit);
Argument Signification
PrimaryUnit Nom de l'unité principale. Type STR.
SecondaryU Nom d'unité d’archivage secondaire. Type STR.
nit

Type de retour : LONG


Exécution
Mode Action
4 Permet de sélectionner une unité d'archivage secondaire comme unité principale (il faut pour
cela que les mêmes tendances aient été déclarées dans la deuxième unité). Lorsque le
Superviseur extrait des données pour n'importe laquelle de ces variables (par exemple pour
les utiliser dans une fenêtre de tendance) les données sont extraites de l'unité d'archivage
secondaire.
Retour : 0 si erreur, 1 sinon.

SV_SCADABasic_fr 213
Ce changement est temporaire et n'est pas sauvegardé dans la configuration lors de l'arrêt du
Superviseur.

Syntaxe 9
LVAL = HISTORY (Mode, "CLEARPRIMARY_UNIT", PrimaryUnit);
Argument Signification
PrimaryUnit Nom de l'unité d'archivage principale. Type STR.

Type de retour : LONG


Exécution
Mode Action
4 Permet de sélectionner l'unité d'archivage principale suite à des affectations par verbe (sous
mode SETPRIMARY ou SETPRIMARY_UNIT). Le sous-mode CLEARPRIMARY_UNIT permet
d'affecter comme unité d'archivage principale l'unité configurée comme telle.
Retour : 0 si erreur, 1 sinon.

Syntaxe 10
LVAL = HISTORY (Mode, "SAMPLING", VarName, UnitName, SampleRate);
Argument Signification
VarName Nom de la variable en tendance. Type STR.
UnitName Nom de l'unité d'archivage sur laquelle est affectée la tendance. Type STR.
SampleRate Période de filtrage (entier compris entre 0 et 32000).

Type de retour : LONG


Exécution
Mode Action
4 Permet de changer dynamiquement la période de filtrage d'une tendance sur l'unité spécifiée.
Retour : 0 si erreur, 1 sinon.

Ce changement est temporaire et n'est pas sauvegardé dans la configuration lors de l'arrêt du
Superviseur.

Syntaxe 11
LVAL = HISTORY (Mode, UnitName, Sub-mode, ServerName);
Argument Signification
UnitName Nom de l'unité à rediriger. Type STR.
ServerName Nom du poste serveur d'historique vers lequel on veut rediriger les demandes de lectures
effectuées par le poste local. Le poste doit faire partie d'une association de serveurs
d'historiques.

Type de retour : LONG


Exécution
Mode Mnémonique Sous-mode Mnémonique Action
3 UNIT 10 SETREADSERVER Pour une unité, réaffecte dynamiquement le
poste serveur d'archives qui réalisera les
requêtes de lecture.
Retour : 0 si erreur, 1 sinon.

SV_SCADABasic_fr 214
Les redirections de serveurs ne sont pas sauvegardées lors de l'arrêt du superviseur et c'est la
configuration d'origine qui est utilisée à chaque redémarrage.
Si un poste client fait une demande de lecture à un poste serveur 1 qui lui-même est redirigé vers un
poste serveur 2, la demande du poste client sera traitée par le poste serveur 2.
Il est important de comprendre le mécanisme de redirection des demandes de lecture afin de ne
pas créer des configurations qui bouclent comme celle ci par exemple : Le serveur 1 est redirigé
vers le serveur 2 qui lui-même est redirigé vers le serveur 1.

Syntaxe 12
LVAL = HISTORY (Mode, UnitName, Sub-mode, RestoreReadServer);
Argument Signification
UnitName Nom de l'unité à restaurer. Type STR.

Type de retour : LONG


Exécution
Mode Mnémonique Sous-mode Mnémonique Action
3 UNIT 11 RESTOREREADSERVER Restaure la configuration d'origine de l'unité.
Retour : 0 si erreur, 1 sinon.

Syntaxe 13
LVAL = HISTORY (Mode, "FORCEPRIMARY_UNIT", PrimaryUnit);
Argument Signification
PrimaryUnit Nom d'unité d'archivage primaire sur laquelle est historisée la tendance. Type STR.

Type de retour : LONG


Exécution
Mode Mnémonique Sous-mode Mnémonique Action
4 TREND - FORCEPRIMAY_UNIT Permet de spécifier une unité d'archivage
primaire pour relecture.
Retour : 0 si erreur, 1 sinon.

Ce changement est temporaire et n'est pas sauvegardé dans la configuration lors de l'arrêt du
Superviseur.

Utilisation des modes SETPRIMARY_UNIT/SETPRIMARY et


FORCEPRIMARY_UNIT
Ce choix permet sur un poste client de choisir l'unité qui sera utilisée sur un serveur.
Avec une version inférieure à la 8.10, lors d'une requête en tendance entre des postes, l'identité de
l'unité primaire est transmise au producteur des données historiques.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 215
IF...THEN...ELSE...END IF
Voir aussi
Exécution conditionnelle d'instructions.
Syntaxe
1
2

Syntaxe 1
IF(Condition)THEN
[instruction block 1]
END IF
Type de retour : Aucun
Argument Signification
Condition Expression logique, par exemple : TankLevel > 25.
Exécution
Le bloc d'instruction 1 s'exécute si la condition est vraie, le bloc 2 s'exécute si la condition est fausse.
Chaque bloc d'instruction peut contenir à son tour d'autres instructions IF...
END et IF doivent être séparés par un espace.

Syntaxe 2
IF(Condition)THEN
[instruction block 1]
ELSE
[instruction block 2]
END IF
Type de retour : Aucun
Exécution
Le bloc d'instruction 1 s'exécute si la condition est vraie, le bloc 2 s'exécute si la condition est fausse.
Chaque bloc d'instruction peut contenir à son tour d'autres instructions IF...
END et IF doivent être séparés par un espace.

Exemple
SUB Main()
DIM i as Integer;

i=0;
'or: i=1;
If ( i==1 )Then
Print("i=1");
Else
Print("i is not 1");
End If
END SUB

SV_SCADABasic_fr 216
IGET_BUFFER
Voir aussi
Récupère un ENTIER dans une zone mémoire.

Syntaxe
IntVal = IGET_BUFFER(Handle, Offset);
Type de retour : INTEGER
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER. Type LONG.
Offset Offset en octets dans lequel l'entier a été trouvé. Tout type numérique.
Exécution
Retour : Récupère un ENTIER dans une zone mémoire réservée par un ALLOC_BUFFER à l'offset
précisé.

Exemple
i1 = IGET_BUFFER(handle,2);

SV_SCADABasic_fr 217
IRAND
Voir aussi
Renvoie un nombre aléatoire compris entre deux valeurs données.

Syntaxe
IntVal = IRAND([MinVal, MaxVal]);
Type de retour : INTEGER
Argument Signification
MinVal Valeur minimum pour le retour du nombre aléatoire. Tout type numérique.
MaxVal Valeur maximum pour le retour du nombre aléatoire. Tout type numérique.
Exécution
Retour : Une valeur entière aléatoire. Sans argument IRAND renvoie une valeur comprise entre 0 et
32767.

Exemple
SUB Main()
DIM intRandValue as integer;

intRandValue = IRAND();
Print(intRandValue);
intRandValue = IRAND(0,10);
Print(intRandValue);
END SUB

SV_SCADABasic_fr 218
IVAL
Voir aussi
Donne la valeur numérique d'une chaîne de caractères.

Syntaxe
IntVal = IVAL(string);
Type de retour : INTEGER
Exécution
Lorsque la chaîne est vide ou lorsqu'elle débute par un caractère non numérique la fonction renvoie 0.

Exemple
SUB Main()
DIM intResult as Integer;
DIM strString1 as Str;

strString1 = "125.35TEST";
intResult = IVAL( strString1 );
Print("The result is:", intResult );
END SUB

SV_SCADABasic_fr 219
KEY
Voir aussi Codes de Touches de Fonctions
Programme des touches du clavier.
Mode Mnémonique Syntaxe
1 ADDCLK 1
2 ADDSTD 2
3 ADDPROG 3
5 DEL 4
6 DELALL 5
11 ADDCLKS 1
12 ADDSTDS 2
13 ADDPROGS 3
21 DELCLK 6
22 DELSTD 7
23 DELPROG 8

Syntaxe 1
IntVal = KEY(Mode, ShiftType, KeyCode, Window, Branch, Sequence, [Farg [, Activbit]]);
Type de retour : INTEGER
Argument Signification
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule).
Activbit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.
Exécution
Mode Action
1 Programmation du déclenchement d'une zone sensible (commandable). Annule et remplace le
ADDCLK précédent sur la même touche (type + code).
11 Ajout de déclenchement de zone sensible sur la même touche (type + code) sans écrasement
des déclenchements existants.
Retour : 0 si OK, 1 sinon.

Syntaxe 2
IntVal = KEY(Mode, ShiftType, KeyCode, action, [farg [, Activbit]]);
Argument Signification
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule).
Activbit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.

Type de retour : INTEGER


Exécution
Mode Action
2 Déclencher une action standard. Annule et remplace le déclenchement précédent sur la
même touche.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 220
Mode 12 Ajout d'un déclenchement sur la même touche fonction (type + code) sans écrasement des
déclenchements existants.
Retour : 0 si OK, 1 sinon.

Syntaxe 3
IntVal = KEY(Mode, ShiftType, KeyCode, Program, Branch, Function, [farg [, activbit]]);
Argument Signification
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule).
Activbit Facultatif. Nom complet de la variable état ou alarme d'activation de l'événement.

Type de retour : INTEGER


Exécution
Mode Action
3 Exécuter une fonction d'un programme. Annule et remplace le déclenchement précédent.
Retour : 1 si OK, 0 sinon.
13 Ajoute un déclenchement de programme sur la même touche fonction (type + code) sans
écrasement des déclenchements existants.
Retour : 0 si OK, 1 sinon.

Syntaxe 4
IntVal = KEY( Mode, ShiftType, KeyCode);
Type de retour : INTEGER
Exécution
Mode Action
5 Détruit toutes les programmations d'une touche de fonction (type + code).
Retour : 1 si OK, 0 sinon.

Syntaxe 5
IntVal = KEY(Mode ) ;
Type de retour : INTEGER
Exécution
Mode Action
6 Déprogramme toutes les touches de fonction.
Retour : 0 si OK, 1 sinon.

Syntaxe 6
IntVal = KEY(Mode, ShiftType, KeyCode, Window, Branch, Sequence);
Argument Signification
ShiftType Description de la combinaison de touches clavier.
KeyCode Code de la clé.

Type de retour : INTEGER


Exécution
Mode Action
21 Supprime le déclenchement de la zone nommée.

SV_SCADABasic_fr 221
Retour : 0 si OK, 1 sinon.

Syntaxe 7
IntVal = KEY(Mode, ShiftType, KeyCode, action);
Argument Signification
ShiftType Description de la combinaison de touches clavier.
KeyCode Code de la clé.

Type de retour : INTEGER


Exécution
Mode Action
22 Supprime le déclenchement de l'action nommée.
Retour : 0 si OK, 1 sinon.

Syntaxe 8
IntVal = KEY(Mode, ShiftType, KeyCode, Program, Branch, Function);
Argument Signification
ShiftType Description de la combinaison de touches clavier.
KeyCode Code de la clé.
Program Nom du programme contenant la fonction.
Branch Nom de branche passé en argument à la fonction appelée.
Function Nom de la fonction à supprimer.

Type de retour : INTEGER


Exécution
Mode Action
23 Supprime le déclenchement du programme touche fonction.
Retour : 0 si OK, 1 sinon.

Pour appeler une fonction, le programme doit être pré-chargé.

Si la fonction MAIN est utilisée alors ne pase utiliser d'intructions DELAY sinon les résultats seront
imprévisibles.

Code pour l'argument ShiftType


Le paramètre ShiftType est une chaîne décrivant la clé comme suit :
Value Behaviour
D L'action est exécutée lorque la touche est enfoncée (sinon l'action est exécutée au
relâchement de la touche).
S L'action est exécutée lorsque la touche et Shift sont pressés ensemble.
C L'action est exécutée lorsque la touche et Control sont pressés ensemble.

Les caractères peuvent être combinés, par exemple SC veut dire presser les touches Control et Shift
ensemble.

Les comportements standards des touche sont listés dans le chapitre Codes des Touches.

SV_SCADABasic_fr 222
Exemple
KEY(2,"D" ,2, 2); ' F2
KEY(2,"D" ,3, 3); ' F3
KEY(2,"D" ,4, 4); ' F4
KEY(2,"D" ,5, 5); ' F5
KEY(2,"D" ,6, 6); ' F6
KEY(2,"D" ,7, 7); ' F7
KEY(2,"D" ,8, 8); ' F8
KEY(2,"D" ,9, 9); ' F9
KEY(2,"DS",10, 10); ' F10
KEY(2,"D" ,11, 11); ' F11
KEY(2,"" ,27, 21); ' PageDn
KEY(2,"" ,26, 22); ' PageUp
KEY(2,"" ,32, 23); ' ArrowRt
KEY(2,"" ,33, 23); ' ArrowDn
KEY(2,"" ,30, 24); ' ArrowLt
KEY(2,"" ,31, 24); ' ArrowUp
KEY(2,"" ,29, 25); ' Home
KEY(2,"" ,28, 26); ' End

SV_SCADABasic_fr 223
LAN
Voir aussi Exemple
Voir également l'aide sur les Applications Distribuées.

L'instruction LAN en SCADA BASIC est utilisée pour modifier et contrôler l'état réseau d'un poste dans des
applications distribuées et redondantes.
Mode Mnémonique Syntaxe
1 CONNECT 1
2 PRODUCT_MODE 2
3 GET_LISTS 3
4 GET_STATIONS_INLIST 4
5 SET_SERVER_MODE 5
6 GET_STATION_NUMBE 6
R
7 GET_STATION_NAME 7
10 SET_AVAILABLE_RATE 9
11 SET_READ_SERVER 10
12 RESET_READ_SERVER 11
13 START_CONNECTIONS 12
14 STOP_CONNECTIONS 12
15 START_CONNECTION 13
16 STOP_CONNECTION 13
17 SET_ACTIVE_NODE 14

A partir de la version 7.20a, Mode 2 - PRODUCT_MODE est obsolète, Mode 5 - SET_SERVER_MODE


doit être utilisé à la place.

Syntaxe 1
IntVal = LAN (Mode, RmtSvrCx);
Type de retour : INTEGER
Argument Signification
RmtSvrCx Nom de la connexion de type serveur d'un Superviseur dans l'application distribuée (tel qu'il
est spécifié dans le configurateur multipostes).

Exécution
Mode Mnémonique Action
1 CONNECT Le poste qui exécute le programme contenant l'instruction LAN se connecte au serveur
spécifié. Le poste exécutant le programme doit être configuré en tant que Client.
Retour : 1 si OK, 0 sinon.

Le mode CONNECT ne peut être utilisé que si le poste serveur spécifié est dans une association
réseau.

Syntaxe 2
IntVal = LAN (Mode, AssocNo, Flag);
Type de retour : INTEGER

SV_SCADABasic_fr 224
Argument Signification
AssocNo Numéro d'association.
Flag Code indiquant le nouvel état du serveur :
1 Le serveur devient actif
0 Le serveur devient passif

Exécution
Mode Mnémonique Action
2 PRODUCT_MOD Bascule le poste local en serveur actif ou passif.
E
Lorsque le poste bascule en serveur passif, les variables de type équipement,
DDE, OPC, LNS et interne passent temporairement en externe et s'abonnent sur
le poste serveur distant actif.
Lorsque le poste bascule en serveur actif, les variables temporairement externes
et abonnées sur le poste serveur distant actif se désabonnent et retrouvent leur
type d'origine.
Retour : 1 si OK, 0 sinon.

La variable état de la base de données SYSTEM.SERVER.Association Name.Station Name est


positionné à 1 lorsque le poste local est un serveur actif, et à 0 lorsque le serveur est passif.

Syntaxe 3
BuffList = LAN (Mode, ListType, StationName);
Argument Signification
ListType Type INTEGER:
1 = Liste serveur
2 = Liste client
3 = Autre liste
StationNam Nom du poste. (Type STR)
e

Type de retour : LONG

Exécution
Mode Mnémonique Action
3 GET_LISTS Remplit BuffList avec toutes les listes ListType contenant StationName.
Retour : Le handle du buffer.

Format de BuffList: list1,list2,list3....


Le buffer BuffList est alloué automatiquement. Penser à libérer le buffer avec le verbe
FREE_BUFFER.

Syntaxe 4
BuffList = LAN(Mode, List type, List name);
Argument Signification
List Type Type INTEGER:
1 = Liste serveur

SV_SCADABasic_fr 225
2 = Liste client
3 = Autre liste
List Name Nom de la liste. (Type STR)

Type de retour : LONG

Exécution
Mode Mnémonique Action
4 GET_STATIONS_ Remplit BuffList avec les postes appartenant à la liste ListName.
INLIST

Format de BuffList: station1,station2,station3....


Le buffer BuffList est alloué automatiquement. Penser à libérer le buffer avec le verbe
FREE_BUFFER.

Syntaxe 5
IntVal = LAN(Mode, AssocName, Servername, ServerMode);
Argument Signification
AssocName Nom d'association.
Servername Nom du poste serveur basculé entre les états actif et passif.
ServerMode Etat requis :
SET_SERVER_ACTIF = actif
SET_SERVER_PASSIF = passif

Type de retour : INTEGER

Exécution
Mode Mnémonique Action
5 SET_SERVER_M Ce mode permet de basculer le poste serveur à l'état actif seulement si ce poste
ODE appartient à une simple association de serveur actif.
Lorsque le poste bascule le serveur à l'état passif, les variables de types interne,
équipement, DDE, OPC et LON fournies par l'association, deviennent temporairement
externes et abonnées au poste serveur déporté.
Lorsque le poste bascule le serveur à l'état actif, ces variables externes temporaires
arrêtent l'abonnement et reprennent leurs types d'origine.

Retour : 1 si OK, 0 sinon.


La variable état spécialisée SYSTEM.association_name.station_name a la valeur 1 lorsque le poste
serveur est actif, 0 lorsqu'il est passif.
Ceci ne fonctionne que si le taux de disponibilité est le même dans les deux serveurs d'historiques.

Syntaxe 6
IntVal = LAN(Mode, StationName [,AssocFlag]);
Argument Signification
StationName Nom du poste.
AssocFlag Optionnel. Si le nom du poste correspond à un nom d'association, retourne :
1 : Le numéro du poste

SV_SCADABasic_fr 226
0 : Le numéro de l'association si le numéro du poste n'est pas trouvé.

Type de retour : INTEGER

Exécution
Mode Mnémonique Action
6 GET_STATION_ Fournit le numéro de poste à partir de son nom.
NUMBER
Si le nom n'existe pas, le résultat est 0.

Retour : station number si OK, 0 sinon.

Syntaxe 7
StrVal = LAN(Mode, StationNumber [,AssocFlag]));
Argument Signification
StationNumbe Numéro du poste.
r
AssocFlag Optionnel. Si le numéro du poste correspond à un numéro d'association,
retourne :
0 : Le nom du poste
1 : Le nom de l'association si le nom du poste n'est pas trouvé.

Type de retour : STR

Exécution
Mode Mnémonique Action
7 GET_STATION Fournit le nom du poste à partir de son numéro.
_NAME
Si le nom n'existe pas, le résultat est 0.

Retour : station name si OK, autrement vide.

Syntaxe 9
IntVal = LAN (Mode, AssocName, ServerName, AvailableRate);
Type de retour : INTEGER
Argument Signification
AssocName Nom de l'association.
ServerName Nom du poste serveur dans l’association.
AvailableRat Taux de disponibilité compris entre 0 et 100. Type INTEGER
e
Exécution
Mode Mnémonique Action
10 SET_AVAILABL Il sera possible de modifier dynamiquement le taux de disponibilité d’un poste serveur
E_RATE à partir d’un verbe scada basic, par contre cette modification n’est pas persistante car
elle n’entraîne pas de changement au niveau de la configuration.
Ce mode peut s'exécuter de n’importe quelle poste.
Retour : 1 si OK, 0 sinon.

Syntaxe 10
IntVal = LAN (Mode, AssocName, StationName [, ClientStationName]);
Type de retour : INTEGER

SV_SCADABasic_fr 227
Argument Signification
AssocName Nom de l’association d'historiques.
StationNam Nom du poste serveur dans l’association d'historiques.
e
ClientStatio Poste client des historiques produites par l’association "AssocName".
nName
Si "ClientStationName" n’est pas renseigné, c’est le poste local où est exécuté le verbe qui
sera utilisé.
Exécution
Mode Mnémonique Action
11 SET_READ_SER Il est possible de choisir dynamiquement au sein d’une association le serveur qui
VER exécutera les requêtes de lecture vis-à-vis d’un poste client.
Ce mode peut être utilisé pour faire de la répartition de charge.
Le poste serveur actif du poste client "ClientStationName" dans l’association
"AssocName" sera "StationName" indépendamment du taux de disponibilité des
serveurs de l’association.
Retour : 1 si OK, 0 sinon.

Syntaxe 11
IntVal = LAN (Mode, AssocName, StationName[, ClientStationName]);
Type de retour : INTEGER
Argument Signification
AssocName Nom de l’association d'historiques.
StationNam Nom du poste serveur dans l’association d'historiques.
e
ClientStatio Poste client des historiques produites par l’association "AssocName".
nName
Si "ClientStationName" n’est pas renseigné, c’est le poste local où est exécuté le verbe qui
sera utilisé.
Exécution
Mode Mnémonique Action
12 RESET_READ_ Le poste serveur "StationName" du poste client "ClientStationName" dans l’association
SERVER "AssocName" n’est plus imposé comme le serveur actif. C’est celui qui aura le taux de
disponibilité le plus élevé qui sera l’actif.
Retour : 1 si OK, 0 sinon.

Syntaxe 12
IntVal = LAN (Mode, RemoteStation);
Type de retour : INTEGER
Argument Signification
RemoteStati Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans le configurateur
on multipostes). Type STR.
Exécution
Mode Mnémonique Action
13 START_CONNE Si le poste exécutant le programme a configuré un lien avec le poste distant spécifié,
CTIONS celui-ci se connecte au poste distant.
Si le poste exécutant le programme est configuré en tant que serveur, celui-ci
accepte les connexions provenant du poste distant spécifié.

SV_SCADABasic_fr 228
Retour : 1 si OK, 0 sinon.
14 STOP_CONNEC Si le poste exécutant le programme a configuré un lien avec le poste distant spécifié,
TIONS celui-ci se déconnecte du poste distant.
Si le poste exécutant le programme est configuré en tant que serveur, celui-ci
n’accepte plus les connexions provenant du poste distant spécifié.
Retour : 1 si OK, 0 sinon.

Syntaxe 13
IntVal = LAN (Mode, RemoteStation, RemoteCnt);
Type de retour : INTEGER
Argument Signification
RemoteStati Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans le configurateur
on multipostes). Type STR.
RemotCnt Nom de la connexion de type serveur ou client du poste distant RemoteStation (tel qu'il est
spécifié dans le configurateur multipostes). Type STR.
Exécution
Mode Mnémonique Action
15 START_CONNE Si RemoteCnt est une connexion serveur et que le poste exécutant le programme a
CTION configuré un lien avec le poste distant spécifié, celui-ci se connecte au poste distant
sur la connexion RemoteCnt.
Si RemoteCnt est une connexion client et si le poste exécutant le programme est
configuré en tant que serveur, celui-ci accepte les connexions provenant du poste
distant spécifié à partir de la connexion RemoteCnt.
Retour : 1 si OK, 0 sinon.
16 STOP_CONNEC Si RemoteCnt est une connexion serveur et que le poste exécutant le programme a
TION configuré un lien avec le poste distant spécifié, celui-ci se déconnecte de la connexion
RemoteCnt.
Si RemoteCnt est une connexion client et si le poste exécutant le programme est
configuré en tant que serveur, celui-ci n’accepte plus la connexion provenant du poste
distant spécifié à partir de la connexion RemoteCnt.
Retour : 1 si OK, 0 sinon.

Syntaxe 14
IntVal = LAN (Mode SourceNodeName[, DestinationNodeName]);
Type de retour : INTEGER
Argument Signification
SourceNode Nom du nœud source. Type STR.
Name
Destination Nom du nœud destinataire. Si vide, tous les postes sont affectés. Type STR.
NodeName
Exécution
Mode Mnémonique Action
17 SET_ACTIVE_N Ce mode permet de choisir le nœud actif d'un serveur vers n'importe quel poste
ODE distant auquel il est connecté. Ce mode peut être exécuté sur n’importe quel poste.
Les variables systèmes suivantes sont mises à jour :
SYSTEM.<ClientConnectionNodeName>.ACTIVECXT
SYSTEM.<ServerConnectionNodeName>.ACTIVECXT

SV_SCADABasic_fr 229
SYSTEM.<NodeName>.ACTIVECXT
SYSTEM.<ClientConnectionNodeName>.ACTIVE_NUMBER
SYSTEM.<ServerConnectionNodeName>. ACTIVE_NUMBER
SYSTEM.<NodeName>. ACTIVE_NUMBER
Retour : 1 si OK, 0 sinon.

Exemple
Il y a trois postes avec chacun deux nœuds :

• SERVER1 avec les nœuds SERVER1_0 SERVER1_1


• SERVER2 avec les nœuds SERVER2_0 SERVER2_1
• CLIENT1 avec les nœuds CLIENT1_0 CLIENT1_1

L'instruction pour forcer actif le nœud 0 du poste SERVER1 vers tous les postes est :
LAN( "SET_ACTIVE_NODE", "SERVER1_0");
L'instruction pour forcer actif le nœud 0 du poste SERVER1 uniquement vers le nœud 0 du poste SERVER2
est :
LAN( "SET_ACTIVE_NODE", "SERVER1_0", "SERVER2_0");

SV_SCADABasic_fr 230
LANGUAGE
Voir aussi Exemple
Changement de la langue de travail.
Mod Mném Syntaxe
e onique
0 GET 1
1 SET_L1 2
2 SET_L2 2
3 TOGGL 2
E

Syntaxe 1
IntVal = LANGUAGE(Mode);
Type de retour : INTEGER
Exécution
Mode Action
0 Renvoie la langue couramment utilisée.
Retour : 1 : langue 1, 2 : langue 2 (i.e. alternée).

Syntaxe 2
IntVal = LANGUAGE(Mode [, Refresh]);
Refresh Facultatif. Permet de demander le rafraîchissement de toutes les fenêtres visibles (alarmes,
consignations).
0 par défaut. 1 = repeindre

Type de retour : INTEGER


Exécution
Mode Action
1 Bascule vers la langue 1.
2 Bascule vers la langue 2.
3 Bascule vers la langue inverse de la courante.

Exemple
SUB L2()
LANGUAGE("SET_L2", 1); 'switch language
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 231
LCASE
Voir aussi
Convertit tous les caractères d'une chaîne en minuscules.

Syntaxe
StrVal = LCASE(Input);
Type de retour : STR
Argument Signification
Input Chaîne de caractères à convertir. Type STR.

Exemple
SUB Main()
DIM strResult as Str;
DIM strString as Str;

strString = "STRING IN CAPITALS";


strResult = LCase( strString );
Print("Result is: ", strResult );
'affiche "Result is: string in capitals"
END SUB

SV_SCADABasic_fr 232
LEFT
Voir aussi
Copie les n premiers caractères de la chaîne.

Syntaxe
StrVal = LEFT(Input, N);
Type de retour : STR
Argument Signification
Input La chaîne de caractères à manipuler. Type STR.
N Le nombre de caractères à retourner. Tout type numérique.
Exécution
Si n est supérieur à la longueur de la chaine, la chaîne entière est retournée.

Exemple
SUB Main()
DIM strResult as Str;
DIM strString as Str;

strString = "Hello, World!";


strResult = LEFT( strString ,5); 'takes the first 5 characters
Print("Result is: ", strResult );
'Displays "Result is: Hello"
END SUB

SV_SCADABasic_fr 233
LEN
Voir aussi
Renvoie la longueur d'une chaîne.

Syntaxe
IntVal = LEN(Input);
Type de retour : INTEGER
Argument Signification
InputString Chaîne de caractères dont la longueur doit être retournée. Type STR.

Exemple
SUB Main()
DIM intResult as integer;
DIM strString as Str;

strString = "Hello, World!";


intResult = Len( strString ,5);
Print("Result: ", intResult );
'Displays "Result: 13"
END SUB

SV_SCADABasic_fr 234
LGET_BUFFER
Voir aussi
Récupère un LONG dans une zone mémoire.

Syntaxe
LongVal = LGET_BUFFER(handle, Offset);
Type de retour : LONG
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER. Type LONG.
Offset Offset en octets dans lequel le LONG a été trouvé. Tout type numérique.
Exécution
Retour : Récupère un LONG dans une zone mémoire réservée par un ALLOC_BUFFER à l'offset précisé.

Exemple
i1 = LGET_BUFFER(handle, 2);

SV_SCADABasic_fr 235
LISTBOX
Voir aussi Exemple
Propriétés d'accès du contrôle List-box.
Mode Mnemonic Syntaxe
1 COUNT 1
2 GETSELECTEDINDEX 1
3 SETSELECTEDINDEX 2
4 GETTEXT 3
5 GETUSERDATA 3
6 LOAD 4
7 INSERT 5
8 REMOVE 6
9 SORT 7

Toutes les syntaxes


Argument Signification
Window Nom de la fenêtre contenant le contrôle. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utiliser "*" pour indiquer la branche courante du
programme. Type STR.
Identity Identifiant du contrôle de formulaire dans la fenêtre spécifiée. Type STR.

Syntaxe 1
Return = LISTBOX(Mode, Window, Branch, Identity);
Type de retour : LONG

Exécution
Mode Mnemonic Action
1 COUNT Retourne le nombre d'éléments. Type LONG.
2 GETSELECTEDINDEX Retourne l'index de l'élément actuellement sélectionné. Type LONG.

Syntaxe 2
Return = LISTBOX(Mode, Window, Branch, Identity, Index, Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Type de retour : LONG

Exécution
Mode Mnemonic Action
3 SETSELECTEDINDEX Sélectionne l'élément selon son index. Type LONG.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
SV_SCADABasic_fr 236
Return = LISTBOX(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index de l'élément dont le texte doit être retourné.

Type de retour : STR

Exécution
Mode Mnemonic Action
4 GETTEXT Retourne le Texte de l'élément comme défini dans la langue actuellement utilisée. Ty
STR.
5 GETUSERDATA Retourne les données utilisateur associées à l'élément. Type STR.

Syntaxe 4
Return = LISTBOX(Mode, Window, Branch, Identity, FileName);
Argument Signification
FileName Nom du fichier contenant les données du contrôle.

Type de retour : INTEGER

Exécution
Mode Mnemonic Action
6 LOAD Charge le contenu du fichier de la liste du contrôle des éléments. Type INTEGER.
Retour : 1 si OK (fichier chargé), 0 sinon.

Syntaxe 5
Return = LISTBOX(Mode, Window, Branch, Identity, Text, Userdata, [Index]);
Argument Signification
Text Texte à insérer. Type STR.
Userdata Données utilisateur à insérer. Type STR.
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
7 INSERT Insère le texte et les données utilisateur optionnelles dans la liste du contrôle. Si l'in
est omis, le texte est inséré au début. Si l'index est -1, le texte est inséré à la fin.
Autrement, le texte est inséré à la position indiqué par l'index.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
Return = LISTBOX(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 237
8 REMOVE Supprime l'élément sélectionné dans la liste.
Retour : 1 si OK, 0 sinon.

Syntaxe 7
Return = LISTBOX(Mode, Window, Branch, Identity[, Sortorder, Orderby]);
Argument Signification
Sortorder Flag indiquant l'ordre du tri. 0 = ascendant, 1 = descendant.
Orderby Flag indiquant quelles données à trier. 0 = Texte, 1 = Données utilisateur.
Type de retour : LONG.

Exécution
Mode Mnémonique Action
9 SORT Trie la liste du contrôle en utilisant le critère spécifié.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 238
LOG
Voir aussi
Fonction logarithmique naturel (base e).

Syntaxe
DblVal = LOG(Value);
Type de retour : DOUBLE
Argument Signification
Value Valeur à convertir. Tout type numérique.
Exécution
Retour : Le logarithme naturel de la valeur.

Les variables de la base de données sont de type SINGLE.


En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si l'on veut
éviter une erreur de type.

Exemple
SUB Main()
'Declare
DIM dblExponential as double;
DIM sngValue as single;
DIM dblResult as double;

sngValue = 2.23456;
dblExponential = Exp ( sngValue );
dblResult = Log(dblExponential);
Print("la valeur Log(",dblExponential,") = ",dblResult);
'Displays "The value of Log(9.34237) = 2.23456"
END SUB

SV_SCADABasic_fr 239
LOGDISPLAY
Voir aussi Exemple Spécifiques
Simule le bandeau de commande d'une animation fenêtre de consignation.
Lors de l'utilisation de régions multiples, vous devez positionner la région avant l'exécution
d'instructions qui interagissent avec l'IHM. Pour plus d'informations, voir le chapitre REGION.

Mode Mnémonique Syntaxe


0 BEGIN 1
1 BEFORE 1
3 AFTER 1
4 END 1
9 DOMAIN 2
10 NATURE 2
11 PRINTALL 1, 8
12 SETDATETIME 3, 7
13 FILTER 4
14 PRINTSELECTED 1, 8
15 PRINTDISPLAY 1, 8
16 FIRST 1
17 LAST 1
18 EVENTMASK 6
19 MINMAX 5
20 EXECUTE 1
21 LOGLIST 2
22 EVENTMASKEX 12
23 LINESELECT 9
24 SETSORT 10
25 GETSORT 11
26 AUTOREFRESH_SET 17
AUTOREFRESH_PAU
27 1
SE
AUTOREFRESH_RES
28 1
UME
29 ISLINESELECTED 13
30 ISLINEVISIBLE 13
31 GETLINECOUNT 1
32 COPY_CLIPBOARD 14
33 GETLINES 15
34 GETSELECTEDLINES 15
35 GETCELL 16
AUTOREFRESH_STA
36 1
TUS
AUTOREFRESH_PERI
37 1
OD

Toutes syntaxes
Argument Signification
Window Nom de la fenêtre qui contient l'animation à piloter. Type STR
Branch Branche éventuelle de la fenêtre ("*" pour utiliser la branche courante du programme). Type
STR.
Identity Identifiant de l'animation fenêtre de consignation. Type STR

SV_SCADABasic_fr 240
Syntaxe 1
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
0 BEGIN Demande le buffer précédent. Equivalent au bouton << de
l'affichage de consignations.
1 BEFORE Remonte d'une page même si on est en début de buffer.
Equivalent au bouton < de l'affichage de consignations.
3 AFTER Descend d'une page même si on est en fin de buffer.
Equivalent au bouton > de l'affichage de consignations.
4 END Demande le buffer suivant. Equivalent au bouton >> de
l'affichage de consignations.
11 PRINTALL Imprime toutes les lignes du buffer.
14 PRINTSELECTED Imprime la ligne sélectionnée.
15 PRINTDISPLAY Imprime seulement les lignes affichées à l'écran.
16 FIRST Permet d'aller au début des historiques. Equivalent au
bouton |< de l'affichage de consignations.
17 LAST Permet d'aller à la fin des historiques. Equivalent au
bouton >| de l'affichage de consignations.
20 EXECUTE Exécute le contexte courant positionné par les verbes du
type MINMAX, EVENTMASK, …
27 AUTOREFRESH_PAUSE Met en pause le mécanisme d'auto-refresh.
28 AUTOREFRESH_RESUME Reprend le mécanisme d'auto-refresh.
31 GETLINECOUNT Retourne le nombre de lignes dans la fenêtre de
consignations.
36 AUTOREFRESH_STATUS Retourne le status du mécanisme d'auto-refresh :1 = En
cours
2 = Pause
3 = Non positionné (période à 0)
37 AUTOREFRESH_PERIOD Retourne la période d'auto-refresh en secondes.
Retour : 1 si OK, 0 sinon (fenêtre n'existant pas, etc ...).
Excepté pour les modes 31, 36 et 37.

Syntaxe 2
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, Argument [,Context]);
Argument Signification
Argument Nom d'un nouveau domaine ou d'une nouvelle nature. Pour spécifier tous les domaines et
toutes les natures, Argument doit être une chaîne nulle. Type STR.
Context Paramètre optionnel. Si positionné à 1, l'action nécessaire à l'instruction est reportée jusqu'à
la prochaine utilisation du mode EXECUTE.
0 : Les paramètres min/max et les masques d'événements sont récupérés dans la
configuration de la liste, puis la requête est exécutée automatiquement.
1 : Les listes de consignations sont uniquement allouées, sans exécution. Ce sont les
paramètres min/max et les événements de la fenêtre de consignations qui sont utilisées, sauf
si les modes EVENTMASK ou MINMAX sont appliquées avant l'exécution de la requête par
EXECUTE.

Type de retour : INTEGER


Exécution

SV_SCADABasic_fr 241
Sélectionne le nouveau domaine, la nouvelle nature ou la liste de consignations.
Mode Mnémonique Action
9 DOMAIN Nouveau domaine.
Retour : 1 si OK, 0 sinon.
10 NATURE Nouvelle nature.
Retour : 1 si OK, 0 sinon.
21 LOGLIST Nouvelle liste de consignations.
Retour : 1 si OK, 0 sinon.

Si le filtre de l'animation de la liste de consignations est configuré avec un domaine et/ou une
nature, le mode FILTER du verbe LOGDISPLAY sera ignoré.

Syntaxe 3
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity [,StartTime [,EndTime [,Context] ] ]););
Argument Signification
StartTime En millisecondes depuis le 1er janvier 1980, si elle est omise c'est l'horodate courante qui est
utilisée. Type DOUBLE.
EndTime En millisecondes depuis le 1er janvier 1980, si elle est omise c'est l'horodate courante qui est
utilisée. Type DOUBLE.
Context Paramètre optionnel. Si positionné à 1, l'action nécessaire à l'instruction est reportée jusqu'à
la prochaine utilisation du mode EXECUTE.

La requête sera exécutée avec le mode EXECUTE.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
12 SETDATETIME Filtre de sélection de Starteate à Enddate dans la fenêtre de consignations.
Retour : 1 si OK, 0 sinon.

Le nombre maximum de lignes d'une fenêtre de consignations est de 32 000.

Syntaxe 4
ret = LOGDISPLAY(Mode, Window, Branch, Identity, Filter [,Context]);
Argument Signification
Filter Expression de filtre. Type STR.
Context Paramètre optionnel. Si positionné à 1, l'action nécessaire à l'instruction est reportée jusqu'à
la prochaine utilisation du mode EXECUTE.

Type de retour : INTEGER


Voir le chapitre Expressions de Filtres pour plus informations.

Exécution
Mode Mnémonique Action
13 FILTER Sélectionne l'information affichée dans la fenêtre de consignation en appliquant le filtre
d'expression.

SV_SCADABasic_fr 242
Retour : 1 si OK, 0 sinon (la fenêtre n'existe pas, etc.).

Si le filtre de l'animation de la fenêtre de consignations a été configuré avec un domaine et/ou une
nature, le mode FILTER du verbe LOGDISPLAY ne sera pas pris en compte.

Si le filtre est positionné à #T et la fenêtre de consignations est dans HDS, vous devez ajouter la
colonne Description dans la table de consignation autrement le résultat sera une fenêtre vide.

Syntaxe 5
ret = LOGDISPLAY(Mode, Window, Branch, Identity, Min, Max);
Argument Signification
Min Niveau de priorité minimum des alarmes. Type INTEGER.
Max Niveau de priorité maximum des alarmes. Type INTEGER.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
19 MINMAX Filtre de sélection de Min priorité à Max priorité dans la fenêtre de consignations.
Retour : 1 si OK, 0 sinon.

Avec ce mode, vous pouvez positionner un contexte, mais ne pas exécuter la requête
immédiatement. Elle sera lancée avec le mode EXECUTE.

Syntaxe 6
ret = LOGDISPLAY(Mode, Window, Branch, Identity, EventMask [,Context]);
Argument Signification
EventMask Masque d'événements. Pour plus d'informations, voir le chapitre Masque d'événements. Type
DOUBLE.
Context Paramètre optionnel. Si positionné à 1, l'action nécessaire par l'instruction est reportée
jusqu'à la prochaine utilisation de l'instruction EXECUTE.
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
18 EVENTMASK Modifie le masque d'événements.
Retour : 1 si OK, 0 sinon.

Avec ce mode, vous pouvez positionner un contexte, mais ne pas exécuter la requête
immédiatement. Elle sera lancée avec le mode EXECUTE.

Syntaxe 7
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity [,StartTime [,EndTime]] [,Context]
[,ChangeNoOfLines]););
Argument Signification
StartTime En millisecondes depuis le 1er janvier 1980, si elle est omise c'est l'horodate courante qui est
utilisée. Type DOUBLE.
EndTime En millisecondes depuis le 1er janvier 1980, si elle est omise c'est l'horodate courante qui est
utilisée. Type DOUBLE.

SV_SCADABasic_fr 243
Context Paramètre optionnel. Si positionné à 1, l'action nécessaire à l'instruction est reportée jusqu'à
la prochaine utilisation du mode EXECUTE.
ChangeNoOf Modifie la taille du buffer temps-réel. (Voir ci-dessous).
Lines

La requête sera exécutée avec le mode EXECUTE.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
12 SETDATETIME Filtre de sélection de Startdate à Enddate dans la fenêtre de consignations.
Retour : 1 si OK, 0 sinon.
Modification du nombre de lignes
Si le nombre de lignes correspondant à la requête est supérieure au nombre de lignes déclaré dans le
buffer temps-réel, une valeur à 1 pour le flag ChangeNoOfLines modifiera le nombre de lignes dans le
buffer temps-réel. L'affichage est alors positionné sur la ligne correspondant à l'horodate de début.
Si on déclenche une requête autre que SETDATETIME (avec paramètre ChangeNoOfLines égal à 1) ou si
on ferme la vue contenant l’animation fenêtre de consignation, le nombre de lignes affichables de
l’animation reprend la valeur par défaut du nombre de lignes du buffer temps réel.

Syntaxe 8
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity[, PrintFormat]);
Type de retour : INTEGER
Argument Signification
PrintFormat Paramètre optionnel pour sélectionner le format d'impression :
0 : Imprime les consignations en utilisant le format d'affichage défini dans l'onglet Affichage
de la fenêtre de consignations (par défaut).
1 : Imprime les consignations en utilisant le format d'affichage défini dans l'onglet Exécution
de la fenêtre de consignations.
Exécution
Mode Mnémonique Action
11 PRINTALL Imprime toutes les lignes du buffer configuré dans la fenêtre de consignations.
14 PRINTSELECT Imprime la ligne sélectionnée.
ED
15 PRINTDISPLA Imprime seulement les lignes affichées à l'écran.
Y
Retour : 1 si OK, 0 sinon (fenêtre n'existant pas, etc ...).

Syntaxe 9
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, ProgramModule, ProgramBranch,
ProgramFunction, ProgramParameter);
Type de retour : INTEGER.
Argument Signification
ProgramMod Programme a exécuter.
ule
ProgramBra Branche du programme.
nch

SV_SCADABasic_fr 244
ProgramFun Fonction du programme à exécuter.
ction
ProgramPar Paramètres du programme.
ameter
Exécution
Mode Mnémonique Action
23 LINESELECT Spécifie un programme à exécuter lorsqu'une ligne
sélectionnée/désélectionnée apparaît.
Retour : 1 si OK, 0 si paramètre erroné.

XMLPATH est utilisé pour obtenirles informations du mode LINESELECT.

_Ref-308730101
Un espace de nom est créé automatiquement lors de l'utilisation de Branch, Window et Log Display
ID.

Les significations des chemins XML sont les suivantes :


Chemin Signification
lineselect/va Nom de la variable
riable
lineselect/x Position X
lineselect/yp Position Y
osition
lineselect/se Sélectionné/désélectionné
lected
lineselect/ti Date-heure
me
lineselect.el Elément de la colonne
ement[1-
8].value

Syntaxe 10
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, Column, Sort);
Type de retour : INTEGER.
Argument Signification
Column Valeurs de 0 à 7 pour identifier la colonne, - 1 pour réinitialiser le tri.
Sort Valeur 1 pour un tri ascendant, 0 pour descendant.
Exécution
Mode Mnémonique Action
45 SETSORT Tri dynamique d'une liste d'alarme par une colonne.
Retour : 1 si OK, 0 si paramètre erroné.

Syntaxe 11
IntVal = ALARMDISPLAY(Mode, Window, Branch, Identity, Column, Sort);
Type de retour : INTEGER.
Argument Signification
Column Valeurs de 0 à 7 pour identifier la colonne, - 1 pour réinitialiser le tri.
Sort Valeur 1 pour un tri ascendant, 0 pour descendant.
Exécution

SV_SCADABasic_fr 245
Mode Mnémonique Action
46 GETSORT Obtient le status d'un tri.
Retour : 1 si OK, 0 si paramètre erroné.

L'instruction XMLPATH est utilisée pour obtenir les informations du mode GETSORT. Un espace de
nom est créé automatiquement lors de l'utilisation des paramètres Branch, Window et Identit. Pour
des informations sur son format, voir le chapitre XMLPATH

Les significations des chemins XML sont les suivantes :


Chemin Signification
getsort/column Valeurs de 0 à 7 pour identifier la colonne, - 1 pour réinitialiser le tri.
getsort/sort Valeur 1 pour un tri ascendant, 0 pour un tri descendant.

Syntaxe 12
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, ILowPart, IHighPart, [Context]);
Argument Signification
ILowPart Partie basse du masque. Pour plus d'informations sur la construction des masques, voir le
topic Masques d'Evénements. Type LONG.
IHighPart Partie haute du masque. Pour plus d'informations sur la construction des masques, voir le
topic Masques d'Evénements. Type LONG.
Context Paramètre optionnel. Si positionné à 1, l'action est mise en attente jusqu'à la prochaine
exécution de l'instruction EXECUTE.
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
22 EVENTMASK Modifie le filtre d'événements de la fenêtre de consignations.
Retour : 1 si OK, 0 si paramètre erroné.

Syntaxe 13
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, Line);
Argument Signification
Line Numéro de ligne (1ère ligne = 1). Type INTEGER.
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
29 ISLINESELECTED Vérifie si la ligne est sélectionnée.
Retour : 1 si sélectionné, 0 sinon.
30 ISLINEVISIBLE Vérifie si la ligne est visible.
Retour : 1 si sélectionné, 0 sinon.

Syntaxe 14
IntVal = LOGDISPLAY(Mode, Window, Branch, Identity, Separator);
Argument Signification
Separator Caractère(s) utilisé(s) pour délimiter le contenu de chaque colonne. Type STR.
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
32 COPY_CLIPBOARD Copie les lignes sélectionnées vers le presse-papier Windows.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 246
Syntaxe 15
StrVal = LOGDISPLAY(Mode, Window, Branch, Identity, LineStart[, LineEnd, ColSeparator,
LineSeparator]);
Argument Signification
Linestart Numéro de ligne (1ère ligne = 1) dans le buffer de la fenêtre de consignation. Type INTEGER.
LineEnd Numéro de ligne (1ère ligne = 1) dans le buffer de la fenêtre de consignation. Type INTEGER.
ColSeparator Caractère(s) utilisé(s) pour séparer les colonnes dans la chaîne de retour. Par défaut : virgule
",". Type STR.
LineSeparator Caractère(s) utilisé(s) pour séparer les lignes dans la chaîne de retour. Par défaut : nouvelle
ligne "\n". Type STR.
Type de retour : STR.
Exécution
Mode Mnémonique Action
33 GETLINES Retourne les lignes de LineStart à LineEnd (inclusive) dans une seule chaîne
délimitée par les caractères ColSeperator et LineSeperator. Si LineEnd est omis,
une seule ligne est retournée en utilisant les caractères par défaut pour délimiter
les colonnes.
Retour : Lignes sélectionnées de la fenêtre de consignations.
34 GETSELECTEDLINES Idem à GETLINES excepté que seules les lignes sélectionnées sont retournées.

Syntaxe 16
StrVal = LOGDISPLAY(Mode, Window, Branch, Identity, Line, Column);
Argument Signification
Line Numéro de ligne (1ère ligne = 1) dans le buffer de la fenêtre de consignations. Type INTEGER.
Column Numéro de colonne (1ère colonne = 1) dans le buffer de la fenêtre de consignations. Type
INTEGER.
Type de retour : STR.
Exécution
Mode Mnémonique Action
35 GETCELL Retourne le contenu de la cellule spécifique.

Syntaxe 17
StrVal = LOGDISPLAY(Mode, Window, Branch, Identity, AutoRefreshPeriod, PauseWhenNavigating );
Argument Signification
AutoRefreshPeriod Période d'auto-refresh en secondes. Type INTEGER.
PauseWhenNavigatin Flag indiquant si la fenêtre de consignations est mise en pause en utilisant les boutons de
g navigation.
0 = Pas de pause, 1 = pause.
Type INTEGER.
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
26 AUTOREFRESH_SET Définit l'action et la période d'auto-refresh en cours de navigation.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 247
LOGICAL
Voir aussi Exemple
Opérations logiques sur des entiers de 32 octets.
Mode Mnémonique Syntaxe
0 NOT 1
1 AND 2
2 XOR 2
3 OR 2
4 SHIFT_LEFT 2
5 SHIFT_RIGHT 2
6 MODULO 2

Syntaxe 1
LongVal = LOGICAL(Mode, x);
L'argument x peut être de tout type numérique.
Argument Format
x Tout format numérique. Converti en LONG.

Type de retour : LONG


Exécution
Mode Mnémonique Action
0 NOT Négation logique.

Syntaxe 2
LongVal = LOGICAL(Mode, x, y);
Les arguments x et y peuvent être de tout type numérique .
Argument Format
x Tout format numérique. Converti en LONG.
y Tout format numérique. Converti en LONG.

Type de retour : LONG


Exécution
Mode Mnémonique Action
1 AND Et logique.
2 XOR Ou exclusif.
3 OR Ou logique.
4 SHIFT LEFT Décalage à gauche.
5 SHIFT RIGHT Décalage à droite.
6 MODULO Modulo.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 248
LOGICAL64
Voir aussi Exemple
Opérations logiques sur des entiers de 64 octets.
Mode Mnémonique Syntaxe
0 NOT 1
1 AND 2
2 XOR 2
3 OR 2
4 SHIFT_LEFT 2
5 SHIFT_RIGHT 2
6 MODULO 2

Syntaxe 1
LongLongVal = LOGICAL64(Mode, x);
L'argument x peut être de tout type numérique.
Argument Format
x Tout format numérique. Converti en LONGLONG.

Type de retour : LONGLONG


Exécution
Mode Mnémonique Action
0 NOT Négation logique.

Syntaxe 2
LongLongVal = LOGICAL64(Mode, x, y);
Les arguments x et y peuvent être de tout type numérique.
Argument Format
x Tout format numérique. Converti en LONGLONG.
y Tout format numérique. Converti en LONGLONG.

Type de retour : LONGLONG


Exécution
Mode Mnémonique Action
1 AND Et logique.
2 XOR Ou exclusif.
3 OR Ou logique.
4 SHIFT LEFT Décalage à gauche.
5 SHIFT RIGHT Décalage à droite.
6 MODULO Modulo.

Exemple
Sub main ()
'64-bit variable
Dim ll1 as longlong;
Dim ll2 as longlong;

SV_SCADABasic_fr 249
Dim llRes as longlong;
ll1=2147491969;
Print(ll1); '2147491969
ll2=1;
llRes = logical64("AND", ll1, ll2);
Print(llRes); '1
End Sub

SV_SCADABasic_fr 250
LONWORKS
Voir aussi
Gère et contrôle un réseau LonWorks configuré dans le Superviseur.
Mode Mnémonique Syntaxe
2 READCONFIGPROPERTY 1
3 STARTNETWORK 2
4 STOPNETWORK 2
5 STARTNODE 3
6 STOPNODE 3
9 SENDMESSAGE 6

Syntaxe 1
IntVal = LNS(Mode, NetworkAlias, NodeAlias);
Type de retour : INTEGER
Argument Signification
NetworkAlia Alias d'un réseau LonWorks configuré dans le Superviseur. Type STR
s
NodeAlias Alias d'un noeud LonWorks configuré dans le Superviseur. Type STR

Exécution
Mode Mnémonique Action
2 READCONFIG Rafraîchit l’ensemble des variables du superviseur liées aux ConfigProperties du
PROPERTY nœud et du réseau.
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = LNS(Mode, NetworkAlias);
Type de retour : INTEGER
Argument Signification
NetworkAlia Alias du réseau LonWorks configuré dans le Superviseur. Type STR
s

Exécution
Mode Mnémonique Action
3 STARTNETWO Démarre la communication avec le réseau LonWorks. L'état du réseau est
RK disponible dans la variable SYSTEM.LNS.NetworkAlias.ON.
4 STOPNETWOR Stoppe la communication avec le réseau LonWorks. L'état du réseau est disponible
K dans la variable SYSTEM.LNS.NetworkAlias.ON.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
IntVal = LNS(Mode, szURL);
Type de retour : INTEGER
Argument Signification

SV_SCADABasic_fr 251
szURL Chaîne de caractères formée par NetworkAlias/NodeAlias ou NetworkAlias.
NetworkAlia Alias du réseau LonWorks tel que configuré dans le Superviseur. Type STR
s
NodeAlias Alias du noeud LonWorks tel que configuré dans le Superviseur. Type STR

L’application peut détecter que la phase de démarrage du réseau est terminée grâce à la variable
SYSTEM.LNS.NetworkAlias.NodeAlias.ON

Exécution
Mode Mnémonique Action
5 STARTNODE Démarre la communication avec le noeud LonWorks spécifié. L'état du réseau est
disponible dans la variable SYSTEM.LNS.NetworkAlias.ON.
6 STOPNODE Stoppe la communication avec le noeud LonWorks spécifié. L'état du réseau est
disponible dans la variable SYSTEM.LNS.NetworkAlias.ON.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal = LNS(Mode, NetworkAlias/NodeAlias, MsgCode, MsgData [, ResultVar]);
Type de retour : INTEGER
Argument Signification
NetworkAlia Alias du réseau LonWorks tel que configuré dans le Superviseur. Type STR
s
NodeAlias Alias du noeud LonWorks tel que configuré dans le Superviseur. Type STR
MsgCode Code du message à envoyer. Chaîne de caractère au format héxadécimal. La valeur doit être
comprise entre 00 et FF.
MsgData Données du message à envoyer. Chaîne de caractère au format héxadécimal. Chaque couple
de caractères correspond à un octet (00 – FF). La longueur des données est limitée à 1024
caractères (soit 512 octets).
ResultVar Variable résultat (optionnel) :
0 : L’envoi du message est en cours,
1 : L’envoi du message s’est terminé sans erreur,
2 : L’envoi du message a échoué.

Exécution
Mode Mnémonique Action
9 SENDMESSAG Permet d’envoyer un message via la messagerie explicite au nœud
E NetworkAlias/NodeAlias.
Retour :
0 : Message envoyé.
-1 : Syntaxe NetworkAlias/NodeAlias invalide.
-2 : Syntaxe MsgCode invalide.
-3 : Syntaxe MsgData invalide.
-4 : La variable ResultVar n’existe pas ou n’est pas une variable mesure.

SV_SCADABasic_fr 252
LPRINT
Voir aussi
Envoie un message vers une imprimante.

Syntaxe
IntVal = LPRINT(Num, Mess1, Mess2.....Mess9);
Type de retour : INTEGER
Argument Signification
Num Numéro d'imprimante de 1 à 6. Tout type numérique.
Mess1 - 9 Messages à imprimer (Maximum 9). Tous les types de variables sont supportés.
Exécution
Retour : 1 si OK, 0 sinon.

Dans le cas de l'impression d’une variable de type Mesure, on obtient une valeur formatée comme
définie dans la fiche de la variable.

Exemple
SUB main()
'Declare
DIM intReturn as Integer;
DIM sngRegister as Single;

sngMesure=12;
intReturn = LPRINT (1,"Example of using LPRINT: value = ",sngRegister ,34);
'Print this text on printer 1: "Example of using LPRINT: value = 12"
END SUB

SV_SCADABasic_fr 253
LTRIM
Voir aussi
Renvoie la copie d'une chaîne sans les espaces à gauche.

Syntaxe
StrVal = LTRIM(string);
Type de retour : STR
Argument Signification
String Chaîne de caractères contenant les espaces à supprimer. Type STR.

Exemple
SUB Main()
'Declare strings
DIM strResult as Str;
DIM strValue as Str;

strValue = " Hello, World!"; 'preceding spaces


strResult = LTrim(strValue);
Print("LTrim(",strValue,") = ",strResult);
'Display "LTrim( Hello, World!) = Hello, World!"
END SUB

SV_SCADABasic_fr 254
LVAL
Voir aussi
Donne la valeur numérique d'une chaîne de caractères.

Syntaxe
LongVal = LVAL(string);
Type de retour : LONG
Argument Signification
String Chaîne de caractères à convertir. Type STR.
Exécution
Lorsque la chaîne est vide ou lorsqu'elle débute par un caractère non numérique la fonction renvoie 0.

Exemple
SUB Main()
DIM lngResult as long;
DIM strString1 as Str;

strString1 = "125.35TEST";
lngResult = LVAL( strString1 );
Print("Result: ", lngResult );
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 255
M104
Voir aussi
Démarre, arrête ou réinitialise la communication via le protocole IEC60870-5-104.
Mode Mnémonique Syntaxe
0 NETWORK_START 1
1 NETWORK_STOP 1
2 DEVICE_START 2
3 DEVICE_STOP 2
4 SECTOR_START 3
5 SECTOR_STOP 3
6 SECTOR_CLOCKSYNCHRO 3
7 SECTOR_RESET 3
8 SECTOR_GI 3
9 SECTOR_CI 3
10 STPV_COMMAND 4
11 SBO_SELECT 7
12 SBO_EXECUTE 8
13 SBO_CANCEL 8
16 DEVICE_SET_IPADD 6
17 DEVICE_SWITCHOVER 5

L'instruction envoie un message. Il n'y a pas de retour.

Syntaxe 1
M104(Mode, NetworkID);
Argument Signification
NetworkID Identifiant du réseau. Type STR.

Execution
Mode Mnémonique Message
0 NETWORK_START Démarre le réseau.
1 NETWORK_STOP Arrête le réseau.

Syntaxe 2
Return= M104(Mode, NetworkID, DeviceID);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.

Execution
Mode Mnémonique Message
2 DEVICE_START Démarre l'équipement.

SV_SCADABasic_fr 256
3 DEVICE_STOP Arrête l'équipement.

Syntaxe 3
Return= M104(Mode, NetworkID, DeviceID, SectorID);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.
SectorID Identifiant du secteur. Type STR.

Execution
Mode Mnémonique Message
4 SECTOR_START Démarre le secteur.
5 SECTOR_STOP Arrête le secteur.
6 SECTOR_CLOCKSYNCHRO Synchronise l'heure du PC.
7 SECTOR_RESET Réinitialise.
8 SECTOR_GI Commande d'interrogation globale (GI).
9 SECTOR_CI Commande d'interrogation de compteur (CI).

La commande SECTOR_CLOCKSYNCHRO envoie un message pour positionner l'horodate d'un


secteur vers l'horodate du PC lorsque le message a été composé.

La commande SECTOR_GI envoie une requête pour les valeurs des variables non cycliques.

Syntaxe 4
Return= M104(Mode, VariableName, Direction);
Argument Signification
VariableName Nom de la variable. Type STR.
Direction Direction du mouvement : "UP" ou "DOWN". Type STR.

Execution
Mode Mnémonique Message
10 STPV_COMMAND Positionne la variable en haut ou en bas.

Syntaxe 5
Return= M104(Mode, NetworkID, DeviceID, Device_to_activate_ID;
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement principal. Type STR.
Device _to_activate_ID Identifiant de l'équipement à activer. Type STR.

Exécution
Mode Mnémonique Action
17 DEVICE_SWITCHOVER Force l'activation d'un équipement particulier dans une configuration
où il y a un ou plusieurs équipements redondants configurés.

Syntaxe 6

SV_SCADABasic_fr 257
Return= M104(Mode, NetworkID, DeviceID, IP_Address;
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement principalr. Type STR.
IP_Address Nouvelle adresse IP de l'équipement en format x.x.x.x. Exemple 192.168.0.99. Type
STR.

Exécution
Mode Mnémonique Action
16 DEVICE_SET_IPADD Modifie l'adresse IP de l'équipement. L'instruction stoppe et démarre
également l'équipement qui est nécessaire pour terminer la
modification de l'adresse.

Syntaxe 7
Return= M104(Mode, VariableName, Value [, ResultVar]);
Type de retour : INTEGER.
Argument Signification
VariableName Nom d'une variable mappée à un objet d'information M104. Type STR.
Value Valeur à envoyer à l'objet d'information M104. Type INTEGER.
ResultVar Nom d'une variable mesure dans laquelle est placée une valeur correspondante au
résultat de l'instruction. Type STR.
0 - Requête initiée
1 - Succès
2 - Echec de la commande (Voir l'observateur d'événements).

Exécution
Mode Mnémonique Action
11 SBO_SELECT Envoie une commande Select à un objet d'information M104 dans le
cadre d'une séquence select before operate.
Retour : 0 si 0K. Toute autre valeur indique une erreur dans la syntaxe
de l'instruction. Voir ci-dessous.

Syntaxe 8
Return= M104(Mode, VariableName [, ResultVar]);
Type de retour : INTEGER.
Argument Signification
VariableName Nom d'une variable mappée à un objet d'information M104. Type STR.
ResultVar Nom d'une variable mesure dans laquelle est placée une valeur correspondante au
résultat de l'instruction. Type STR.
0 - Requête initiée
1 - Succès
2 - Echec de la commande (Voir l'observateur d'événements).

Exécution
Mode Mnémonique Action
12 SBO_EXECUTE Envoie une commande Execute à un objet d'information M104.
Complète une séquence select before operate après l'envoi d'une
commande Select.
Retour : 0 si 0K. Toute autre valeur indique une erreur dans la syntaxe

SV_SCADABasic_fr 258
de l'instruction.
13 SBO_CANCEL Envoie une commande Cancel à un objet d'information M104. Annule
une séquence select before operate après l'envoi d'une commande
Select.
Retour : 0 si 0K. Toute autre valeur indique une erreur dans la syntaxe
de l'instruction. Voir ci-dessous.

Valeurs de retour des modes Select, Execute et Cancel modes en cas d'erreur
-2 = Mauvais paramètre.
-5 = Mauvaise séquence de commande. Par exemple une commande Select déjà envoyée.

Exemples
M104("NETWORK_START", "NETWORK1");
M104("DEVICE_START", "NETWORK1","DEVICE1");
M104("SECTOR_START", "NETWORK1","DEVICE1","SECTOR1");
M104("SECTOR_CLOCKSYNCHRO", "NETWORK1","DEVICE1","SECTOR1");
M104("SECTOR_RESET", "NETWORK1","DEVICE1","SECTOR1");
M104("SECTOR_GI", "NETWORK1","DEVICE1","SECTOR1");
M104("SECTOR_CI", "NETWORK1","DEVICE1","SECTOR1");
Pour un exemple plus complet, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 259
M61850
Voir aussi
Gère la communication via le protocole IEC61850.
Mode Mnémonique Syntaxe
1 SBOW_SELECT 1
2 SBOW_OPERATE 2
3 SBOW_CANCEL 2
4 SBO_SELECT 1
5 SBO_OPERATE 2
6 SBO_CANCEL 2
7 START_NETWORK 3
8 STOP_NETWORK 3
9 START_PHYSICALDEVICE 4
10 STOP_PHYSICALDEVICE 4
11 START_REPORTGROUP 5
12 STOP_REPORTGROUP 5
13 START_DATASETGROUP 5
14 STOP_DATASETGROUP 5
15 START_DATAGROUP 5
16 STOP_DATAGROUP 5
17 DE_OPERATE 1
18 DEW_OPERATE 1

Syntaxe 1
Return= M61850(Mode, VariableName, Value [, ResultVar]);
Type de retour : INTEGER.
Argument Signification
VariableName Nom d'une variable mappée à un objet ou un attribut M61850. Type STR.
Value Valeur à envoyer à l'objet ou attribut M61850. Type INTEGER.
ResultVar Nom d'une variable de mesure dans laquelle est placée une valeur correspondante au
résultat de l'instruction. Type STR.

0 - Requête initiée
1 - Succès
2 - Erreur d'écriture (Voir l'observateur d'événements).
Exécution
Mode Mnémonique Action
1 SBOW_SELECT Génère une commande Select before operate - Select avec
sécurité avancée. Utilisé en conjonction avec SBOW_OPERATE
et SBOW_CANCEL.
4 SBO_SELECT Génère une commande Select before operate - Select avec
sécurité avancée. Utilisé en conjonction avec SBO_OPERATE
et SBO_CANCEL.
17 DE_OPERATE Génère une commande Direct avec sécurité normale.
18 DEW_OPERATE Génère une commande Direct avec sécurité avancée.
Retour : 0 si OK. Une valeur négative est un paramètre
d'erreur, la valeur indiquant quel paramètre est mauvais. Par
exemple, -3 signifie que le paramètre 3 est mauvais.

Syntaxe 2
Return= M61850(Mode, VariableName [, ResultVar]);
Type de retour : INTEGER.
Argument Signification

SV_SCADABasic_fr 260
VariableName Nom d'une variable mappée à un objet ou un attribut M61850. Type STR.
ResultVar Nom d'une variable de mesure dans laquelle est placée une valeur correspondante au
résultat de l'instruction. Type STR.

0 - Requête initiée
1 - Succès
2 - Erreur d'écriture (Voir l'observateur d'événements).
Exécution
Mode Mnémonique Action
2 SBOW_OPERATE Génère une commande Select before operate - Operate avec
sécurité avancée. Utilisé en conjonction avec SBOW_SELECT
et SBOW_CANCEL.
3 SBOW_CANCEL Génère une commande Select before operate - Cancel avec
sécurité avancée. Utilisé en conjonction avec SBOW_SELECT
et SBOW_OPERATE.
5 SBO_OPERATE Génère une commande Select before operate - Operate avec
sécurité avancée. Utilisé en conjonction avec SBO_SELECT et
SBO_CANCEL.
6 SBO_CANCEL Génère une commande Select before operate - Cancel avec
sécurité avancée. Utilisé en conjonction avec SBO_SELECT et
SBO_OPERATE.
Retour : 0 si OK. Une valeur négative est un paramètre
d'erreur, la valeur indiquant quel paramètre est mauvais. Par
exemple, -2 signifie que le paramètre 2 est mauvais.

Syntaxe 3
IntVar = M61850(Mode, NetworkID, ResultVar);
Type de retour : INTEGER.
Argument Signification
NetworkID Nom du réseau. Type STR.
ResultVar Nom de la variable dans laquelle est mis le status de la commande. Type STR.
0 - Requête initiée
1 - Succès
2 - Erreur d'écriture (Voir l'observateur d'événements).
Exécution
Mode Mnémonique Action
7 START_NETWORK Démarre le réseau. ResultVar est mis à jour avec le status de
la requête.
8 STOP_NETWORK Arrête le réseau. ResultVar est mis à jour avec le status de la
requête.
Retour : 0 si OK, 0 sinon.

Syntaxe 4
IntVar = M61850(Mode, NetworkID, DeviceID, ResultVar);
Type de retour : INTEGER.
Argument Signification
NetworkID Nom du réseau. Type STR.
DeviceID Nom de l'équipement. Type STR.
ResultVar Nom de la variable dans laquelle est mis le status de la commande. Type STR.

0 - Requête initiée
1 - Succès
2 - Erreur d'écriture (Voir l'observateur d'événements).
Exécution

SV_SCADABasic_fr 261
Mode Mnémonique Action
9 START_PHYSICALDEVICE Démarre l'équipement physique. ResultVar est mis à jour
avec le status de la requête.
10 STOP_PHYSICALDEVICE Arrête l'équipement physique. ResultVar est mis à jour avec
le status de la requête.
Retour : 0 si OK, 0 sinon.

Syntaxe 5
IntVar = M61850(Mode, NetworkID, DeviceID, GroupID, ResultVar);
Type de retour : INTEGER.
Argument Signification
NetworkID Nom du réseau. Type STR.
DeviceID Nom de l'équipement. Type STR.
GroupID Nom du groupe. Type STR.
ResultVar Nom de la variable dans laquelle est mis le status de la commande. Type STR.

0 - Requête initiée
1 - Succès
2 - Erreur d'écriture (Voir l'observateur d'événements).
Exécution
Mode Mnémonique Action
11 START_REPORTGROUP Démarre le groupe de rapport.
12 STOP_REPORTGROUP Arrête le groupe de rapport.
13 START_DATASETGROUP Démarre le groupe de dataset.
14 STOP_DATASETGROUP Arrête le groupe de dataset.
15 START_DATAGROUP Démarre le groupe de données.
16 STOP_DATAGROUP Arrête le groupe de données.
Retour : 0 si OK, 0 sinon.

SV_SCADABasic_fr 262
MAPDISPLAY

Voir aussi Exemple


Gère le fonctionnement d'un contrôle de carte dans l'IHM.
Mode Mnémonique Syntaxe
1 LOADDEFAULT 1
2 CENTERTOMARKER 2
3 GETZOOM 3
4 SETZOOM 4
5 GETLATITUDE 3
6 SETLATITUDE 4
7 GETLONGITUDE 3
8 SETLONGITUDE 4
9 EXPORT 5
10 LOADMARKERS 6
11 ISLAYERDISPLAYED 7
12 SETLAYERVISIBILITY 8
13 GETMARKERLATITUDE 9
14 SETMARKERLATITUDE 10
15 GETMARKERLONGITUDE 9
16 SETMARKERLONGITUDE 10
17 GETMARKERTOOLTIP 11
18 SETMARKERTOOLTIP 10
19 GETMARKERMIMIC 11
20 SETMARKERMIMIC 12
21 GETMARKERBRANCH 11
22 SETMARKERBRANCH 12
23 GETMARKERTYPE 13
24 GETUSERDATAVARIABLENAME 14
25 GETUSERDATALABEL 14
26 SETUSERDATALABEL 15
27 GETUSERDATAVALUE 14
28 SETUSERDATAVALUE 15
29 ISLOADING 16
30 GETMARKERVISIBILITY 17
31 SETMARKERVISIBILITY 10
32 SETMAPPROVIDER 18

Les modes associées aux marqueurs de carte (2, et de 11 à 28 inclus) généreront une erreur s'ils
sont exécutés lorsque le fichier de marqueurs est toujours en chargement.

Propriétés communes à tous les modes


Argument Signification
Window Nom de la fenêtre contenant le Contrôle de carte. Type STR.
Branch Branche de la fenêtre contenant le Contrôle de carte. Type STR.
MapID Identifiant du Contrôle de carte (dans la fenêtre). Type STR.
LayerName Identifiant d'un calque de marqueurs. Type STR.
MarkerName Identifiant d'un marqueur. Type STR.
ViewIndex Index de la vue (débutant à 1) s'il y a plus d'une vue de la fenêtre (synoptique) ouverte
dans la même région. Optionnel.
Value Nouvelle valeur pour la propriété de la carte. Le type dépend du contexte : soit DOUBLE,
soit STR.

Syntaxe 1

SV_SCADABasic_fr 263
MAPDISPLAY (Mode, Window, Branch, MapID);
Aucun retour.
Exécution
Mode Mnémonique Action
1 LOADDEFAULT Réinitialise les propriétés d'exécution du contrôle de carte à ses
valeurs par défaut, y compris le rechargement du fichier GPX
(marqueurs de carte).

Syntaxe 2
MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName[, ViewIndex]);
Aucun retour.
Exécution
Mode Mnémonique Action
2 CENTERTOMARKER Centre une carte sur un marqueur donné. Si le marqueur est
multipoints (tracé ou polygone), la carte est centrée sur le premier
point de l'objet. Si LayerName est vide, le calque par défaut est utilisé.

Syntaxe 3
DblVal = MAPDISPLAY (Mode, Window, Branch, MapID[, ViewIndex]);
Type de retour : DOUBLE.
Exécution
Mode Mnémonique Action
3 GETZOOM Retourne le niveau de zoom de la carte.
Retour : le niveau de zoom.
5 GETLATITUDE Retourne la latitude du centre de la carte en utilisant le système
WGS84.
Retour : la latitude.
7 GETLONGITUDE Retourne la longitude du centre de la carte en utilisant le système
WGS84.
Retour : la longitude.

Syntaxe 4
MAPDISPLAY (Mode, Window, Branch, MapID, Value[, ViewIndex]);
Aucun retour.
Exécution
Mode Mnémonique Action
4 SETZOOM Positionne un nouveau niveau de zoom pour la carte.
6 SETLATITUDE Positionne la latitude du centre de la carte en utilisant le système
WGS84.
8 SETLONGITUDE Positionne la longitude du centre de la carte en utilisant le système
WGS84.

Syntaxe 5
MAPDISPLAY (Mode, Window, Branch, MapID, FileName);
Aucun retour.
Argument Signification
FileName Nom du fichier à utiliser en sortie. Type STR.

SV_SCADABasic_fr 264
Exécution
Mode Mnémonique Action
6 EXPORT Crée un fichier de marqueurs contenant les marqueurs et les calques
d’un Contrôle de carte. Génère une erreur si le fichier des marqueurs
est en cours de chargement.

Syntaxe 6
MAPDISPLAY (Mode, Window, Branch, MapID, FileName[, AsyncFlag[, StateVar]])
Aucun retour.
Argument Signification
FileName Nom du fichier contenant les marqueurs. Type STR.
AsynchFlag Flag indiquant si le fichier doit être chargé de façon synchrone (0) ou asynchrone (1).
StateVar Nom d'une variable mesure indiquant le status du processus de chargement. Type STR.
0 = Succès
1 = Exécution
3 = Annulation
10 = Echec
Exécution
Mode Mnémonique Action
10 LOADMARKERS Charge les calques et les marqueurs depuis le fichier spécifié. Les
calques et marqueurs précédemment chargés sont effacés.

Syntaxe 7
IntVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName[, ViewIndex]);
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
11 ISLAYERDISPLAYED Retourne la visibilité d’un calque d'un Contrôle de carte donné en
prenant en compte la propriété Montrer et les limites de zoom.
Retour : 1 si visible, 0 sinon.

Syntaxe 8
MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, Value);
Aucun retour.
Exécution
Mode Mnémonique Action
12 SETLAYERVISIBILITY Positionne la visibilité d'un calque. Valeur :
1 : visible
0 : non visible

Syntaxe 9
DblVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName);
Type de retour : DOUBLE.
Exécution
Mode Mnémonique Action
13 GETMARKERLATITUDE Retourne les coordonnées de latitude (-90 à 90) d'un marqueur en
système WGS84. Ne fonctionne pas pour des marqueurs multipoints
(tracés ou polygones).

SV_SCADABasic_fr 265
Retour : les coordonnées de la latitude.
15 GETMARKERLONGITUDE Retourne les coordonnées de longitude (-180 à 180) d’un marqueur
en système WGS84. Ne fonctionne pas pour des marqueurs
multipoints (tracés ou polygones).
Retour : les coordonnées de la longitude.

Syntaxe 10
MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName, Value);
Aucun retour.
Exécution
Mode Mnémonique Action
14 SETMARKERLATITUDE Positionne les coordonnées de la latitude (-90 à 90) d'un marqueur
en système WGS84 en utilisant la valeur fournie. Ne fonctionne pas
pour des marqueurs multipoints (tracés ou polygones). Le paramètre
de la valeur est un double et est la valeur de la latitude.
16 SETMARKERLONGITUDE Positionne les coordonnées de la longitude (-180 à 180) d'un
marqueur en système WGS84 en utilisant la valeur fournie. Ne
fonctionne pas pour des marqueurs multipoints (tracés ou
polygones). Le paramètre de la valeur est un double et est la valeur
de la longitude.
18 SETMARKERTOOLTIP Positionne la description du marqueur (bulle d'aide). Le paramètre
Value est une chaîne et correspond au texte de la bulle d'aide..
31 SETMARKERVISIBILITY Positionne la visibilité du marqueur. Valeur :
1 : visible
0 : non visible

Syntaxe 11
StrVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName);
Type de retour : STRING.
Exécution
Mode Mnémonique Action
17 GETMARKERTOOLTIP Retourne la description (bulle d'aide) du marqueur dans la langue
courante.
Retour : la bulle d'aide du marqueur.
19 GETMARKERMIMIC Retourne le nom du synoptique devant être ouvert lors du clic sur le
marqueur.
Retour : le nom du synoptique.
21 GETMARKERBRANCH Retourne la branche du marqueur. Cette branche est utilisée pour lier
les propriétés du marqueur. Si la propriété synoptique est définie,
lorsqu'un utilisateur clique sur le marqueur, le synoptique s'ouvre avec
la branche correspondante. Pour des marqueurs de type symbole, la
branche est également assignée aux symboles instanciés.
Retour : la branche du marqueur.

Syntaxe 12
MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName, Value[, ChildMode]);
Aucun retour.
Argument Signification
ChildMode Flag indiquant si le synoptique à ouvrir est un synoptique enfant ou une fenêtre
indépendante.
Exécution

SV_SCADABasic_fr 266
Mode Mnémonique Action
20 SETMARKERMIMIC Positionne le nom du synoptique à ouvrir lors du clic sur le marqueur.
Le paramètre Value est une chaîne et le nom du synoptique.
Aucun retour.
22 SETMARKERBRANCH Positionne la branche du marqueur. Cette branche est utilisée pour lier
les propriétés du marqueur. Si la propriété synoptique est définie,
lorsqu'un utilisateur clique sur le marqueur, le synoptique s'ouvre avec
la branche correspondante. Pour des marqueurs de symbole, la
branche est également assignée aux symboles instanciés.
Aucun retour.

Syntaxe 13
IntVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName);
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
23 GETMARKERTYPE Retourne le type de marqueur. Retour :
1 = Forme
2 = Texte
3 = Image
4 = Symbole
5 = Tracé
6 = Polygone

Syntaxe 14
StrVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName, UserDataName);
Type de retour : STRING.
Argument Signification
UserDataName Nom donné à l'élément de la zone Données utilisateur comme configuré en utilisant
l'éditeur de marqueurs de carte. Type STR.
Exécution
Mode Mnémonique Action
24 GETUSERDATAVARIABLENAME Retourne le nom de la variable, tel que configuré pour le
UserDataName fourni, dans la zone Données utilisateur.
Retour : le nom de la variable.
25 GETUSERDATALABEL Retourne le libellé, tel que configuré pour le UserDataName
fourni, dans la zone Données utilisateur.
Retour : le libellé.
27 GETUSERDATAVALUE Retourne la valeur de la variable, tel que configurée pour le
UserDataName fourni, dans la zone Données utilisateur.
La valeur de la variable est une chaîne.

Syntaxe 15
MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName, UserDataName, Value);
Aucun retour.
Argument Signification
UserDataName Nom donné à l'élément de la zone Données utilisateur comme configuré en utilisant
l'éditeur de marqueurs de carte. Type STR.
Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 267
26 SETUSERDATALABEL Positionne le libellé pour le UserDataName fourni dans la zone
Données utilisateur. Le paramètre Value est une chaîne et le texte du
libellé.
Aucun retour.
28 SETUSERDATAVALUE Positionne la valeur de la variable pour le UserDataName fourni dans
la zone Données utilisateur. Le paramètre Value est une chaîne et la
valeur de la donnée.Aucun retour.

Syntaxe 16
IntVal = MAPDISPLAY (Mode, Window, Branch, MapID);
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
29 ISLOADING Teste si le fichier des marqueurs est chargé. Retour :
1 = En chargement
0 = Chargé

Syntaxe 17
IntVal = MAPDISPLAY (Mode, Window, Branch, MapID, LayerName, MarkerName);
Type de retour : INTEGER.
Exécution
Mode Mnémonique Action
30 GETMARKERVISIBILITY Retourne la visibilité du marqueur.
Retour : 1 si visible, 0 sinon.

Syntaxe 18
IntVal = MAPDISPLAY (Mode, Window, Branch, MapID, ProviderName, IsLocal [, UseCache]);
Type de retour : INTEGER.
Argument Signification
ProviderName Nom du fournisseur de cartes. Type STR.
IsLocal Carte locale ou en ligne.
1 carte locale, 0 carte en ligne.
UseCache Flag indiquant d'utiliser le cache.
1 utiliser le cache, 0 ne pas utiliser le cache.
Exécution
Mode Mnémonique Action
32 SETMAPPROVIDER Modifie le fournisseur de cartes.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 268
MDNP3
Voir aussi
Gère la communication via le protocole DNP3.
Mode Mnémonique Syntaxe
0 NETWORK_START 1
1 NETWORK_STOP 1
2 DEVICE_START 2
3 DEVICE_STOP 2
4 CLOCK_SYNCHRO 3
5 RESET or 3
COLD_RESTART
6 REFRESH_ATT 3
7 READ_CLASS 4
8 READ_GROUP 5, 6 ou 7
9 FREEZE 8
10 SELECT 9
11 OPERATE 9
12 DIRECT_OPERATE 10
13 SELECT_CROB 11
14 OPERATE_CROB 11
15 DIRECT_OPERATE_CR 11
OB
16 DIRECT_OPERATE_N 11
O_ACK_CROB

Généralités sur la variable de status ResultVar utilisée dans plusieurs modes


Aucun des modes d'instruction MDNP3 ne retourne une valeur. Au lieu de cela ils utilisent une variable de
résultat, dont le nom est un argument facultatif dans plusieurs des modes. ResultVar doit être une
variable de mesure et a seulement trois valeurs possibles.
0 - La commande est envoyée au réseau DPN3.
1 - La commande a été envoyée avec succès.
2 - La commande n'a pas été envoyée avec succès.

Syntaxe 1
MDNP3(Mode, NetworkID);
Argument Signification
NetworkID Identifiant du réseau. Type STR.

Exécution
Mode Mnémonique Action
0 NETWORK_START Démarre le réseau.
1 NETWORK_STOP Arrête le réseau.

Syntaxe 2
MDNP3(Mode, NetworkID, DeviceID);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.

Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 269
2 DEVICE_START Démarre l'équipement.
3 DEVICE_STOP Arrête l'équipement.

Syntaxe 3
MDNP3(Mode, NetworkID, DeviceID[, ResultVar]);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
4 CLOCK_SYNCHRO Synchronise l'heure de l'équipement.
5* RESET Demande à l'équipement d'exécuter un redémarrage à froid (code
fonction 13).
5* COLD_RESTART Demande à l'équipement d'exécuter un redémarrage à froid (code
fonction 13).
6 REFRESH_ATT Rafraîchit les attributs de l'équipement et l'horodate de l'équipement
dans le Superviseur (Lis les groupes d'objets 0 et 50).
* Mode 5 a deux mnémoniques. Les actions sont identiques.

Syntaxe 4
MDNP3(Mode, NetworkID, DeviceID, ClassNum [, ResultVar]);
Argument Signification
NetworkID Identifiant du réseau. Tye STR.
DeviceID Identifiant de l'équipement. Type STR.
ClassNum Numéro d'une classe DNP3. De 0 à 3.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
7 READ_CLASS Rafraîchit les données dans le Superviseur en demandant les données
associés à une des classes du DNP3.

Syntaxe 5
MDNP3(Mode, NetworkID, DeviceID, GroupNum, VariationNum, "START_STOP", Start, Stop[, ResultVar]);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.
GroupNum Numéro du groupe DNP3. Tout type numérique.
VariationNum Numéro de variation dans le groupe qui détermine le format d'encodage des données et
la présence (ou non) des flags et événements. Tout type numérique.
Start Numéro de la première donnée à lire. Tout type numérique.
Stop Numéro de la dernière donnée à lire. Tout type numérique.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
8 READ_GROUP Rafraîchit les données dans le Superviseur en demandant un ensemble
de données d'un groupe et en utilisant une variation spécifique pour
formater les données.

SV_SCADABasic_fr 270
Syntaxe 6
MDNP3(Mode, NetworkID, DeviceID, GroupNum, VariationNum, "QUANTITY", Quanitity[, ResultVar]);
Argument Signification
NetworkID Identifiant du réseau. Tye STR.
DeviceID Identifiant de l'équipement. Type STR.
GroupNum Numéro du groupe DNP3. Tout type numérique.
VariationNum Numéro de variation dans le groupe qui détermine le format d'encodage des données et
la présence (ou non) des flags et événements. Tout type numérique.
Quantity Numéro des points de données à lire. Tout type numérique.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
8 READ_GROUP Rafraîchit les données dans le Superviseur en demandant un ensemble
de données d'un groupe et en utilisant une variation spécifique pour
formater les données.

Syntaxe 7
MDNP3(Mode, NetworkID, DeviceID, GroupNum, VariationNum, "ALL"[, ResultVar]);
Argument Signification
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.
GroupNum Numéro du groupe DNP3. Tout type numérique.
VariationNum Numéro de variation dans le groupe qui détermine le format d'encodage de la donnée et
la présence (ou non) des flags et événements. Tout type numérique.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
8 READ_GROUP Rafraîchit les données dans le Superviseur en demandant toutes les
données d'un groupe et en utilisant une variation spécifique pour
formater les données.

Syntaxe 8
MDNP3(Mode, AckMode, ClearMode, NetworkID, DeviceID[, ResultVar]);
Argument Signification
AckMode Flag demandant un acquittement ou non. Soit "NO_ACK" (0) ou "ACK" (1).
ClearMode Flag demandant que les compteurs soient effacés ou non. Soit "DO_NOT_CLEAR" (0) ou
"CLEAR" (1).
NetworkID Identifiant du réseau. Type STR.
DeviceID Identifiant de l'équipement. Type STR.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
9 FREEZE Fige et efface les compteurs de l'équipement avec acquittement
optionnel.

Syntaxe 9
MDNP3(Mode, Variable, Valeur[, ResultVar]);
Argument Signification

SV_SCADABasic_fr 271
Variable Nom d'une variable liée à une donnée d'un équipement DNP3. La variable peut être une
mesure liée à un AO (analog output) ou un état lié à un BO (binary output). Type STR.
Valeur Valeur d'envoi de la variable.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
10 SELECT Envoi un message SELECT à l'équipement DPN3. Un SELECT doit être
suivi par un OPERATE.
11 OPERATE Envoi un message OPERATE à l'équipement DNP3. Un OPERATE doit
être précédé par un SELECT.

Syntaxe 10
MDNP3(Mode, Variable, Valeur[, NoAck, [ResultVar]]);
Argument Signification
Variable Nom d'une variable liée à une donnée d'un équipement DNP3. La variable peut être une
mesure liée à un AO (analog output) ou un état lié à un BO (binary output). Type STR.
NoAck Flag optionnel positionné à 1 (aucun acquittement n'est nécessaire) ou 0 (acquittement
nécessaire). Par défaut : 0.
Valeur Valeur d'envoi de la variable.
ResultVar Nom de la variable de mesure. Type STR.

Exécution
Mode Mnémonique Action
12 DIRECT_OPERATE Envoi un message DIRECT OPERATE à l'équipement DNP3.

Les messages envoyés à l'équipement DNP3 utilisent les modes 10, 11 et 12 incorporant une structure
datablock appelée un AOB (Analog Output Block) lors de l'utilisation pour une mesure ou un CROB (Contro
Relay Output Block) lors de l'utilisation avec un état. Quelques paramètres utilisés dans l'AOB ou le CROB s
fournis par les propriétés avancées de la variable.

Syntaxe 11
MDNP3(Mode, Variable, OpType, Queue, Clear, TripClose, Count, OnTime, OffTime[, ResultVar]);
Argument Signification
Variable Nom d'une variable liée à une donnée d'un équipement DNP3. La variable peut être une
mesure liée à un AO (analog output) ou un état lié à un BO (binary output). Type STR.
OpType Voir ci-dessous.
Queue Voir ci-dessous.
Clear Voir ci-dessous.
TripClose Voir ci-dessous.
Count Temps d'exécution de l'opération.
OnTime CROB off time en millisecondes. Tout type numérique.
OffTime CROB on time en millisecondes. Tout type numérique.
ResultVar Nom de la variable de mesure. Type STR.

Codage d'un argument OpType


Mnémonique Valeur
"NULL" 0
"PULSE_ON" 1
"PULSE_OFF" 2
"LATCH_ON" 3
"LATCH_OFF" 4

SV_SCADABasic_fr 272
Codage d'un argument Queue
Mnémonique Valeur
"DO_NOT_QUEUE" 0
"QUEUE" 1

Codage d'un argument Clear


Mnémonique Valeur
"DO_NOT_CLEAR" 0
"CLEAR" 1

Codage d'un TripClose


Mnémonique Valeur
"NULL" 0
"TRIP" 1
"CLOSE" 2

Exécution
Mode Mnémonique Action
13 SELECT_CROB Envoi un message SELECT à l'équipement DNP3. Les propriétés CROB
sont fournies comme des arguments plutôt que par les propriétés
avancées de la variable. Un SELECT doit être suivi par un OPERATE.
14 OPERATE_CROB Envoi un message OPERATE à l'équipement DNP3. Les propriétés
CROB sont fournies comme des arguments plutôt que par les
propriétés avancées de la variable. Un OPERATE doit être précédé par
un SELECT.
15 DIRECT_OPERATE_CROB Envoi un message DIRECT OPERATE à l'équipement DNP3. Les
propriétés CROB sont fournies comme des arguments plutôt que par
les propriétés avancées de la variable.
16 DIRECT_OPERATE_NO_AC Envoi un DIRECT OPERATE sans message d'acquittement à
K_CROB l'équipement DNP3. Les propriétés CROB sont fournies comme des
arguments plutôt que par les propriétés avancées de la variable.

Si la propriété Adresse différente est activée dans la configuration de la variable ceci est toujours pris en
compte.

SV_SCADABasic_fr 273
MID
Voir aussi
Renvoie une sous-chaîne d'une chaîne de caractères.

Syntaxe
StrVal = MID(Input, Start [, Num]);
Type de retour : STR
Argument Signification
Input Chaîne à manipuler. Type STR.
Start Position de départ pour la sous-chaîne à retourner (0 si 1er caractère). Tout type
numérique.
Num Nombre de caractères dans la sous-chaîne retournée. Tout type numérique.
Exécution
Copie "longueur" caractères de "chaîne" à partir du "début"ième caractère de "chaîne" (soit 0 pour le 1er
caractère). Si longueur est omis ou s'il est supérieur à la partie restante de la chaîne, la chaîne est
recopiée jusqu'à sa fin. Si début est supérieur à la longueur de la chaîne, une chaîne vide est renvoyée.

Exemple
SUB Main()
DIM strChain1 as Str;
DIM strChain2 as Str;
DIM inti1 as Integer;
DIM inti2 as Integer;

inti1 = 7;
inti2 = 5;
strChain1 = "Hello, World!";
strChain2 = MID (strChain1,inti1,inti2); '5 characters from the 7th
Print("Return: ",strChain2);
'Display "Return: World"
END SUB

SV_SCADABasic_fr 274
MULTIMEDIA
Voir aussi Exemple
Fournit un accès à une Interface de Contrôle de Média (MCI). Pour voir le fichier d'aide MCI, cliquer ici. (Le
fichier zip - doit d'abord être extrait).
Mode Mnémonique Syntaxe
0 SEND 1
1 OPENW 2
2 WINDOW 3

Syntaxe 1
StrVal = MULTIMEDIA(Mode, MCI_String);
Type de retour : STR
Argument Signification
MCI_string Chaîne de caractères à utiliser. Type STR.
Exécution
Mode Mnémonique Action
0 SEND Envoi d'une chaîne de caractères libre à la syntaxe MCI. La chaîne de
caractères retournée est soit le retour de la commande s'il n'y a pas eu
d'erreur, soit la chaîne descriptive de l'erreur.

Syntaxe 2
IntVal = MULTIMEDIA(Mode, device_id, res_name[, window [, wbranch [, x, y, w, h]]]);
Type de retour : INTEGER
Argument Signification
device_id Alias de la ressource.
res_name Nom de la ressource.
window Fenêtre contenant la ressource.
wbranch Branche du synoptique contenant la ressource.
x, y Coordonnées du coin en haut à gauche.
w, h Largeur et hauteur.
Exécution
Mode Mnémonique Action
1 OPENW Ouvre la ressource vidéo res_name (fichier d'animation AVI, Vidéo Overlay,
etc...) avec l'alias device_id en l'incrustant éventuellement dans la fenêtre
identifiée par window et sa branche wbranch, et en positionnant
éventuellement l'incrustation dans le rectangle spécifié par son point
haut/gauche x y, sa largeur w et sa hauteur h dans le système de coordonnées
de cette fenêtre. Si aucune fenêtre n'est spécifiée, une fenêtre indépendante de
l'application est ouverte dont window est le titre.

L'image est positionnée en utilisant les coordonnées du coin en haut à gauche (x et y). La taille est
spécifiée par sa largeur et sa hauteur (w et h). Si aucune fenêtre n'est spécifiée, une fenêtre est
créée en dehors de l'application.

Retour : 1 si OK, 0 sinon.

Syntaxe 3

SV_SCADABasic_fr 275
IntVal = MULTIMEDIA(Mode, device_id, window , wbranch[, x, y, w, h]);
Type de retour : INTEGER
Argument Signification
device_id Alias de la ressource.
window Fenêtre contenant la ressource.
wbranch Branche du synoptique contenant la ressource.
x, y Coordonnées du coin en haut à gauche.
w, h Largeur et hauteur.
Exécution
Mode Mnémonique Action
2 WINDOW Incrustation de la ressource vidéo identifiée par son alias device_id dans la
fenêtre identifiée par window et sa branche wbranch, et en positionnant
éventuellement l'incrustation dans le rectangle spécifié par son point
haut/gauche x y, sa largeur w et sa hauteur h dans le système de coordonnées
de cette fenêtre.

L'image est positionnée en utilisant les coordonnées du coin en haut à gauche (x et y). La taille est
spécifiée par sa largeur et sa hauteur (w et h). Si aucune fenêtre n'est spécifiée, une fenêtre est
créée en dehors de l'application.

Renvoie 1 si OK, 0 sinon (fenêtre window non chargée par exemple).

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 276
OCT
Voir aussi
Renvoie une chaîne représentant en octal un nombre passé en base 10.

Syntaxe
StrVal = OCT(N);
Type de retour : STR
Argument Signification
N Nombre à convertir. Tout type numérique.
Exécution
Le nombre renvoyé comporte au maximum 16 caractères.

Exemple
SUB Main()
Declare
DIM IntValue as integer;
DIM strResult as Str;
IntValue = 13;
strResult = OCT(IntValue);
'Euclidean division: 13 = 1*8 + 5
Print("OCT(",IntValue,") = ",strResult);
'Displays "OCT(13) = 15"
END SUB

SV_SCADABasic_fr 277
OPC
Voir aussi
Gère les échanges avec un serveur OPC configuré dans le Superviseur.
Mode Mnémonique Syntaxe
1 READ 1
5 SETTRACE 2
6 RESETTRACE 2
7 PUTMASKTRACE 2
8 SAVEMASKTRAN 2
CE
9 STARTGROUP 2
10 STOPGROUP 2
11 STARTSERVER 3
12 STOPSERVER 3

Le mode READ remplace les modes précédents READ_SYNC et READ_ASYNC.

Le mode ACTIVATE_ITEMS n'est plus supporté.

Les modes 5 à 8 servent à gérer les traces. Vous pouvez ainsi lancer toutes les actions de l'onglet
Traces de la boîte de dialogue Serveur OPC. Les actions (cocher pour positionner ou décocher
pour réinitialiser) modifient le masque de traces comme affiché en bas de cette boîte de dialogue.
Voir l'image

SV_SCADABasic_fr 278
Syntaxe 1
OPC (Mode, szURL [,ReadFrom]);
Type de retour : Aucun
Comme configuré dans les paramètres OPC du Superviseur :
Argument Signification
szURL Chaîne de caractères formée par ServerAlias/GroupName ou ServerAlias.
ServerAlias Nom donné à l'Alias du Serveur dans la configuration OPC du Superviseur. Type STR.
GroupName Nom de groupe. Type STR.
ReadMemor Possibilité de lire depuis :
y Equipement - Mémoire de l'équipement ou
Cache - Depuis la mémoire du serveur OPC.

Les paramètres ServerAlias et GroupName sont séparés par un seul caractère barre
oblique (back-slashes : /).
Exécution
Mode Mnémonique Action
1 READ Effectue une lecture du groupe GroupName du serveur ServerAlias en
effectuant une lecture de bout en bout avec les équipements gérés par le
serveur. Les paramètres de lecture sont donnés par la configuration du groupe

SV_SCADABasic_fr 279
(synchrone ou asynchrone).

Syntaxe 2
OPC (Mode, szURL);
Type de retour : Aucun.
Argument Signification
szURL Chaîne de caractères formée par ServerAlias/GroupName ou ServerAlias.
ServerAlias Nom donné à l'Alias du Serveur dans la configuration OPC du Superviseur. Type STR.
GroupName Nom donné au Groupe dans la configuration OPC du Superviseur. Type STR.
Exécution
Mode Mnémonique Action
5 SETTRACE Positionne le masque de traces du serveur OPC.
6 RESETTRACE Remet à zéro le masque de traces du serveur OPC.
7 PUTMASKTRACE Positionne le masque de toutes les traces du serveur OPC.
8 SAVEMASKTRACE Sauvegarde le masque de toutes les traces du serveur OPC. Au
prochain démarrage, le masque de traces sera le masque sauvegardé.
9 STARTGROUP Démarre le groupe identifié.
10 STOPGROUP Stoppe le groupe identifié.

L’application peut détecter que la phase de démarrage du groupe est terminée grâce à la
variable : SYSTEM.OPC.ServerAlias.GroupName.ON.

Syntaxe 3
OPC (Mode, ServerAlias);
Type de retour : Aucun.
Argument Signification
ServerAlias Nom donné à l'Alias du Serveur dans la configuration OPC du Superviseur. Type STR.
Exécution
Mode Mnémonique Action
11 STARTSERVER Démarre le serveur identifié par ServerAlias.
12 STOPSERVER Stoppe le serveur identifié par ServerAlias.

L’application peut détecter que le serveur a démarré ou stoppé grâce à la variable :


SYSTEM.OPC.ServerAlias.ON.

SV_SCADABasic_fr 280
OPTIONLIST
Voir aussi Exemple
Propriétés d'accès du contrôle Option-button list.
Mode Mnémonique Syntaxe
1 COUNT 1
2 GETSELECTEDINDEX 1
3 SETSELECTEDINDEX 2
4 GETTEXT 4
5 GETUSERDATA 4
6 GETSTATE 4
7 SETSTATE 3
8 LOAD 5
9 GETEVENTTYPE 1
10 GETOPTION 1
11 SETOPTION 2
12 INSERT 6
13 REMOVE 7
14 SORT 8

Note importante sur la terminologie utilisée et le fonctionnement du contrôle Option-button list dans le
Superviseur :
• L'élément qui est POSITIONNE est celui dont le radio-bouton est rempli.
• L'élément qui est SELECTIONNE est celui dont le texte est en surbrillance (changement de couleur
d'arrière-plan).

Un item POSITIONNE n'est pas nécessairement SELECTIONNE (et vice versa). En programmation vous n'êt
normalement intéressés que par les éléments POSITIONNES. L'élément SELECTIONNE a une moindre
importance.
Pour plus d'information sur le comportement du contrôle Option-button list, voir l'aide principale du
Superviseur.

Toutes les syntaxes


Argument Signification
Window Nom de la fenêtre contenant le contrôle de formulaire. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utiliser "*" pour indiquer la branche courante du
programme. Type STR.
Identity Identifiant du contrôle dans la fenêtre spécifiée. Type STR.

Syntaxe 1
Return = OPTIONLIST(Mode, Window, Branch, Identity);

Exécution
Mode Mnémonique Action
1 COUNT Retourne le nombre d'éléments. Type LONG.
2 GETSELECTEDINDEX Retourne l'index de l'élément actuellement sélectionné. Type LONG.
9 GETEVENTTYPE Retourne le type de l'événement le plus récent. Type LONG.
Le retour est une valeur de poids binaire.
Bit 0: La sélection a été modifiée.
Bit 1: L'état d'un élément a été modifié.

SV_SCADABasic_fr 281
10 GETOPTION Retourne l'index de l'élément positionné. Si aucun élément n'est positionné
: retourne -1. Type LONG

Syntaxe 2
Return = OPTIONLIST(Mode, Window, Branch, Identity, Index, Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Pour que cela fonctionne, il doit être aussi autorisé dans l'onglet Opérations de la
boîte de dialogue des propriétés Option-button list.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Exécution
Mode Mnémonique Action
3 SETSELECTEDINDEX Sélectionne l'élément correspondant à l'index fourni.
Retour : 1 si OK, 0 sinon.
11 SETOPTION Positionne l'élément correspondant à l'index fourni.
Retour : Index de l'élément positionné ou -1 si aucun index n'est vérifié. Type
INTEGER.

Syntaxe 3
Return = OPTIONLIST(Mode, Window, Branch, Identity, Index, State, Notification);
Argument Signification
Index Index de l'élément à sélectionner. Type LONG.
Si l'index est -1, aucun élément n'est sélectionné.
State Etat à positionner. La valeur peut être 0 ou 1. Type INTEGER
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Pour que cela fonctionne, il doit être aussi autorisé dans l'onglet Opérations de la boîte
de dialogue des propriétés Option-button list.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Exécution
Mode Mnémonique Action
7 SETSTATE Positionne l'état de l'élément correspondant à l'index fourni. Type LONG.
Retour : 1 si OK, 0 sinon.

Syntaxe 4
Return = OPTIONLIST(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index de l'élément dont le texte est à retourner.

SV_SCADABasic_fr 282
Exécution
Mode Mnémonique Action
4 GETTEXT Retourne le Texte de l'élément comme défini dans la langue courante en
utilisation. Type STR.
5 GETUSERDATA Retourne les données utilisateur associées à l'élément. Type STR.
6 GETSTATE Retourne l'Etat de l'élément (coché ou non). Type LONG.

Syntaxe 5
Return = OPTIONLIST(Mode, Window, Branch, Identity, FileName);
Argument Signification
FileName Nom du fichier contenant les données du contrôle.

Exécution
Mode Mnémonique Action
8 LOAD Charge le contenu du fichier de la liste du contrôle des éléments. Type INTEGER.
Retour : 1 si OK (fichier chargé), 0 sinon.

Syntaxe 6
Return = OPTIONLIST(Mode, Window, Branch, Identity, Text, Userdata, [Index]);
Argument Signification
Text Texte à insérer. Type STR.
Userdata Données utilisateurs à insérer. Type STR.
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
12 INSERT Insère le texte et les données utilisateur optionnelles dans la liste du contrôle. Si
l'index est omis, le texte est inséré au début. Si l'index est -1, le texte est inséré
à la fin. Autrement, le texte est inséré à la position indiqué par l'index.
Retour : 1 si OK, 0 sinon.

Syntaxe 7
Return = OPTIONLIST(Mode, Window, Branch, Identity, Index);
Argument Signification
Index Index d'un élément dans le contrôle. Type LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
13 REMOVE Supprime l'élément sélectionné dans la liste.
Retour : 1 si OK, 0 sinon.

Syntaxe 8
Return = OPTIONLIST(Mode, Window, Branch, Identity[, Sortorder, Orderby]);

SV_SCADABasic_fr 283
Argument Signification
Sortorder Flag indiquant l'ordre du tri. 0 = ascendant, 1 = descendant.
Orderby Flag indiquant quelles données à trier. 0 = Texte, 1 = Données utilisateur.
Type de retour : LONG.

Exécution
Mode Mnémonique Action
14 SORT Trie la liste du contrôle en utilisant le critère spécifié.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 284
POPULATION
Voir aussi Exemple Spécifiques
Une population est un filtre s'appliquant à la base de données d'une station (en utilisant l'instruction
STATION_FILTER) pour contrôler la distribution des variables.
L'instruction POPULATION permet de créer des populations en utlisant le langage de programmation. Les
populations peuvent aussi être créées par l'option Population du sous-menu Configuration.Variables.

Mode Mnémonique Syntaxe


1 CREATE 1
2 ADDLINE 2
3 DUMP 3

Syntaxe 1
IntVal = POPULATION(Mode, Handle);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer mémoire.
Exécution
Mode Mnémonique Action
1 CREATE Création des populations définies dans le buffer. Si le buffer contient une
description de filtres.
Retour : 1 si OK, 0 sinon.

Définition d'une Population


Voir le chapitre Définition d'une Population.

Syntaxe 2
IntVal = POPULATION(Handle, Line);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer mémoire
Line Ligne du filtre. Type STR.
Exécution
Mode Mnémonique Action
2 ADDLINE Ajoute une ligne au filtre.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
IntVal = POPULATION(Mode, Name);
Type de retour : INTEGER
Argument Signification
Name Voir syntaxe 1.
Exécution
Mode Mnémonique Action
3 DUMP Affichage dans la fenêtre de mise au point des programmes de la population

SV_SCADABasic_fr 285
repérée par identifiant.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 286
POW
voir aussi
Fonction puissance.

Syntaxe
DblVal = POW(x, y);
Type de retour : DOUBLE
Argument Signification
x et y Tout type numérique.
Exécution
Retour : x à la puissance y.

Les variables de la base de données sont de type SINGLE.


En cas d'affectation avec cette fonction, la conversion en SINGLE est donc nécessaire si l'on veut
éviter une erreur de type.

Exemple
SUB Main()
DIM dblResult as double;
DIM dblValue1 as double;
DIM dblValue2 as double;
dblValue1 = 2.5;
dblValue2= 2;
dblResult = POW(dblValue1,dblValue2);
Print("Result of 2.5^(2) = ",dblResult);
'Display "Result of 2.5^(2) = 6.25"
END SUB

SV_SCADABasic_fr 287
PRINT
Voir aussi
Affiche des données dans la fenêtre programme.

Syntaxe
IntVal = PRINT(Data1[, Data2....[, Data10]]);
Type de retour : INTEGER
Argument Signification
Data1 à 10 Information à imprimer. (Maximum 10 items.) Tous les types de variables sont supportés.
Exécution
N'importe quel type de donnée peur être passé en paramètres.
Les résultats sont affichés dans la fenêtre de mise au point des programmes.
Le format d'affichage est le suivant :
Donnée Format
STR Tel que passé en paramètre.
INTEGER Entier signé.
LONG Long signé.
SINGLE [-]dddd.dddddd le nombre de digit avant le point décimal dépend de l'amplitude du nombre.
DOUBLE [-]dddd.dddddd ou [-]d;dddE[sign]ddd.
CONST [-]dddd.dddddd ou [-]d;dddE[sign]ddd.
Retour : Toujours 1.

Exemple
SUB Main()
DIM dblValue1 as double;
DIM dblValue2 as double;

dblValue1 = 2.5;
dblValue2= 2;

Print(dblValue1,dblValue2);
'Display "2.52"
Print("dblValue1",dblValue2);
'Display "dblValue12"
Print("dblValue1 ",dblValue2);
'Display "dblValue1 2"
Print("dblValue1 = ",dblValue1);
'Display "dblValue1 = 2.5"
Print("Hello,"," ","World","!");
'Display "Hello, World!"
END SUB

SV_SCADABasic_fr 288
PRINTER
Voir aussi Exemple
Mise en service ou hors service d'une imprimante.
Mode Mnémonique Syntaxe
0 PAUSE 1
1 REPLAY 1
2 CLEAR 1
3 GETNB 1
4 STATUS 1
5 SELECT 2
6 FLUSH 1
7 CLOSE 1
8 OPEN 1

Syntaxe 1
IntVal = PRINTER(Mode, ID);
Argument Signification
ID Numéro d'imprimante concerné (1 à 8).

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
0 PAUSE Met hors-service l'imprimante. Ceci suspend l'impression, puis la redémarre
après la période d'attente.
1 REPLAY Met en service l'imprimante, par exemple redémarre l'impression sans perte de
données dans le buffer d'impression.
2 CLEAR Vide le buffer circulaire interne (anneau). Si le spouleur de l'imprimante est
activé alors tous les messages qui attendent dans le spouleur seront effacés. Si
le spouleur de l'imprimante est désactivé alors tous les messages du buffer
interne du Superviseur seront effacés.
Retour : Toujours 1.
3 GETNB Renvoie le nombre de lignes contenues dans le buffer.
4 STATUS Renvoie 1 si l'imprimante est "en service", 0 sinon.
6 FLUSH Si le spouleur de l'imprimante est activé tous les messages sont envoyés à
l'imprimante. Si le spouleur de l'imprimante est désactivé, la demande est mise
en attente et sera traitée lorsque le spouleur sera activé.
7 CLOSE Met hors service l'imprimante et vide le buffer d'impression. Le Superviseur ne
garde pas en mémoire les événements à imprimer.
8 OPEN Met en service l'imprimante.
Retour : 1 si OK, 0 sinon.

Modes 0 et 1 : PAUSE remplace OFF et REPLAY remplace ON.

La taille maximale du buffer interne est de 2 000 messages.

SV_SCADABasic_fr 289
Syntaxe 2
IntVal = PRINTER(Mode, Main, Standby);
Argument Signification
Main Numéro de l'imprimante principale dans le premier champ de définition dans PARAM.DAT.
Standby Numéro de l'imprimante de secours dans le 16ème champ de définition dans PARAM.DAT.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
5 SELECT Sélection d'un chemin d'adressage d'une imprimante à travers un réseau
(imprimante redondante).
Retour : 1 si OK, 0 sinon.

Exemple
sub PRN1HS() 'pause printing on PRN1 and
PRINTER("OFF", 1); 'resume printing on PRN2
PRINTER("ON", 2);
END SUB

sub PRN1RS() 'resume printing on PRN2 and


PRINTER("OFF", 2); 'pause printing on PRN1
PRINTER("ON", 1);
END SUB
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 290
PROGRAM
Voir aussi Exemple
Exécute, charge, enlève ou stoppe un programme.
Mode Mnémonique Syntaxe
0 STOP 1
1 START 1, 3
2 IS_LOADED 1
3 PRELOAD 1,3
4 UNLOAD 1
5 EXECUTE 1
9 FUNCTION 2
10 IS_FUNCTION 2

Syntaxe 1
IntVal = PROGRAM(Mode, ProgName, Branch) ;
Type de retour : INTEGER
Argument Signification
ProgName Nom du programme.
Branch Branche de la base de données pour le programme.
Exécution
Mode Mnémonique Action
0 STOP Stoppe l'exécution d'un programme et décharge.
Retour : 1 si OK, 0 sinon.
1 START Charge un programme et l'exécute.
Retour : 1 si OK, 0 si déjà chargé ou inexistant.
2 IS_LOADED Test si le programme est chargé.
Retour : 1 si chargé, 0 sinon.
3 PRELOAD Charge le programme.
Retour : 1 si OK, 0 si déjà chargé ou inexistant.
4 UNLOAD Décharge le programme.
Retour : 1 si OK, 0 si non chargé.
5 EXECUTE Exécute le programme.
Retour : 1 si OK, 0 si non chargé.

Syntaxe 2
IntVal = PROGRAM(Mode, ProgName, Branch, Function[,Farg]) ;
Type de retour : INTEGER
Argument Signification
ProgName Nom du programme.
Branch Branche de la base de données pour le programme.
Function Nom de la fonction dans le programme ProgName.
Farg Facultatif. Contient de 1 à 8 arguments séparés par des virgules. Jusqu'à 2 047 caractères.

SV_SCADABasic_fr 291
Type STR.
Exécution
Mode Mnémonique Action
9 FUNCTION Lance la fonction contenue dans nom_programme. Si le nom de fonction n'est
pas renseigné, c'est le MAIN qui est éxécuté.
Retour : 1 si OK, 0 si fonction ou programme non chargé.
10 IS_FUNCTION Renvoie 1 si la fonction existe, 0 sinon.

Le nom de branche n'est pas propagé dans le MAIN du programme.

La fonction doit être pré-chargée avant d'être démarrée. Si la fonction appelante inclut une
branche, la fonction doit être pré-chargée avec la même branche.

Syntaxe 3
IntVal = PROGRAM(Mode, ProgName, Branch, [,Dynamic]) ;
Type de retour : INTEGER
Argument Signification
ProgName Nom du programme.
Branch Branche de la base de données pour le programme.
Dynamic Optionnel. 0 pour un chargement normal, 1 pour un chargement dynamique.
Exécution
Mode Mnémonique Action
1 START Charge le programme et l'exécute. Si le paramètre optionnel Dynamic est 1, le
programme est chargé et exécuté même si une copie de celui-ci est déjà
chargée.
Retour : 1 si OK, 0 sinon.
3 PRELOAD Charge le programme. Si le paramètre optionnel Dynamic est 1, le programme
est rechargé même si une copie de celui-ci est déjà chargée.

Exemple
IF(PROGRAM("IS_LOADED", "toto", "")==0) THEN
PROGRAM("START", "toto", "");
ENDIF
IF(PROGRAM("IS_LOADED", "toto", "")==0) THEN
PRINT("Program file not found");
ENDIF
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 292
PUT_BUFFER
Voir aussi
Insère une donnée dans une zone mémoire.

Syntaxe
PUT_BUFFER(Handle, Offset, Data);
Type de retour : aucun
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER ou FILETOBUF. Type LONG.
Offset Offset à ajouter au handle, donne la position de départ d'écritre des données. Tout type
numérique.
Data Données à inserer dans le buffer. Type STR.
Exécution
Insère une donnée dans une zone mémoire réservée par un ALLOC_BUFFER à l'offset précisé.

Exemple
SUB Main()
'Declare
DIM lngBuffer1 as Long;
DIM strLine as Str;
DIM intLength as Integer;

lngBuffer1 = ALLOC_BUFFER(110);
strLine = "123.34;string_here;345;123456789;‚t‚\n";
PUT_BUFFER(lngBuffer1, 0, strLine);
intLengh = ASCIIFIELD("LEN",lngBuffer1);
PRINT("Length: ",intLengh);
FREE_BUFFER(lngBuffer1);
END SUB

SV_SCADABasic_fr 293
RECIPE
Voir aussi Exemple Spécifiques
Gestion des recettes.
Mode Mnémonique Syntaxe
1 EXIST 1
2 SEND 1, 5
3 REALTIME 1, 2
4 READ 3
5 CREATE 4
6 SENDEVEN 1, 5
7 REALTIMEEVEN 1, 2
8 STARTWATCH 6, 7
9 STOPWATCH 1, 5, 10
10 REALTIMECREATE 5, 8
11 REALTIMECREATEEVEN 5, 8
12 REFRESH 9
14 NETWORKBROADCAST 11
15 NETWORKBROADCAST 12
ALL

Les valeurs des poids des droits d'accès sont décrits dans le chapitre Poids des Droits d'Accès.
La taille maximum du fichier recette pour le mode SEND est de 128 Ko.
La taille maximum du fichier recette pour le mode NETWORKBROADCAST est de 64 Ko.

Syntaxe 1
IntVal = RECIPE(Mode, Identifier);
Type de retour : INTEGER
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration des
Recettes). Type STR.
Exécution
Mode Mnémonique Action
1 EXIST Test si une recette existe, la recette est identifiée par son numéro ou par son
libellé.
Retour :
0 signifie que la recette n'existe pas
1 signifie que le n° de la recette existe
2 signifie que le libellé de la recette existe
2 SEND Envoi direct d'une recette.
Retour : 1 si OK, 0 sinon.
3 REALTIME Modification d'une recette en prenant les valeurs temps réel.
Retour : 1 si OK, 0 sinon.
6 SENDEVEN La recette est envoyée même si certaines variables la composant sont invalides
ou hors limites.

SV_SCADABasic_fr 294
Retour : 1 si OK, 0 sinon.
7 REALTIMEEVEN Les valeurs de la recette sont rafraîchies, même si certaines sont NS ou hors
limites (ces dernières gardent leurs valeurs d'origine).
Retour : 1 si OK, 0 sinon.
9 STOPWATCH Permet de stopper une demande de rafraîchissement des valeurs d'une recette.
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = RECIPE(Mode, Identifier, NewNum, NewTitle, Flag, File);
Type de retour : INTEGER
Argument Signification
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration
des Recettes). Type STR.
NewNum Numéro de la nouvelle recette. Type STR.
NewTitle Titre de la nouvelle recette. Type STR.
Flag Sauvegarde de la nouvelle recette dans un fichier (0 ou 1).
File Nom du fichier dans lequel la recette est sauvegardée (si Flag = 1).
Exécution
Mode Mnémonique Action
3 REALTIME Modification d'une recette en prenant les valeurs temps réel.
Cet appel prend les valeurs courantes de chaque variable de la recette
"identificateur" et crée une nouvelle recette.
Retour : 1 si OK, 0 sinon.
7 REALTIMEEVEN Les valeurs de la recette sont rafraîchies, même si certaines sont NS ou hors
limites (ces dernières gardent leurs valeurs d'origine).
Retour : 1 si OK, 0 sinon.

Le nom du fichier dans lequel la recette a été sauvegardée ne peut pas être renommé par cette
commande, c'est-à-dire que les paramètres NewNum, NewTitle et File ne doivent pas être
modifiés.

Syntaxe 3
IntVal = RECIPE(Mode, Identifier, Handle, Size);
Type de retour : INTEGER
Argument Signification
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration
des Recettes). Type STR.
Handle Localisation du buffer mémoire retournée par un ALLOC_BUFFER. Type LONG.
Size Taille du fichier recette. Doit être supérieure à taillemax pour contenir la description de
la recette.
Exécution
Mode Mnémonique Action
4 READ Lecture d'une recette dans un buffer ASCII.
Retour : 1 si OK, 0 sinon.

Syntaxe 4

SV_SCADABasic_fr 295
IntVal = RECIPE(Mode, Handle, NewNum, NewTitle, Flag, File);
Type de retour : INTEGER
Argument Signification
Handle Localisation du buffer mémoire retournée par un ALLOC_BUFFER. Type LONG.
NewNum Numéro de la nouvelle recette. Type STR.
NewTitle Titre de la nouvelle recette. Type STR.
Flag Sauvegarde de la nouvelle recette dans un fichier (0 ou 1).
File Nom du fichier dans lequel la recette est sauvegardée (si Flag = 1).
Exécution
Mode Mnémonique Action
5 CREATE Création d'une recette à partir d'un buffer ASCII. La recette dont la description
est dans le buffer est ajoutée dans le système de recette du superviseur.
Retour : 1 si OK, 0 sinon.

Syntaxe 5
IntVal = RECIPE(Mode, Identifier, Branch);
Type de retour : INTEGER
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration des
Recettes). Type STR.
Branch Branche de la base de données qui préfixe tous les noms de variable dans la liste des recettes.
Type STR.
Exécution
Mode Mnémonique Action
2 SEND Envoi direct de la recette.
Retour : 1 si OK, 0 sinon.
6 SENDEVEN La recette est envoyée même si certaines variables la composant sont
invalides ou hors limites. Une branche peut être passée en argument.
Retour : 1 si OK, 0 sinon.
9 STOPWATCH Permet de stopper une demande de rafraîchissement des valeurs d'une
recette.
Retour : 1 si OK, 0 sinon.
10 REALTIMECREATE Modifie une recette en prenant les valeurs temps réel. Une branche peut être
passée en argument.
Retour : 1 si OK, 0 sinon.
11 REALTIMECREATEE Les valeurs de la recette sont rafraîchies, même si certaines sont NS ou hors
VEN limites.(Ces dernières gardent leurs valeurs d'origine.). Une branche peut
être passée en argument.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
WatchID = RECIPE(Mode, Identifier, Varname, Status);
Type de retour : INTEGER.
Argument Signification
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration
des Recettes). Type STR.

SV_SCADABasic_fr 296
Varname Nom de la variable état dans la base de données. Type STR.
Status 0 ou 1.
Exécution
Mode Mnémonique Action
8 STARTWATCH Mode permettant de "rafraîchir" les variables de la recette qui ne sont pas
cochées en "Surveillance permanente pour l'imagerie" (case à cocher de la
boîte de dialogue Options dans une fiche de description de variable). En créant
un événement sur changement de valeur de "état", une fonction peut être
éxécutée.
Retour : LONG identifiant la demande de "STARTWATCH"
1 les valeurs ont été rafraîchies.
0 l'identificateur n'a pas été trouvé ou la variable état n'a pas le bon type.

Syntaxe 7
WatchID = RECIPE(Mode, Identifier, Varname, Status, Branch);
Type de retour : INTEGER
Argument Signification
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration
des Recettes). Type STR.
Varname Nom de la variable état dans la base de données. Type STR.
Status 0 ou 1.
Branch Branche de la base de données qui préfixe tous les noms de variable dans la liste des
recettes.
Type STR.
Exécution
Mode Mnémonique Action
8 STARTWATCH Mode permettant de "rafraîchir" les variables de la recette qui ne sont pas
cochées en "Surveillance permanente pour l'imagerie".En créant un événement
sur changement d'état de "état", une fonction peut être éxécutée. Une branche
peut être passée en argument.
LONG identifiant la demande de "STARTWATCH"
1 les valeurs ont été rafraîchies.
0 l'identificateur n'a pas été trouvé ou la variable état n'a pas le bon type.

Syntaxe 8
IntVal = RECIPE(Mode, Identifier, Branch, NewNum, NewTitle, File);
Type de retour : INTEGER
Identifier Identifiant de la recette, soit le libellé, soit le numéro de la recette (voir Configuration des
Recettes). Type STR.
Branch Branche de la base de données qui préfixe tous les noms de variable dans la liste des recettes.
Type STR.
NewNum Numéro de la nouvelle recette. Type STR.
NewTitle Titre de la nouvelle recette. Type STR.
File Nom du fichier dans lequel la recette est sauvegardée (si flag = 1).
Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 297
10 REALTIMECREATE Modification ou création d'une recette contenant des variables avec branche
(voir Mode = 3).
Retour : 1 si OK, 0 sinon.
11 REALTIMECREATEE Modification ou création d'une recette contenant des variables avec branche
VEN même si certaines variables sont en status NS (voir Mode = 7).
Une nouvelle recette est créé avec les valeurs temps réél de la recette
branchée.
Retour : 1 si OK, 0 sinon.

Le nom du fichier dans lequel la recette a été sauvegardée ne peut pas être renommé par cette
commande, c'est-à-dire que les paramètres NewNum, NewTitle et File ne doivent pas être
modifiés.

Syntaxe 9
IntVal = RECIPE(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
12 REFRESH Force la relecture de la liste des recettes.Les recettes contenues dans le
répertoire "R" du projet, sont rechargées.Ce mode permet de prendre en
compte des ajouts ou suppression de recettes de manière externe au
superviseur.
Retour : 1 si OK, 0 sinon.

Syntaxe 10
IntVal = RECIPE(Mode, WatchID);
Type de retour : INTEGER
WatchID L'identificateur de la précédente fonction STARTWATCH. Type LONG.
Exécution
Mode Mnémonique Action
9 STOPWATCH Permet de stopper une demande de rafraîchissement des valeurs d'une recette.
Retour : 1 si OK, 0 sinon.

Syntaxe 11
IntVal =RECIPE(Mode, RecipeID, List, HStatus, EventVar, LocalRemote);
Argument Signification
RecipeID Nom ou numéro de la recette. Type STR.
List Nom de la liste des postes de l'architecture multipostes destinaires des modifications
(liste créée par le menu Configuration.Communication.Multipostes). Type STR.
HStatus Handle du buffer alloué par ALLOC_BUFFER. Après l'exécution de l'instruction, le buffer
contient une liste des postes et leur statut de mise-à-jour suivant le format :
StaNum,Status,...;.,...;...;
où StaNum est le numéro du poste et Status est à 1 si 0K, 0 sinon.
EventVar Nom de la variable état de la base de données positionnée à 1 après exécution de
l'instruction. Si EventVar n'est pas nécessaire une chaîne nulle ("") doit être utilisée car
cet argument ne peut pas être omis. Type STR.
LocalRemote Flag déterminant l'emplacement où le changement de configuration de la recette doit

SV_SCADABasic_fr 298
être propagé :
1 : Tous les postes (y compris le poste local).
0 : Seulement les postes déportés (par défaut).
Exécution
Mode Mnémonique Action
14 NETWORKBROADC Propagation d’une recette sur les postes définis dans la liste.
AST
Retour : 1 si OK, 9 sinon.

Syntaxe 12
IntVal =RECIPE(Mode, List, HStatus, EventVar, LocalRemote);
Argument Signification
List Nom de la liste des postes de l'artchitecture multipostes destinaires des modifications
(liste créée par le menu Configuration.Communication.Multipostes). Type STR.
HStatus Handle du buffer alloué par ALLOC_BUFFER. Après l'exécution de l'instruction, le buffer
contient une liste des postes et leur statut de mise-à-jour suivant le format :
StaNum,Status,&ldots;.,&ldots;&ldots;
où StaNum est le numéro du poste et Status est à 1 si 0K, 0 sinon. Type LONG.
EventVar Nom de la variable état de la base de données positionnée à 1 après exécution de
l'instruction. Si EventVar n'est pas nécessaire une chaîne nulle ("") doit être utilisée car
cet argument ne peut pas être omis. Type STR.
LocalRemote Flag déterminant l'emplacement où le changement de configuration de la recette doit
être propagé :
1 : Tous les postes (y compris le poste local).
0 : Seulement les postes déportés (par défaut).
Exécution
Mode Mnémonique Action
15 NETWORKBROADCA Diffusion de l'ensemble des recettes sur les postes définis dans la liste.
STALL
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 299
REFRESH_DB
Voir aussi
Affectation asynchrone de variables de la base de données à partir d'un fichier ASCII
Mode Mnémonique Syntaxe
0 SETUP 1
1 LOAD 2

Syntaxe 1
IntVal = REFRESH_DB(Mode, AssignTime, IdleTime);
Argument Signification
AssignTime Temps alloué à une tranche de traitement d'affectation des variables. Valeur par défaut
: 250 ms. Type INTEGER.
IdleTime Temps de suspension entre deux tranches de traitement. Valeur par défaut : 250 ms.
Type INTEGER.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
0 SETUP Paramétrage des délais du traitement asynchrone. Le traitement peut être
découpé dans le temps en plusieurs tranches afin de ne pas être bloquant vis-
à-vis de l'interface.

Si le mode SETUP est appellé sans argument, les valeurs 0 et 0 sont retenues, ce qui signifie que le
traitement est effectué en une seule passe et peut donc être éventuellement bloquant selon la taille
du fichier traité.

Syntaxe 2
IntVal = REFRESH_DB(Mode, Filename [, Type]);
Filename Nom du fichier dans lequel l'affectation sera faite. La syntaxe doit être la suivante :
id1, val1
id2, val2
............
idn, valn
où :
id est l'identificateur de la variable
val est la valeur d'affectation
Type Spécifie le type de fichier :
0 Nom complet de la variable. (Défaut)
1 Tagname de la variable.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
1 LOAD Lancement d'un traitement d'affectation des variables de la base à partir du
fichier ASCII filename. Si le chemin d'accès du fichier n'est pas indiqué, il sera
recherché dans le répertoire TP du projet courant.

SV_SCADABasic_fr 300
Retour : 1 si OK, 0 sinon.

Exemple
sub rdb_set()
refresh_db("SETUP", 800, 1000);
END SUB
sub rdb_go()
DIM i as integer;
i = 0;
while (i == 0)
i = refresh_db("LOAD", "C\\DLOAD\\tstvar.txt");
delay(2);
wend
END SUB

SV_SCADABasic_fr 301
REGION
Voir aussi Exemple
Gère le nombre de régions d'affichage.
Mode Mnémonique Syntaxe
1 SETSYSREGION 1
2 GETSYSREGION 2
3 SETREGION 1
4 GETREGION 2
5 SETSELECTION 3
6 GETSELECTION 2
7 GETSELECTIONMO 2
DE

Syntaxe 1
IntVal = REGION(Mode, Regions);
Argument Signification
Regions Nombre de régions. Type INTEGER.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
1 SETSYSREGION Fixe dynamiquement le nombre de régions de l'écran, de 1 à 4.
3 SETREGION Fixe la région courante dans laquelle toutes les ouvertures de fenêtres
suivantes auront lieu.
Retour : -1 si erreur, OK sinon.

Lors de l'utilisation de régions multiples, vous devez positionner la région avant l'exécution
d'instructions qui interagissent avec l'IHM (WINDOW, ALARMDISPLAY, etc ...).
Dim iRegion As Integer;
iRegion = 1;
Region ("SETREGION", iRegion);
Window("OPEN", "Alarmwindow", "");

Si vous exécutez un programme depuis une animation, vous pouvez obtenir la région de
localisation du synoptique en utilisant GETARG("VARSTATUS")
Dim iRegion As Integer;
iRegion = GETARG("VARSTATUS");
Region ("SETREGION", iRegion);
Alarmdisplay("ACK_SELECTED", "Alarmwindow", "", "Alarm1");

Syntaxe 2
IntVal = REGION(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
2 GETSYSREGION Retourne le nombre de régions de l'écran.

SV_SCADABasic_fr 302
4 GETREGION Retourne la région courante.
6 GETSELECTION Retourne la région sélectionnée.
7 GETSELECTIONMO Retourne le mode sélection.
DE

Syntaxe 3
IntVal = REGION(Mode, Regions[, SubMode]);
Argument Signification
Regions Nombre de région. Type INTEGER.
SubMode Tout type numérique.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
5 SETSELECTION Sélectionne une région dans laquelle toutes les futures fenêtres initialisées par
l'animation Chaînage Ouverture apparaîtront.
sousmode = 0 : la fenêtre est ouverte dans la même région que la fenêtre
dans laquelle l'animation Chaînage Ouverture réside.
sousmode = 1 : la fenêtre est toujours ouverte dans la région sélectionnée.
La sélection est mémorisée même après que le système soit arrêté et
redémarré. C'est l'option par défaut.
sousmode = 2 : la première animation Chaînage Ouverture sélectionnée
après l'instruction ouvre la fenêtre dans la région sélectionnée. Par la suite
les ouvertures se feront de la même manière que pour le sousmode 0.
Retour : -1 si erreur, OK sinon.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 303
REGVAR2D
Voir aussi
Force l'utilisation de variables mesure en type DOUBLE dans un programme.

Syntaxe
REGVAR2D([Flag]);
Type de retour : Aucun
Argument Signification
Flag 0 ou 1
Exécution
Dépend of Flag.
Setting Signification
1 Force l'utilisation des variables mesure en type DOUBLE pour les programmes. (Défaut)
2 N'autorise pas l'utilisation des variables mesure en type DOUBLE dans les programmes
(le type SINGLE leur est appliqué).

Exemple
'Database variables
'@REGISTER01: Register type
'@REGISTER02: Register type

SUB Main()
REGVAR2D(1);
'The register variable is now type Double
'so this assignment works correctly:
@REGISTER01 = COS(45);

REGVAR2D(0);
'Automatic conversion to Double is disabled.
'The next line causes a runtime error
'because the Register variable is now Single:
@REGISTER02 = COS(45);
END SUB

SV_SCADABasic_fr 304
RENAME
Voir aussi
Renomme un fichier.

Syntaxe
IntVal = RENAME(OldName, NewName);
Argument Signification
OldName Nom courant du fichier. Type STR.
NewName Nouveau nom du fichier. Type STR.

Type de retour : INTEGER


Exécution
Retour : 1 si 0K, 0 sinon.

Le fichier à renommer ne doit pas être ouvert.

Exemple
'Create a file old.txt in the TP folder
SUB Main()
If (RENAME("old.txt","new.txt")==0) Then
'If the Rename command does not work,
'that is because the new file already exists,
'so delete it if possible:
If (UNLINK("nouveau.txt")==1) Then
RENAME ("old.txt","new.txt");
Else
Print("Ensure that the new file is not already open.");
End If
End If
END SUB

SV_SCADABasic_fr 305
REPLACE

Voir aussi Exemple


Recherche, et remplace, une sous-chaîne de caractères.

Syntaxe
StrVal = REPLACE (InputString, OldSubString, NewSubString[, CaseSensitive[, OccurrenceCount]]);

Argument Signification
InputString Chaîne saisie. Longueur maximum : 32 000 caractères. Type STR.
OldSubString Sous-chaîne à rechercher. Longueur maximum : 2 047 caractères. Type STR.
NewSubString Chaîne de remplacement. Longueur maximum : 2 047 caractères. Type STR.
CaseSensitive Flag indiquant si la recherche est casse sensitive :
0 = Casse ignorée (par défaut).
1 = Respecter la casse.
OccurrenceCount Nombre maximum d'occurences de OldSubString à remplacer. Tous types
numériques.

Exécution

Action
Recherche InputString pour les occurrences de OldSubString et remplace avec NewSubString. Type de
retour : STR.
Retour : Chaîne modifiée.

SV_SCADABasic_fr 306
RETURN
Voir aussi Exemple
Sortie de procédure.

Syntaxe
RETURN(Value);
Type de retour : Aucun
Argument Signification
Value Valeur retournée par la fonction. Tout type de variable.
Exécution
Sortie de la procédure courante et retour à la procédure appelante avec renvoi éventuel d'une valeur.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 307
RIGHT
voir aussi
Copie les n derniers caractères de la chaîne.

Syntaxe
StrVal = RIGHT(Input, N);
Type de retour : STR
Argument Signification
Input Chaîne de caractères à manipuler. Type STR.
N Nombre de caractères à retourner. Tout type numérique.
Exécution
Si N est supérieur à la longueur de la chaîne, la chaîne entière est retournée.

Exemple
SUB Main()
DIM strResult as Str;
DIM strString as Str;

strString = "Hello, World!";


strResult = Right( strString ,6); 'take the last 6 characters
Print("Result: ", strResult );
'Display "Result: World!"
END SUB

SV_SCADABasic_fr 308
RTRIM
Voir aussi
Renvoie la copie d'une chaîne sans les espaces à droite.

Syntaxe
StrVal = RTRIM(string);
Type de retour : STR

Exemple
SUB Main()
'Declare
DIM strResult as Str;
DIM strValue as Str;

strValue = "Hello, World! "; 'with trailing spaces


strResult = RTrim(strValue);
Print("RTrim(",strValue,") = ",strResult);
'Display "RTrim(Hello, World! ) = Hello, World!"
END SUB

SV_SCADABasic_fr 309
SELECTOR
Voir aussi Exemple Spécifiques
Modification des caractéristiques d'une animation contrôle grid.
Lors de l'utilisation de régions multiples, vous devez positionner la région avant l'exécution
d'instructions qui interagissent avec l'IHM. Pour plus d'informations, voir le chapitre REGION.

Numérotation des lignes et colonnes dans un Contrôle Grid


Les lignes et colonnes de données sont numérotées à partir de 0.
Les entêtes de lignes et de colonnes (Lignes/Colonnes fixes dans la boîte de dialogue des propriétés du
Contrôle Grid) sont numérotées à partir de -1. Voir l'image

Mode Mnémonique Syntaxe


1 GETNBLINE 1
2 GETNBCOL 1
3 GETCELL 2
4 GETLINE 3
5 GETCOL 4
6 GETARRAY 5
7 PUTCELL 6
8 PUTLINE 3
9 PUTCOL 4
10 PUTARRAY 5
11 SCROLL 7
12 GETLISTART 1
13 GETNBLINEMAX 1
14 VARIABLE 9
15 VARMODE 10
16 SELECTLINE 1
17 SELECTCOL 1
18 SELECTMODE 7
19 SFIRSTCELL 1
20 SNEXTCELL 1
21 ALLSELOFF 1
22 CLICKCELL 2
23 GETSEL 2
24 SELPROG 11

SV_SCADABasic_fr 310
25 INPUTPROG 11
26 CLEAR 1
27 SETNBLINE 8
28 GETLASTCELL 1
30 SORT 12
31 GETCELLBACKCOLOR 13
32 GETCELLTEXTCOLOR 13
33 PUTBACKCOLOR 14
34 PUTTEXTCOLOR 14
35 GETVARNAME 15
36 HISTORICAL Voir le chapitre SELECTOR
mode HISTORICAL

Syntaxe 1
IntVal = SELECTOR(Mode, Window, Branch, Identity);
Type de retour : INTEGER
Argument Signification
Window Nom du synoptique qui contient l'animation contrôle grid. Type STR.
Branch Branche éventuelle avec laquelle ce synoptique a été ouvert Type STR.
Identity Identifiant de l'animation qui a été saisi sur la fiche de configuration de l'animation contrôle
grid. Type STR.
Exécution
Mode Mnémonique Action
1 GETNBLINE Renvoie le nombre de ligne affichables (selon la dimension du
rectangle support), 0 si erreur de syntaxe.
2 GETNBCOL Renvoie le nombre de colonnes de l'animation, 0 si erreur de syntaxe.
12 GETLISTART Renvoie l'indice de la première ligne visible par rapport à l'ensemble
du contrôle grid, 0 si erreur de syntaxe
13 GETNBLINEMAX Renvoie le nombre total de lignes présentes dans la mémoire du
tableau, 0 si erreur de syntaxe.
16 SELECTLINE Renvoie l'indice de la ligne de la cellule couramment sélectionnée, - 1
si aucune cellule sélectionnée.
17 SELECTCOL Renvoie l'indice de la colonne de la cellule courramment sélectionnnée,
- 1 si aucune cellule sélectionnée.
19 SFIRSTCELL Multisélection uniquement : Trouve la première cellule sélectionnée à
partir du début du tableau (0,0). Utiliser les modes 16 (SELECTLINE)
et 17 (SELECTCOL) pour obtenir respectivement la ligne et la colonne
de la cellule trouvée.
Renvoie 1 si une cellule a été trouvée, 0 sinon.
20 SNEXTCELL Multisélection uniquement : Trouve la prochaine cellule sélectionnée à
partir de la dernière cellule trouvée par cette même fonction ou par le
mode 19 ( SFIRSTCELL).
Utiliser les modes 16 (SELECTLINE) et 17 (SELECTCOL) pour obtenir
respectivement la ligne et la colonne de la cellule trouvée.
L'ordre de balayage s'effectue de gauche à droite puis de haut en bas.
Renvoie 1 si une cellule a été trouvée, 0 sinon.

SV_SCADABasic_fr 311
21 ALLSELOFF Permet de désélectionner toutes les cellules sélectionnées d'un
tableau.
Renvoie 1 si OK, 0 sinon.
26 CLEAR Permet de vider tout le tableau. Les cellules sont réinitialisées.
Renvoie 1 si OK, 0 sinon.
28 GETLASTCELL Renvoie le nombre de ligne rempli dans le tableau.

Syntaxe 2
StrVal = SELECTOR(Mode, Window, Branch, Identity, Line, Column);
Argument Signification
Line L'index de la ligne. Type INTEGER.
Column L'index de la colonne. Type INTEGER.
Exécution
Mode Mnémonique Action
3 GETCELL Renvoie le contenu de la cellule pointée par ligne et colonne (en base 0). Type
de retour : STR
22 CLICKCELL Simule une action de clic souris sur la cellule de ligne et de colonne spécifiée.
Renvoie 1 si OK, 0 sinon. Type de retour : INTEGER
23 GETSEL Récupère l'attribut de sélection, permet donc de savoir si la cellule de ligne et
de colonne spécifiée est sélectionnée ou non. Renvoie 1 si elle est
sélectionnée, 0 sinon. Type de retour : INTEGER

Syntaxe 3
IntVal = SELECTOR(Mode, Window, Branch, Identity, Line, Hbuf, Csepa);
Type de retour : INTEGER
Argument Signification
Hbuf Localisation du buffer mémoire retournée par un ALLOC_BUFFER . Type LONG.
Csepa Caractère simple utilisé comme délimiteur de chaque colonne. Type STR.
Exécution
Mode Mnémonique Action
4 GETLINE Remplit le buffer hbuf avec la ligne pointée par lig, le séparateur de colonne
étant csepa.
8 PUTLINE Remplit la ligne lig du tableau avec le contenu du buffer hbuf, le séparateur
de colonne étant csepa

Syntaxe 4
IntVal = SELECTOR(Mode, Window, Branch, Identity, Col, Hbuf, Lsepa);
Type de retour : INTEGER
Argument Signification
Lsepa Caractère simple utilisé comme délimiteur de fin de chaque ligne. Type STR.
Exécution
Mode Mnémonique Action
5 GETCOL Remplit le buffer hbuf avec la colonne pointée par colonne, le séparateur de
ligne étant lsepa
9 PUTCOL Remplit la colonne col du tableau avec le contenu du buffer hbuf, le

SV_SCADABasic_fr 312
séparateur de ligne étant lsepa

Syntaxe 5
IntVal = SELECTOR(Mode, Window, Branch, Identity, Hbuf, StartLine, StartCol, EndLine, EndCol, CLsepa);
Type de retour : INTEGER
Argument Signification
StartLine L'index de début de la ligne. Type INTEGER.
StartCol L'index de début de la colonne. Type INTEGER.
EndLine L'index de fin de la ligne. Type INTEGER.
EndCol L'index de finde la colonne. Type INTEGER.
CLsepa Deux caractères utilisés comme délimiteurs pour le texte dans chaque colonne et ligne. Type
STR.
Exécution
Mode Mnémonique Action
6 GETARRAY Remplit le buffer hbuf avec une zone définie par une cellule de début haut
gauche (li_start, co_start) jusqu'à une cellule de fin (li_end, co_end), les
séparateurs sont donnés dans une chaîne de caractères (2 caractères) dans
clsepa. Si le buffer n'a pas été créé ou si le nom du buffer est vide, celui-ci
est créé automatiquement à la bonne taille. La fonction retourne alors le
handle du buffer.
10 PUTARRAY Remplit le tableau avec le contenu du buffer hbuf, à partir de la cellule
(li_start, co_start), les séparateurs sont donnés dans une chaîne de
caractères (2 caractères) dans clsepa

Dans les deux modes, les deux caractères fournis par CLsepa sont utilisés comme délimiteurs de colonne
et de ligne.

Syntaxe 6
IntVal = SELECTOR(Mode, Window, Branch, Identity, Line, Column, Chain);
Type de retour : INTEGER
Argument Signification
Chain Chaîne de caractère. Type STR.
Exécution
Mode Mnémonique Action
7 PUTCELL Remplit la cellule du tableau (ligne, colonne) avec la chaîne passée en
argument.

Syntaxe 7
IntVal = SELECTOR(Mode, Window, Branch, Identity, OpMode [, LineNo]);
Type de retour : INTEGER
Argument Signification
OpMode Nombre indiquant le mode opérationnel du contrôle grid.
LineNo Nombre indiquant une ligne spécifique. Type INTEGER.
Exécution
Mode Mnémonique Action
11 SCROLL Déroule le contenu du contrôle grid à travers la zone de visibilité du
support.

SV_SCADABasic_fr 313
Les sous-modes définis par SCROLLMode sont :
1 TOBEGIN
2 PAGEUP
3 LINEUP
4 LINEDOWN
5 PAGEDOWN
6 TOEND
7 TOLINE (Un numéro de ligne spécifique doit apparaître)
8 TOFIRSTCOL
9 PAGELEFT
10 COLLEFT
11 COLRIGHT
12 PAGERIGHT
13 TOLASTCOL
14 TOCOL (Un numéro de colonne spécifique doit apparaître)
Retour : 1 si OK, 0 sinon.
18 SELECTMODE Permet de changer dynamiquement le comportement aux actions
opérateurs dans les cellules. L'argument OpMode définit le comportement
:
0 OFF
1 MONO
3 MULTI
5 INPUT
Retour : 1 si OK, 0 sinon.

Syntaxe 8
IntVal = SELECTOR(Mode, Window, Branch, Identity, LineNo);
Type de retour : INTEGER
Argument Signification
LineNo Numéro indiquant une ligne spécifique. Type INTEGER.
Exécution
Mode Mnémonique Action
27 SETNBLINE Permet de définir la dernière ligne qui sera visible par défilement. Si les
lignes visibles sont au-delà de la nouvelle valeur nbline, le tableau se
positionne sur cette dernière ligne. Une écriture dans une cellule au-delà de
nbline repositionne nbline
Retour : 1 si OK, 0 sinon.

Syntaxe 9
IntVal = SELECTOR(Mode, Window, Branch, Identity, Filter, VarType);
Type de retour : INTEGER
Argument Signification
Filter Filtre, appliqué au nom de la variable, pour les variables affichées.
Selon la configuration de l'AIgrid, soit :

SV_SCADABasic_fr 314
• Une expression régulière - Pour plus d'informations, voir le chapitre Expressions
régulières.
• Une expression SQL - Pour plus d'informations, voir le chapitre Utilisation d'une
Expression SQL pour Filtrer une Liste de Variables dans la section d'aide
"Développement de l'IHM".

Entier définissant la classe de variable :


VarType
1 Etats
2 Alarmes
4 Mesures
8 Textes

Il est possible de combiner les types entre eux. Si l'on veut les alarmes et les états, VARTYPE = 1+2
= 3.
Exécution
Mode Mnémonique Action
14 VARIABLE Permet de remplir automatiquement le contrôle grid par des variables de la
base de données qui correspondent au filtre de sélection "filter" choisi. Ce
filtre porte sur le nom des variables et sa syntaxe doit être conforme au
standard des expressions régulières.
Retour : 1 si OK, 0 sinon.

Pour utiliser ce mode, la propriété Suivi de variables de l'animation contrôle grid doit être positionnée
en premier.

Les fonds de texte des valeurs sont affichés avec la couleur de sélection du tableau si ces variables
sont commandables. Un clic sur la valeur fait apparaître une boîte de dialogue identique à celle qui
est utilisée pour les Forçages.

Syntaxe 10
IntVal = SELECTOR(Mode, Window, Branch, Identity, VarType);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
15 VARMODE Ce mode permet d'afficher le nom et le libellé des variables dans la première
colonne du contrôle grid. Le nom de la variable est affiché si VarType = 0, le
libellé si VarType = 1 ou bien les deux si VarType = 2.
Retour : 1 si OK, 0 sinon.

Syntaxe 11
IntVal = SELECTOR(Mode, Window, Branch, Identity, program, pbranch, function [farg]);
Argument Signification
Farg Facultatif. Chaîne de 2 047 caractères maximum, contenant de 1 à 8 arguments séparés par
des , (virgule). Ces arguments sont récupérables dans la fonction à exécuter par le verbe
GETARG

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
24 SELPROG Permet de spécifier une fonction qui sera éxécutée dès qu'une cellule du

SV_SCADABasic_fr 315
tableau est cliquée. Le tableau doit être en mode monosélection ou
multisélection. SELECTLINE et SELECTCOL sont positionnés.
Retour : 1 si OK, 0 sinon.
25 INPUTPROG Permet de spécifier une fonction qui sera éxécutée dès qu'une boîte de
dialogue de saisie directe est validée. Le tableau doit être en mode de saisie
directe. SELECTLINE et SELECTCOL sont positionnés.
Retour : 1 si OK, 0 sinon.

Syntaxe 12
IntValt = SELECTOR(Mode, Window, Branch, Identity, Column, Flag);
Type de retour : INTEGER
Argument Signification
Colum Numéro de la colonne. Type INTEGER.
Flag Indicateur de l'ordre de tri. Type INTEGER.
Exécution
Mode Mnémonique Action
30 SORT La colonne de numéro num_colonne est triée en ordre croissant si ordre est
supérieur ou égal à 0
0 ou supérieur : croissant
inférieur à 0 : décroissant.
Retour : 1 si OK, 0 sinon.

Lors de l'utilisation d'un contrôle grid pour afficher les valeurs de variables de la base de données,
seules les variables de la zone visible du contrôle grid sont abonnées et ont des valeurs temps-réel.

Syntaxe 13
IntValt = SELECTOR(Mode, Window, Branch, Identity, Line, Column);
Argument Signification
Line Index d'une ligne. Type INTEGER.
Column Index d'une colonne. Type INTEGER.
Color Couleur d'une valeur d'un octet en valeur RGB. Rouge est l'octet 0, vert l'octet 1 et bleu
l'octets 2. Par exemple, rouge est 255, vert 65280 et jaune (rouge + vert) 65535. Type
LONG.
Exécution
Mode Mnémonique Action
31 GETCELLBACKOLOR Retourne la couleur de fond d'une cellule comme une valeur
d'octet.
Type de retour : LONG.
32 GETCELLTEXTCOLOR Retourne la couleur du texte d'une cellule comme une valeur
d'octet.
Type de retour : LONG.

Syntaxe 14
IntValt = SELECTOR(Mode, Window, Branch, Identity, StartLine, StartCol, EndLine, EndCol, Color);
Type de retour : INTEGER.
Argument Signification
StartLine Index d'une ligne. Type INTEGER.

SV_SCADABasic_fr 316
StartCol Index d'une colonne. Type INTEGER.
EndLine Index d'une ligne. Type INTEGER.
EndCol Index d'une colonne. Type INTEGER.
Color Couleur d'une valeur d'un octet. Type LONG.
Exécution
Mode Mnémonique Action
33 PUTBACKCOLOR Modifie la couleur de fond d'une gamme de cellules par la couleur
donnée par le paramètre Color. La gamme des cellules est définie
par les paramètres StartLine, StartCol, EndLine, EndCol.
34 PUTTEXTCOLOR Modifie la couleur du texte d'une gamme de cellules par la
couleur donnée par le paramètre Color. La gamme des cellules
est définie par les paramètres StartLine, StartCol, EndLine,
EndCol.

Syntaxe 15
IntValt = SELECTOR(Mode, Window, Branch, Identity, LineNo,);
Type de retour : STR.
Argument Signification
LineNo Numéro indiquant une ligne spécifique. Type INTEGER.
Exécution
Mode Mnémonique Action
35 GETVARNAME Retourne le nom de la variable dans la ligne spécifiée lorsque le
contrôle grid est en mode suivi.
Retour : Nom de la variable.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 317
SELECTOR mode HISTORICAL
Voir aussi Exemple Plus d'informations
Sélectionne les données affichées dans une animation contrôle grid. Ce chapitre ne traite que du mode
HISTORICAL. Voir le chapitre principal SELECTOR pour les autres modes.
Si vous utilisez un projet en régions multiples, vous devez paramétrer la région avant d'exécuter
les instructions qui interagissent avec l'IHM. Voir le chapitre REGION pour plus d'informations.

Mnémonique du sous-mode Syntaxe


GETCOUNT 1
INSERTTREND 2
REMOVETREND 3
CLEARTRENDS 1
SETTREND 4
GETTRENDBYINDEX 5
GETINDEX 6
RESTOREDEFAULT 1
CANCEL 1
REQUEST 7
EXPORT 1

Toutes syntaxes
Argument Signification
Window Nom de la fenêtre contenant le contrôle grid à utiliser. Type STR.
Branch Branche de la fenêtre (si nécessaire). L'utilisation d'un "*" signifie la branche courante
du programme. Type STR.
Identity Identifiant du contrôle grid dans la fenêtre spécifiée. Type STR.

Syntaxe 1
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity);
Type de retour : INTEGER.
Exécution
Sous-mode Action
GETCOUNT Retourne le nombre de variables en tendance dans la liste.
Retour : -1 si la fonction échoue, sinon le nombre de tendance dans la liste.
CLEARTRENDS Supprime toutes les variables en tendance dans la liste. Type de retour :
INTEGER.
Retour : -1 si la fonction échoue, sinon le nombre de variables en tendance
supprimées.
RESTOREDEFAULT Restaure la liste des variables et des seuils en tendance comme la configuration
d'origine du contrôle grid.
Retour : La quantité de variables en tendance restaurées si OK, -1 sinon.
CANCEL Annule la requête aux historiques courante.
Retour : 1 si 0K, -1 sinon.
EXPORT Démarre l'assistant d'Export depuis le contrôle grid spécifié.
Retour : 1 si 0K, -1 si Contrôle Grid pas en mode historiques, 0 sinon.

SV_SCADABasic_fr 318
Syntaxe 2
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity, VarName [, Index]);
Type de retour : INTEGER.
Argument Signification
VarName Nom d'une variable. Type STR.
Index Index dans la liste. 1 = début de la liste. Type INTEGER.
Exécution
Sous-mode Action
INSERTTREND Insère une nouvelle variable en tendance dans la liste des variables à la position Index.
Si le paramètre Index est omis, la variable est insérée au début de la liste.
Retour : -1 si la fonction échoue, sinon la position de la variable dans la liste.

Syntaxe 3
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity[, Index]);
Type de retour : INTEGER.
Argument Signification
Index Index dans la liste. 1 = début de la liste. Type INTEGER.
Exécution
Sous-mode Action
REMOVETREND Supprime la variable en tendance, à la position Index, depuis la liste des variables. Si le
paramètre Index est omis, la variable de la fin de la liste est supprimée.
Retour : -1 si la fonction échoue, sinon la position de la variable dans la liste.

Syntaxe 4
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity, Index, VarName[,
Thresholds]);
Type de retour : INTEGER.
Argument Signification
VarName Nom d'une variable. Type STR.
Index Index dans la liste. 1 = début de la liste. Type INTEGER.
Thresholds Flag. Type INTEGER.
Exécution
Sous-mode Action
SETTREND Modifie la variable en tendance à la position Index. Le flag Thresholds indique si le
système de seuil doit être conservé (1) ou supprimé (0). 0 par défaut.
Retour : 1 si 0K, -1 sinon.

Syntaxe 5
StrVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity, Index);
Type de retour : STR.
Argument Signification
Index Index dans la liste. 1 = début de la liste. Type INTEGER.
Exécution
Sous-mode Action
GETTRENDBYINDEX Retourne le nom de la variable en tendance à la position du paramètre Index.
Retour : Nom de la variable si OK, chaîne vide sinon.

SV_SCADABasic_fr 319
Syntaxe 6
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity, VarName);
Type de retour : INTEGER.
Argument Signification
VarName Nom d'une variable. Type STR.
Exécution
Sous-mode Action
GETTINDEX Retourne l'index de la variable en tendance nommée.
Retour : Index du nom de la variable si OK, chaîne vide sinon.

Syntaxe 7
IntVal = SELECTOR("HISTORICAL", Sous-mode, Window, Branch, Identity, StatusVariable [,StartTime,
EndTime[, SamplingRateInterval[, SamplingRateValue[, SynchroSecondValue, SynchroMinuteValue,
SynchroHourValue, SynchroDayValue]]]]));
Type de retour : INTEGER.
Argument Signification
StatusVariable Nom d'une variable mesure. Positionné à 1 lorsque la requête est en cours
d'exécution, 0 sinon.
StartTime Equivalent à la valeur fournie par la variable Heure de début dans l'onglet
Historiques/Durée de la boîte de dialogue de configuration du contrôle grid.
Type DOUBLE.
EndTime Equivalent à la valeur fournie par la variable Heure de fin dans l'onglet
Historiques/Durée de la boîte de dialogue de configuration du contrôle grid.
Type DOUBLE.
SamplingRateInterval Equivalent à l'unité du taux d'échantillonnage dans l'onglet
Historiques/Echantillonnage de la boîte de dialogue de configuration du contrôle
grid. Type INTEGER.
0 = millisecondes
1 = secondes
2 = minutes
3 = heures
4 = jours
5 = semaines
6 = mois
SamplingRateValue Equivalent à la propriété Taux d'échantillonnage de l'onglet
Historiques/Echantillonnage de la boîte de dialogue de configuration du contrôle
grid.Type INTEGER.
SynchroSecondValue Equivalent à la propriété Secondes de l'onglet Historiques/Echantillonnage de la
boîte de dialogue de configuration du contrôle grid. Type INTEGER.
SynchroMinuteValue Equivalent à la propriété Minutes de l'onglet Historiques/Echantillonnage de la
boîte de dialogue de configuration du contrôle grid. Type INTEGER.
SynchroHourValue Equivalent à la propriété Heures de l'onglet Historiques/Echantillonnage de la
boîte de dialogue de configuration du contrôle grid. Type INTEGER.
SynchroDayValue Equivalent à la propriété Jours de l'onglet Historiques/Echantillonnage de la
boîte de dialogue de configuration du contrôle grid. Type INTEGER.
Exécution
Sous-mode Action
REQUEST Génère une nouvelle requête aux historiques pour le contrôle grid en utilisant les
paramètres fournis. Pour une explication complète du fonctionnement des paramètres,
voir l'aide du contrôle grid
Retour : 1 si 0K, -1 si Contrôle Grid pas en mode historiques, 0 sinon.
Exemple

SV_SCADABasic_fr 320
Pour plus d'exemples, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 321
SENDLIST
Voir aussi Plus d'informations
Envoi d'une liste de variable.
Cette instruction est utilisée en conjonction avec l'instruction SET.

Mode Mnémonique Syntaxe


0 BLOC 1
1 MULTIPLE 1

Syntaxe 1
IntVal = SENDLIST(Mode[, VarName[, OPCMode]]);
Type de retour : INTEGER
Argument Signification
VarName Nom de la variable mesure de la base de données dans laquelle est retourné le status d'envoi
des variables. Type STR.
Les valeurs de status d'envoi des variables sont les suivantes :
0 En cours d'envoi.
1 Acquittement positif de l'envoi.
2 Acquittement négatif de l'envoi.
OPCMode Mode d'envoi lorsque la source de la valeur de la variable est OPC :
0 Sérialisation optimisée (par défaut)
1 Sérialisation complète
2 Aucune optimisation
3 Optimisation complète
Exécution
Voir le chapitre Mode d'envoi SENDLIST.
Retour (pour les 2 modes) : 1 si OK, sinon 0.
Les variables doivent être déclarées en commande pour que l'envoi soit effectif.

Exemple
Dim strVar as STR;

strVar = "BR1.VAL";
'note NOT "@BR1.VAL"
SET(strVar,12);
SENDIST("BLOC");
SUB Main()
i1 = SET ("Register1",600,);
'address AP of Register 1 : S1
i1 = SET ("Register2",700,);
'address AP of Register 1 : S2
i1 = SET ("Register3",500,);
'address AP of Register 1 : S5
i1 = SET ("Register4",400,);
'address AP of Register 1 : S6
i1 = SET ("Register5",300,);
'address AP of Register 1 : S7

SV_SCADABasic_fr 322
SENDLIST ("BLOC"); 'Send a frame, writing words S1 to S7
' (S3 and S4 will be written with their current values)
END SUB

SV_SCADABasic_fr 323
SEQ_BUFFER
Voir aussi Exemple
Manipulation d'enregistrements et de champs dans un buffer.
Mode Mnémonique Syntaxe
1 CLEAR 1
2 PUT_LINE 2
3 BEGIN 3
4 END 3
5 NEXTFIELD 4, 7
6 PREVFIELD 4, 7
7 SEEKFIELD 5
8 REPLACEFIELD 6
8 INSERTFIELD 6
9 CRLFTOCR 3, 8
10 CRTOCRLF 3, 8
11 LEN 3
12 ASCIITOANSI 3
13 ANSITOASCII 3

Syntaxe 1
IntVal = SEQ_BUFFER(Mode, Handle);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
1 CLEAR Tous les enregistrements du buffer sont supprimés.
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = SEQ_BUFFER(Mode, Handle, Text);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Text Ligne de texte à placer dans le buffer. Type STR.
Exécution
Mode Mnémonique Action
2 PUT_LINE Un enregistrement est ajouté en fin de buffer.
Le caractère retour chariot <carriage return> est ajouté en fin
d'enregistrement.
1 si OK, -1 dans le cas d'un buffer plein, 0 sinon.

Syntaxe 3

SV_SCADABasic_fr 324
IntVal = SEQ_BUFFER(Mode, Handle);
Type de retour : INTEGER excepté pour le mode 11 où le type de retour est LONG.
Argument Signification
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
3 BEGIN Positionnement sur le premier champ du buffer.
4 END Positionnement en fin de buffer.
9 CRLFTOCR Permet de transformer dans le buffer toutes les occurences <line
feed><carriage return> par <carriage return>.
10 CRTOCRLF Permet de transformer dans le buffer toutes les occurences <carriage
return> par <line feed><carriage return>.
11 LEN Retourne la longueur du buffer.
12 ASCIITOANSI Convertit les caractères ASCII du buffer en ANSI.
13 ANSITOASCII Convertit les caractères ANSI du buffer en ASCII.
Retour : 1 si OK, 0 sinon (excepté Mode 11 – voir ci-dessus).

CRTOCRLF nécessite suffisamment d'espace dans le buffer pour les caractères ajoutés lors du
remplacement de toutes les instances de CR en CRLF. Par exemple, un buffer créé directement par
FILETOBUF sera trop petit (puisque sa taille est ajustée au nombre de caractères présents dans le
fichier d'origine).

Syntaxe 4
IntVal = SEQ_BUFFER(Mode, Handle, Separator, ResultHandle);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Separator Caractère utilisé pour séparer les valeurs dans le buffer. Type STR.
ResultHandl Handler du buffer dans lequel le résultat de l'instruction est placé.
e
Exécution
Mode Mnémonique Action
5 NEXTFIELD RLecture du champ courant.Le résultat est dans handle_reception.
6 PREVFIELD Lecture du champ précédent.
Retour : 1 si OK, 0 sinon.

Syntaxe 5
IntVal = SEQ_BUFFER(Mode, IncPosition, Handle, Separator);
Type de retour : INTEGER
Argument Signification
IncPosition Nombre de valeur par lesquelles le pointeur est modifié (négatives ou positives, en comptant
les champs de la position courant du pointeur). Type INTEGER.
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Separator Caractère utilisé pour séparer les valeurs dans le buffer. Type STR.
Exécution

SV_SCADABasic_fr 325
Mode Mnémonique Action
7 SEEKFIELD Positionnement à champ courant plus IncPosition.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal = SEQ_BUFFER(Mode, IncPosition, Handle, Separator, StringOrBuff);
Type de retour : INTEGER
Argument Signification
IncPosition Compteur de champs déterminant la position du champ dans le buffer à remplacer et dans
lequel une nouvelle chaîne de caractère est positionnée (doit être supérieur à 0). Type
INTEGER.
Handle Handle du buffer contenant un nombre de valeurs délimitées. Type LONG.
Separator Caractère utilisé pour séparer les valeurs dans le buffer. Type STR.
StringOrBuff Soit une chaîne de caractère, soit le handle du buffer contenant une chaîne. Type STR or
Long.
Exécution
Mode Mnémonique Action
8 REPLACEFIELD Insertion de la "chaîne_à_insérer" à champ courant plus "position" ( >0 ) du
buffer "handle_lecture".
INSERTFIELD
Retour : 1 si OK, 0 sinon.

Syntaxe 7
RetVal = SEQ_BUFFER(Mode, Handle, Separator, SubMode);
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer contenant un nombre de valeurs délimitées. Type LONG.
Separator Caractère utilisé pour séparer les valeurs dans le buffer. Type STR.
SubMode Chaîne déterminant le type de valeur à lire et le type de retour :
STR - String.
INT - Integer.
DOUBLE - Double.
FLOAT - Float.
Exécution
Mode Mnémonique Action
5 NEXTFIELD Lecture du champ courant.

6 PREVFIELD Lecture du champ précédent.

Si les types de champs sont mélangés, il y a lieu de les lire en format STR puis de les interpréter.

Syntaxe 8
LongVal = SEQ_BUFFER(Mode, Handle, "NEW_BUFFER");
Type de retour : LONG

SV_SCADABasic_fr 326
Argument Signification
Handle Handle du buffer alloué par l'instruction ALLOC_BUFFER. Type LONG.
Exécution
Mode Mnémonique Action
9 CRLFTOCR Permet de transformer dans le buffer result toutes les occurences <line
feed><carriage return> par <carriage return>.
10 CRTOCRLF Permet de transformer dans le buffer result toutes les occurences <carriage
return> par <line feed><carriage return>.
Retour : 1 si OK, 0 sinon.

Exemple
Pour une exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 327
SET
Voir aussi
Constitution d'une liste de variables à envoyer.
Cette instruction est utilisée en conjonction avec l'instruction SENDLIST.

Syntaxe
IntVal = SET(Variable, Value);
Type de retour : INTEGER
Argument Signification
Variable Nom de la variable de la base de données où est assigné la valeur. Type STR.
Value Valeur à assigner. Doit être du même type que la variable.
Exécution
Les variables peuvent être de tout type.
L'envoi est différé et la variable est mémorisée jusqu'à rencontrer une instruction SENDLIST.
Retour (pour les deux modes): 1 si OK, 0 sinon.
Les variables doivent être déclarées en commande pour que l'envoi soit effectif.

Le traitement de discordance ne fonctionne pas avec les recettes.

Exemple
Merci de vous référer aux exemples du verbe SENDLIST.

SV_SCADABasic_fr 328
SGET_BUFFER
Voir aussi
Récupère un SINGLE dans une zone mémoire.

Syntaxe
SinVal = SGET_BUFFER(Handle, Offset);
Type de retour : SINGLE.
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER. Type LONG.
Offset L'offset en octets dans lequel l'INTEGER est trouvé. Tout type numérique.

Exécution
Retour : Récupère un SINGLE dans une zone mémoire réservée par un ALLOC_BUFFER à l'offset
précisé.

Exemple
SSUB main()
'Declare
DIM lngBuffer1 as Long;
DIM strLine as Str;
DIM sngResult as Single;
DIM intLengh as Integer;

'Create a buffer
lngBuffer1 = ALLOC_BUFFER(110);
strline = "123.34;string_here;345;123456789;‚t‚\n";

'Put the string srtline into the buffer


PUT_BUFFER(lngBuffer1, 0, strline);
sngResult = SGET_BUFFER(lngBuffer1,0);
Print("Result: ",sngResult);

'Display "Result: 5.10584E+256"


FREE_BUFFER(lngBuffer1); 'release the memory area
END SUB

SV_SCADABasic_fr 329
SIN
Voir aussi
Fonction sinus.

Syntaxe
Dblval = SIN(Angle);
Type de retour : DOUBLE
Argument Signification
Angle Angle est exprimé en degré et peut être de tout type numérique
Exécution
Les variables de la base de données sont de type SINGLE. En cas d'affectation avec cette fonction, la
conversion en SINGLE est donc nécessaire si l'on veut éviter une erreur de type.

Exemple
'Database variables
'@ARC - type Register
'@ANGLE - type Register

SUB Main()
'Declare
DIM dblangle as double;
DIM dblarc as double;

dblangle = 45;
dblarc = SIN (dblangle);
print("SIN(",dblangle,") = ",dblarc);
END SUB

SUB proc2()
'SIN() using a database variable: @ARC.
'Use of TOS to convert DOUBLE to SINGLE ( variable type Register)
@ARC= TOS( SIN (@ANGLE) ) ;
END SUB

SV_SCADABasic_fr 330
SMS
Voir aussi
Gère l'envoi de données via un service de message court (SMS).
Mode Mnémonique Syntaxe
1 SEND 1

Syntaxe 1
SMS(Mode, SmsProfile, PhoneNumbers, Subject, Message [, Format] );
Type de retour : INTEGER
Argument Signification
SmsProfile Nom d'un profil SMS configuré dans Actions.Messages.Profils SMS. Type STR.
PhoneNumbers Liste des numéros de téléphone de destinataires utilisant le point-virgule (;)
comme séparateur entre les numéros de téléphone. Type STR.
Subject Sujet du message. Type STR.
Message Contenu du message . Type STR.
Format Format du message. (Optionnel) Type INTEGER.
0: Auto (valeur par défaut)
1: Texte
2: PDU 7-bit
3: Unicode.
Pour une explication sur l'argument Format et les limites de taille des
messages dans chaque format, voir le chapitre Actions.Actions
événementielles.Configuration d'un événement pour envoyer un
message.Configuration des Options SMS.

Exécution
Mode Mnémonique Action
1 ADDSMS Paramètre un message à envoyer via SMS.
Retour : 0 si OK, 1 sinon. Le statut envoyé est enregistré dans la variable
système.

Exemple
sub main ()
end sub

sub SendSms ()
SMS("SEND", "SMSPROFILE1","0033687867361","Scada Basic test", "Message sent by SV");
end sub

sub AddSms ()
EVENT ("ADDSMS", "SBSEND","", "", "BitSmsSB", 1, "MSGTEMPLATE1");
end sub

sub DelSms ()
EVENT("DELSMS","SBSEND");
end sub

SV_SCADABasic_fr 331
SNMP
Voir aussi
Gère la communication via le protocole SNMP.
Mode Mnémonique Syntaxe
1 START 1
2 STOP 1
3 REFRESH 2, 3
4 CONFIG 4, 5

Syntaxe 1
IntVal = MSNMP(Mode, CommObject[, ResultVar]);
Type de retour : INTEGER.
Argument Signification
CommObject Soit le nom du réseau (Exemple "Network01"), soit le nom du réseau et de l'équipement
séparé par un point (Exemple "Network01.Device01"). Type STR.
ResultVar Nom d'une variable dans laquelle le résultat de l'instruction sera placé. Type Str.
-1 - Nom du réseau non trouvé.
-2 - Nom de l'équipement non trouvé.
1 - Action en attente.
2 - Action terminée OK.
3 - Action terminée avec erreur.

Exécution
Mode Mnémonique Action
1 START Démarre le réseau ou l'équipement.
2 STOP Arrête le réseau ou l'équipement.
Retour pour les deux modes : 0 format correct, 1- mode inconnu, -2 format CommObject incorrect (vide
ou plus que deux champs).

Syntaxe 2
IntVal = MDNMP(Mode, CommObject, SubMode[, ResultVar]);
Argument Signification
CommObject Nom du réseau et de l'équipement séparé par un point (Exemple
"Network01.Device01"). Type STR.
SubMode Voir ci-dessous. Type STR.
ResultVar Nom d'une variable dans laquelle le résultat de l'instruction sera placé. Type Str.
-1 - Nom du réseau non trouvé.
-2 - Nom de l'équipement non trouvé.
-3 - Nom du groupe de scrutation non trouvé.
1 - Action en attente.
2 - Action terminée OK.
3 - Action terminée avec erreur.

Exécution
Mode Mnémonique Action
3 REFRESH Sous-mode "ALL". Rafraîchit la valeur de toutes les variables liées à
l'équipement.
3 REFRESH Sous-mode "SYNCHRO". Rafraîchit seulement les variables mises-à-
jour (Synchronisation Trap et ad-hoc).
Retour pour les deux modes : 0 format correct, 1- mode inconnu, -2 format CommObject incorrect (vide
ou plus que deux champs), -4 sous-mode inconnu.

SV_SCADABasic_fr 332
Syntaxe 3
IntVal = MDNMP(Mode, CommObject, SubMode, PollingGroup[, ResultVar]);
Argument Signification
CommObject Nom du réseau et de l'équipement séparé par un point (Exemple
"Network01.Device01"). Type STR.
SubMode Voir ci-dessous. Type STR.
PollingGroup Nom du groupe de scrutation. Type STR.
ResultVar Nom d'une variable dans laquelle le résultat de l'instruction sera placé. Type Str.
-1 - Nom du réseau non trouvé.
-2 - Nom de l'équipement non trouvé.
-3 - Nom du groupe de scrutation non trouvé.
1 - Action en attente.
2 - Action terminée OK.
3 - Action terminée avec erreur.

Exécution
Mode Mnémonique Action
3 REFRESH Sous-mode "POLLINGGROUP". Rafraîchit la valeur de toutes les
variables liées à l'équipement en utilisant le groupe de scrutation
spécifié.
Retour : 0 format correct, 1- mode inconnu, -2 format CommObject incorrect (vide ou plus que deux
champs), -3 format PollingMode incorrect (vide), -4 sous-mode inconnu.

Syntaxe 4
IntVal = SNMP(Mode, CommObject, "HOSTNAME", HostName[, ResultVar]);
Argument Signification
CommObject Nom du réseau et de l'équipement séparé par un point (Exemple
"Network01.Device01"). Type STR.
HostName Nouveau nom de l'équipement. Type STR.
ResultVar Nom d'une variable dans laquelle le résultat de l'instruction sera placé. Type Str.
-1 - Nom du réseau non trouvé.
-2 - Nom de l'équipement non trouvé.
1 - Action terminée OK.
Exécution
Mode Mnémonique Action
4 CONFIG Modifie le nom de l'équipement.
Retour : 0 format correct, -1 mode inconnu, -2 Nom de l'équipement non spécifié, -3 Sous-mode inconnu,
-5 Adresse IP vide.

Syntaxe 5
IntVal = SNMP(Mode, CommObject, "IPADDRESS", IPaddress[, ResultVar]);
Argument Signification
CommObject Nom du réseau et de l'équipement séparé par un point (Exemple
"Network01.Device01"). Type STR.
IPaddress Nouvelle adresse IP de l'équipement dans le format xxx.xxx.xxx.xxx. Type STR.
ResultVar Nom d'une variable dans laquelle le résultat de l'instruction sera placé. Type Str.
-1 - Nom du réseau non trouvé.
-2 - Nom de l'équipement non trouvé.
1 - Action terminée OK.
Exécution
Mode Mnémonique Action
4 CONFIG Modifie l'adresse IP de l'équipement.

SV_SCADABasic_fr 333
Retour : 0 format correct, -1 mode inconnu, -2 Nom de l'équipement non spécifié, -3 Sous-mode inconnu,
-5 Adresse IP vide.

SV_SCADABasic_fr 334
SPACE
Voir aussi
Renvoie une chaîne constituée de n espaces.

Syntaxe
StrVal = SPACE(N);
Type de retour : STR
Argument Signification
N Nombre d'espaces à retourner. Tout type numérique.
Exécution
La chaîne résultante est limitée à 2 047 caractères.

Exemple
SUB Main()
'Declare return code
DIM intCharCode as integer;
DIM strChaine as Str;

strChaine = SPACE(10);
Print("Contents of string: ",strChaine);
END SUB

SV_SCADABasic_fr 335
SQRT
Voir aussi
Fonction racine carrée.

Syntaxe
DblVal = SQRT(Val);
Type de retour : DOUBLE
Argument Signification
Val Tout type numérique mais doit être >0 sinon la fonction retourne 0.
Exécution
Les variables de la base de données sont de type SINGLE. En cas d'affectation avec cette fonction, la
conversion en SINGLE est donc nécessaire si l'on veut éviter une erreur de type.

Exemple
SUB Main()
DIM dblResult as Double;
DIM sngValue as Single;

sngValue = 4;
dblResult = SQRT (sngValue);
Print("Return value = ",dblResult);
'Display "Return value = 2"
END SUB

SV_SCADABasic_fr 336
STATION_FILTER
Voir aussi Exemple
Filtre des fonctions de supervision en appliquant des populations de variables pour le poste courant.
Mode Mnémonique Syntaxe
1 CLEAR 1
2 APPLY 2, 3
3 DUMP 1

Syntaxe 1
IntVal = STATION_FILTER(Mode, Distribution);
Type de retour : INTEGER
Argument Signification
Distribution Définition des fonctions à filtrer (ressources) :
1 Affichage des fenêtres d'alarmes et beep sur alarme
2 Affichage des fenêtres de consignation
3 Ecriture des consignations sur imprimante
4 Ecriture des consignations dans les unités d'archivage
5 Forçage des variables par l'opérateur
6 Forçage des variables par animation " forçage script "
7 Forçage des variables par programme SCADA BASIC
8 Acquittement des alarmes par animation " forçage script "
9 Acquittement des alarmes par programme SCADA BASIC
Exécution
Mode Mnémonique Action
1 CLEAR La fonction num_fonction s'applique à toutes les variables de la base.
Retour : 1 si OK, 0 sinon.
3 DUMP Afficher dans la fenêtre de mise au point des programmes les populations
autorisées pour la fonction num_fonction : le format des lignes affichées est
décrit dans Execution 3.
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = STATION_FILTER(Mode, Distribution, List);
Type de retour : INTEGER
Argument Signification
Distribution Voir syntaxe 1.
List liste des identifiants utilisées lors de la création des populations. Ces identifiants sont séparés
par des virgules. Type STR.
Exécution
Mode Mnémonique Action
2 APPLY Appliquer un filtre sur la fonction en n'autorisant que les identifiants des
populations nommés dans la chaîne liste_de_populations (le séparateur est
la virgule). Un filtre contient au maximum 64 identifiants de populations et 1
024 caractères.

SV_SCADABasic_fr 337
Retour : 1 si OK, 0 sinon.

Syntaxe 3
IntVal = STATION_FILTER(Mode, Handle);
Type de retour : INTEGER
Argument Signification
Handle Localisation du buffer mémoire contenant une liste de filtre de population et un code de
fonction. Type LONG.
Exécution
Mode Mnémonique Action
2 APPLY Appliquer un filtre sur plusieurs fonctions en n'autorisant que les populations
nommées. La définition des fonctions et les listes de populations sont
contenues dans une zone mémoire réservée par un ALLOC_BUFFER.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 338
STOP
voir aussi
Arrête le programme en cours.

Syntaxe
STOP();
Type de retour : aucun
Exécution
Si l'instruction STOP est utilisée dans le programme GLOBAL, c'est le programme qui a appelé GLOBAL qui
est arrêté.
La réexécution du programme ne peut se faire que par une instruction exécutée dans un autre programme
(PROGRAM).

Exemple
SUB Main()
While(1)
Print("In the loop");
'End of loop and program:
Stop();
Wend
END SUB

SV_SCADABasic_fr 339
STRING
Voir aussi
Renvoie une chaîne constituée de n fois un caractère.

Syntaxe
StrVal = STRING(N, Char);
Type de retour : STR
Argument Signification
N Nombre de caractères. Tout type numérique.
Char Caractère à répeter
Exécution
Si n est supérieur à 255, la chaîne est tronquée à 2 047 caractères.

Exemple
SUB Main()
DIM strChain as Str;

strChaine = STRING(5,"A");
PRINT(strChain);
'Display: "AAAAA"
END SUB

SV_SCADABasic_fr 340
SUB...ENDSUB
Voir aussi Exemple
Débute et finit une procédure.

Syntaxe
SUB subname([P1, P2 ......P10])
[instruction list]
ENDSUB
Argument Signification
P1 à P10 Paramètres à passer par la fonction. Tout type de variable.
Exécution
Une fonction est créée. Les paramètres passés à la fonction ne sont pas typés (integer, long, ...) à l'appel.
Leur type doit être cependant cohérent avec l'utilisation que l'on en fait au sein de la procédure. Une
erreur de conversion de type donnera lieu à une erreur d'exécution.
Il faut aussi obligatoirement une procédure MAIN pour chaque programme (sauf pour le programme
de déclaration de fonctions et données globales).

Une valeur peut être retournée par une fonction en utilisant l'instruction RETURN.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 341
SVAL
Voir aussi
Donne la valeur numérique d'une chaîne de caractères.

Syntaxe
SglVal = SVAL(String);
Type de retour : SINGLE
Exécution
Lorsque la chaîne est vide ou lorsqu'elle débute par un caractère non numérique la fonction renvoie 0.

Exemple
DIM s1 As Single;
s1=SVAL("123.456");

SV_SCADABasic_fr 342
SVALA
Voir aussi Exemple Spécifiques
Gestion des listes d'alarmes.
Mode Mnémonique Syntaxe
1 EXTRACT 1
2 COUNT 2

Syntaxe 1
IVal = SVALA(Mode, DestHandle, ParamHandle [,EndVarName, Sense] [, CountVarName]);
Argument Signification
DestHandle Handle du buffer dans lequel seront rangées les lignes des alarmes trouvées. Type
LONG.
ParamHandle Handle du buffer contenant les paramètres de l'extraction.Type LONG.
EndVarName Variable de la base de donnée de type état. Cet état prend la valeur spécifiée par
Sense. Ceci permet de déclencher l'exécution d'une fonction à la fin d'une extraction
(voir instruction EVENT). Type STR.
Sense Valeur mise dans "NomVariableFin" en fin d'extraction. Tout type numérique.
CountVarName Variable de la base de donnée de type mesure. Cette mesure, positionnée à -1 en
début d'extraction, contient le nombre d'alarmes extraites. Type STR.
Exécution
Mode Mnémonique Action
1 EXTRACT Permet d'extraire les alarmes en fonction d’un filtre à un instant donné du
procédé, et de les stocker dans un buffer.
Valeur de retour :
1 L'instruction s'est correctement exécutée.
0 Le mode est incorrect.
-1 Le paramètre DestHandle est incorrect.
-2 Le paramètre ParamHandle est incorrect.
-3 Le contenu de ParamHandle is incorrect.
-4 La variable EndVarName n'existe pas.
-5 La variable EndVarName n’est pas commandable ou est inhibée.
-6 Le paramètre Sense n’existe pas ou a une mauvaise valeur.
-7 La variable CountVarName n'existe pas.
-8 La variable CountVarName n’est pas une consigne.
-9 Requête en cours.

Syntaxe 2
IVal = SVALA(Mode, ParamHandle [,EndVarName, Sense] [, CountVarName]);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
2 COUNT Retourne le nombre courant d'alarmes répondant aux critères de la requête.
Valeur de retour :

SV_SCADABasic_fr 343
1 OK.
0 Mode inconnu.
-1 Le paramètre DestHandle est incorrect.
-2 Le paramètre ParamHandle est incorrect.
-3 Le contenu de ParamHandle is incorrect.
-4 La variable EndVarName n'existe pas.
-5 La variable EndVarName n’est pas commandable ou est inhibée.
-6 Le paramètre Sense n’existe pas ou a une mauvaise valeur.
-7 La variable CountVarName n'existe pas.
-8 La variable CountVarName n’est pas une consigne.
-9 Requête en cours.

Pour le format du buffer de paramètres, voir le chapitre Format du buffer de paramètre.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 344
SVBATCH
Voir aussi Spécifiques
SVBATCH fournit un enregistrement configurable par l'utilisateur du début et de la fin d'une phase de
production dans un format approchant celui d'une base de données. En plus de l'horodate de début et de
fin, chaque enregistrement contient un attribut LONG (qui peut être également interprété comme 32
octets indépendants), ainsi que 32 attributs texte. Vous pouvez avoir une ou plusieurs bases de données
qui seront chargées en mémoire pour un accès plus rapide.
Les modes disponibles permettent de créer, supprimer, modifier et sauvegarder les enregistrements. Les
attributs chaînes peuvent être configurés comme des clés d'index (comme dans une base données de type
Microsoft Access) et utilisées comme filtre pour effectuer une recherche rapide sur un grand nombre
d'enregistrements.
Pour le mode distribué, voir le chapitre Mode distribué de SVBATCH.
Mode Mnémonique Syntaxe
1 CREATEBASE 1
2 SELECTBASE 2
3 BASELIST 3, 9
4 CREATE 4
5 UPDATE 5, 10
6 EXIST 6, 11
7 GETVALUE 7, 12
8 DELETE 3, 13
9 SELECT 8, 16
10 SAVEBASE 2
11 LOADBASE 2
12 GETNEXTBUFFER 3
13 CANCEL 3
14 ARCHIVE 13
15 ARCHIVELIST 3
16 BATCHLIST 3
17 NETWORKBROAD 14
CAST
18 NEXTCOMMAND 15

Paramètres communs utilisés par SVBATCH


Argument Signification
Basename Nom de la base de données. Type STR.
Handle Handle représentation une localisation mémoire. Type LONG.
Type Mnémonique pour un des champs formant un lot.
#I1 IdName
#I2 StartDate
#I3 EndDate
[#A1 à #A32] Modification d’un attribut texte.
[#B] Modification de l’attribut LONG.
[#B1 à #B32] Modification d’un bit dans l’attribut.

SV_SCADABasic_fr 345
Value Valeur à mettre à jour dans la base de données en fonction du type.
STR si Type = [#I1 à #I3] ou [#A1 à #A32]
DOUBLE si Type= [#I2 à #I3]
LONG si Type = [#B]
INTEGER si Type = [#B1 à #B32]
Table Identifiant du lot. Type STR.
StartDate Date de début du lot. Type DOUBLE ou STR.
Enddate Date de fin du lot. Type DOUBLE ou STR.

Si les paramètres StartDate et EndDate sont de type DOUBLE, ils peuvent être calculés en utilisant
l'instruction DateTimeValue qui retournera une date et une heure sous forme DOUBLE. Si la date est
fournie comme une chaîne, sa syntaxe doit être la suivante : DD/MM/YYYY hh:mm:ss.lll Par
exemple : 12/05/2001 21:49:01.100.

L'instruction DateTimeString peut être utilisée pour convertir une date sauvegardée en format
DOUBLE dans un format texte.

Syntaxe 1
IVal = SVBATCH (Mode, Basename, Unused, [ NbAttribute, NbBackup ])
Type de retour : INTEGER
Argument Signification
Unused Ce champ est inutilisé et doit rester vide. Type STR.
NbAttribute Nombre d'attributs. Par défaut 4. Type INTEGER. Valeur 1 à 32
NbBackup Nombre de sauvegarde de la base de données. Par défaut 3. Type INTEGER. Valeur 3 à
9
Exécution
Mode Mnémonique Action
1 CREATEBASE Création de la base de données. La base est créée en mémoire.
Retour : 0 La base de données n’a pu être créée, 1 Création OK.

La base peut être sauvegardée dans le répertoire PER du projet. Plusieurs bases
peuvent être créées.

L'argument Unused doit être inclus dans la syntaxe comme une chaîne vide. Exemple :
SVBATCH ("CREATEBASE, "MyDatabase", "");

Syntaxe 2
iVal = SVBATCH (Mode, Basename);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
2 SELECTBASE Sélection d’une base de données de travail. La base doit être en mémoire.
Retour :
0 Base non trouvée
1 Base sélectionnée

SV_SCADABasic_fr 346
-100 Erreur d’argument
10 SAVEBASE Sauvegarde d’une base de données. Enregistrement de la base de données
vers le répertoire \PER\basename.
Retour : 0 Erreur de sauvegarde, 1 Sauvegarde réussie.
11 LOADBASE Chargement d’une base de données. Chargement en mémoire depuis le
répertoire \PER\basename.
Retour :
0 Erreur de chargement
1 Chargement réussi
-100 Erreur d’argument

Syntaxe 3
iVal = SVBATCH (Mode, Handle)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
3 BASELIST Liste les bases de données chargées en mémoire.
Retour : Nombre de base de données.
-100 Erreur d’argument
8 DELETE Suppression d’un enregistrement en mémoire.
Retour :
0 Enregistrement non trouvé
1 Enregistrement supprimé
12 GETNEXTBUFFER Récupération dans le buffer passé en argument de la suite des
enregistrements correspondant à une requête de type SELECT.
Il est impératif que le buffer ResultHandle soit le même que celui ut

Ce mode permet de récupérer des enregistrements archivés ou non.


Dans le cas où la taille du buffer est insuffisante, le mode
GETNEXTBUFFER permet d’obtenir la suite. Dans ce cas , la mémoire de
stockage interne utilisée par le mode SELECT est désallouée sur le
dernier GETNEXTBUFFER ou lorsque toutes les données ont été
récupérées (vous devez quand même utiliser l'instruction FREE_BUFFER
pour libérer le buffer utiliser par le mode SELECT).
Retour type INTEGER:
0 Dernier buffer
1 Il reste un ou plusieurs buffers de données à récupérer
-100 Erreur d’argument
13 CANCEL Annulation d’une requête de type SELECT
Il est impératif que le buffer ResultHandle soit le même que celui ut

Le mode CANCEL permet de désallouer la mémoire correspondant à une


requête. Il peut être utilisé pour annuler une sélection avant le dernier
GETNEXTBUFFER.
Il est conseillé de toujours effectuer un CANCEL en fin de requête, de
manière à être sur que la mémoire interne utilisée par le mode SELECT

SV_SCADABasic_fr 347
a bien été désallouée.
Retour :
0 La requête SELECT à annuler n’existe plus
1 Requête annulée
-100 Erreur d’argument
15 ARCHIVELIST Récupération dans un buffer de la liste des dates de début/fin des
enregistrements archivés.
Retour :
0 Pas d'enregistrements à retourner
-100 Erreur d’argument
Sinon le nombre de noms de tables retournés.
Le mode GETNEXTBUFFER peut être utilisé si le buffer HandleList ne
totalité des dates d’archives.
16 BATCHLIST Récupération dans un buffer de la liste des lots d’une base de données.
Les lots sont séparés par des virgules.
Retour :
0 Pas de noms de tables à retourner
-100 Erreur d’argument
Sinon le nombre de noms de tables retournés.

Lors de l'utilisation de BASELIST (mode 3) le format de retour des données est le suivant :
nom du lot, nombre d'enregistrements \n
nom du lot, nombre d'enregistrements \n
(où \n = Chr(10) ou LF, saut de ligne)

Pour GETNEXTBUFFER (mode 12) et CANCEL (mode 13), le buffer Handle doit être le même que
celui utilisé par la commande SELECT.
Exemple de liste de buffer
Le contenu du buffer Handle peut être le suivant :
14/10/1997 10:17:55:870 14/10/1998 11:46:09:100\n
14/10/1997 10:17:55:870 14/10/1998 12:40:40:574\n
14/10/1998 10:17:55:870 14/10/1998 11:18:05:870\n
14/10/1998 11:03:11:678 14/10/1998 11:03:21:678\n
14/10/1998 11:15:34:066 14/10/1998 11:15:44:066\n
14/10/1998 11:17:55:870 14/10/1998 11:18:05:870\n
14/10/1998 11:47:36:901 14/10/1998 12:43:19:052\n
14/10/1998 12:43:09:242 14/10/1998 12:43:24:249\n

Syntaxe 4
lVal =SVBATCH (Mode, Table, StartDate [, EndDate])
Type de retour : LONG
Exécution
Mode Mnémonique Action
4 CREATE Création d’un enregistrement dans la base de données de travail (mode
SELECTBASE).
Retour : 0 Création impossible. Sinon handle sur l’enregistrement. Type
LONG.

SV_SCADABasic_fr 348
Le handle retourné permet l’utilisation des modes UPDATE , EXIST , et DELETE.

La date de début doit être unique. Une création avec une date déjà présente dans la base de
donnée échouera. La date de fin peut être mise à jour d’une manière différée par le mode UPDATE.

Syntaxe 5
iVal = SVBATCH (Mode, Handle, Type, Value)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
5 UPDATE Mise à jour d’un enregistrement en mémoire (modification).
Retour :
0 Mise à jour de l’enregistrement impossible
1 Mise à jour effectuée

La mise à jour d’un enregistrement peut s’effectuer soit par l’intermédiaire du "handle" ( retourné
par le mode CREATE ou SELECT ), soit par le couple "idname" "startdate" qui identifie de manière
unique un enregistrement. La date de fin n’est pas obligatoire pour retrouver l’enregistrement ( En
ce cas mettre 0.0 pour le paramètre "enddate").

Syntaxe 6
lVal = SVBATCH (Mode, Handle)
Type de retour : LONG
Exécution
Mode Mnémonique Action
6 EXIST Teste l’existence d’un enregistrement en mémoire.
Retour : 0 Enregistrement non trouvé, Sinon "handle" de l’enregistrement.

Syntaxe 7
SVBATCH (Mode, Handle, Type)
Exécution
Mode Mnémonique Action
7 GETVALUE Récupération de la valeur d’un champ de l’enregistrement
Retour : dépend du type de champ.

Syntaxe 8
SVBATCH (Mode, Table, StartDate, EndDate, FormatHandle, ResultHandle [,ExpHandle [,LogVarName]])
Type de retour : INTEGER
Argument Signification
FormatHandle Format des données dans le buffer. Les mnémoniques possibles sont :
#I1 à #I3&#9;(Table name, Start date et End date)
#A1 à #A32&#9;(Attributs texte 1 à 32)
#B&#9;&#9;(Attribut Long)
#B1 à #B32&#9;(Attributs binaires 1 à 32)
ResultHandle Buffer résultat de la sélection (LONG). Chaque enregistrement formaté est terminé par

SV_SCADABasic_fr 349
un retour chariot. Type LONG.
ExpHandle Buffer contenant une expression de sélection. Type LONG.
LogVarName Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit
terminée ou que le buffer résultat soit plein. Type STR
Exécution
Mode Mnémonique Action
9 SELECT Sélection d’enregistrements en mémoire entre deux dates.
Retour :
100 Erreur de type d’argument
-1 Pas de base de données sélectionnée
-2 Identifiant de lot inconnu
Sinon Nombre d’enregistrements satisfaisant à la requête

L'exécution du mode 9 est asynchrone. Ceci dit, une fois que l'instruction est lancée, le thread de
programme continue de s'exécuter. Lors de la récupération d'un grand nombre d'enregistrements,
le remplissage du buffer résultat peut prendre plusieurs secondes.

Pour gérer cela, créer un évenement qui se déclenchera lorsque LogVarName passera à 1.
L'évenement pourra alors exécuter une fonction qui traitera le résultat ou lancera une autre
instruction SVBATCH avec le mode GETNEXTBUFFER.

Syntaxe 9
IVal = SVBATCH (Mode, FileName)
Type de retour : INTEGER
Argument Signification
FileName Nom du fichier. Type STR.
Exécution
3 BASELIST Crée un fichier contenant la liste des noms des lots (bases de données) chargées
en mémoire.
Retour : Nombre de base de données.
-100 Erreur d’argument

Lors de l'utilisation de BASELIST (mode 3) le format de retour des données est le suivant :
nom du lot, nombre d'enregistrements \n
nom du lot, nombre d'enregistrements \n
(où \n = Chr(10) ou LF, saut de ligne)

Syntaxe 10
iVal = SVBATCH (Mode, Table, StartDate, EndDate, Type, Value)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
5 UPDATE Mise à jour d’un enregistrement en mémoire (modification).
Retour :
0 Mise à jour de l’enregistrement impossible
1 Mise à jour effectuée

SV_SCADABasic_fr 350
La mise-à-jour d'un enregistrement peut s'effectuer soit par l'intermédiaire du "handle" (retourné
par le mode CREATE ou SELECT), soit par le couple "idname" "startdate" qui identifie de manière
unique un enregistrement. La date de fin n'est pas obligatoire pour retrouver l'enregistrement (en
ce cas, mettre 0.0 pour le paramètre "enddate").

Syntaxe 11
lVal = SVBATCH (Mode, Table, StartDate, EndDate)
Type de retour : LONG
Exécution
Mode Mnémonique Action
6 EXIST Teste l’existence d’un enregistrement en mémoire.
Retour : 0 Enregistrement non trouvé, Sinon "handle" de l’enregistrement.

Syntaxe 12
SVBATCH (Mode, Table, StartDate, EndDate, Type)
Exécution
Mode Mnémonique Action
7 GETVALUE Récupération de la valeur d’un champ de l’enregistrement
Retour : dépend du type de champ.

Syntaxe 13
iVal = SVBATCH (Mode, Table, StartDate, EndDate)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
8 DELETE Suppression d’un enregistrement en mémoire.
Retour :
0 Enregistrement non trouvé
1 Enregistrement supprimé
14 ARCHIVE Archivage d’un ensemble d’enregistrements entre deux dates. Les données sont
déplacées de la database vers un fichier nommé startdate_enddate. Ce fichier se
trouve dans le rep. PER\ BaseName\AR\Table où BaseName est le nom de la
Base de données et Table, le nom de la table. Si on ne précise pas de nom de
Table, toutes les tables de la base de données concernée sont archivées.
Retour :
0 0 Archivage non réalisé.
1 1 Archivage effectué.
Sinon :
-1 Aucune base sélectionnée
-2 La conversion de la date de début a échoué
-3 La conversion de la date de fin a échoué
-100 Erreur de paramètre
Effets de l'archivage
Si l’identifiant du lot est vide , l’archivage portera sur la totalité de la base.
L’archivage effectue une purge automatique des lots archivés dans la base courante.

SV_SCADABasic_fr 351
Les fichiers d’archive sont créés comme suit dans le répertoire PER du projet.
Répertoire : BatchName
Fichier: StartDate EndDate

Syntaxe 14
SVBATCH ( Mode, StationList, StatusHandle, EventVarName)
Argument Signification
StationList Nom de la liste des postes destinataires des modifications (liste créée par le menu
Configuration.Communication.Multipostes). Type STR.
StatusHandle Buffer recevant les informations de statut après la réalisation d’un requête. Type
LONG.
EventVarName Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit
terminée ou que le buffer résultat soit plein. Type STR
Exécution
Mode Mnémonique Action
17 NETWORKBROADC Propage les commandes SVBATCH dans tous les postes contenus dans la
AST liste des postes.

Les commandes sont placées dans une file d'attente et exécutées chaque fois que la commande
NEXTCOMMAND est appelée. Lorsque la commande est traitée et le résultat disponible, la variable
spécifiée par l'argument EventVarName est positionnéé à 1. L'état de chaque commande est reportée
dans le buffer pointé par StatusHandle au format suivant : Mode, Station Number, Result.
Toute les requêtes sont asynchrones. Le résultat des requêtes est disponible lorsque EventVarName
passe à 1.

A ce moment, le résultat peut être traité et le mode NEXTCOMMAND relancé.


NETWORKBROADCAST peut être utilisé avec les modes :
SELECT, UPDATE, DELETE, CANCEL, ARCHIVE, BATCHLIST, ARCHIVELIST, GETNEXTBUFFER.
En fin de requête, on trouve dans le buffer Status, les informations suivantes :
mode, station name, result, ...
où :
mode correspond au numéro de la commande SELECT (par exemple 9 pour SELECT).
station name est le nom du poste (comme spécifié dans le chapitre Communications.Multipostes).
result : code de retour de la mise-à-jour (ou non) du poste.

Syntaxe 15
SVBATCH (Mode);
Exécution
Mode Mnémonique Action
18 NEXTCOMMAND Permet de passer à l’exécution de la prochaîne requête.

Syntaxe 16
SVBATCH (Mode, IdName, StartDate, EndDate, FormatHandle, ResultHandle, [,ExpHandle
[,LogVarName]]);
Argument Signification
ExpHandle Buffer résultat contenant l'expression de filtre (LONG). Voir l'instruction SVALA pour des
informations sur les expressions de filtre.. Type LONG.
LogVarHandl Nom de la variable état positionnée à 1 après que l'exécution de l'instruction soit terminée ou

SV_SCADABasic_fr 352
e que le buffer résultat soit plein. Type STR.
Exécution
Mode Mnémonique Action
16 SELECT Sélection d'enregistrements entre deux dates.

La sélection se fait si les entrées ont été archivées ou non.

Lorsque les enregistrements de la requête sont récupérés, LogName est positionné à 1. Le buffer
ResultHandle contient les enregistrements dans la limite de sa taille.
Vous pouvez maintenant allouer des buffers de 64 Ko par ALLOC_BUFFER.

Dans ce mode, vous pouvez créer un événement sur LogVarName. La requête est réalisée de façon
asynchrone, le buffer ResultHandle est donc renseigné au moment où LogName passe à 1. Pour plus de
détails, voir la Syntaxe 8 ci-dessus.
L'événement peut être créé par le menu Actions ou dynamiquement par le verbe EVENT.

SV_SCADABasic_fr 353
SVBRANCH
Voir aussi
Change le status des variables d'une branche de la base de données.
Mode Mnémonique Syntaxe
2 MASK 1
3 UNMASK 1
4 ENABLE 2
5 DISABLE 2
8 SIMU 3
12 SETALARMLEVEL 5
13 RESTOREALARML 2
EVEL
14 RESETANDSETAL 4
ARM
15 RESETCOMPUTEA 4
LARME

Syntaxe 1
SVBRANCH (Mode, Branch, MaskLevel)
Type de retour : INTEGER
Argument Signification
Branch Branche. Type STR.
MaskLevel Niveau de masquage. Type INTEGER:
1 Programme utilisateur 1
2 Programme utilisateur 2
4 Programme utilisateur 3
8 Programme utilisateur 4
16 Opérateur
32 Dépendant (d'une autre variable)
64 Expression
Exécution
Mode Mnémonique Action
2 MASK Toutes les variables de la branche sélectionnée sont masquées. Voir également
l'instruction VARIABLE, mode MASK. Le niveau de masquage dépend du
paramètre MaskLevel.
3 UNMASK Toutes les variables de la branche sélectionnée sont démasquées. Voir
également l'instruction VARIABLE, mode UNMASK. Le niveau de masquage
dépend du paramètre MaskLevel..
Retour : 1 si OK, 0 sinon.

Le paramètre MaskLevel est un INTEGER dont les valeurs représentent la combinaison binaire de un
ou plusieurs niveaux de masquage. Valeurs 0 à 29. Par exemple, une valeur de 11 représente
Programme utilisateur 1, Programme utilisateur 2 et Programme utilisateur 4.

Syntaxe 2

SV_SCADABasic_fr 354
SVBRANCH (Mode, Branch)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
4 ENABLE Désinhibe toutes les variables d'une branche.
5 DISABLE Inhibe toutes les variables d'une branche.
13 RESTOREALARML Restaure la priorité de toutes les alarmes d'une branche (après
EVEL SETALARMLEVEL).
Retour : 1 si OK, 0 sinon.

Syntaxe 3
SVBRANCH (Mode, Branch, Flag)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
8 SIMU Passe toutes les variables équipement d'une branche en mode simulé. Il devient
possible de les modifier comme toute variable interne.
Retour : 1 si OK, 0 sinon.

Syntaxe 4
SVBRANCH (Mode, Branch [, Filter [, AlarmType]])
Type de retour : INTEGER
Argument Signification
Branch Branche de la base de données. Type STR.
Filter Chaîne définissant un filtre d'alarme. Voir le chapitre sur les Expressions de filtres. Si chaîne
vide, il n'y a pas de filtre. La valeur par défaut est chaîne vide. Type STR.
AlarmType ALARMALLTYPE : Tous types d'alarme. Valeur par défaut.
ALARMTHRESHOLD : Uniquement les alarmes sur seuil.
Exécution
Mode Mnémonique Action
14 RESETANDSETALARM Force un basculement absente/présente d'une alarme présente
appartenant à la branche Branch et contenue dans le filtre Filter
de type AlarmType.
Retour : 1 si OK, 0 sinon.
15 RESETCOMPUTEALARM Remet à zéro et recalcule le nombre d'alarmes d'une branche et
d'un filtre.
Retour : 1 si OK, 0 sinon.

Syntaxe 5
SVBRANCH (Mode, Branch, AlarmLevel)
Type de retour : INTEGER.
Argument Signification
Branch Branche. Type STR.
AlarmLevel Niveau de priorité des alarmes (0 à 29). Type INTEGER.
Exécution

SV_SCADABasic_fr 355
Mode Mnémonique Action
12 SETALARMLEVEL Modifie la priorité de toutes les alarmes d'une branche. Voir également
l'instruction ALARM mode SETALARMLEVEL.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 356
SVKEY
Voir aussi
Lit le contenu d'une clé de protection dans un système multi-postes.
Mode Mnémonique Syntaxe
1 READ 1
2 ORDER 2
3 CANCEL 2

Syntaxe 1
Ival = SVkey(Mode[, LogVar[, ResultVar]]);
Argument Signification
LogVar Nom d'une variable état de l'arbre des variables. Type STR.
ResultVar Nom d'une variable mesure de l'arbre des variables.Type STR.

Type de retour : INTEGER.


1 = OK.
-1 = La requête précédente est toujours en cours de traitement.
-5 = La variable LogVar n'existe pas ou est d'un type différent.
-6 = La variable ResultVar n'existe pas ou est d'un type différent.
Exécution
Mode Mnémonique Action
1 READ Envoie une requête de relecture de la licence depuis la clé de protection sur le
poste local.
Valeur de la variable état LogVar :
0 = Requête en cours.
1 = Requête terminée. Si la lecture est un succès, le résultat est disponible
dans la variable mesure ResultVar.
Valeur de la variable mesure ResultVar :
0 = Requête en cours.
1 = Requête réussie.
-1 = Requête en échec (pas de clé).

Syntaxe 2
Ival = SVkey(Mode, RightsType, Slot, Station[, LogVar[, ResultVar]]);
Argument Signification
RightsType Toujours 1
Type INTEGER.
Slot 1 = Premier slot.
2 = Second slot.
Type INTEGER.
Station Numéro du poste sur lequel la clé est connectée. Type INTEGER.
LogVar Nom de la variable état de l'arbre des variables. Type STR..
ResultVar Nom de la variable de l'arbre des variables. Type STR.

Type de retour : INTEGER.


1 = OK.
-1 = La requête précédente est toujours en cours de traitement.
-2 = Le paramètre RightsType est en dehors des valeurs.

SV_SCADABasic_fr 357
-3 = Le numéro du poste ne se trouve pas dans ce projet.
-4 = Le paramètre Slot est en dehors des valeurs.
-5 = La variable LogVar n'existe pas ou est d'un type différent.
-6 = La variable ResultVar n'existe pas ou est d'un type différent.
Exécution
Mode Mnémonique Action
2 ORDER Requiert une licence depuis une clé de protection d'un autre poste.
Valeur de la variable état LogVar :
0 = Requête en cours.
1 = Requête terminée. Si la lecture est un succès, le résultat est disponible
dans la variable mesure ResultVar.
Valeur de la variable mesure ResultVar:
0 = Requête en cours.
1 = Requête réussie. La licence a été lue.
-1 = Requête en échec. Aucune clé de protection trouvée.
-2 = Requête en échec. Plus de licences restantes.
-3 = La licence a déjà été utilisée.
-4 = Requête en échec, réseau déconnecté ou panne de l'ordinateur.
-5 = Requête en timeout.
3 CANCEL Met à jour une licence précédemment lue depuis une clé de protection d'un
autre poste.
Valeur de la variable état LogVar :
0 = Requête en cour.
1 = Requête terminée. Si la lecture est un succès, le résultat est disponible
dans la variable mesure ResultVar.
Valeur de la variable mesure ResultVar:
0 = Requête en cours.
2 = Requête réussie. La licence a été mise-à-jour.
-3 = La licence à mettre à jour n'a pas été trouvée.
-4 = Requête en défaut, réseau déconnecté ou panne de l'ordinateur.
-5 = Requête en timeout.

SV_SCADABasic_fr 358
SVLOG
Voir aussi Exemple Spécifiques
Gestion des listes de consignations.
Mode Mnémonique Syntaxe
1 EXTRACT 1

Syntaxe 1
LVal = SVLOG(Mode, DestHandle, ParamHandle [,EndVarName [, StatusVarName [, LinesVarName
[,StartTime [,EndTime]]]]]);
Type de retour : LONG
Argument Signification
DestHandle Handle du buffer dans lequel seront stockées les lignes de consignation trouvées. Type LONG.
ParamHandl Handle du buffer contenant les paramètres de l'extraction. Les paramètres doivent être
e stockés dans le buffer sous forme d'une Chaine en ascii délimité par des virgules. Type LONG.
EndVarNam Variable de la base de donnée de type état. Cet état est initialisé à 0 puis est mis à 1 lorsque
e l'extraction est terminée. Type STR.
StatusVarNa Variable de la base de donnée de type mesure. Cette mesure est positionnée à -1 en début
me d'extraction. Type STR. En fin d'extraction cette variable vaut :
0 si toutes les lignes concernées ont été extraites
1 si toutes les lignes concernées n'ont pas pu être extraites suite à la limitation
demandée par le paramètre NbMaxLignes
2 si toutes les lignes concernées n'ont pas pu être extraites suite à la limitation
imposée par la taille du buffer de destination. Pour écrire une nouvelle ligne dans le
buffer il faut disposer encore d'au moins 300 caractères libres.
LinesVarNa Variable de la base de donnée de type mesure. Cette mesure est positionnée à -1 en début
me d'extraction. En fin d'extraction cette variable contient le nombre de lignes présentes dans le
buffer. Une valeur négative indique une erreur. Ce paramètre est facultatif et est ignoré s'il
est égal à une chaîne de caractères vide "". Type STR.
StartTime Horodate de début d'extraction. Les horodates doivent être :
- de type mesure (Voir instruction DATETIMEVALUE) et dans ce cas on renvoie l’horodate
sous forme de double
- de type texte et on renvoie l’horodate au format #D/#M/###Y #h:#m:#s:##l.
Type STR.
EndTime Horodate de fin d'extraction. Voir ci-dessus pour les informations de format. Type STR.
Exécution
Mode Mnémonique Action
1 EXTRACT Permet d'extraire des lignes d'une liste de consignation et de les stocker
dans un buffer.
Retour : 0 si erreur, # de 0 si OK.

Pour le format du buffer de paramètre, voir les chapitres Format du Buffer de Paramètre et Expressions de
filtres.
La taille du buffer de destination est limitée à 32 Ko. Une alternative possible est
d'utiliser EXPORT_LOG.

Les noms d'attributs utilisés dans les expressions de filtres n'autorisent pas les espaces.
Par exemple (#A5==T 5) n'est pas autorisé.

SV_SCADABasic_fr 359
Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 360
SVSQL
Voir aussi Exemple
Gestion de bases de données par commande SQL.
Mode Mnémonique Syntaxe
1 CONNECT 1
2 DISCONNECT 2
3 BEGINTRANS 2
4 COMMIT 2
5 ROLLBACK 2
6 EXECUTE 3, 7
7 FETCH 2
8 GETCOL 4
9 GETROW 5
10 NUMCOL 2
11 ROWCOUNT 2
12 GETCOLNAME 4
13 GETCOLSIZE 6
14 FREE 2
15 ERROR 7

Syntaxe 1
LongVal = SVSQL(Mode, Source [,UserID] [,Password] [,Timeout]);
Type de retour : LONG
Argument Signification
Source Nom ODBC de la base. Type STR.
UserID Identifiant utilisateur . Type STR.
Password Mot de passe utilisateur. Type STR.
Timeout Time out de connexion (en secondes). Type LONG.
Exécution
Mode Mnémonique Action
1 CONNECT Connexion à une base de données ODBC.
Retour :
> 0 Handle de connexion
-1 Problème de connexion ou de syntaxe

Syntaxe 2
LongVal = SVSQL(Mode, CHandle);
Type de retour : LONG

Argument Signification
CHandle Handle de connexion. Type LONG.

SV_SCADABasic_fr 361
Exécution
Mode Mnémonique Action
2 DISCONNECT Ferme une connexion à une base de données.
Si une transaction est en cours vous devez fermer la transaction avant
d'effectuer la déconnexion. Pour cela, appelez le mode "COMMIT" ou
"ROLLBACK".
Si vous demandez la déconnexion avant d'avoir fermé la transaction, un
"ROLLBACK" est automatiquement fait.
Retour :
0 Déconnexion effectuée
-1 Problème de déconnexion ou de syntaxe
-2 Handle de connexion inconnu
3 BEGINTRANS Débute une transaction.
Par défaut la connexion est en autocommit (toutes les modifications
effectuées dans la base sont automatiquement enregistrées). L'exécution
de cette fonction fait basculer la connexion en autocommit=faux.
L'autocommit est remis à vrai lors de l'exécution de la fonction COMMIT ou
ROLLBACK.
Retour :
0 Début de transaction effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Tous les drivers ne supportent pas les transactions. D'autre part les modes
de transactions sont gérés différemment selon les drivers. Ce verbe ne
sera accepté que si les conditions suivantes sont réunies :
Le driver gère les transactions.
Lors d'un commit ou d'un rollback le driver conserve les curseurs en
l'état ou les ferme mais ne les détruit pas.
Aucune requête n'est en cours (effectuez un FREE).
4 COMMIT Effectue le commit (acceptation des modifications effectuées dans la base)
d'une transaction.
Retour :
0 Commit effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Pour pouvoir faire un "COMMIT" il faut avoir débuté une transaction par le
mode "BEGINTRANS". La gestion du "COMMIT" est différente selon le
driver utilisé.
5 ROLLBACK Effectue le ROLLBACK (annulation des modifications effectuées dans la
base) d'une transaction.
Retour :
0 Commit effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Pour pouvoir faire un "COMMIT il faut avoir débuté une transaction par le
mode "BEGINTRANS". La gestion du "ROLLBACK" est différente selon le

SV_SCADABasic_fr 362
driver utilisé.
7 FETCH Récupère le prochain enregistrement d'une requête. Cette fonction est
utilisée après une requête "EXECUTE" qui renvoie des enregistrements.
Retour :
0 Fetch effectué et un enregistrement retourné
1 Fetch effectué mais aucun enregistrement retourné
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Cette fonction récupère le prochain enregistrement d'une requête mais ne
fournit pas les valeurs au programme Scada Basic. Pour obtenir les valeurs
vous devez utiliser le mode "GETCOL" ou "GETROW".
10 NUMCOL Retourne le nombre de colonnes dans un enregistrement issu d'une
requête.
Retour :
>= 0 Nombre de colonnes
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Cette fonction ne peut être utilisée que si la fonction "EXECUTE" a été
préalablement appelée.
11 ROWCOUNT Retourne le nombre d'enregistrements affectés par un requête de type
Insert, Update ou Delete.
Retour :
>= 0 Nombre d'enregistrements
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Cette fonction ne peut être utilisée que si la fonction "EXECUTE" a été
préalablement appelée.
14 FREE Libère les ressources utilisées par une requête SQL.
Retour :
0 Free effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Une seule requête SQL peur être active à la fois pour une connexion
donnée. Chaque fois que vous appelez la fonction "EXECUTE", les
ressources de la requête précédente sont automatiquement libérées. Cette
fonction est également effectuée de manière automatique lorsque vous
appelez la fonction "DISCONNECT". Toutefois cette fonction permet de
récupérer de la mémoire durant le temps ou vous n'effectuez pas de
requêtes. Elle doit également être appelée si vous avez effectué une
requête et désirez ensuite débuter une transaction.

Syntaxe 3
LongVal = SVSQL(Mode, CHandle, MsgString);
Type de retour : LONG
Argument Signification
CHandle Handle de connexion. Type LONG.

SV_SCADABasic_fr 363
MsgString Chaîne contenant la requête SQL. Type STR.
Exécution
Mode Mnémonique Action
6 EXECUTE Exécute une requête SQL sur une base de données.
Retour :
0 Commit effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
Une seule requête SQL peur être active à la fois pour une connexion donnée.
Chaque fois que vous appelez cette fonction, la précédente requête SQL est
automatiquement terminée et les éventuels résultats de cette requête sont
perdus.

Syntaxe 4
LongVal = SVSQL(Mode, Shandle, ColNum, BHandle);
Type de retour : LONG
Argument Signification
SHandle Handle de connexion. Type LONG.
ColNum Numéro de la colonne à récupérer (commence à 1 et est numéroté séquentiellement de
gauche à droite). Type INTEGER.
BHandle Buffer devant contenir le champ récupéré. Type LONG.
Exécution
Mode Mnémonique Action
8 GETCOL Récupère un champ dans un enregistrement issu d'une requête. Cette fonction
est utilisée après une requête "EXECUTE" qui renvoie des enregistrements et
après une requête "FETCH" qui sélectionne l'enregistrement.
Retour :
0 < 2 047 Nombre de caractères copiés dans le buffer
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
-3 Buffer de réception trop petit pour contenir la valeur
Les colonnes récupérées sont toujours transmises en format Chaîne de
caractères quel que soit leur type dans la base. La longueur d'une colonne ne
peut dépasser 255 caractères.
12 GETCOLNAME Récupère le nom d'une colonne dans un enregistrement issu d'une requête.
Cette fonction est utilisée après une requête "EXECUTE" qui renvoie des
enregistrements.
Retour :
0 < 2 047 Nombre de caractères copiés dans le buffer
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
-3 Buffer de réception trop petit pour contenir la valeur

Syntaxe 5
LongVal = SVSQL(Mode, Shandle, Bhandle, Delim);

SV_SCADABasic_fr 364
Type de retour : LONG
Argument Signification
CHandle Handle de connexion. Type LONG.
BHandle Buffer devant contenir les champs récupérés. Type LONG.
Delim Chaîne de caractères délimitant les champs. Type STR.
Exécution
Mode Mnémonique Action
9 GETROW Récupère un enregistrement issu d'une requête et renvoie les données au format
ascii délimité dans un buffer.
Cette fonction est utilisée après une requête "EXECUTE" qui renvoie des
enregistrements et après une requête "FETCH" qui sélectionne l'enregistrement.
Retour :
>= 0 Nombre de caractères copiés dans le buffer
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
-3 Buffer de réception trop petit pour contenir les valeurs
Les colonnes récupérées sont toujours transmises au format Chaîne de
caractères quel que soit leur type dans la base.

Syntaxe 6
LongVal = SVSQL(Mode, CHandle, ColNum);
Type de retour : LONG
Argument Signification
CHandle Handle de connexion. Type LONG.
ColNum Numéro de la colonne à récupérer (commence à 1 et est numéroté séquentiellement de
gauche à droite). Type INTEGER.
Exécution
Mode Mnémonique Action
13 GETCOLSIZE Récupère la taille maximum d'une colonne dans un enregistrement issu d'une
requête. Cette fonction est utilisée après une requête "EXECUTE" qui renvoie des
enregistrements.
Retour :
>= 0 Taille de la colonne
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
La taille renvoyée ne correspond pas au nombre d'octets occupés par la colonne
mais au nombre max de caractères nécessaires pour renvoyer les données de la
colonnes sous un format texte.

Syntaxe 7
LongVal = SVSQL(Mode, CHandle, BHandle);
Type de retour : LONG
Argument Signification
CHandle Handle de connexion. Type LONG.
BHandle Buffer devant contenir le message d'erreur. Type LONG.

SV_SCADABasic_fr 365
Exécution
Mode Mnémonique Action
6 EXECUTE Exécute une requête SQL sur une base de données.
Retour :
0 Commit effectué
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu

Une seule requête SQL peur être active à la fois pour une connexion donnée.
Chaque fois que vous appelez cette fonction, la précédente requête SQL est
automatiquement terminée et les éventuels résultats de cette requête sont
perdus.
15 ERROR Retourne les derniers messages d'erreurs renvoyés par le driver ODBC.
Retour :
>= 0 Nombre de caractères copiés dans le buffer
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu
-3 Buffer de réception trop petit pour contenir la valeur

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 366
SVTREND
Voir aussi Exemple
Récupération entre deux dates des valeurs historisées d’un ensemble de variables.
Mode Mnémonique Syntaxe
1 GETTREND 1
2 GETNEXTBUFFE 2
R

Syntaxe 1
IVal = SVTREND (Mode, ListVar, Branch, StartDate, EndDate, Period, [DisplayMode, Handle_Result,
Parameters]);
Argument Signification
ListVar Soit :
Handle contenant la liste des variables (séparée par des virgules) concernées par la
recherche. Type LONG.
Ou :
Liste des variables (séparée par des virgules) concernées par la recherche. Type STR.
Branch Branche de la liste des variables. Type STR.
StartDate Date de début de la recherche. Type DOUBLE.
EndDate Date de fin de la recherche. Type DOUBLE.
Period Période d’échantillonnage en secondes. Type DOUBLE.
DisplayMode Présentation des points. Type INTEGER.
Handle_Res Handle du buffer résultat. Type LONG.
ult
Parameters Soit :
Handle du buffer contenant les champs suivants séparés par des virgules. Type LONG.
Ou :
Chaîne de caractères contenant une liste séparée par des virgules. Type STR.
Dans ce cas, il y a quatre valeurs Format, Filter, LogVar, NameVar. Voir ci-dessous.
Format Format des données. Voir ci-dessous. Type STR.
Filter Filtre appliqué à la recherche. Voir le chapitre Expressions de Filtres. Type STR.
LogVar Nom de la variable état mise à 1 en fin de traitement. Type STR.
NameVar Nom de la variable mesure ayant l'identifiant numérique du nom de la variable couramment
utilisée. Type STR.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
1 GETTREND Récupère les valeurs historisées d'un ensemble de variables entre deux dates.
Retour :
1 OK
-1 "Handle_Listvar" est nul ou de longueur nulle
-2 "Str_ListVar" n’a pu être lu
-3 Le paramètre 1 n’est ni de type LONG ni de type STR.

SV_SCADABasic_fr 367
-4 Le paramètre 2 n’est pas de type STR
-5 Le paramètre 3 n’est pas de type DOUBLE
-6 Le paramètre 4 n’est pas de type DOUBLE
-7 Le paramètre 5 n’est pas de type DOUBLE
-8 Le paramètre 6 n’est pas de type LONG
-10 Le paramètre 7 n’est pas de type STR
-11 Le paramètre 8 n’est pas de type STR
-12 Le paramètre 9 n’est pas de type STR
-13 "StrVar" n’existe pas dans la base de données ou n'est pas configuré
en tendance.
-14 Une des variables de "Handle_ListVar" ou "Str_ListVar" n’est pas une
variable.
-15 Une des variables de "Handle_ListVar" ou "Str_ListVar" n’existe pas
dans la base de données.
-16 Une des variables de "Handle_ListVar" ou "Str_ListVar" fait déja
l’objet d’une requête ( SVTREND ou HISTORY )
-17 "Handle_ListVar" ou "Str_ListVar" est vide.

Caractères de format Date et Heure


Caractère Signification
#D Date
#M Mois
#Y Année sur deux caractères
###Y Année sur quatre caractères
#h Heure
#m Minute
#s Seconde
##l Milliseconde
Tous les autres caractères sont interprétés littéralement.

Syntaxe 2
IVal = SVTREND (Mode, Handle_Result);
Handle_Res Handle du buffer dans lequel les données sont placées. Type LONG.
ult

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
2 GETNEXTBUFFE Récupère le buffer de points suivants. Ce mode est un mode synchrone, c'est-à-
R dire que le buffer est disponible dès l'instruction suivante.
Retour :
0 Buffer vide.
1 OK.
-1 Il n’y a pas eu de GETTREND.
-2 "Handle_Result" est nul ou de longueur nulle.

SV_SCADABasic_fr 368
Le buffer "Handle_Result" est rempli à concurrence de sa taille. Une fois les points récupérés, le
mode GETNEXTBUFFER, permet de récupérer à nouveau le prochain buffer de points.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 369
SYSTEM
voir aussi Exemple Spécifiques
Modifie ou lit l'heure, la date du système, le mode graphique.
Pour fonctionner correctement, les modes SETDATE, SETTIME et SETDATETIME exige que le
Superviseur soit exécuté avec des droits élevés - spécialement SE_SYSTEMTIME_NAME. Depuis
Windows Vista et Server 2008, ces droits ne sont pas donnés par défaut à un utilisateur.

Mode Mnémonique Syntaxe


1 SETDATE 1
2 SETTIME 2
3 GETDATE 3
4 GETTIME 3
5 SETREGION 4
6 SETSYSREGION 4
7 GETREGION 7
8 GETSYSREGION 7
10 SYSTEM 5
11 LOGIN 6
12 LOGOUT 7
13 SETDATETIME 8
14 LANGUAGE 7
15 USER 9, 10
16 EXIT 7
18 CHANGEPASSWORD 16
19 PRINTER 15
20 REPAINT 7
21 PASSWORD 11
22 USERNAME 11
23 MKDIR 12
24 RMDIR 12
25 OPERATORMode 14
26 GETDRIVETYPE 13
27 GETDISKSIZE 13
28 GETDISKFREESPACE 13
29 GETDIRECTORYSIZE 13

Syntaxe 1
IntVal = SYSTEM(Mode, Day, Month, Year);
Type de retour : INTEGER
Argument Signification
Day Jour du mois. Type INTEGER, valeur 1 à 31.
Month Numéro du mois. Type INTEGER, valeur 1 à 12.
Year Numéro de l'année. Type INTEGER, valeur 1980 à 2099.

SV_SCADABasic_fr 370
Exécution
Mode Mnémonique Action
1 SETDATE Modifie la date interne du système
Retour : 1 si OK, 0 sinon.

Syntaxe 2
IntVal = SYSTEM(Mode, Hour, Minute, Second);
Type de retour : INTEGER
Argument Signification
Hour Nombre d'heures. Type INTEGER, valeur 0 à 23.
Minute Nombre de minutes. Type INTEGER, valeur 0 à 59.
Second Nombre de secondes. Type INTEGER, valeur 0 à 59.
Exécution
Mode Mnémonique Action
2 SETTIME Modifie l'heure interne du système
Retour : 1 si OK, 0 sinon.

Si les instructions de remise à l'heure (SETTIME) et de changement de date (SETDATE) sont


appelées consécutivement dans un programme, elles doivent être séparées par une instruction de
type DELAY (0.1) (0.1 seconde suffit). Utiliser plutôt le mode SETDATETIME.

Syntaxe 3
StrVal= SYSTEM(Mode);
Type de retour : STR
Exécution
Mode Mnémonique Action
3 GETDATE Récupére la date interne dans une chaîne de caractères.
4 GETTIME Récupère l'heure interne dans une chaîne de caractères.

Syntaxe 4
IntVal = SYSTEM(Mode, Region);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
5 SETREGION Affecte la région courante selon le système de région utilisé.
Un seul écran
région 1 uniquement (par défaut)
Deux écrans
région 1 = écran de gauche
région 2 = écran de droite
Trois écrans
région 1 = écran de gauche
région 2 = écran du milieu
région 3 = écran de droite

SV_SCADABasic_fr 371
Quatre écrans
région 1 = écran de gauche
région 2 = centre gauche
région 3 = centre droite
région 4 = écran de droite
6 SETSYSREGION Choisit un système de région.
1 : 1 seul écran (par défaut)
2 : 2 écrans en paysage horizontal
3 : 3 écrans en paysage horizontal

Syntaxe 5
IntVal = SYSTEM(Mode, Command);
Type de retour : INTEGER.
Argument Signification
Command Chaîne de 255 caractères.
Exécution
Mode Mnémonique Action
10 SYSTEM Exécute une ligne de commande du système d'exploitation résidant.
Retour : Toujours 0.

Syntaxe 6
IntVal = SYSTEM(Mode, Username, Password);
Type de retour : INTEGER.
Argument Signification
Username Nom de l'utilisateur. Type STR.
Password Mot de passe de l'utilisateur. Type STR.
Exécution
Mode Mnémonique Action
11 LOGIN Pour se connecter par programme, "username" doit être de type STR et contient
le nom de l'utilisateur à connecter, "password" doit être de type STR et contient
son mot de passe.
Retour : 1 si OK, 0 sinon.

Syntaxe 7
IntVal = SYSTEM(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
7 GETREGION Récupère la région courante (Voir Mnémonique 4 pour explication.)
8 GETSYSREGION Récupère le système de région couramment utilisé (Voir Mnémonique 4 pour
explication)
12 LOGOUT Déconnecte l'utilisateur courant
Retour : Toujours 0.

SV_SCADABasic_fr 372
14 LANGUAGE Renvoie le numéro de la langue courante
Retour : 1 ou 2 si OK, 0 si erreur d'utilisation
16 EXIT Sortie du superviseur.
Retour : 1 si sortie utilisée, 0 si impossible par exemple si des boîtes de dialogue
sont ouvertes.
20 REPAINT Rafraîchissement de l'écran (idem F11 standard).
Retour : Toujours 0.

Syntaxe 8
IntVal = SYSTEM(Mode, Date, Time);
Type de retour : INTEGER
Argument Signification
Date Une chaîne format DD/MM/YY. Type STR.
Time Une chaîne format HHMMSS. Type STR.
Exécution
Mode Mnémonique Action
13 SETDATETIME Permet d'affecter la date et l'heure du système en une seule instruction, les
deux arguments doivent être de type STR et contiennent respectivement la
nouvelle date et heure à affecter.
Retour : 1 si OK, 0 sinon.

Mnémonique 9
StrVal = SYSTEM(Mode, Rights);
Type de retour : STR
Argument Signification
Rights Toujours 0.
Exécution
Mode Mnémonique Action
15 USER Renvoie le nom de l'utilisateur courant.

Syntaxe 10
IntVal = SYSTEM(Mode, Rights);
Type de retour : INTEGER
Argument Signification
Rights Valeur des droits associés à l'utilisateur courant. Type INTEGER.
Pour une liste des poids Administration, Système et Recette, droits d'impression fenêtre. voir
le chapitre Poids des Droits d'Accès.
1 Droits d'accès système
5 Droits de recette
7 Administration (comme dans un profil utilisateur)
10 Impression fenêtre

Pour Conduite, Suivi, Acquittement et calques : le poids binaire correspond directement au


niveau. Par exemple, un retour de 9 (binaire 1001) correspond aux niveaux 1 et 4.

SV_SCADABasic_fr 373
2 Droit de conduite
3 Droits de suivi
4 Droits d'acquittement
6 Droits de calques
8 Masqué (0 à 29).

9 (Non utilisé)
Exécution
Mode Mnémonique Action
15 USER Renvoie la valeur des droits associés à l'utilisateur courant.
Les droits sont retournés comme poids binaires en INTEGER.

Pour plus d'informations, voir le chapitre sur les Droits d'accès dans l'aide de Configuration du
Superviseur.

Syntaxe 11
StrVal = SYSTEM(Mode, Param);
Type de retour : STR
Argument Signification
Rights Type INTEGER.
Exécution
Mode Mnémonique Action
21 PASSWORD Renvoie le mot de passe correspondant au nom d'utilisateur passé en argument.
22 USERNAME Renvoie le nom d'utilisateur correspondant au mot de passe passé en argument.

Syntaxe 12
IntVal = SYSTEM(Mode, Folder);
Type de retour : INTEGER
Argument Signification
Folder Nom du répertoire. Par exemple "C\\NEWDIR". Type STR.
Exécution
Mode Mnémonique Action
23 MKDIR Création d'un répertoire.
Retour : 1 si OK, 0 sinon.
24 RMDIR Suppression d'un répertoire.
Retour : 1 si OK, 0 sinon.

Syntaxe 13
IntVal = SYSTEM(Mode, DiskInfo);
Argument Signification
DiskInfo DiskInfo est le nom du disque ou du répertoire. Vous pouvez inclure un deux-point après le
nom du disque (par exemple "C:") et deux anti-slashes pour spécifier le répertoire (par
exemple "C:\\temp"). Type STR.
Exécution

SV_SCADABasic_fr 374
Mode Mnémonique Action
26 GETDRIVETYPE Renvoie le type de disque configuré dans le BIOS. Type de retour : INTEGER.
27 GETDISKSIZE Renvoie la taille du disque en Koctets. Type de retour : LONG.
28 GETDISKFREESP Renvoie l'espace libre du disque en Koctets. Type de retour : LONG.
ACE
29 GETDIRECTORYS Renvoie la taille du répertoire spécifié en Koctets. Type de retour : LONG.
IZE

Syntaxe 14
IntVal = SYSTEM(Mode, Flag, Global, SetSendList);
Type de retour : INTEGER
Argument Signification
Flag 0 ou 1 :
1 consignation activée.
0 consignation désactivée. Valeur par défaut.
Global Facultatif. Lorsque Flag est positionné à 1 :
0 consignation activée seulement dans une fonction où des variables sont positionnées
(défaut)
1 global, consignation activée dans toutes les fonctions SCADA Basic.
SetSendList Facultatif. 0 si Flag = 1 lorsque la consignation de l'utilisateur courant est faite sur des
variables positionnées par l'instruction Set/SendList, autrement pas de consignation.
1 pour compatibilité, consignation sans que la consignation de l'utilisateur courant soit fait
sur des variables positionnées par l'instruction Set/SendList indépendamment de la valeur de
Flag. Valeur par défaut : 0 pour un nouveau projet.
Exécution
Mode Mnémonique Action
25 OPERATORMODE Autorise la consignation de variables positionnées par un programme et qui doit
être attribué à un utilisateur.
Retour : 1 si OK, 0 sinon.

Les instructions SYSTEM ("OPERATORMODE, 0, 0) et SYSTEM (OPERATORMODE, 0, 1) ont le même


effet : la consignation est désactivée dans toutes les fonctions SCADA Basic.

Syntaxe 15
IntVal = SYSTEM(Mode, PrinterNo, Flag);
Type de retour : INTEGER
Argument Signification
PrinterNo Numéro d'imprimante pour impression ligne.
Flag 0 ou 1.
Exécution
Mode Mnémonique Action
19 PRINTER Positionne le spooler de l'imprimante en ligne à utiliser. Si Flag est :
0 spooling activé
1 spooling désactivé
Retour : 1 si OK, 0 sinon.

Syntaxe 16

SV_SCADABasic_fr 375
IntVal = SYSTEM(Mode, Username, Password, NewPassword);
Type de retour : INTEGER.
Argument Signification
Username Nom de l'utilisateur. Type STR.
Password Mot de passe existant. Type STR.
NewPasswor Nouveau mot de passe. Type STR.
d
Exécution
Mode Mnémonique Action
18 CHANGEPASSWORD Modifie le mot de passe de l'utilisateur.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 376
TAN
Voir aussi
Fonction tangente.

Syntaxe
DblVal = TAN(Angle);
Type de retour : DOUBLE.
Argument Meaning
Angle L'angle à convertir exprimé en degré. Tout type numérique.
Exécution
Les variables de la base de données sont de type SINGLE. En cas d'affectation avec cette fonction, la
conversion en SINGLE est donc nécessaire si l'on veut éviter une erreur de type.

Exemple
'database variables
'@ARC - type Register
'@ANGLE - type Register
SUB Main()
'Declare
DIM dblangle as double;
DIM dblarc as double;

dblangle = 45;
dblarc = TAN (dblangle);
print("TAN(",dblangle,") = ",dblarc);
END SUB

SV_SCADABasic_fr 377
TEMPORARY_DB
Voir aussi Exemple
Création ou destruction de variables temporaires, ainsi qu'activation ou désactivation du mode de
génération automatique.
Mode Mnémonique Syntaxe
0 OFF 1
1 ON 1
2 ADDBIT 2
3 ADDREG 3
4 ADDTXT 4

Syntaxe 1
IntVal = TEMPORARY_DB(Mode);
Type de retour : INTEGER.
Mode Mnémonique Action
0 OFF Désactive le mode de génération automatique des variables temporaires.
Retour : Toujours 1
1 ON Active le mode de génération automatique des variables temporaires. Dès
qu'une variable est référencée dans une animation et qu'elle n'existe pas dans la
base de donnée, une variable temporaire est crée.
Retour : Toujours 1
Exécution

Syntaxe 2
IntVal = TEMPORARY_DB(Mode, VarName, Title_1, Title_2);
Argument Signification
VarName Nom de la variable temporaire. Type STR
Title_1 Libellé de la variable temporaire en langue 1. Type STR
Title_2 Libellé de la variable temporaire en langue 2. Type STR

Type de retour : INTEGER.


Exécution
Mode Mnémonique Action
2 ADDBIT Création d'une variable temporaire de type Etat.
Retour :
1 si la création a bien eu lieu
0 si la variable existe déjà ou mauvaise syntaxe.

Syntaxe 3
IntVal = TEMPORARY_DB(Mode, VarName, Title_1, Title_2, Min, Max, Format, Units);
Argument Signification
VarName Nom de la variable temporaire. Type STR.

Title_1 Libellé de la variable temporaire en langue 1. Type STR.

SV_SCADABasic_fr 378
Min Valeur minimum de la mesure. Tout type numérique.
Max Valeur maximum de la mesure. Tout type numérique.
Format Format d'affichage de la mesure, par exemple ###.##. Type STR.
Units L'unité texte de le mesure, par exemple DegC. Type STR.

Type de retour : INTEGER.


Exécution
Mode Mnémonique Action
3 ADDREG Création d'une variable temporaire de type Mesure.
Retour :
1 si la création a bien eu lieu
0 si la variable existe déjà ou mauvaise syntaxe.

Syntaxe 4
IntVal = TEMPORARY_DB(Mode, VarName, Title_1, Title_2);
Argument Signification
VarName Nom de la variable temporaire. Type STR
Title_1 Libellé de la variable temporaire en langue 1. Type STR
Title_2 Libellé de la variable temporaire en langue 2. Type STR

Type de retour : INTEGER.


Exécution
Mode Mnémonique Action
4 ADDTXT Création d'une variable temporaire de type Texte.
Retour :
1 si la création a bien eu lieu
0 si la variable existe déjà ou mauvaise syntaxe.

Exemple
DIM ConstVarName As Str;
DIM VarName As Str;
DIM Index As Integer;
ConstVarName = "TempBit"
'-------- Create 100 bit variables TempBit0 to TempBit99
For(Index = 0; Index < 100; Index ++)
VarName = AddString(ConstVarName, TOC(Index));
Temporary_DB("ADDBIT", VarName, "", "");
Next
Pour plus d'exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 379
TEXTVAR
Voir aussi Exemple
Manipulation de chaînes de caractères.
Mode Mnémonique Syntaxe
1 BUFTOTEXT 1
2 TEXTTOBUF 1
3 FILETOTEXT 2
4 TEXTTOFILE 3
5 TEXTCOMPARE 4
6 TEXTCOPY 5
7 TEXTLEN 6

Syntaxe 1
IntVal = TEXTVAR(Mode, Text, Hbuf, Text_Offset, Hbuf_Offset, Size);
Argument Signification
Text Chaîne dont le terminateur est le zéro binaire. (\0).
Size Nombre de caractères à copier ou 0 pour tous les caractères.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
1 BUFTOTEXT Copie le nombre de caractères spécifié dans size à partir du buffer donné par son
handle hbuf et à partir de son offset hbuf_offset vers la variable texte de nom
Text, à partir de la position text_offset.
Retour : Le nombre de caractères copiés par la commande.
2 TEXTTOBUF Copie size caractères de la variable Text à partir de la position text_offset vers le
buffer donné par son handle hbuf et à partir de son offset hbuf_offset.
Retour : Le nombre de caractères copiés par la commande.

Syntaxe 2
IntVal = TEXTVAR(Mode, Text, Filename, Text_Offset, File_Offset, Size);
Argument Signification
Text Chaîne dont le terminateur est le zéro binaire. (\0).
Filename Nom du fichier source.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
3 FILETOTEXT Copie le nombre de caractères spécifié dans size à partir de la position file_offset
du fichier Filename vers la variable texte de nom Text, à partir de la position
text_offset
Retour : Nombre de caractères copiés par la commande.

Syntaxe 3
IntVal = TEXTVAR(Mode, Text, Filename, Text_Offset, Filemode, Size);

SV_SCADABasic_fr 380
Argument Signification
Text Chaîne dont le terminateur est le zéro binaire. (\0).
Filename Nom du fichier source.
FileMode 0 Les caractères sont écrits au début du fichier et écrasent le contenu existant.
1 Les caractères sont ajoutés à la fin du fichier.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
4 TEXTTOFILE Ecrit le nombre de caractères spécifié dans size à partir de la position text_offset
de la variable Text vers le fichier Filename en filemode=0 (Write ou
écrasement/création de fichier) ou en filemode=1 (Append ou concaténation en
fin de fichier)
Retour : Nombre de caractères écrits par la commande.

Syntaxe 4
IntVal = TEXTVAR(Mode, Text1, Text2, size);
Argument Signification
Text1 Nom d'une variable texte. (\0).
Text2 Nom d'une autre variable texte. (\0).
Size Longueur de la valeur des variables texte à comparer. Type INTEGER.
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
5 TEXTCOMPARE Compare les chaînes de caractères des variables texte Text1 et Text2 selon le
nombre de caractères spécifié dans size.

Si size est invalide, les chaînes complètes seront comparées.


Retour :
Moins de 0 si l'extraction de Text1 < l'extraction de Text2
0 si l'extraction de Text1= l'extraction de Text2
Plus que 0 si l'extraction de Text1 > l'extraction de Text2

Syntaxe 5
IntVal = TEXTVAR(Mode, Text1, Text2);
Argument Signification
Text1 Chaîne dont le terminateur est le zéro binaire. (\0).
Text2 Chaîne dont le terminateur est le zéro binaire. (\0).

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
6 TEXTCOPY Copie le contenu de Text2 vers Text1.
Retour : 1 si OK, 0 sinon.

Syntaxe 6

SV_SCADABasic_fr 381
IntVal = TEXTVAR(Mode, Text);
Argument Signification
Text Chaîne dont le terminateur est le zéro binaire. (\0).

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
7 TEXTLEN Renvoie la longueur de la chaîne de caractères contenue dans la variable texte
Text.
Retour : la longueur en caractères de la chaîne Text.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 382
TOC
Voir aussi
Convertit un nombre en chaîne d'après le format standard.

Syntaxe
StrVal = TOC(Num);
Type de retour : STR
Argument Signification
Num Nombre à convertir. Tout type numérique.
Exécution
Les notations scientifiques sont conservées.

Exemple
SUB Main()
DIM lngValue as Long;
DIM strString as Str;

lngValue = 125;
strString = TOC( lngValue );
Print("Result: ", strString);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 383
TOD
Voir aussi
Convertit un nombre en DOUBLE.

Syntaxe
DblVal = TOD(Num);
Argument Signification
Num Nombre à convertir. Tout type numérique.
Exécution
Retour : Pas de restriction sur les valeurs.

Exemple
SUB Main()
DIM lngValue as long;
DIM dblResult as double;

lngValue = 125;
dblResult = TOD( lngValue );
Print("Result: ", dblResult);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 384
TODOUBLE
Voir aussi
Convertit une variable de la base de données en DOUBLE.
Par défaut, SCADA Basic travaille en mode FLOAT, avec d'insignifiantes pertes de précisions.

Syntaxe
DblVal = TODOUBLE(VarName);
Argument Signification
VarName Variable de la base de données dont la valeur doit être convertie. Type STR.

Exécution
Retour : La valeur convertie en type DOUBLE.

Exemple
DATETIMESTRING(TODOUBLE("EXTRACT.DATETIMEB"));

SV_SCADABasic_fr 385
TOHMS
Voir aussi
Convertit une valeur de secondes au format Heures:Minutes:Secondes.

Syntaxe
StrVal = TOHMS(Seconds);
Type de retour : STR
Argument Signification
Seconds Nombre de secondes à convertir. Tout type numérique.
Exécution
Un nombre négatif fournit des heures négatives.

Exemple
SUB Main()
DIM strString1 as STR;
DIM dblValue as DOUBLE;
dblValue = 6594;
strString1 = TOHMS (dblValue);
Print("6594 seconds = ",strString1);
'Display "6594 seconds = 01:49:54"
END SUB

SV_SCADABasic_fr 386
TOI
Voir aussi
Convertit un nombre en ENTIER en le tronquant.

Syntaxe
IntVal = TOI(Num);
Type de retour : INTEGER
Argument Signification
Num Nombre à convertir. Tout type numérique.
Exécution
Return: Le nombre IntVal est converti en ENTIER en le tronquant.

Si le nombre est supérieur à 231 il devient négatif.

Exemple
SUB Main()
DIM lngValue as Long;
DIM intResult as Integer;

lngValue = 125;
intResult = TOI( lngValue );
Print("Result: ", intResult);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 387
TOL
Voir aussi
Convertit un nombre en LONG.

Syntaxe
LongVal = TOL(Num);
Type de retour : LONG
Argument Signification
Num Valeur à convertir. Tout type numérique.
Exécution
Si le nombre contient une décimale il est tronqué.

Exemple
SUB Main()
DIM lngValue as Long;
DIM lngResult as Long;

lngValue = 125;
lngResult = TOL( lngValue );
Print("Result: ", lngResult);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 388
TOLL
Voir aussi
Convertit un nombre en LONGLONG.

Syntaxe
LongLongVal = TOLL(Num);
Type de retour : LONGLONG
Argument Signification
Num Valeur à convertir. Tout type numérique.
Exécution
Le nombre est converti en valeur LONGLONG.

Exemple
SUB Main()
DIM lngValue as Long;
DIM lnglngResult as LongLong;

lngValue = 125;
lngResult = TOLL( lngValue );
PRINT("Result: ", lnglngResult);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 389
TOS
Voir aussi
Convertit un nombre en SINGLE.

Syntaxe
SngVal = TOS(Num);
Type de retour : SINGLE
Argument Signification
Num Nombre à convertir. Tout type numérique.
Exécution
Le nombre SngVal est converti en valeur SINGLE.
Le verbe TOS est équivalent au verbe TOD lorsqu’on a coché la case Utiliser les variables mesures
comme des doubles en Scada Basic (Configuration.Application
Explorer.Paramètres.Avancé.Programmes). Ceci pour ne plus avoir de problème de précisions quand
on utilise des variables mesures de type double.

Exemple
SUB Main()
DIM lngValue as Long;
DIM sngResult as Single;

lngValue = 125;
sngResult = TOS( lngValue );
PRINT("Result: ", sngResult);
'Display "Result: 125"
END SUB

SV_SCADABasic_fr 390
TRACE
Voir aussi
Exécute une trace dans SCADA Basic sans utiliser la fonction PRINT. A des fins de programmation, il peut
être utile d'enregistrer des messages de log dans le fichier standard de log du Superviseur.

Syntaxe
TRACE(Mode, String);
Il n'y a pas de type de retour.
Argument Signification
String Message à consigner. Type STR.

Exécution
Mode Mnémonique Action
LOG Envoyer un message à l'observateur d'événements et au fichier TRACE.DAT.
FILE Envoyer un message au fichier T.

SV_SCADABasic_fr 391
TRACEON/TRACEOFF
Voir aussi
Trace les appels de procédures.

Syntaxe
TRACEON;
ou
TRACEOFF;
Type de retour : aucun
Exécution
La trace connait le nom du programme appelant et le nom du programme appelé ainsi que le nom de la
procédure appelée.
L'instruction TRACEON est active pour toutes les procédures d'un même programme jusqu'à ce que
l'instruction TRACEOFF soit rencontrée.

Exemple
SUB Main()
DIM intResult as Integer;

TRACEON;
procedure1();
procedure2("Parameter1");
intResult = procedure4();
PRINT("Return from procedure = ",intResult);
TRACEOFF;
END SUB

SV_SCADABasic_fr 392
TREE
Voir aussi
Sélectionne une branche de la nomenclature.

Syntaxe
TREE(Branch);
Type de retour : aucun
Argument Signification
Branch Nom de la branche utilisé. Type STR.
Exécution
L'instruction TREE est effective à l'intérieur d'une procédure jusqu'à la prochaine instruction TREE.

Exemple
SUB Main()
'Declare
DIM strBranche as Str;
DIM strTree as Str;

strBranche = "BRANCH01";
TREE (strBranch);
strTree = GETTREE();
PRINT("Branch: ",strTree);
propagationGetTree();
END SUB

SUB propagationGetTree()
DIM strTree as Str;

strTree = GETTREE();
PRINT("Branch: ",strTree);
END SUB

SV_SCADABasic_fr 393
TREEVIEW
Voir aussi Exemple
Propriétés d'accès du contrôle Tree-view.
Mode Mnémonique Syntaxe
1 COUNT 1
2 GETSELECTEDINDEX 1
3 SETSELECTEDINDEX 2
4 GETTEXT 3
5 GETUSERDATA 3
6 GETROOT 1
7 GETCHILDNODE 3
8 GETNEXTNODE 3
9 GETPREVNODE 3
10 GETPARENTNODE 3
11 EXPANDNODE 3
12 COLLAPSENODE 3
13 LOAD 4
14 SETUSERDATA 5
15 SETTEXT 5

Toutes les Syntaxes


Argument Signification
Window Nom de la fenêtre contenant le contrôle de formulaire. Type STR.
Branch Branche (si elle existe) de la fenêtre. Utiliser "*" pour indiquer la branche courante du
programme. Type STR.
Identity Identifiant du contrôle dans la fenêtre spécifiée. Type STR.

Syntaxe 1
LongVal = TREEVIEW(Mode, Window, Branch, Identity);

Exécution
Mode Mnémonique Action
1 COUNT Retourne le nombre de noeuds. Type LONG.
2 GETSELECTEDINDEX Retourne l'index du noeud actuellement sélectionné. Type LONG.
6 GETROOT Retourne l'index de la première racine du noeud. Type LONG.

Syntaxe 2
Return = TREEVIEW(Mode, Window, Branch, Identity, NodeIndex, Notification);
Argument Signification
NodeIndex Index du noeud. Type LONG.
Si l'index est -1 aucun élément n'est sélectionné.
Notification Indique si la sélection déclenche l'exécution de la fonction SCADA Basic définie dans la
configuration Opérations du contrôle. Type INTEGER.
Pour que cela fonctionne, il doit être aussi autorisé dans l'onglet Opérations de la
boîte de dialogue des propriétés Tree-view.
Si nécessaire, la fonction fera défiler le contrôle pour afficher l'élément.

Exécution

SV_SCADABasic_fr 394
Mode Mnémonique Action
3 SETSELECTEDINDEX Sélectionne un noeud suivant son index.
Retourne une valeur qui indique si l'action a aboutie (1) ou échouée (0). Type
LONG.

Syntaxe 3
Return = TREEVIEW(Mode, Window, Branch, Identity, NodeIndex);
Argument Signification
NodeIndex Identifiant du noeud cité dans l'action.

Exécution
Mode Mnémonique Action
4 GETTEXT Retourne le Texte du noeud comme défini dans la langue courante en
utilisation. Type STR.
5 GETUSERDATA Retourne les données utilisateur associées au noeud. Type STR.
7 GETCHILDNODE Retourne l'index du premier noeud enfant d'un noeud. Type LONG.
8 GETNEXTNODE Retourne l'index du noeud suivant de même parent. Type LONG.
9 GETPREVNODE Retourne l'index du noeud précédent de même parent. Type LONG.
10 GETPARENTNODE Retourne l'index du noeud parent. Type LONG.
11 EXPANDNODE Etend le noeud.
Retourne une valeur qui indique si l'action a aboutie (1) ou échouée (0). Type
LONG.
12 COLLAPSENODE Réduit le noeud.
Retourne une valeur qui indique si l'action a aboutie (1) ou échouée (0). Type
LONG.

Syntaxe 4
Return = TREEVIEW(Mode, Window, Branch, Identity, FileName);
Argument Signification
FileName Nom du fichier contenant les données du contrôle.

Exécution
Mode Mnémonique Action
13 LOAD Charge le contenu du fichier de la liste du contrôle des éléments. Type INTEGER.
Retour : 1 si OK (fichier chargé), 0 sinon. Type INTEGER.

Syntaxe 5
LongVal = TREEVIEW(Mode, Window, Branch, Identity, NodeID, Text);
Argument Signification
NodeID Index d'un noeud. Type LONG.
Text Chaîne de texte. Type STR.

Exécution
Mode Mnémonique Action
14 SETUSERDATA
Définit les données de l'utilisateur du nœud en utilisant la chaîne de
texte fournie.
Retourne une valeur indiquant si l'action a réussi (1) ou échoué (0).

SV_SCADABasic_fr 395
15 SETTEXT Définit le texte du nœud en utilisant la chaîne de texte fournie.
Retourne une valeur indiquant si l'action a réussi (1) ou échoué (0).

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 396
TREND
Voir aussi Exemple
Modification des caractéristiques des courbes de tendance.
Lors de l'utilisation de régions multiples, vous devez positionner la région avant l'exécution
d'instructions qui interagissent avec l'IHM. Pour plus d'informations, voir le chapitre REGION.

Mode Mnémonique Syntaxe


1 SETTYPE 1
2 GETTYPE 2
3 SETYRANGE 3
4 GETYMIN 4
5 GETYMAX 4
6 SETPERIOD 5
7 GETPERIOD 6
8 SETDATETIME 7
9 SETDATETIMEPERIOD 8
10 SCROLLPERCENT 9
11 SCROLLTIME 10
12 GETDATETIME 11
13 GETCURSORVALUE 4
14 SETVAR 12
15 GETVAR 13
16 ADDVARLIST 14
17 SETVARLIST 15
18 SETVARBUF 16
19 RESETVAR 17
20 CLEARVAR 17
21 CHANGEID 18
22 SETTIMECAPACITY 5
23 SETCOLOR 19
24 SETSTYLE 1
25 HARDCOPY 20
26 GETSTYLE 22
27 SETYMIN 21
28 SETYMAX 21
29 GETCOLORRED 22
30 GETCOLORGREEN 22
31 GETCOLORBLUE 22
32 REFRESH 20
33 THRESHOLD_SETMODE 23
35 THRESHOLD_SETPROP 24
36 THRESHOLD_SETVALUE 25
37 THRESHOLD_DRAWLINE 26

SV_SCADABasic_fr 397
38 DRAW_MINLINE 27
39 DRAW_MAXLINE 27
40 DISPLAY_MINMAXLINE 30
41 SETTIMEORIGIN 28
42 SETTIMEOFFSET 29
43 EXPORT 20
44 SET_VISIBLE 31
45 DISPLAY_SCALE 31

Toutes Syntaxes
Argument Signification
Window Nom de la fenêtre qui contient la fenêtre de tendance utilisée. Type STR.
Branch Branche de la fenêtre (si elle existe). Utiliser un "*" signifie la branche courante du
programme. Type STR.
Identity Identifiant de l'animation fenêtre de tendance dans la fenêtre spécifiée. Type STR.

Syntaxe 1
IntVal = TREND( Mode, Window, Branch, Identity, Trace, SubMode);
Type de retour : INTEGER
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 0 à 8.
SubMode Mode d'opération pour le tracé sélectionné. Type INTEGER.
Exécution
Mode Mnémonique Action
1 SETTYPE Modification de tous les tracés en historique (SubMode=2) ou en temps-réel
(SubMode=1). Le paramètre Trace n'est pas pris en compte et doit être
positionné à 0.
24 SETSTYLE Permet de modifier le style de la courbe selon le paramètre SubMode :
0 créneau
1 ligne brisée
2 pointillé
Retour : 1 si OK, 0 sinon.

Lors de l'utilisation du mode SETTYPE, le paramètre Trace doit toujours être inclus mais il est
ignoré. Tous les tracés sont affectés.

Syntaxe 2
IntVal = TREND(Mode, Window, Branch, Identity, Trace);
Type de retour : INTEGER
Argument Signification
Trace Inutilié. Toujours 0.
Exécution
Mode Mnémoniq Action
ue
2 GETTYPE Retourne le Mode de fonctionnement de tous les tracés. Le paramètre Trace est
inutilisé est toujours positionné à 0.
Retour :

SV_SCADABasic_fr 398
1 ou "RealTime"
2 for historic
0 ou "Historical"

Syntaxe 3
IntVal = TREND(Mode, Window, Branch, Identity, Trace [, Ymin, YMax]);
Type de retour : INTEGER
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.
Ymin, YMax Valeur pour le tracé sélectionné. Type DOUBLE.
Exécution
Mode Mnémonique Action
3 SETYRANGE Modification des valeurs min. et max. en Y d'une courbe de tendance.
Lorsque ces paramètres sont omis, les valeurs min. et max. de la variable en
tendance sont utilisées.
Si le tracé est 0 alors tous les tracés sont affectés. Si le tracé est entre 1 et 8,
seule le tracé correspondant est affecté.
Retour : 1 si OK, 0 sinon.

Syntaxe 4
DblVal = TREND(Mode, Window, Branch, Identity, Trace);
Type de retour : DOUBLE
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.
Exécution
Mode Mnémonique Action
4 GETYMIN Lecture de la valeur min. en Y d'une courbe de tendance.
5 GETYMAX Lecture de la valeur max. en Y d'une courbe de tendance.
13 GETCURSORVALUE Lecture de la valeur d'une variable d'une courbe de tendance à la position
courante du curseur.

Syntaxe 5
IntVal = TREND(Mode, Window, Branch, Identity, Duration);
Type de retour : INTEGER
Argument Signification
Duration Période exprimée en millisecondes. Type DOUBLE.
Exécution
Mode Mnémonique Action
6 SETPERIOD Modification de la durée de visualisation des courbes de tendance. La durée est
exprimée en millisecondes.
22 SETTIMECAPACITY Modification de la durée (capacité) de stockage du buffer d'affichage pour le
temps réel.
Retour : 1 si OK, 0 sinon.

Syntaxe 6

SV_SCADABasic_fr 399
DblVal = TREND(Mode, Window, Branch, Identity);
Type de retour : DOUBLE
Exécution
Mode Mnémonique Action
7 GETPERIOD Retourne la période de l'axe X exprimée en millisecondes.

Syntaxe 7
IntVal = TREND(Mode, Window, Branch, Identity, StartTime, EndTime]);
Type de retour : INTEGER
Argument Signification
StartTime Horodate le plus ancien exprimé en millisecondes. Type DOUBLE.
EndTime Horodate le plus récent exprimé en millisecondes Type DOUBLE.
Exécution
Mode Mnémonique Action
8 SETDATETIME Modification des horodates d'affichage de début et de fin des courbes de
Lorsque le paramètre 'HorodateFin' est omis, seul l'horodate de début est
modifiée (la durée ne change pas).
La durée d'observation correspond à la durée affichée sur la largeur de la fenêtre
de visualisation des courbes.
Retour : 1 si OK, 0 sinon.

Syntaxe 8
IntVal = TREND(Mode, Window, Branch, Identity, StartTime, Duration);
Type de retour : INTEGER
Argument Signification
Duration Période exprimée en millisecondes. Type DOUBLE.
Exécution
Mode Mnémonique Action
9 SETDATETIMEPERI Modification de l'horodate de début et de la durée des courbes de tendance.
OD
Retour : 1 si OK, 0 sinon.

Syntaxe 9
IntVal = TREND(Mode, Window, Branch, Identity, PScroll);
Type de retour : INTEGER
Argument Signification
Pscroll Pourcentage compris entre -100 et +100 inclus. Type INTEGER.
Exécution
Mode Mnémonique Action
10 SCROLLPERCENT Déplacement dans le temps des courbes de tendance.
Le déplacement est exprimé en pourcentage de la durée de l'échelle des temps.
Un pourcentage négatif indique un déplacement en arrière dans le temps et une
pourcentage positif un déplacement en avant.
Un pourcentage nul recale les courbes sur l'horodate courante.
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 400
Syntaxe 10
IntVal = TREND(Mode, Window, Branch, Identity, TScroll);
Type de retour : INTEGER
Argument Signification
Tscroll Période exprimée en millisecondes. Type DOUBLE.
Exécution
Mode Mnémonique Action
11 SCROLLTIME Déplacement dans le temps des courbes de tendance.
Le déplacement est exprimé en millisecondes. Un temps négatif indique un
déplacement en arrière et un temps positif un déplacement en avant.
Retour : 1 si OK, 0 sinon.

Syntaxe 11
DblVal = TREND(Mode, Window, Branch, Identity, Trace, Function);
Type de retour : DOUBLE
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.
Function Indicateur d'opération. Type INTEGER, valeur 1 à 3.
Exécution
Mode Mnémonique Action
12 GETDATETIME Retourne l'horodate de la tendance exprimée en millisecondes depuis 1980,
selon l'argument Function :
1 Horodate de début
2 Horodate de fin
3 Horodate du curseur

Syntaxe 12
IntVal = TREND(Mode, Window, Branch, Identity, ClearFlag, Trace, VarName [,Label [Type]]);
Type de retour : INTEGER
Argument Signification
ClearFlag Indicateur de traitement du tracé courant. Type INTEGER, valeur 0 ou 1.
VarName Nom de la variable à afficher. Type STR.
Label Libellé affiché dans la bordure gauche de la tendance. Type STR.
Type Indicateur du mode d'opération du tracé. Type INTEGER, valeur 0 à 2.
Exécution
Mode Mnémonique Action
14 SETVAR Modification du nom de la variable,du libellé et du type d'une des 8 courbes
d'une animation courbe de tendance. Modification du mode temps réel /
historique.
0 Les courbes présentes sont conservées.
1 Les courbes présentes sont supprimées.
Mode d'opération indiqué par l'argument Type :
0 Pas de changement de type de courbe
1 Courbe de type temps réel.

SV_SCADABasic_fr 401
2 Courbe de type historique.
Retour : 1 si OK, 0 sinon.

Syntaxe 13
StrVal = TREND(Mode, Window, Branch, Identity, Trace);
Type de retour : STR
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.
Exécution
Mode Mnémonique Action
15 GETVAR Lecture du nom de la variable d'une courbe de tendance.

Syntaxe 14
IntVal = TREND(Mode, Window, Branch, Identity, Trace, Varname [,Label [Type]]);
Type de retour : INTEGER
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8
VarName Nom de la variable à afficher. Type STR.
Label Libellé affiché dans la bordure gauche de la tendance. Type STR.
Type Indicateur du mode d'opération du tracé. Type INTEGER, valeur 0 à 2.
Exécution
Mode Mnémonique Action
16 ADDVARLIST Permet la préparation d'une modification portant sur plusieurs courbes d'une
animation courbe de tendance. Des appels successifs à "AddVarList" permettent
de constituer la liste des courbes à modifier et l'appel à "SetVarList" déclenche la
modification.
Mode d'opération indiqué par l'argument Type :
0 Pas de changement de type de courbe
1 Courbe de type temps réel.
2 Courbe de type historique.
Retour : 1 si OK, 0 sinon.

Syntaxe 15
IntVal = TREND(Mode, Window, Branch, Identity, ClearFlag)
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
17 SETVARLIST Used with Mode16 to change the variable for a number of traces on the same
Trend Viewer simultaneously. The current traces are preserved or erased
according to ClearFlag:
0 preserved
1 erased
Retour : 1 si OK, 0 sinon.

Syntaxe 16

SV_SCADABasic_fr 402
IntVal = TREND(Mode, Window, Branch, Identity, ClearFlag, Handle)
Argument Signification
Handle Localisation du buffer mémoire crée par l'instruction FILETOBUF. Type LONG.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
18 SETVARBUF Permet de modifier simultanément plusieurs courbes. Les paramètres de
modification doivent être préparés dans un buffer mémoire.
0 Les courbes présentes sont conservées.
1 Les courbes présentes sont supprimées.
La syntaxe pour chaque ligne du buffer mémoire doit être la suivante :
Trace, VarName, Label, Type
Retour : 1 si OK, 0 sinon.

Syntaxe 17
IntVal = TREND(Mode, Window, Branch, Identity, [,Trace]);
Type de retour : INTEGER
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.
Exécution
Mode Mnémonique Action
19 RESETVAR Permet de réinitialiser une animation courbe de tendance avec les paramètres de
configuration. Toutes les courbes sont affectées si NuméroCourbe = 0.
Retour : 1 si OK, 0 sinon.
20 CLEARVAR Permet de supprimer une ou toutes les courbes d'une animation. Toutes les
courbes sont affectées si NuméroCourbe = 0.
Retour : 1 si OK, 0 sinon.

Syntaxe 18
IntVal = TREND(Mode, Window, Branch, Identity, NewIdentity);
Argument Signification
NewIdentity Nouveau repère de l'animation Tendance.. Type STR.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
21 CHANGEID Permet de modifier dynamiquement le repère d'une animation Tendance.
Retour : 1 si OK, 0 sinon.

Syntaxe 19
IntVal = TREND(Mode, Window, Branch, Identity, Trace, Red, Green, Blue);
Type de retour : INTEGER
Argument Signification
Trace Nombre de tracés à modifier. Type INTEGER, valeur 1 à 8.

SV_SCADABasic_fr 403
Red Composant rouge de la courleur du tracé. Type INTEGER, valeur 0 à 255.
Green Composant vert de la courleur du tracé. Type INTEGER, valeur 0 à 255.
Blue Composant bleu de la courleur du tracé. Type INTEGER, valeur 0 à 255.
Exécution
Mode Mnémonique Action
23 SETCOLOR Permet de changer la couleur d'une courbe.
Change aussi la couleur de la courbe invalide et de l'échelle.
Retour : 1 si OK, 0 sinon.

Lorsqu'une fonction se rapporte à une seule courbe de tendance de l'animation, cette courbe est
identifiée par un cinquième paramètre appelé 'NuméroCourbe'.
Ce numéro correspond à l'indice 1 à 8 d'une courbe de tendance dans une animation. Pour certaines
fonctions, ce numéro peut être égal à 0 pour désigner l'ensemble des courbes de tendance de
l'animation.

Les paramètres contenant des horodates sont de type DOUBLE. Une horodate est toujours une
valeur représentant le nombre de millisecondes écoulées depuis le 1er janvier 1980 à
00:00:00.000.

Syntaxe 20
IntVal = TREND(Mode, Window, Branch, Identity);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
25 HARDCOPY Copie d'écran (proportionnelle) de la fenêtre de tendance.
Retour : 1 si OK, 0 sinon.
32 REFRESH Effectue une requête aux historiques.
Retour : 1 si OK, 0 sinon.
43 EXPORT Enclenche un Export de tendances. L'effet est similaire au bouton Export d'une
fenêtre de tendances.
Retour : 1 si OK, 0 sinon.

L'effet de HARDCOPY est similaire au bouton Impression de la barre d'outils.

Syntaxe 21
IntVal = TREND(Mode, Window, Branch, Identity, Trace, dbY);
Type de retour : INTEGER
Argument Signification
Trace Numéro de la courbe. Type INTEGER, de 1 à 8.
dbY Valeur minimum ou maximum de l'échelle de la courbe.
Exécution
Mode Mnémonique Action
27 SETYMIN Positionne la valeur minimum de l’échelle pour une courbe.
Retour : 1 si OK, 0 sinon.
28 SETYMAX Positionne la valeur maximum de l'échelle pour une courbe.

SV_SCADABasic_fr 404
Retour : 1 si OK, 0 sinon.

Si les Min et Max sont à 0, ce seront les valeurs Min et Max de la variable qui seront utilisées à la
place.

Syntaxe 22
IntVal = TREND(Mode, Window, Branch, Identity, Trace);
Type de retour : INTEGER
Argument Signification
Trace Numéro de la courbe. Type INTEGER, de 1 à 8.
Exécution
Mode Mnémonique Action
26 GETSTYLE Retourne le type de tracé pour une courbe.
Retour :
-1 en cas d’erreur.
0 pour un tracé de type Créneau.
1 pour un tracé de type Ligne brisée.
2 pour un tracé de type Point.
29 GETCOLORRED Retour :
-1 en cas d’erreur
0 à 255 : La composante rouge de la couleur de la courbe
30 GETCOLORGREEN Retour :
-1 en cas d’erreur
0 à 255 : La composante verte de la couleur de la courbe
31 GETCOLORBLUE Retour :
-1 en cas d’erreur
0 à 255 : La composante bleue de la couleur de la courbe

Syntaxe 23
IntVal = TREND(Mode, Window, Branch, Identity, Trace, ThresholdMode[, ThresholdValue1,
DisplayThreshold1[, ThresholdValue2, DisplayThreshold2[,ThresholdValue3,
DisplayThreshold3[,ThresholdValue4, DisplayThreshold4]]]]);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
ThresholdMode Nouveau mode de seuils. Type INTEGER, de -1 à 5. Voir tableau ci-dessous.
ThresholdValueN Nouvelle valeur du seuil N. Tout type numérique.
DisplayThresholdN Mode d'affichage du seuil N. Type INTEGER.
0 - Nouveau seuil non affiché.
1 - Nouveau seuil affiché.
2 - Pas de changement.
Exécution
Mode Mnémonique Action
33 THRESHOLD_SETMODE Modifie l'affichage de la configuration du seuil pour la trace
sélectionnée.
Retour : 1 si 0K, 0 sinon.

SV_SCADABasic_fr 405
Mode du seuil
Mode Système de seuil
-1 Aucun
0 Depuis la configuration de la variable
1 ppphigh/pphigh/hihi/high
2 pphigh/hihi/high/low
3 hihi/high/low/lolo
4 high/low/lolo/pplow
5 low/lolo/pplow/ppplow

Syntax 24
IntVal = Trend(Mode, Window, Branch, Identity, Trace , ThresholdNumber, Red, Green, Blue, PenStyle,
DrawThresholdLine);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
ThresholdNumber Numéro identifiant le seuil. Type INTEGER, de 0 à 3.
Red Composant rouge de la couleur du seuil. Type INTEGER, de -1 à 255.
Blue Composant bleu de la couleur du seuil. Type INTEGER, de -1 à 255.
Green Composant vert de la couleur du seuil. Type INTEGER, de -1 à 255.
PenStyle Style de ligne du seuil. Voir tableau ci-dessous.
DrawThresholdLine Flag indiquant si la ligne du seuil est dessinée. Type INTEGER. 0 masque la
ligne, 1 dessine la ligne.
Exécution
Mode Mnémonique Action
35 THRESHOLD_SETPROP Modifie les propriétés du seuil sélectionné. La couleur est celle
de la trace au dépassement du seuil. Si -1 est utilisé pour
chaque composant de couleur, la couleur ne change pas.
Retour : 1 si 0K, 0 sinon.

Style de stylo
Value Style
0 Solide
1 Pointillé
2 Points
3 Pointillé points
4 Pointillé points points

Syntaxe 25
IntVal = Trend(Mode, Window, Branch, Identity, Trace , ThresholdNumber, ThresholdValue);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
ThresholdNumber Numéro identifiant le seuil. Type INTEGER, de 0 à 3.
ThresholdValue Nouvelle valeur pour le seuil sélectionné. Tout type numérique.
Exécution
Mode Mnemonic Action
36 THRESHOLD_SETVALUE Modifie la valeur du seuil sélectionné.
Retour : 1 si 0K, 0 sinon.

Syntaxe 26
IntVal = Trend(Mode, Window, Branch, Identity, Trace , ThresholdNumber, DrawThresholdLine);

SV_SCADABasic_fr 406
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
ThresholdNumber Numéro identifiant le seuil. Type INTEGER, de -1 à 3.
Une valeur de -1 signifie tous les seuils.
DrawThresholdLine Flag indiquant si la ligne du seuil est dessinée. Type INTEGER. 0 masque la
ligne, 1 dessine la ligne.
Exécution
Mode Mnémonique Action
37 THRESHOLD_DRAWLINE Dessine ou masque le ou les seuil(s) sélectionné(s).
Retour : 1 si 0K, 0 sinon.

Syntaxe 27
IntVal = Trend(Mode, Window, Branch, Identity, Trace , Red, Green, Blue, PenStyle);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
Red Composant rouge de la couleur du seuil. Type INTEGER, de -1 à 255.
Blue Composant bleu de la couleur du seuil. Type INTEGER, de -1 à 255.
Green Composant vert de la couleur du seuil. Type INTEGER, de -1 à 255.
PenStyle Style de ligne du seuil. Voir tableau en Syntaxe 24.
Exécution
Mode Mnémonique Action
38 DRAW_MINLINE Affiche une ligne pour la valeur minimum de la variable. La
couleur est celle de la trace au dépassement de la ligne. Si -1
est utilisé pour chaque composant de couleur, la couleur ne
change pas.
Retour : 1 si 0K, 0 sinon.
39 DRAW_MAXLINE Affiche une ligne pour la valeur maximum de la variable. La
couleur est celle de la trace au dépassement de la ligne. Si -1
est utilisé pour chaque composant de couleur, la couleur ne
change pas.
Retour : 1 si 0K, 0 sinon.

Syntaxe 28
IntVal = Trend (MODE, Window, Branch, Identity, Trace, TimeOrigin);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
TimeOrigin Date d'origine de la trace (côté gauche de la trace). Type DOUBLE comme pour
DATETIMEVALUE..
Exécution
Mode Mnémonique Action
41 SETTIMEORIGIN Positionne l'origine de la trace (côté gauche) à une date
spécifique.
Retour : 1 si 0K, 0 sinon.

Syntaxe 29
IntVal = Trend (MODE, Window, Branch, Identity, Trace, Time, TimeUnit);
Type de retour : INTEGER.
Argument Signification

SV_SCADABasic_fr 407
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
Time Période en nombre d'unités de TimeUnit. Type INTEGER.
TimeUnit Numéro représentant l'unité de temps à utiliser. Voir tableau ci-dessous. Type
INTEGER.
Exécution
Mode Mnémonique Action
42 SETTIMEOFFSET Remplace l'origine de la trace (côté gauche) en utilisant les
valeurs données.
Retour : 1 si 0K, 0 sinon.

Unité de temps
Valeur Unité
0 Annule le remplacement
1 Secondes
2 Minutes
3 Heures
4 Jours

Syntaxe 30
IntVal = Trend (MODE, Window, Branch, Identity, Trace, MinMax [, Showline);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
MinMax Paramètre indique la ligne à affecter. Type INTEGER.
-1 = les deux lignes
0 = ligne maximum
1 = ligne minimum
Showline Flag pour sélectionner Afficher ou Montrer les lignes.
0 = Masquer
1 = Montrer
Exécution
Mode Mnémonique Action
40 DISPLAY_MINMAXLINE Affiche/masque les lignes horizontales minimales ou
maximales des variables.
Retour : 1 si 0K, 0 sinon.

Syntaxe 31
IntVal = TREND(Mode, Window, Branch, Identity, Trace, Flag);
Type de retour : INTEGER.
Argument Signification
Trace Numéro de la trace. Type INTEGER, de 1 à 8.
Flag Flag indiquant l'opération à effectuer. 0 ou 1.
Exécution
Mode Mnémonique Action
44 SET_VISIBLE Cache ou affiche la trace en fonction de la valeur du flag. 0 = invisible, 1 =
visible.
Retour : 1 si 0K, 0 sinon.
45 DISPLAY_SCALE Cache ou affiche l'échelle de trace en fonction de la valeur du flag. 0 =
invisible, 1 = visible.
Retour : 1 si 0K, 0 sinon.

SV_SCADABasic_fr 408
Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 409
UCASE
Voir aussi
Convertit tous les caractères d'une chaîne en majuscules.

Syntaxe
StrVal = UCASE(Input);
Type de retour : STR
Argument Signification
Input Chaîne à convertir. Type STR.

Exemple
SUB Main()
DIM strResult as Str;
DIM strString as Str;

strString = "string in lower case";


strResult = UCase( strString );
Print("Result: ", strResult );
'Display "Result: STRING IN LOWER CASE"
END SUB

SV_SCADABasic_fr 410
UNLINK
Voir aussi
Détruit un fichier.

Syntaxe
IntVal = UNLINK(Filename);
Type de retour : INTEGER
Argument Signification
Filename Nom du fichier à supprimer. Type STR.
Exécution
Le fichier doit être fermé pour être supprimé.
Retour : 1 si OK, 0 sinon.

Exemple
'For this. there must be a file "file1.txt" in
' the TP folder of your project
SUB Main()
IF (UNLINK("file1.txt")==1) THEN
PRINT ("file1.txt has been deleted");
END IF
END SUB

SV_SCADABasic_fr 411
VARIABLE
Voir aussi Exemple Spécifiques
Teste ou force le status d'une variable.
Mode Mnémonique Syntaxe
1 STATUS 1
2 MASK 2
3 UNMASK 2
4 ENABLE 3
5 DISABLE 3
6 LONGLABEL 4
7 ASSOCLABEL 4
8 SIMU 5
9 DOMAIN 4
10 NATURE 4
11 UNIT 4
12 NUMBER 6
13 THRESHOLD_GETTYPE 3
14 THRESHOLD_GETVALUE 7
15 THRESHOLD_SETVALUE 8
22 BATT 9
23 TATT 10
24 WRITE 11
25 LOCKTONODE 12
26 UNLOCKTONODE 12
27 FLOWPARAMTONODE 13
28 IMPORTBUFFER 14
29 IMPORTFILE 15
30 STARTWATCHLIST 16
31 STOPWATCHLIST 17
32 GET_LONG_IN_DB 18
33 GET_DOUBLE_IN_DB 19
34 GET_PHYSICAL_MIN 19
35 GET_PHYSICAL_MAX 19
36 GET_CONTROL_MIN 19
37 GET_CONTROL_MAX 19
38 SETBATT 20
39 SETTATT 21
40 SAVE 22
41 SETLONGLABEL 25
42 GET_ALARM_PRIORITY 3
43 GET_COMMAND_LEVEL 3

SV_SCADABasic_fr 412
44 GET_CONTROL_LEVEL 3
45 GET_TEXT_LEVEL 3
46 GET_TYPE 3
53 GET_DEADBAND_TYPE 3
54 GET_DEADBAND_VALUE 23
55 SET_DEADBAND 24
56 TREND 3
57 GETSERVERLIST 3

Syntaxe 1
IntVal = VARIABLE (Mode, Varname, Property);
Type de retour : INTEGER
Argument Signification
Varname Nom d'une variable de la base de données. Type STR.
Property Propriété à tester :
1 EXIST
2 VALID
3 MASK
4 ENABLE
5 COM
6 HDATE
7 TEMPORARY_DB
8 SIMU
Exécution
Mode Mnémonique Action
1 STATUS Selon le type défini par REQUEST :
EXIST Renvoie 1 si la variable existe, 0 sinon.
VALID Renvoie 1 si la variable a une valeur valide, 0 sinon.
MASK Renvoie le masque de la variable représentée par un poids binaire :
1 USERPROG1
2 USERPROG2
4 USERPROG3
8 USERPROG4
16 OPERATOR
32 DEPENDENT (d'une autre variable)
128 EXPRESSION
ENABLE Renvoie 1 si la variable est inhibée, 0 sinon.
COM Renvoie 1 si la variable est inaccessible suite à un défaut de
communication, 0 sinon.
HDATE Retourne le type d'horodatage de la variable :
0 si l'horodatage est réalisé par le Superviseur.
1 si l'horodatage est effectué à la source par l'équipement.
2 si l'horodatage est effectué à la source, mais que son status n'est

SV_SCADABasic_fr 413
pas valide.
TEMPORARY_DB Renvoie 1 si la variable est temporaire, 0 sinon.
SIMU retourne 1 si la variable est simulée, 0 sinon.

Syntaxe 2
IntVal = VARIABLE (Mode, Variable_name, MaskLevel);
Type de retour : INTEGER

Argument Action
Variable_n Nom de la variable alarme dont le masque est à modifier.
ame
MaskLevel Masque de la variable représentée par un poids binaire.
1 USERPROG1
2 USERPROG2
4 USERPROG3
8 USERPROG4
16 OPERATOR
32 DEPENDENT (d'une autre variable)
128 EXPRESSION
Exécution
Mode Mnémonique Action
2 MASK Masque l'alarme en utilisant le ou les niveau(x) donné(s).
3 UNMASK Démasque l'alarme en utilisant le ou les niveau(x) donné(s).
Retour : 1 si OK, 0 sinon.
Dans les fenêtres d'Alarmes ou de Consignations, le comportement est le suivant :

• Pour afficher une alarme masquée en utilisant la combinaison de programme utilisateur 1,


programme utilisateur 2, programme utilisateur 3 et programme utilisateur 4, le filtre Masquée
programme doit être coché.
• Pour afficher une alarme masquée en utilisant un opérateur, le filtre Masquée opérateur doit être
coché.
• Pour afficher une alarme masquée en utilisant dépendant, le filtre Masquée variable doit être coché.

SV_SCADABasic_fr 414
• Pour afficher une alarme masquée en utilisant une expression, le filtre Masquée expression doit être
coché. Voir l'image

Vous pouvez paramétrer une combinaison de masques en utilisant le poids binaire. Par
exemple, 9 paramétrera le premier masque d'état et le quatrième.

Syntaxe 3
IntVal = VARIABLE (Mode, VarName);
Type de retour : INTEGER

Argument Action
VarName Nom de la variable de la base de données. Type STR.
Exécution
Mode Mnémonique Action
4 ENABLE Désinhibe la variable nom_variable.
5 DISABLE Inhibe la variable nom_variable.
13 THRESHOLD_GE Renvoie le système de seuils de la variable "nom_variable"
TTYPE
0 - Pas de seuil.
1 - ppppigh / pphigh / hihi / high
2 - pphigh / hihi / high / low
3 - hihi / high / low / lolo
4 - high / low / lolo / pplow
5 - low / lolo / pplow / ppplow
42 GET_ALARM_PR Récupère le niveau de priorité d'une alarme.
IORITY
43 GET_COMMAND Récupère le niveau de priorité d'une commande.
_LEVEL

SV_SCADABasic_fr 415
44 GET_CONTROL_ Récupère le niveau de priorité d'une consigne.
LEVEL
45 GET_TEXT_LEV Récupère le niveau de priorité d'un envoi texte.
EL
46 GET_TYPE Récupère le type de la variable.
1 Etat
2 Mesure
3 Texte
8 Alarme
53 GET_DEADBAN Récupère le type de bande morte d'une varible.
D_TYPE
-2 La variable n’existe pas ou n’est pas une mesure.
-1 La variable est une variable temporaire.
0 La bande morte est ‘absolue’.
1 La bande morte est ‘un pourcentage de la plage’.
2 La bande morte est ‘un pourcentage de la valeur’.
56 TREND Détecte si la variable est en tendance.
Retour : 1 si OK, 0 sinon.
57 GETSERVERLIST Renvoie la valeur de la liste de postes producteurs.

Syntaxe 4
StrVal = VARIABLE(Mode, VarName);
Type de retour : STR

Argument Action
VarName Nom de la variable de la base de données. Type STR.
Exécution
Mode Mnémonique Action
6 LONGLABEL Récupère le libellé long de la variable.
7 ASSOCLABEL Récupère le libellé associé à l'état courant de la variable.
9 DOMAIN Renvoie le domaine d'appartenance de la variable spécifiée.
10 NATURE Renvoie la nature d'appartenance de la variable spécifiée.
11 UNIT Renvoie l'unité de la variable spécifiée (mesure seulement).

Syntaxe 5
IntVal = VARIABLE(Mode, VarName, Flag);
Type de retour : INTEGER
Argument Signification
VarName Nom de la variable de la base de données. Type STR.
Flag Indicateur d'opération.
Exécution
Mode Mnémonique Action
8 SIMU Passe la variable équipement nom_variable en mode simulé. Il devient alors
possible de la modifier comme toute variablevinterne.

SV_SCADABasic_fr 416
0 pour OFF
1 pour ON
Retour : 1 si OK, 0 sinon.

Syntaxe 6
DblVal = VARIABLE(Mode);
Type de retour : LONG
Exécution
Mode Mnémonique Action
12 NUMBER Renvoie le nombre total de variables dans la base.

Syntaxe 7
DblVal = VARIABLE(Mode, VarName, Rank);
Argument Signification
VarName Nom de la variable de la base de données. Type STR.
Rank Entier compris entre 0 et 3. Type INTEGER.

Type de retour : DOUBLE


Exécution
Mode Mnémonique Action
14 THRESHOLD_GETV Renvoie la valeur du seuil de rang rank de la variable.
ALUE

Syntaxe 8
IntVal = VARIABLE(Mode, VarName, Rank, Value [, Rank, Value] [, Rank, Value] [, Rank, Value][,
Saveflag]);
Argument Signification
VarName Nom de la variable de la base de données. Type STR.
Rank Entier compris entre 0 et 3. Type INTEGER.
Value Valeur de seuil.
Saveflag Si positionné à 1, le seuil est modifié en permanent et sauvegardé lorsque le superviseur est
arrêté.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
15 THRESHOLD_SETV Permet d'affecter une nouvelle valeur de seuil value au seuil de rang rank de
ALUE la variable "nom_variable".
Un argument facultatif saveflag permet de sauvegarder ces modifications en
cas de sortie du projet. (0 par défaut. 1 = sauvegarde)
Il y a vérification de la valeur par rapport au minimum et maximum
physique de la mesure ainsi que par rapport aux éventuelles autres valeurs
de seuils s'ils sont définis.
Si la valeur ne repond pas à ces conditions, la fonction renvoie 0.
Le seuil est automatiquement remis à jour en fonction de sa nouvelle valeur
et de la valeur courante de la mesure à laquelle il est associé.
Retour : 1 si OK, 0 sinon. (hors valeur etc.)

SV_SCADABasic_fr 417
Syntaxe 9
IntVal = VARIABLE(Mode, VarName, BattNum);
Argument Signification
VarName Nom de la variable de la base de données. Type STR.
BattNum Entier compris entre 1 et 30. Type INTEGER.

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
22 BATT Renvoie la valeur de l'attribut booléen de rang number de la variable.

Syntaxe 10
StrVal = VARIABLE(Mode, VarName, TattNum);
Argument Signification
VarName Nom de la variable de la base de données. Type STR.
TattNum Numéro de l'attribut texte. Type INTEGER. Valeur 1 à 16.

Type de retour : STR


Exécution
Mode Mnémonique Action
23 TATT Renvoie la valeur de l'attribut texte de rang number de la variable
1 - domaine
2 - nature

Syntaxe 11
IntVal = VARIABLE(Mode, SubMode);
Argument Signification
SubMode Optionnel. Un code indique l'action : INTEGER valeurs 0, 1, 2 ou 3:
0 Inhibe le forçage de variables externes.
1 Autorise le forçage de variables externes. C'est le par défaut pour toutes les
versions.
2 Envoi la recette à écrire même si la valeur reste inchangée. C'est le par défaut pour
les versions inférieures à 10.0
3 Envoi la recette à écrire seulement si la valeur a changé en fonction de la valeur
temps-réel. C'est le par défaut à partir de la version 10.0

Type de retour : INTEGER


Exécution
Mode Mnémonique Action
24 WRITE Autorise ou non les forçages des variables externes sur le poste local.
Retour : 1 si OK, 0 sinon.

Il y a toujours deux valeurs par défaut : 1 et 2 pour les versions avant 10.0 et 1 et 3 pour les
versions supérieures à 10.0.

SV_SCADABasic_fr 418
Les sous-modes 0 et 1 autorisent le Superviseur, par exemple, à inhiber ou autoriser
l'envoi de commandes à partir de postes redondants passifs.
Les sous-modes 2 et 3 sont applicables à toutes les variables, pour prévenir l'envoi de
commandes à partir de postes redondants passifs.
Le sous-mode 3 optimise l'écriture de requêtes pour visualiser les modifications en
cours.

Le sous-mode 3 ne s'applique pas aux recettes.

Syntaxe 12
IntVal = VARIABLE(Mode, StationNo);
Type de retour : INTEGER
Argument Signification
StationNo Numéro représentant le numéro du poste de supervision. Type INTEGER.
Exécution
Mode Mnémonique Action
25 LOCKTONODE Verrouille l'envoi de message de changement de valeur vers le poste
num_poste. Utilisé dans des projets multi-postes avec un réseau dial-up.
Retour : 1 si OK, 0 sinon.
26 UNLOCKTONO Déverrouille l'envoi de message de changement de valeur vers le poste
DE num_poste. Utilisé dans des projets multi-postes avec un réseau dial-up.
Retour : 1 si OK, 0 sinon.

Syntaxe 13
IntVal = VARIABLE(Mode, StationNo, StopLimit, StartLimit, Filter);
Type de retour : INTEGER
Argument Signification
StationNo Numéro représentant le numéro du poste de supervision. Type INTEGER.
StopLimit Nombre de variables dans la boîte aux lettres du gestionnaire LAN pour le poste StationNo
sur lequel le contrôle de flux du réseau est stoppé. Type INTEGER.
StartLimit Nombre de variables dans la boîte aux lettres du gestionnaire LAN pour le poste StationNo
sur lequel le contrôle de flux du réseau est démarré. Type INTEGER.
Filter Nombre représentant les types de variables à affecter par le contrôle de flux. Chaque type de
variable est représenté par un poids binaire. Type INTEGER.
Type INTEGER.
1 bit 0 à 1 pour régulation des variables de type état
2 bit 1 à 1 pour régulation des variables de type alarme
4 bit 2 à 1 pour régulation des variables de type mesure
8 bit 4 à 1 pour régulation des variables de type texte
Par exemple, une valeur de 7 représente des variables état, alarme et mesure.
Exécution
Mode Mnémonique Action
27 FLOWPARAMT Paramétrage de la régulation des flux de variables vers un poste distant.
ONODE
Retour : 1 si OK, 0 sinon.

SV_SCADABasic_fr 419
Syntaxe 14
IntVal = VARIABLE(Mode, Handle [,Flag, VarName, FileReport]);
Type de retour : INTEGER
Argument Signification
Handle Localisation du buffer mémoire retourné par ALLOC_BUFFER. Type LONG.
Flag Flag est un entier facultatif qui prend la valeur 0 ou 1.
1: Distribution de la modification (Ce mode n’est pas encore implémenté)
0: Modification locale (par défaut)
Type INTEGER
VarName Nom de la variable mesure de la base de données dans laquelle est retourné le status
d'import des variables.
Type STR.
Les valeurs de status d'import des variables sont les suivantes :
0 : En cours d’import.
1 : Import terminé sans aucune erreur
2 : Import terminé avec des erreurs
Type STR
FileReport Nom du fichier contenant le rapport de l’import. Pour plus d'informations, voir le chapitre
Format du Rapport d'Import de Variables.
Type STR
Exécution
Mode Mnémonique Action
28 IMPORTBUFFER Import dynamique de variables de la base de données. Le format du buffer doit
être compatible avec le fichier du format de la base de données VAREXP.DAT. Le
buffer doit être alloué par ALLOC_BUFFER.
Retour : 1 si OK, 0 sinon.

Pour la méthode de suppression de variables, tendances et expressions, voir le chapitre Suppression d'une
variable, tendance ou expression.

Syntaxe 15
IntVal = VARIABLE(Mode, FileName [,Flag, VarName, FileReport, FileError]);
Type de retour : INTEGER
Argument Signification
FileName Nom du fichier texte. Type STR.
Flag Flag est un entier facultatif qui prend la valeur 0 ou 1.
1: Distribution de la modification (Ce mode n’est pas encore implémenté)
0: Modification locale (par défaut)
Type INTEGER
VarName Nom de la variable mesure de la base de données dans laquelle est retourné le status
d'import des variables.
Les valeurs de status d'import des variables sont les suivantes :
0 : En cours d’import.
1 : Import terminé sans aucune erreur

SV_SCADABasic_fr 420
2 : Import terminé avec des erreurs
Type STR
FileReport Nom du fichier contenant le rapport de l’import. Pour plus d'informations, voir le chapitre
Format du Rapport d'Import de Variables.
Type STR
FileError Nom du fichier contenant les erreurs de syntaxe.
Le fichier par défaut est « form.err » dans le dossier « Log Files ».
Type STR
Exécution
Mode Mnémonique Action
29 IMPORTFILE Import dynamique de variables de la base de données. Le format du buffer doit
être compatible avec le fichier du format de la base de données VAREXP.DAT.
Ce fichier doit être localisé dans le répertoire TP du projet.
Retour : 1 si OK, 0 sinon.

Pour la méthode de suppression de variables, tendances et expressions, voir le chapitre Suppression d'une
variable, tendance ou expression.

Diagnostic
L'état Trace 4 dans le gestionnaire de variables permet de voir une information supplémentaire dans
l'observateur d'événements. Utiliser l'instruction TRACE pour positionner l'état Trace 4 :
TRACE( 1, 5, "10");

Syntaxe 16
LongVal = VARIABLE(Mode, Branch, Handle, VarName, Flag);
Type de retour : LONG
Argument Signification
Branch Facultatif. Branche de la base de données utilisée conjointement avec les noms de variables
fournis par le buffer. Type STR.
Handle Localisation du buffer mémoire contenant une liste des noms de variable. Taille maximale du
buffer : 128 Ko. Type LONG.
The format of the buffer is a list of the variable names. Those with a branch have a prefix of
'@', for instance:
@VARNAME1
VARNAME2
VARNAME3
VarName Nom de variable état. Type STR.
Flag 0 ou 1.
Exécution
Mode Mnémonique Action
30 STARTWATCHLI Mise en scrutation des variables qui ne l'était pas et forçage de la variable_etat
ST avec sens lorsque toutes les variables sont disponibles.
Lorsque toutes les variables de la liste sont disponibles, la valeur spécifiée dans
le flag est écrite dans la variable état spécifié de la base de données.
Retour : 1 si OK, 0 sinon.

Syntaxe 17
IntVal = VARIABLE(Mode, Handle);

SV_SCADABasic_fr 421
Type de retour : INTEGER
Argument Signification
Handle Handle du buffer mémoire retourné à partir de l'instruction du mode 30. Type LONG.
Exécution
Mode Mnémonique Action
31 STOPWATCHLIST Arrêt de la scrutation des variables.
Retour : 1 si OK, 0 sinon.

Syntaxe 18
LongVal = VARIABLE(Mode, VarName);
Type de retour : LONG
Argument Signification
VarName Nom de la variable. Type STR.
Exécution
Mode Mnémonique Action
32 GET_LONG_IN_D Retourne la valeur de la variable.
B

Syntaxe 19
DblVal = VARIABLE(Mode, VarName,);
Type de retour : DOUBLE
Argument Signification
VarName, Nom de la variable. Type STR.
Exécution
Mode Mnémonique Action
33 GET_DOUBLE_IN_D Obtenir la valeur de la variable.
B
34 GET_PHYSICAL_MI Obtenir le minimum physique de la variable
N
35 GET_PHYSICAL_MA Obtenir le maximum physique de la variable
X
36 GET_CONTROL_MIN Obtenir la consigne minimum de la variable
37 GET_CONTROL_MA Obtenir la consigne maximum de la variable
X

Syntaxe 20
IntVal = VARIABLE(Mode, VarName, Value);
Type de retour : INTEGER
Argument Signification
VarName Nom de la variable. Type STR.
Value Nouvelle valeur des attributs booléens de la variable. Type : INTEGER, LONG, SINGLE,
DOUBLE et CONST.
Exécution
Mode Mnémonique Action
38 SETBATT Modifie la valeur de tous les attributs booléens pour la variable.

SV_SCADABasic_fr 422
Retour : 1 si OK, 0 sinon.

Syntaxe 21
IntVal = VARIABLE(Mode, VarName, TattNo, Text);
Type de retour : INTEGER
Argument Signification
TattNo Attribut texte dont la valeur est 3 à 16. Tout type numérique.
Text Nouvelle valeur de l'attribut texte. Type STR.
VarName, Nom de la variable. Type STR.
Exécution
Mode Mnémonique Action
39 SETTATT Modifie la valeur de l'attribut texte de rang number pour la variable
Retour : 1 si OK, 0 sinon.

Vous ne pouvez pas utiliser le mode SETATT pour modifier Domain ou Nature (attributs 1 et 2).

Syntaxe 22
IntVal = VARIABLE(Mode);
Type de retour : INTEGER
Argument Signification
0 Réservé, toujours égal à 0.
NoDisplayBarGraph 0 affiche le barre-graphe
1 masque le barre-graphe.
Par défaut : 0
Exécution
Mode Mnémonique Action
40 SAVE Sauve la totalité de la base de données.
Retour : 1 si OK, 0 sinon.

Syntaxe 23
SVal = VARIABLE (Mode, VarName);
Type de retour : SINGLE
Exécution
Mode Mnémonique Action
54 GET_DEADBAND Permet de récupérer la valeur de la bande morte d'une variable.
_VALUE

Syntaxe 24
IntVal = VARIABLE (Mode, VarName, DBvalue, DBtype);
Type de retour : INTEGER
Argument Signification
VarName Nom de la variable. Type STR.
DBvalue Nouvelle valeur. Type SINGLE.
DBtype Nouveau type de bande morte. Type INTEGER

SV_SCADABasic_fr 423
Exécution
Mode Mnémonique Action
55 SET_DEADBAND Permet de positionner le type et la valeur de la bande morte d'une variable.
Retour :
-5 La variable n’existe pas ou n’est pas une mesure
-4 La valeur de Dbtype n'a pas la valeur souhaitée. (doit être 0,1 ou 2).
-3 La valeur de Dbtype n'est pas un INTEGER.
-2 La valeur deDbvaluen'est pas un FLOAT.
-1 La variable est une variable temporaire
1 OK.

Syntaxe 25
IntVal = VARIABLE (Mode, VarName, Lang0[, Lang1]);
Type de retour : INTEGER.
Argument Signification
VarName Nom de la variable. Type STR.
Lang0 Chaîne de caractères pour la langue 0. Type STR.
Lang1 Chaîne de caractères pour la langue 1. Optionnel. Type STR
Exécution
Mode Mnémonique Action
41 SETLONGLABEL Modifie la propriété Description d'une variable. Si le projet est configuré
pour être bilingue, vous pouvez modifier la chaîne pour les langues 0 et
1. La modification est permanente.
Retour : 1 si OK, 0 sinon.

Note au sujet de la validité des variables


Chaque variable de la base de données possède un status de validité en plus d'une valeur.
Une variable invalide est affichée d'une façon spéciale ; par exemple la valeur d'une mesure sera
remplacée par un "?". Un certain nombre de conditions peut rendre une variable invalide et celles-ci
peuvent être divisées en 3 classes principales.
Cause Signification
Masking Voir le chapitre Masqué par Programme.
Inhibition Lorsqu'une variable est inhibée, sa scrutation est abandonnée. Une variable est
normalement inhibée lorsque le matériel qui délivre sa valeur est en défaut.
Inaccessible L'inaccessibilité est une condition qui est détectée automatiquement lorsque la source
externe de la variable (équipement ou autre station) devient indisponible.

Exemple
Mode 38, SETBATT :
Forçage des attributs booléens de la variable int.b1 à partir de la variable mesure int.b1.batt de la base de
données.
SUB SetBAtt()
VARIABLE("SETBATT", “int.b1”, int.b1.batt);
END SUB
Forçage à 1 du troisième attribut booléen de la variable int.b1 et remise à 0 les autres bits.
SUB SetBAtt3()

SV_SCADABasic_fr 424
VARIABLE("SETBATT", “int.b1”, 4);
END SUB
Mode 56, TREND :
x1 is a trend variable
1
x2 is not a trend variable
0
Pour un exemple plus complet, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 425
WEBVUE
Voir aussi Exemple
Gère la connexion aux clients WebVue.
Mode Mnémonique Syntaxe
1 LIST 1
2 SETWINDOW 2
3 RESTOREWINDOW 3
4 CONNECTURL 4
5 RESTOREURL 5
6 USERNAME 6
8 MULTIMEDIA 7
9 CONTEXT 6

Syntaxe 1
IntVal = WEBVUE(Mode, Handle);
Type de retour : INTEGER.
Argument Signification
Handle Contient la liste de binômes (poste, utilisateur) des clients connectés. Type LONG.
Le format de la liste est :
Username1,hostname1\thostipaddress1\trouteripaddress1,
Username2,hostname2\thostipaddress2\trouteripaddress2,

Exécution
Mode Mnémonique Action
1 LIST Liste des clients Web.
Retour : Nombre de clients connectés.
où : -1 si l'allocation pour Handle n'est pas suffisante. (Voir l'instructions
ALLOC_BUFFER.)

Pré-requis
Avant d'utiliser le mode LIST, vous devez modifier un paramètre dans le fichier WEBVUE.DAT :

1. Sélectionner le fichier WEBVUE.DAT dans le répertoire WEB du projet et faites-en une copie de
sauvegarde. Voir l'image

SV_SCADABasic_fr 426
2. Ouvrir le fichier dans un éditeur de texte et modifier le paramètre IpQueryLevel de la façon suivante
:

Paramètre Effet
1 L'appel tente d'obtenir l'adresse IP.
2 IIS tente d'obtenir l'adresse IP du client.
3 Tentative d'obtenir l'adresse IP de l'ordinateur client.
4 Le Superviseur tente de trouver le nom de l'hôte via IP.

Si le Superviseur n'a pas les droits d'accès requis pour le réseau, ou s'il est dans un environnement
Internet, il ne pourra pas obtenir l'adresse IP du client

Syntaxe 2
IntVal = WEBVUE(Mode, Branch, WindowName [Saved]);
Type de retour : INTEGER.
Argument Signification
Branch Nom de la brance de la fenêtre. Type STR.
WindowNam Nom de la fenêtre par défaut. Type STR.
e

SV_SCADABasic_fr 427
Saved Flag optionnel indiquant la permanence de la modification (après redémarrage du
Superviseur). (obsolète)
0 : la modification n'est pas permanente. C'est la valeur par défaut.
1 : la modification est permanente.

Exécution
Mode Mnémonique Action
2 SETWINDOW Sélectionne la fenêtre de démarrage de tous les clients Web.
Retour : 1 si OK, sinon :
-1 Nom du client incorrect.
-2 Nom de la fenêtre incorrect.

Syntaxe 3
IntVal = WEBVUE(Mode, ClientName);
Type de retoure : INTEGER.
Argument Signification

ClientName Nom de l'utilisateur. Type STR.

Exécution
Mode Mnémonique Action
3 RESTOREWINDOW Restaure la configuration du profil (démarrage de la fenêtre).
Appliqué à la prochaine connexion pour l'utilisateur spécifié.
Affiche la fenêtre de démarrage sur le poste client. (obsolète)
Retour : 1 si OK, -1 sinon.

Syntaxe 4
IntVal = WEBVUE(Mode, UserName, HtmlPage , BitVariableName, Reconnect, NewBrowser);
Type de retour : INTEGER.
Argument Signification

UserName Laisser vide (""). Type STR.

HtmlPage Nom de la page HTML à appeler lors de la connexion, soit directement Name.HTML (sur le
serveur HTTP local), soit déporté (http://www.xxxx.html). Type STR.

BitVariableN Variable état de la base de données mise à 1 lorsque le routage a été réalisé. Type STR.
ame

Reconnect Délai de commutation : délai avant que la reconnexion soit tentée de nouveau. Type
INTEGER.
0: Reconnexion immédiate.
1: Délai de commutation (en secondes) après inactivité de la souris et du clavier.

NewBrowser Ouverture d'une nouvelle instance du navigateur. Type INTEGER.


0: Utilise l'actuel (dans ce cas, l'utilisateur WebVue est déconnecté et le contexte est
supprimé du Superviseur).
1: Ouvre un nouveau.

SV_SCADABasic_fr 428
Exécution
Mode Mnémonique Action
4 CONNECTURL Appliquer les paramètres de connexion.
Retour : 1 si OK, 0 sinon (pas d'état trouvé ou mauvais état)

Syntaxe 5
IntVal = WEBVUE(Mode, UserName);
Type de retour : INTEGER.
Argument Signification

UserName Nom de l'utilisateur défini dans les droits utilisateur. Type STR.

Exécution
Mode Mnémonique Action
5 RESTOREURL Fournit le nom utilisateur pour la connexion à l'adresse URL.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal = WEBVUE(Mode, WebSession, UserHandle);
Type de retour : INTEGER.
Argument Signification
WebSession Type de session Web. Type INTEGER. (Pour plus de détails, voir l'instruction GETARG mode
29: WEB.)
UserHandle Handle pour le nom de l'utilisateur du login WEB. Type LONG.

Exécution
Mode Mnémonique Action
6 USERNAME Récupère le nom de l'utilisateur du client Web.
Retour : 1 si OK, sinon :
-1: WebSession n'est pas un INTEGER.
-2: WebSession est vide.
-3: UserHandle n'est pas un LONG.
-4: UserHandle a une taille de 0 (aucun buffer alloué).
-5: UserHandle est vide. (Normalement, ceci est impossible.)
-6: UserHandle.Length() supérieur à la taille allouée par ALLOC_BUFFER.
9 CONTEXT Récupère le contexte de la variable lorsque le programme est lancé à partir
d'une fenêtre contextuelle.
Retour : 1 si OK, sinon 0.

Le mode USERNAME retourne une chaîne de caractères vide lorsqu'il est lancé à partir du
Superviseur. A la place, utiliser le mode 1 (LIST) pour récupérer les caractéristiques du nom de
l'utilisateur et de l'URL depuis le Superviseur ou tout poste client WebVue.

Syntaxe 7
IntVal = WEBVUE(Mode, Sub-mode);
Type de retour : INTEGER.

SV_SCADABasic_fr 429
Argument Signification
Sub-mode Le sous-mode. Type STR.
BEEP - Joue un fichier audio.

Exécution
Mode Mnémonique Action
6 MULTIMEDIA Joue un fichier multimédia sur le PC exécutant le client WebVue.
Retour : 1 si OK, sinon :

Le fonctionnement du mode MULTIMEDIA, sous-mode BEEP, dépend du contexte web du programme


le contenant.
Si le contexte web est zéro, le fichier audio est joué dans toutes les sessions courantes WebVue. Le
contexte web est zéro si le programme est exécuté depuis le serveur WebVue, par exemple s'il est
déclenché par un événement.
Si le contexte web n'est pas zéro, le fichier audio n'est joué que dans la session hôte WebVue. Le
contexte web n'est pas zéro si le programme est exécuté depuis le client WebVue, par exemple
déclenché par un bouton dans un synoptique affiché depuis le client.

La capacité d'un client WebVue à jouer un fichier multimédia dépend du paramétrage de la


propriété Autoriser les opérations multimédia dans le profil de l'utilisateur qui démarre la session
WebVue. Voir le chapitre Ajout d'un utilisateur WebVue dans l'aide principal.

Il n'est pas possible de spécifier le fichier son joué par le mode MULTIMEDIA, sous-mode BEEP,
car il est embarqué dans un applet Java faisant partie de WebVue. Toutefois, il est possible
d'éditer l'applet pour utiliser un fichier son différent. Voir le chapitre Modification du son joué par
WEBVUE.

Exemple
Pour un exemple, sélectionner le lien exemple ci-dessus.

SV_SCADABasic_fr 430
WHILE...WEND
Voir aussi
Exécution d'instructions en boucle tant qu'une condition reste vraie.

Syntaxe
WHILE(expression)
[bloc d'instructions]
WEND
Exécution

• Si l'expression est vraie, toutes les instructions comprises entre WHILE et WEND sont exécutées.
Puis l'expression est de nouveau évaluée.
• Si l'expression est toujours vraie, le processus est répété.
• Si l'expression est fausse, l'exécution reprend à partir de l'instruction qui suit le WEND

Exemple
SUB Main()
DIM i as Integer;

i=0;
WHILE (i<3) 'so long as i<3
i++; 'increment i by 1
PRINT(i);
WEND
END SUB

SV_SCADABasic_fr 431
WINDOW
Voir aussi Exemple
Ouvre et ferme une fenêtre.
Mode Mnémonique Syntaxe
0 CLOSE 1
1 OPEN 1, 2, 5
2 IS_OPEN 1
3 SHOW 1
4 HIDE 1
5 CHANGE 10
6 CLOSEUNDER 1
7 PRELOAD 1, 5
8 CLOSEALL 6
9 MAIN 3
10 CURRENTNAME 7
11 CURRENTBRANCH 7
12 CAPTION 8
13 REFSET 9
14 CURRENTREF 7
15 POPUPCLOSE 6
16 ACCESSLEVEL 1
17 OPENNEW 1, 2, 5
18 PRINT 1
19 ZOOM 11
20 GETREGION 1
21 GETSUBWINDOW 12
22 GETSUBBRANCH 12
23 SETPREVIOUS 6
24 LAYER 13
25 HARDCOPY 14
26 SAVE 15
27 SELECTTAB 16

Syntaxe 1
IntVal = WINDOW( Mode, WinName, Branch [,Refset]);
Type de retour : INTEGER
Argument Signification
WinName, Nom de la fenêtre. Type STR.
Branch Branche de la base de données. Type STR.
Refset mode de référence d'exécution sur la fenêtre :
0 Mode temps réel
1 Mode REF1

SV_SCADABasic_fr 432
2 Mode REF2
3 Mode TEST
Exécution
Mode Mnémonique Action
0 CLOSE Fermeture de la fenêtre.
1 OPEN Ouverture de la fenêtre.
2 IS_OPEN Teste si la fenêtre est ouverte ou non
3 SHOW Montre la fenêtre.
4 HIDE Cache la fenêtre.
6 CLOSEUNDER Ferme toutes les fenêtres qui intersectent Winname, que celles-ci soient en
avant ou en arrière-plan.
7 PRELOAD Préchargement de la fenêtre.
16 ACCESSLEVEL Renvoie le niveau d'accès de la fenêtre.
17 OPENNEW Ouverture de la fenêtre.
18 PRINT Impression de la fenêtre sur l'imprimante par défaut du système.
20 GETREGION Renvoie la région (dans un système multi-écrans) dans laquelle la fenêtre est
localisée.
Retour : Pour tous les modes exceptés 16 et 20, 1 si OK, 0 sinon.

Syntaxe 2
IntVal = WINDOW(Mode, Child, Branch, Parent);
Type de retour : INTEGER
Argument Signification
Child Nom de la fenêtre. Type STR.
Parent Nom de la fenêtre. Type STR.
Exécution
Mode Mnémonique Action
1 OPEN Ouverture de la fenêtre incrustée dans la fenêtre mère.
17 OPENNEW Ouverture de la fenêtre.
Retour : 1 si OK, 0 sinon.

Syntaxe 3
IntVal = WINDOW(Mode, X, Y, Width, Height);
Type de retour : INTEGER
Argument Signification
X, Y Coordonnées du point en haut à gauche exprimés en pixels. Type INTEGER.
Width Largeur de la fenêtre exprimée en pixels. Type INTEGER.
Height Hauteur de la fenêtre exprimée en pixels. Type INTEGER.
Exécution
Mode Mnémonique Action
9 MAIN Change la taille et la position de la fenêtre principale (startup).
Retour : 1 si OK, 0 sinon.

Syntaxe 5

SV_SCADABasic_fr 433
IntVal =WINDOW(Mode, Child, ChildBranch, Parent, ParentBranch, dX, dY);
Type de retour : INTEGER
Argument Signification
dX, dy Coorodnées relatives X et Y.
Exécution
Mode Mnémonique Action
1 OPEN Ouverture de la fenêtre.
7 PRELOAD Précharge la fenêtre en modifiant la position.
17 OPENNEW Ouverture de la fenêtre.
Retour : 1 si OK, 0 sinon.

Syntaxe 6
IntVal = WINDOW(Mode);
Type de retour : INTEGER
Exécution
Mode Mnémonique Action
8 CLOSEALL Ferme toutes les fenêtres (vide également le cache).
Est équivalent à l'action du menu EDITEUR.Fichier.Fermer tout.
15 POPUPCLOSE Fermeture de la fenêtre popup.
23 SETPREVIOUS Enlève, de la pile des fenêtres, la fenêtre que l'on obtiendrait si on faisait un
chaînage avec #P (fenêtre précédente).
Retour : 1 si OK, 0 sinon.

Syntaxe 7
StrVal = WINDOW(Mode);
Type de retour : STR
Exécution
Mode Mnémonique Action
10 CURRENTNAME Renvoie le nom de la fenêtre courante.
11 CURRENTBRANCH Renvoie la branche de la fenêtre courante.
14 CURRENTREF Renvoie 1 si la fenêtre courant est le jeu de référence, sinon 0.

Syntaxe 8
IntVal = WINDOW(Mode, WinName, Branch, TitleLang1, [,TitleLang2]);
Argument Signification
WinName Nom de la fenêtre. Type STR.
TitleLang1 Nouveau titre de la fenêtre en Langue 1. Longueur maximum : 40 caractères.
TitleLang2 Nouveau titre de la fenêtre en Langue 2. Optionnel. Longueur maximum : 40 caractères.
Type de retour : STR
Exécution
Mode Mnémonique Action
12 CAPTION Modifie le titre de la fenêtre.
Il est possible d'utiliser des caractères spéciaux de formatage :

SV_SCADABasic_fr 434
#D - date
#h - heure
#B - branche
#N - nom de l'utilisateur

Syntaxe 9
IntVal = WINDOW(Mode, WinName, Branch, OldMode, NewMode);
Type de retour : INTEGER
Argument Signification
WinName Nom de la fenêtre. Type STR.
Branch Branche de la base de données. Type STR.
OldMode Mode courant de la fenêtre (0, 1, 2, ou 3). Type INTEGER.
NewMode Nouveau mode de la fenêtre (0, 1, 2, ou 3). Type INTEGER.
Exécution
Mode Mnémonique Action
13 REFSET Modifie le jeu de référence de la fenêtre identifiée par son nom, sa branche et
son jeu de référence.
Retour : 1 si OK, 0 sinon.

Syntaxe 10
IntVal = WINDOW(Mode, WinName, Branch, RefSet, X, Y, W, H);
Type de retour : INTEGER.
Argument Signification
WinName Nom de la fenêtre.
Branch Nom de la branche.
RefSet RefSet pour la fenêtre. Normalement 0, mais peut être 1, 2 ou 3 si ouvert en mode
RefSet. Type INTEGER.
X, Y Coordonnées du coin en haut à gauche de la fenêtre. Type INTEGER.
W, H Largeur et hauteur de la fenêtre. Type INTEGER.
Exécution
Mode Mnémonique Action
5 CHANGE Modifie la position et la taille d'une fenêtre.
Retour : 1 si OK, 0 sinon.

Cette instruction ne fonctionne pas si la fenêtre contient une des macro-animations : fenêtre de
tendances, d'alarmes ou de consignations ou l'animation contrôle grid.

Syntaxe 11
IntVal = WINDOW(Mode, WinName, Branch, X, Y, Zoom);
Type de retour : INTEGER
Argument Signification
X, Y Coordonnées du point central. Type INTEGER.
Zoom Valeur de zoom absolu exprimé en %. Type INTEGER.
Exécution

SV_SCADABasic_fr 435
Mode Mnémonique Action
19 ZOOM Le point (x,y) est exprimé en coordonnées logiques (relatives à l'affichage dans
la fenêtre) et non physiques.
Retour : 1 si OK, 0 sinon.

Syntaxe 12
StrVal = WINDOW(Mode, Substitution, MyWindow, [MyWindowBranch]);
Type de retour : STR
Argument Signification
Substitution Une des substitutions utilisées avec l'animation Ouverture Fenêtre (#P, #U, #I, #Mx). Type
STR.
MyWindow (pour le type de substitution #Mx) Fenêtre contenant les liens. Type STR.
MyWindowB (pour le type de substitution #Mx) La branche (si elle existe) de cette fenêtre. Type STR.
ranch
Exécution
Mode Mnémonique Action
21 GETSUBWINDOW Renvoie le nom de la fenêtre associée avec une des substitutions suivantes :
#P renvoie le nom de la fenêtre précédemment ouverte.
#U renvoie le nom de la fenêtre principale de l'utilisateur.
#I renvoie la première fenêtre ouverte au lancement du projet.
#Mx renvoie le nom d'une des fenêtres (x = 1 à 10) du tableau
d'incrustation des fenêtres, s’effectue avec les paramètres de la fenêtre
mère
22 GETSUBBRANCH Permet d'utiliser les substitutions #P, #U, #I et #Mx dans les programmes.
Dans le cas d'une popup, les substitutions #Mx s'effectuent avec les paramètres
de la fenêtre mère.

La fenêtre contenant les liens doit être ouverte.

Syntaxe 13
IntVal = WINDOW(Mode, WinName, Branch, Refset, Layer, LayerMode);
Type de retour : INTEGER
Argument Signification
WinName Nom de la fenêtre. Type STR.
Branch Branche de la base de données. Type STR.
Refset Numéro indiquant le mode de la fenêtre (0, 1, 2 ou 3). Type INTEGER.
Layer Nombre de niveau (0 à 15). Type INTEGER.
Layermode Mode l'opération (0, 1 ou 2). Type INTEGER.
Exécution
Mode Mnémonique Action
24 LAYER Change l'état du niveau de visibilité de la fenêtre spécifiée.
0 le niveau spécifié est enlevé (devient invisible).
1 le niveau spécifié est ajouté (devient visible).
2 le niveau spécifiée est inversé (visible si invisible, invisible si visible).

SV_SCADABasic_fr 436
Retour : 1 si OK, 0 sinon.

Syntaxe 14
IntVal = WINDOW(Mode, WinName, Branch [, Refset [, PrintMode]]);
Type de retour : INTEGER
Argument Signification
WinName Nom de la fenêtre. Type STR.
Branch Branche de la base de données. Type STR.
Refset Numéro indiquant le mode de la fenêtre (0, 1, 2 ou 3). Type INTEGER.
PrintMode Mode l'opération (0 ou 1) Type INTEGER.
Exécution
Mode Mnémonique Action
25 HARDCOPY PImprime la fenêtre spécifiée dans le gestionnaire d'impression Windows.
La fenêtre doit être ouverte ou bien dans le cache.
0 la fenêtre est imprimée sans sa bordure (mode par défaut).
1 la fenêtre est imprimée avec sa bordure.
Retour : 1 si OK, 0 sinon.

Syntaxe 15
IntVal = WINDOW(Mode, WinName, Branch, Format);
Type de retour : INTEGER
Argument Signification
WinName Nom de la fenêtre. Type STR.
Branch Branche de la base de données. Type STR.
Format Format de sauvegarde de la fenêtre. Type STR.
PrintMode Mode l'opération (0 ou 1) Type INTEGER.
Exécution
Mode Mnémonique Action
26 SAVE Enregistre la fenêtre au format choisi. Le format dans lequel la fenêtre sera
sauvegardée est sélectionné par le paramètre format :
"NATIVE": format courant.
"BINARY": format binaire.
"ASCII32": format ASCII.
Retour : 1 si OK, 0 sinon.

Syntaxe 16
IntVal = WINDOW(Mode, WinName, Branch, TabIndex);
Type de retour : INTEGER.
Argument Signification
WinName Nom d'une fenêtre. Type STR.
Branch Branche de l'arbre des variables. Type STR.
TabIndex Index de l'onglet. Type INTEGER.
Exécution
Mode Mnémonique Action

SV_SCADABasic_fr 437
27 SELECTTAB Pour une fenêtre utilisant des onglets, sélectionne l'onglet correspondant à
l'index fourni.
Retour : 1 si OK, 0 sinon.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 438
XMLPATH
Voir aussi Exemple
Processus XML formatant des données selon les spécifications XPath (XML Path Language).
Mode Mnémonique Syntaxe
1 GET 1
2 GETSTR 2
3 GETDOUBLE 3
4 GETSINGLE 4
5 GETLONG 5
6 GETINT 6
7 GETBOOL 7
8 LOAD 8
9 UNLOAD 9
10 LOADFILE 10

Format de Namespace lors de l'utilisation de XMLPATH avec une fenêtre d'alarmes ou de consignations
Le format de Namespace est le suivant. Notez que la chaîne tient compte des minuscules/majuscules.
Branch/Mimic/ViewerId
Argument Signification
Branch Branche avec laquelle le synoptique est ouvert. Si le synoptique n'est pas ouvert avec
une branche, une chaîne nulle doit être utilisée.
Mimic Nom de fichier du synoptique.
ViewerID Identifiant de la fenêtre d'alarmes ou de consignations qui peut être trouvé ou modifié
en utilisant l'Explorateur graphique.

Syntaxe 1
LongVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé. Type STR ou LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
1 GET Retourne un Handle à partir d'un chemin.

LongVal est automatiquement alloué et réalloué si le verbe est appelé cycliquement. Il n'y a pas
besoin de faire une allocation via ALLOC_BUFFER. Le Handle LongVal est désalloué à la fin lorsque
le mode UNLOAD est appelé.

Syntaxe 2
StrVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification

SV_SCADABasic_fr 439
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé. Type STR ou LONG.

Type de retour : STR.

Exécution
Mode Mnémonique Action
2 GETSTR Retourne une valeur de chaîne de caractère à partir d'un chemin.

Syntaxe 3
DoubleVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé.. Type STR ou LONG.

Type de retour : DOUBLE.

Exécution
Mode Mnémonique Action
3 GETDOUBLE Retourne une valeur double à partir d'un chemin.

Syntaxe 4
SingleVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé. Type STR ou LONG.

Type de retour : SINGLE.

Exécution
Mode Mnémonique Action
3 GETSINGLE Retourne une valeur SINGLE à partir d'un chemin.

Syntaxe 5
LongVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé. Type STR ou LONG.

Type de retour : LONG.

Exécution
Mode Mnémonique Action
5 GETLONG Retourne une valeur LONG à partir d'un chemin.

Syntaxe 6
IntVal = XMLPATH(Mode, Namespace, Xpath);

SV_SCADABasic_fr 440
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé.. Type STR ou LONG.

Type de retour : INTEGER.

Exécution
Mode Mnémonique Action
6 GETINT Retourne une valeur entière à partir d'un chemin.

Syntaxe 7
IntVal = XMLPATH(Mode, Namespace, Xpath);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
Xpath Chemin hiérarchisé.. Type STR ou LONG.

Type de retour : INTEGER. 1 pour une chaîne True, 0 pour une chaîne False.

Exécution
Mode Mnémonique Action
7 GETBOOL Retourne une valeur booléenne (comme un entier) à partir d'un chemin.
1 pour une chaîne <true>.
0 pour une chaîne<false>.

Syntaxe 8
IntVal = XMLPATH(Mode, Namespace, XMLdata);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
XMLdata Contenu du fichier XML. Type STR ou LONG.

Type de retour : INTEGER. 1 pour OK, -1 pour un fichier XML erroné, -2 aucun fichier XML.

Exécution
Mode Mnémonique Action
8 LOAD Charge et mappe une donnée XML dans le contexte identifié par un espace
de nom.

Syntaxe 9
IntVal = XMLPATH(Mode, Namespace);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.

Type de retour : INTEGER. 1 pour OK, -1 pour aucun espace de nom trouvé, -2 aucun fichier XML.

Exécution
Mode Mnémonique Action
9 UNLOAD Décharge et démappe une donnée XML à partir d'un espace de nom.

SV_SCADABasic_fr 441
Syntaxe 10
IntVal = XMLPATH(Mode, Namespace, XMLfilename);
Argument Signification
Namespace Identifiant pour le Xpath. Type STR ou LONG.
XMLfilename Nom du fichier XML à charger. Type STR ou LONG.
Type de retour : INTEGER. 1 pour OK, -1 pour donnée XML erronée, -2 pour fichier non trouvé.

Exécution
Mode Mnémonique Action
10 LOADFILE Charge et mappe une donnée XML à partir d'un fichier.

Exemple
Pour un exemple, sélectionner le lien Exemple ci-dessus.

SV_SCADABasic_fr 442
Généralités sur les Exemples
Voir aussi
Il y a plusieurs sortes d'exemples dans le fichier d'aide du SCADA BASIC :

1. Des petits exemples de code intégrés dans le chapitre Instructions de A à Z.


2. Des exemples plus conséquents visibles dans des chapitres séparés.

Quelques uns des grands exemples sont extraits de projets d'application qui fournissent le contexte de
leur exécution.

Finalité et Limitations Recommandées d'Utilisation


La finalité de tous ces exemples est d'illustrer les commandes SCADA BASIC. Les exemples les plus
conséquents et les projets montrent principalement les différents modes et syntaxes d'une commande
particulière
Quelques exemples donnent des notes, des astuces ou des avertissements pour faciliter la mise en
application pratique des commandes. Cependant, Ce ne sont pas des exemples devant être considérés
comme des modèles de développement de projet ou d’IHM ou de programmes. Ils peuvent nécessiter des
contextes particuliers pour être exécutés. Pour toutes ces raisons, ils doivent être utilisées à titre de guide
seulement, et ne doivent pas être intégrés en l’état dans des applications réelles.

Comment Rechercher des Exemples


• Vous pouvez utiliser l'onglet Rechercher dans le fichier d'aide pour localiser des exemples
d’utilisation de commandes SCADA BASIC dans le chapitre Instructions et le chapitre des exemples
séparés.
• Les exemples de projet sont enregistrés dans des fichiers texte. Vous devez dézipper un projet
avant d'accéder à son contenu. Vous pouvez utiliser l'Explorateur Windows pour localiser des
caractéristiques particulières.

SV_SCADABasic_fr 443
Exemple ALARMDISPLAY
Appliqué à
Exemple 1
Dans cet exemple suivant, la fenêtre AllAlarm contient une animation d'affichage d'alarme identifiée
comme AllDomain. La fenêtre affichée a été configurée sans la bordure du bas ; la fonctionnalité
remplacée avec les boutons de commande pour lancer les différents sous-programmes.
SUB Main ()
DIM Win As Str, ID AS Str;
Win = "AllAlarm";
ID = "AllDomain";
END SUB

SUB ToStart ()
AlarmDisplay("Begin",Win,"",ID);
END SUB

SUB ToEnd ()
AlarmDisplay("End",Win,"",ID);
END SUB

SUB PageUp ()
AlarmDisplay("Before", Win, "", ID);
END SUB

SUB PageDown ()
AlarmDisplay("After", Win, "", ID);
END SUB

SUB ListMode ()
AlarmDisplay("Mode",Win,"",ID);
END SUB

' Display alarms of the previous hour


SUB daterange()
DIM Hd1 as double;
DIM Hd2 as double;
DIM ret as integer;
Hd2 = DateTimeValue();
Hd1 = Hd2 - 3600000;
ret = ALARMDISPLAY("DATERANGE", "alm1","","IDalarm1",Hd1,Hd2);
print ( "ALARMDISPLAY mode DATERANGE ret=", ret);
END SUB

' Reset the filter on the date


SUB resetdaterange()
DIM Hd1 as double;
DIM Hd2 as double;
DIM ret as integer;
Hd2 = 0;
Hd1 = 0;
ret = ALARMDISPLAY("DATERANGE", "alm1","","IDalarm1",Hd1,Hd2);
print ( "ALARMDISPLAY mode DATERANGE ret=", ret);
END SUB

Exemple 2
Cet exemple utilise les instructions ADDSTRING, LINESELECT et XMLPATH:

SUB main()
END SUB

SV_SCADABasic_fr 444
SUB subscribe()
DIM WinName as str;
DIM WinBranch as str;
DIM NameSpace as str;
DIM iRet as integer;

WinName = WINDOW("CURRENTNAME");
WinBranch = WINDOW("CURRENTBRANCH");
NameSpace = AddString(WinBranch,"/");
NameSpace = AddString(NameSpace,WinName);
NameSpace = AddString(NameSpace,"/alarm1");
@lineselect.Syno = WinName;
@lineselect.Branch = WinBranch;
@lineselect.AlarmSelected = "";
@lineselect.NameSpace = NameSpace;
iRet = AlarmDisplay("LINESELECT",WinName,WinBranch,"alarm1","P","","SelectLine","");
Print("Subscription with result: ",iRet);
END SUB

SUB SelectLine()
DIM WinName as str;
DIM WinBranch as str;
DIM NameSpace as str;
DIM AlarmSelected as str;
DIM iBuf as long;

WinName = WINDOW("CURRENTNAME");
WinBranch = WINDOW("CURRENTBRANCH");
NameSpace = AddString(WinBranch,"/");
NameSpace = AddString(NameSpace,WinName);

NameSpace = AddString(NameSpace,"/alarm1");
@lineselect.NameSpace = NameSpace;
'AlarmSelected = XMLPATH("GETSTR",NameSpace,"lineselect/variable");
iBuf = XMLPATH("GET",NameSpace,"lineselect/variable");
AlarmSelected = CGET_BUFFER(iBuf, 0, 255);
@lineselect.AlarmSelected = AlarmSelected ;
XMLPATH("UNLOAD",NameSpace);
END SUB

SV_SCADABasic_fr 445
Exemple APPLICATION
Appliqué à

Exemple 1
Ce programme montre des exemples de lancement d'une application externe.
Pour chaque "\" dans le chemin d'accès Windows, SCADA Basic a besoin de "\\".

'Mode ISLOADED or Mode 1 (syntax 1)

SUB ApplicationIsLoaded()
'Only runs if the application has been launched with APPLICATION LOAD
'Return code
DIM intReturn As Integer;
DIM strLink As Str;
'for each "\" in the Filename => Scada Basic needs "\\"
'for example:
' "C:\WINDOWS\NOTEPAD.EXE" => "C:\\WINDOWS\\notepad.exe"
strLink = "C:\\WINDOWS\\notepad.exe";
intReturn = APPLICATION("ISLOADED",strLink);
If (intReturn == 1) Then
PRINT("Program is already loaded.");
Else
PRINT("Program is not already loaded.");
End If
END SUB

Mode ACTIVATE or Mode 2 (syntax 1)

SUB ApplicationActivate()
'Return code
DIM intReturn As Integer;
DIM strLink As Str;
strLink = "C:\\WINDOWS\\notepad.exe";
intReturn = APPLICATION("ACTIVATE",strLink);
If (intReturn == 1) Then
PRINT("Activation was successful.");
Else
PRINT("Activation error of ", strLink, ".");
End If
END SUB

'Mode LOAD or Mode 3 (syntax 2)

SUB ApplicationLoad()
'Return code
DIM intReturn As Integer;
DIM strLink As Str;
DIM strArgs As Str;
DIM intWindowStyle As Integer;
strLink = "C:\\WINDOWS\\notepad.exe";
strArgs = "E:\\ScadaBasic\\USR\\APPLICATION\\p\\APPLICATION.SCB";
intWindowStyle = 1; 'Normal mode
intReturn = APPLICATION ("LOAD" , strLink , strArgs , intWindowStyle );
If (intReturn == 1) Then
PRINT("load successful");
Else
PRINT("load error");
End If
END SUB

SV_SCADABasic_fr 446
'Mode UNLOAD or Mode 4 -(syntax 1)

SUB ApplicationUnLoad()
'Return code
DIM intReturn As Integer;
DIM strLink As Str;
strLink = "C:\\WINDOWS\\notepad.exe";
intReturn = APPLICATION("UNLOAD",strLink);
If (intReturn == 1) Then
PRINT("unload successful");
Else
PRINT("unload error");
End If
END SUB

SUB LoadExcel ()
'example of how to launch the Excel application
DIM intReturn As Integer;
DIM strapplink As Str;
DIM strArgs As Str;
DIM intWindowStyle As Integer;
strapplink = "C:\\Program Files\\Microsoft Office\\Office10\\EXCEL.EXE";
If (Application ("IsLoaded", strapplink)) Then
' The application is already running
' => Activate the application
If (Application ("Activate", strapplink) == 0) Then
PRINT("activate error of ", strapplink);
End If
Else
'The application is not running, so LOAD the application
intWindowStyle=5; 'Windows Minimizes not Activated
strArgs="/E"; 'Open Excel without file opened by default
'strArgs="/m"; 'Open Excel with a new file including just a Macro
'strArgs="/r E:\\file1.xls"; 'Open the file e:\file.xls with Excel in Read Only
'strArgs="/w E:\\file1.xls"; 'Open the file e:\file.xls with Excel in normal mode

If (Application ("Load", strapplink, strArgs , intWindowStyle) == 0) Then


PRINT ("load error of ", strapplink);
End If
End If
END SUB

Exemple 2
Cette exemple lance l'application Excel.
SUB LoadExcel ()
DIM r As Integer;
DIM s As Str;
s = "C:\\EXCEL\\EXCEL.EXE"; 'note double backslashes
If (Application ("IsLoaded", s)) Then
'Application already loaded
'Activate application :
If (Application ("Activate", s) == 0) Then
Print("Error in activation of ", s);
End If
Else
'Application not loaded
'Load application in a minimised window
' with the parameter "/E" :
If (Application ("Load", s, "/E" , 5) == 0) Then
Print ("Error when loading ", s);
End If
End If

SV_SCADABasic_fr 447
END SUB

SUB UnloadExcel ()
DIM r As Integer;
DIM s As Str;
s = "EXCEL";
If (Application ("IsLoaded", s)) Then
If (Application ("Unload", s) == 0) Then
Print ("Error when unloading ", s);
End If
End If
END SUB

SV_SCADABasic_fr 448
Exemple ASCIIFIELD
Appliqué à

Exemple 1
Ce programme illustre les modes de la commande ASCIIFIELD.
'Retrieve, from an ASCII buffer, ASCII fields separated by a given character
'Database config:
'@STRING01 As Text
'@STR01 As Text
'@SEPA As Text
'@LEN01 As Register
'@INTEGER01 As Register
'@LONG01 As Register
'@DOUBLE01 As Register
'@COUNT01 As Register
'@INDEX01 As Register

'Retrieval of fields separated by a data character in the ASCII buffer

'Database prerequisites:
'@STRING01 of type TEXT
'@STR01 of type TEXT
'@SEPA of type TEXT
'@LEN01 of type REGISTER
'@INTEGER01 of type REGISTER
'@LONG01 of type REGISTER
'@DOUBLE01 of type REGISTER
'@COUNT01 of type REGISTER
'@INDEX01 of type REGISTER
'For these examples you can use:
'@STRING01 = "123.34;my string, here;345;123456789;hello world\n"

'Mode LEN or Mode 1 (syntax 1)

SUB AsciiFieldLen1()'declare code


DIM lngbuffer1 As Long;
DIM strline As Str;
DIM intlengh As Integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
@LEN01 = TOS(ASCIIFIELD("LEN",lngbuffer1));
FREE_BUFFER(lngbuffer1);
END SUB

SUB AsciiFieldLen2()
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM intlengh As Integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
'@SEPA is equal to";"
@LEN01 = TOS(ASCIIFIELD("LEN",lngbuffer1,1,@SEPA));
FREE_BUFFER(lngbuffer1);
END SUB

'Mode COUNT or Mode 2 (syntax 2)

SUB AsciiFieldCount()

SV_SCADABasic_fr 449
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM intcount As Integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
@COUNT01 = TOS(ASCIIFIELD("COUNT", lngbuffer1,@SEPA ));
FREE_BUFFER(lngbuffer1);
END SUB

'Mode STR or Mode 3 (syntax 1)

SUB AsciiFieldStr()
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM strchar As Str;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
@STR01 = ASCIIFIELD("STR",lngbuffer1,TOI(@INDEX01),@SEPA);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode INTEGER or Mode 4 (syntax 1)

SUB AsciiFieldInteger()
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM intInteger As Integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
@INTEGER01 = TOS(ASCIIFIELD("INTEGER",lngbuffer1,TOI(@INDEX01),@SEPA));
FREE_BUFFER(lngbuffer1);
END SUB

'Mode LONG or Mode 5 (syntax 1)

SUB AsciiFieldLong()
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM lngLong As Long;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);
@LONG01 = TOS(ASCIIFIELD("LONG",lngbuffer1,TOI(@INDEX01),@SEPA));
FREE_BUFFER(lngbuffer1);
END SUB

'Mode DOUBLE or Mode 6 (syntax 1)

SUB AsciiFieldDouble()
'declare code
DIM lngbuffer1 As Long;
DIM strline As Str;
DIM dbldouble As double;
lngbuffer1 = ALLOC_BUFFER(110);
strline = @STRING01;
PUT_BUFFER(lngbuffer1, 0, strline);

SV_SCADABasic_fr 450
@DOUBLE01 = TOS(ASCIIFIELD("DOUBLE",lngbuffer1,TOI(@INDEX01),@SEPA));
FREE_BUFFER(lngbuffer1);
END SUB

Exemple 2
Ce programme affiche les champs ASCII dans différents formats.
SUB main()
DIM hdl as long;
DIM line as str;
DIM ch as str;
DIM i as integer;
DIM l as long;
DIM d as double;
DIM count as integer;
DIM length as integer;
hdl = ALLOC_BUFFER(110);
line = "123.34;my string, here;345;123456789;hello world\n";
PUT_BUFFER(hdl, 0, line);
length = ASCIIFIELD("LEN",hdl);
PRINT(length);
length = ASCIIFIELD("LEN",hdl,4,";");
PRINT(length);
PRINT("count = ", ASCIIFIELD("COUNT",hdl,";"));
ch = ASCIIFIELD("STR",hdl,2,";");
i = ASCIIFIELD("INTEGER",hdl,3,";");
l = ASCIIFIELD("LONG",hdl,4,";");
d = ASCIIFIELD("DOUBLE",hdl,1,";");
PRINT(ch);
PRINT(i);
PRINT(l);
PRINT(d);
PRINT(">",ASCIIFIELD("STR",hdl,5,";"),"<");
free_buffer(hdl);
END SUB
Ce programme affiche ces lignes dans la fenêtre de déboguage.
110
9
count = 5
my string, here
345
123456789
123.34
>hello world<

SV_SCADABasic_fr 451
Exemple ASSOCLABEL
Appliqué à
Ce programme illustre la commande ASSOCLABEL.
' Change the labels in the associated label AssocLabel1
SUB SetAssocLabel()
DIM l_bRet AS INTEGER;

'------------------------- First language ---------------------


' State to 0
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 0, "Open" );
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel State to 0. Return = ", l_bRet);
END IF

' State to 1
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 1, "Close");
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel State to 1. Return = ", l_bRet);
END IF

' Transition to 0
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 2, "Transition to open");
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel Transition to 0. Return = ", l_bRet);
END IF

' Transition to 1
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 3, "Transition to closed");
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel Transition to 1. Return = ", l_bRet);
END IF

' Command to 0
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 4, "Forced to open");
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel Command to 0. Return = ", l_bRet);
END IF

' Command to 1
l_bRet = ASSOCLABEL ("SETLABEL", "AssocLabel1", 5, "Forced to closed");
IF (l_bRet == 0) THEN
PRINT( "ERROR SetLabel Command to 1. Return = ", l_bRet);
END IF

'------------------------- Second language -------------------


l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 0, "Animation 0", 1 );
l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 1, "Animation 1", 1 );
l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 2, "Log change to 0", 1 );
l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 3, "Log change to 1", 1 );
l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 4, "Bit send 0", 1 );
l_bRet = ASSOCLABEL ( "SETLABEL", "AssocLabel1", 5, "Bit send 1", 1 );
END SUB

SV_SCADABasic_fr 452
Exemple BACNET
Appliqué à

Exemple 1
Ce programme exécute plusieurs modes de la commande BACNET.
Sub Main()
End Sub

Sub TimeSynchronization()
BACNET("TIME_SYNCHRONIZATION", "NETWORK01", "SYNCHRO");
End Sub

Sub ResetPriority()
BACNET( "RESET_PRIORITY", "DEVICE1.ANALOG_VALUE_1.PRESENT_VALUE", 16, "RESULT2");
End Sub

Sub ResetAllPriorities()
BACNET( "RESET_ALL_PRIORITIES", "DEVICE1.ANALOG_VALUE_1.PRESENT_VALUE", "RESULT");
End Sub

Sub StartNetwork()
BACNET( "START_NETWORK", "NETWORK01", "RESULTSTARTNET");
End Sub

Sub StopNetwork()
BACNET( "STOP_NETWORK", "NETWORK01", "RESULTSTOPNET");
End Sub

Sub StartDevice()
BACNET( "START_DEVICE", "NETWORK01", "DEVICE1","RESULTSTARTDEV");
End Sub

Sub StopDevice()
BACNET( "STOP_DEVICE");
End Sub

Sub WriteValue()
BACNET( "WRITE_PRIORITY", "DEVICE1.ANALOG_VALUE_1.PRESENT_VALUE",59.65509,10, "RESULT1");
End SubExample 2

Exemple 2
Ce programme affiche des champs ASCII dans différents formats.
SUB main()
DIM hdl as long;
DIM line as str;
DIM ch as str;
DIM i as integer;
DIM l as long;
DIM d as double;
DIM count as integer;
DIM length as integer;
hdl = ALLOC_BUFFER(110);
line = "123.34;my string, here;345;123456789;hello world\n";
PUT_BUFFER(hdl, 0, line);
length = BACNET("LEN",hdl);
PRINT(length);
length = BACNET("LEN",hdl,4,";");
PRINT(length);
PRINT("count = ", BACNET("COUNT",hdl,";"));
ch = BACNET("STR",hdl,2,";");

SV_SCADABasic_fr 453
i = BACNET("INTEGER",hdl,3,";");
l = BACNET("LONG",hdl,4,";");
d = BACNET("DOUBLE",hdl,1,";");
PRINT(ch);
PRINT(i);
PRINT(l);
PRINT(d);
PRINT(">",BACNET("STR",hdl,5,";"),"<");
free_buffer(hdl);
END SUB
Ce programme affiche ces lignes dans la fenêtre de débogage du gestionnaire de programme :
110
9
count = 5
my string, here
345
123456789
123.34
>hello world<

SV_SCADABasic_fr 454
Exemple BUFTOFILE
Appliqué à
Ce programme montre l'utilisation de l'instruction BUFTOFILE.
USEFULL_PART désactive seulement l'écriture dans la 1ère zone du buffer plein.

SUB main()
'Declare variables
DIM lngbuffer1 as long;
DIM strline as Str;
DIM intresult as integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = "here,345;123456789 ,‚t‚\n";
PUT_BUFFER(lngbuffer1, 0, strline);
intresult = BUFTOFILE (lngbuffer1,"test1.txt");

'Create file test1.txt in folder TP of current project


FREE_BUFFER(lngbuffer1);
'free the memory area
END SUB

SUB buftofileusefull()
'Declare variables
DIM lngbuffer1 as long;
DIM strline as Str;
DIM strfilemode as Str;
DIM intresult as integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = "here,345;123456789 ,‚t‚\n";
PUT_BUFFER(lngbuffer1, 0, strline);
'strfilemode="Write"; [?]
strfilemode="Append";
intresult = BUFTOFILE (lngbuffer1,"test1.txt","USEFULL_PART",strfilemode);
'USEFULL_PART enables writing only up to the first area of the empty buffer
'create file test1.txt in folder TP of current project
FREE_BUFFER(lngbuffer1);
'free the memory area
END SUB

SV_SCADABasic_fr 455
Exemple CGET_BUFFER
Appliqué à
Ce programme utilise l'instruction CGET_BUFFER.
SUB main()
'Declare variables
DIM lngbuffer1 as long;
DIM strline as Str;
DIM strResult as Str;
DIM intlength as integer;

'Create a buffer
lngbuffer1 = ALLOC_BUFFER(110);
strline = "123.34;a string,here;345;123456789;‚t‚\n";

'The string srtline is put into the buffer


PUT_BUFFER(lngbuffer1, 0, strline);

'Retrieval of length of character string


intlength=LEN(strline);
strResult = CGET_BUFFER(lngbuffer1,0,intlength,0);
PRINT("The returned string is: ",strResult);
'This displays: "The returned string is: 123.34;a string, here;345;123456789;‚t‚"
FREE_BUFFER(lngbuffer1);
END SUB

SV_SCADABasic_fr 456
Exemple CHECKLIST
Applies To
This example contains a set of functions to support a pair of Check-box List form controls using the
CHECKLIST instruction.
SUB Main()
END SUB

'declare variables:
SUB cbxSel()
DIM lRet As Long; 'return
DIM sCbxText As Str; 'Text
DIM sCbxText1 As Str; 'Text
DIM sCbxData As Str; 'User Data
DIM sCbxData1 As Str; 'User Data

'retrieve content of selected item in 1st control:


SUB chkSel()
DIM lRet As Long;
DIM lRet2 As Long;
DIM schkText As Str;
DIM schkText1 As Str;
DIM schkData As Str;
DIM schkData1 As Str;
lRet = CHECKLIST ( "GETSELECTEDINDEX", "ctrl","","chk" );
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk1", lRet);
schkText = CHECKLIST ( "GETTEXT", "ctrl","","chk", lRet);
schkText1 = CHECKLIST ( "GETTEXT", "ctrl","","chk1", lRet);
schkData = CHECKLIST ( "GETUSERDATA", "ctrl","","chk", lRet);
schkData1 = CHECKLIST ( "GETUSERDATA", "ctrl","","chk1", lRet);
lRet2 = CHECKLIST ( "GETSTATE", "ctrl","","chk" , lRet);
CHECKLIST ( "SETSTATE", "ctrl","","chk1", lRet, lRet2);

'put its contents in a frame:


SET ( "chkText" , schkText);
SET("chkText1", schkText1);
SET("chkData", schkData);
SET("chkData1" , schkData1);
SET("chkCount" , CHECKLIST ( "COUNT", "ctrl","","chk") );
SET("chkCount1" , CHECKLIST ( "COUNT", "ctrl","","chk1"));
SENDLIST ("BLOC");

'concatenate & load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",schkData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",schkData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",schkData));
OPTIONLIST ( "LOAD", "ctrl","","opt2", ADDSTRING("opt",schkData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",schkData));
END SUB

'retrieve content of selected item in 2nd control:


SUB chkSel1()
DIM lRet As Long;
DIM schkText As Str;
DIM schkText1 As Str;
DIM schkData As Str;
DIM schkData1 As Str;
lRet = CHECKLIST ( "GETSELECTEDINDEX", "ctrl","","chk1" );
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk", lRet);
schkText = CHECKLIST ( "GETTEXT", "ctrl","","chk", lRet);
schkText1 = CHECKLIST ( "GETTEXT", "ctrl","","chk1", lRet);
schkData = CHECKLIST ( "GETUSERDATA", "ctrl","","chk", lRet);

SV_SCADABasic_fr 457
schkData1 = CHECKLIST ( "GETUSERDATA", "ctrl","","chk1", lRet);
lRet = CHECKLIST ( "COUNT", "ctrl","","chk");
lRet = CHECKLIST ( "COUNT", "ctrl","","chk1");

'put its contents in a frame:


SET ( "chkText" , schkText);
SET("chkText1", schkText1);
SET("chkData", schkData);
SET("chkData1" , schkData1);
SET("chkCount" , CHECKLIST ( "COUNT", "ctrl","","chk") );
SET("chkCount1" , CHECKLIST ( "COUNT", "ctrl","","chk1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSelchk()
DIM lRet As Long;
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk", 2);
END SUB

SV_SCADABasic_fr 458
Exemple CHECKLIST
Applies To
This example contains a set of functions to support a pair of Check-box List form controls using the
CHECKLIST instruction.
SUB Main()
END SUB

'declare variables:
SUB cbxSel()
DIM lRet As Long; 'return
DIM sCbxText As Str; 'Text
DIM sCbxText1 As Str; 'Text
DIM sCbxData As Str; 'User Data
DIM sCbxData1 As Str; 'User Data

'retrieve content of selected item in 1st control:


SUB chkSel()
DIM lRet As Long;
DIM lRet2 As Long;
DIM schkText As Str;
DIM schkText1 As Str;
DIM schkData As Str;
DIM schkData1 As Str;
lRet = CHECKLIST ( "GETSELECTEDINDEX", "ctrl","","chk" );
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk1", lRet);
schkText = CHECKLIST ( "GETTEXT", "ctrl","","chk", lRet);
schkText1 = CHECKLIST ( "GETTEXT", "ctrl","","chk1", lRet);
schkData = CHECKLIST ( "GETUSERDATA", "ctrl","","chk", lRet);
schkData1 = CHECKLIST ( "GETUSERDATA", "ctrl","","chk1", lRet);
lRet2 = CHECKLIST ( "GETSTATE", "ctrl","","chk" , lRet);
CHECKLIST ( "SETSTATE", "ctrl","","chk1", lRet, lRet2);

'put its contents in a frame:


SET ( "chkText" , schkText);
SET("chkText1", schkText1);
SET("chkData", schkData);
SET("chkData1" , schkData1);
SET("chkCount" , CHECKLIST ( "COUNT", "ctrl","","chk") );
SET("chkCount1" , CHECKLIST ( "COUNT", "ctrl","","chk1"));
SENDLIST ("BLOC");

'concatenate & load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",schkData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",schkData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",schkData));
OPTIONLIST ( "LOAD", "ctrl","","opt2", ADDSTRING("opt",schkData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",schkData));
END SUB

'retrieve content of selected item in 2nd control:


SUB chkSel1()
DIM lRet As Long;
DIM schkText As Str;
DIM schkText1 As Str;
DIM schkData As Str;
DIM schkData1 As Str;
lRet = CHECKLIST ( "GETSELECTEDINDEX", "ctrl","","chk1" );
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk", lRet);
schkText = CHECKLIST ( "GETTEXT", "ctrl","","chk", lRet);
schkText1 = CHECKLIST ( "GETTEXT", "ctrl","","chk1", lRet);
schkData = CHECKLIST ( "GETUSERDATA", "ctrl","","chk", lRet);

SV_SCADABasic_fr 459
schkData1 = CHECKLIST ( "GETUSERDATA", "ctrl","","chk1", lRet);
lRet = CHECKLIST ( "COUNT", "ctrl","","chk");
lRet = CHECKLIST ( "COUNT", "ctrl","","chk1");

'put its contents in a frame:


SET ( "chkText" , schkText);
SET("chkText1", schkText1);
SET("chkData", schkData);
SET("chkData1" , schkData1);
SET("chkCount" , CHECKLIST ( "COUNT", "ctrl","","chk") );
SET("chkCount1" , CHECKLIST ( "COUNT", "ctrl","","chk1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSelchk()
DIM lRet As Long;
CHECKLIST ( "SETSELECTEDINDEX", "ctrl","","chk", 2);
END SUB

SV_SCADABasic_fr 460
Exemple CIMWAY
Appliqué à
Ce programme montre l'utilisation des modes de l'instruction CIMWAY.
SUB MAIN()
'------ The communication object is MODBUS.PLC1.WORD1
DIM ret AS INTEGER;
DIM period AS SINGLE;
DIM errcount AS LONG;
DIM net_stat AS INTEGER, node_stat AS INTEGER;
DIM frame_stat AS INTEGER;
'------ Set scan rate to 500mSec
ret = CIMWAY("SCANMDF","MODBUS.PLC1.WORD1",0.5);
'------ Test of network, node and frame Status
net_stat = CIMWAY("STATUS","MODBUS");
IF (net_stat ==1) THEN
errcount = CIMWAY("ERROR","MODBUS");
PRINT("Network out of service", errcount,"errors.");
END IF
node_stat = CIMWAY("STATUS","MODBUS.PLC1");
IF (node_stat ==1) THEN
errcount = CIMWAY("ERROR","MODBUS.PLC1");
PRINT("Node out of service", errcount,"errors.");
END IF
frame_stat = CIMWAY("STATUS","MODBUS.PLC1,WORD1"); 'frame status
IF (frame_stat ==1) THEN
errcount = CIMWAY(5,"MODBUS.PLC1.WORD1");
PRINT("Frame out of service", errcount,"errors.");
END IF

'------ MODBUS connection to COM2


ret = CIMWAY("CFG","MODBUS","MODIFY_PORT_NUMBER","abc");
IF(ret !=0) THEN
IF (ret == -1) THEN
print("XBUS network do not exist");
ELSE
IF (ret ==-2) THEN
print("Bad parameter");
ELSE
print("Unknown error ",ret );
END IF
END IF
END IF

'------ Modification of the node address


ret = CIMWAY("CFG","MODBUS.VIRTUALNODE","MODIFY_EQT_ADDRESS","10");
IF (ret !=0) THEN
IF (ret == -1) THEN
print("MODBUS.VIRTUALNODE does not exist");
ELSE
IF (ret == -2) THEN
print("Bad parameter");
ELSE
print("Unknown error");
END IF
END IF
END IF

'------ Modify the address of the frame


ret = CIMWAY("CFG","MODBUS.PLC1,WORD1","MODIFY_MEMORY_ADDRESS","10");
IF (ret !=0) THEN
IF (ret == -1) THEN

SV_SCADABasic_fr 461
print("MODBUS.PLC1,WORD1 does not exist");
ELSE
IF (ret == -2) THEN
print("Bad parameter");
ELSE
print("Unknown error ",ret);
END IF
END IF
END IF

'------ Start a communication object.


print("Start MODBUS network");
ret = CIMWAY ("START","XBUS");
print(ret);
print(Start node ModeBUS.PLC1");
ret = CIMWAY ("START","MODBUS.PLC1");
print(ret);
print(Start scanning frame MODBUS.PLC1.WORD1");
ret = CIMWAY ("START","MODBUS.PLC1.WORD1");
print(ret);

'------ Stop a communication object.


print("Stop MODBUS network");
ret = CIMWAY ("STOP","XBUS");
print(ret);
print(Stop node ModeBUS.PLC1");
ret = CIMWAY ("STOP","MODBUS.PLC1");
print(ret);
print(Stop scanning frame MODBUS.PLC1.WORD1");
ret = CIMWAY ("STOP","MODBUS.PLC1.WORD1");
print(ret);

'------ Check Reading after a write command


print ("No check reading on frame MODBUS.PLC1.WORD1");
ret = CIMWAY("READAFTERWRITE","MODBUS.AP1.MOT16","NO");
print (ret);
END SUB

SV_SCADABasic_fr 462
Exemple CMPSTRING
Appliqué à
Ce programme utilise l'instruction CMPSTRING.
SUB main()
'Declare variables
DIM strstring1 as Str;
DIM strstring2 as Str;
DIM intResult1 as integer;
DIM intResult2 as integer;
DIM intResult3 as integer;
strstring1="string1";
strstring2="string2";
intResult1 = CMPSTRING(strstring1,strstring2);
intResult2 = CMPSTRING(strstring2,strstring1);
intResult3 = CMPSTRING(strstring1,strstring1);
If (intResult1 <0 )Then
PRINT(strstring1," lower to ",strstring2);
End If
If (intResult2 >0 )Then
PRINT(strstring2," upper to ",strstring1);
End If
If (intResult3 == 0 )Then
PRINT(strstring1," same to ",strstring1);
End If
END SUB

SV_SCADABasic_fr 463
Exemple COMBOBOX
Applies To
This example contains a set of functions to support a pair of Combo-box List form controls using the
COMBOBOX instruction.
SUB Main()
END SUB

'declare variables:
SUB cbxSel()
DIM lRet As Long;
DIM sCbxText As Str;
DIM sCbxText1 As Str;
DIM sCbxData As Str;
DIM sCbxData1 As Str;

'retrieve contents of selected item in 1st control:


lRet = COMBOBOX ( "GETSELECTEDINDEX", "ctrl","","cbx" );
COMBOBOX ( "SETSELECTEDINDEX", "ctrl","","cbx1", lRet);
sCbxText = COMBOBOX ( "GETTEXT", "ctrl","","cbx", lRet);
sCbxText1 = COMBOBOX ( "GETTEXT", "ctrl","","cbx1", lRet);
sCbxData = COMBOBOX ( "GETUSERDATA", "ctrl","","cbx", lRet);
sCbxData1 = COMBOBOX ( "GETUSERDATA", "ctrl","","cbx1", lRet);

'prepare to put its contents in a frame:


SET ( "CbxText" , sCbxText);
SET("CbxText1", sCbxText1);
SET("CbxData", sCbxData);
SET("CbxData1" , sCbxData1);
SET("CbxCount" , COMBOBOX ( "COUNT", "ctrl","","cbx") );
SET("CbxCount1" , COMBOBOX ( "COUNT", "ctrl","","cbx1"));

'concatenate and load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",sCbxData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",sCbxData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",sCbxData));
OPTIONLIST ( "LOAD"a, "ctrl","","opt2", ADDSTRING("opt",sCbxData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",sCbxData));
SENDLIST ("BLOC");
END SUB

'retrieve content of selected item in 2nd control:


SUB cbxSel1()
DIM lRet As Long;
DIM sCbxText As Str;
DIM sCbxText1 As Str;
DIM sCbxData As Str;
DIM sCbxData1 As Str;
lRet = COMBOBOX ( "GETSELECTEDINDEX", "ctrl","","cbx1" );
COMBOBOX ( "SETSELECTEDINDEX", "ctrl","","cbx", lRet);
sCbxText = COMBOBOX ( "GETTEXT", "ctrl","","cbx", lRet);
sCbxText1 = COMBOBOX ( "GETTEXT", "ctrl","","cbx1", lRet);
sCbxData = COMBOBOX ( "GETUSERDATA", "ctrl","","cbx", lRet);
sCbxData1 = COMBOBOX ( "GETUSERDATA", "ctrl","","cbx1", lRet);

'put its contents in a frame:


lRet = COMBOBOX ( "COUNT", "ctrl","","cbx1");
SET ( "CbxText" , sCbxText);
SET("CbxText1", sCbxText1);
SET("CbxData", sCbxData);
SET("CbxData1" , sCbxData1);
SET("CbxCount" , COMBOBOX ( "COUNT", "ctrl","","cbx") );

SV_SCADABasic_fr 464
SET("CbxCount1" , COMBOBOX ( "COUNT", "ctrl","","cbx1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSelcbx()
DIM lRet As Long;
COMBOBOX ( "SETSELECTEDINDEX", "ctrl","","cbx", 2);
END SUB

SV_SCADABasic_fr 465
Exemple CONVERT
Appliqué à
Cet exemple illustre chaque mode de l'instruction CONVERT et imprime les résultats dans le panneau de
déboguage du gestionnaire de programme.
'Use of the CONVERT instruction: run each function
SUB main()
convertbintoa();
convertocttoa();
converthextoa();
convertbcdtoa();
convertatobin();
convertatooct();
convertatohex();
convertatobcd();
END SUB

'Mode BINTOA or Mode 1 (syntax 1)


SUB convertbintoa()
'Declare internal variables
DIM lngvalue as long;
DIM strReturn as Str;
lngvalue=20;
strReturn = CONVERT("BINTOA",lngvalue);
PRINT(lngvalue," to base 10 equals ",strReturn," to base 2");
END SUB

'Mode OCTTOA or Mode 2 (syntax 1)


SUB convertocttoa()
'Declare internal variables
DIM lngvalue as long;
DIM strReturn as Str;
lngvalue=20;
strReturn = CONVERT("OCTTOA",lngvalue);
PRINT(lngvalue," to base 10 equals ",strReturn," to base 8");
END SUB

'Mode HEXTOA or Mode 3 (syntax 1)


SUB converthextoa()
'Declare internal variables
DIM lngvalue as long;
DIM strReturn as Str;
lngvalue=20;
strReturn = CONVERT("HEXTOA",lngvalue);
PRINT(lngvalue," to base 10 equals ",strReturn," to base 16 (hexadecimal)");
END SUB

'Mode BCDTOA or Mode 4 (syntax 1)


SUB convertbcdtoa()
'Declare internal variables
DIM lngvalue as long;
DIM strReturn as Str;
lngvalue=20;
strReturn = CONVERT("BCDTOA",lngvalue);
PRINT(lngvalue," to base 10 equals ",strReturn," in BCD");
END SUB

'Mode ATOBIN or Mode 11 (syntax 2)


SUB convertatobin()
'Declare internal variables
DIM strvalue as Str;
DIM lngReturn as long;

SV_SCADABasic_fr 466
strvalue="111111";
lngReturn = CONVERT("ATOBIN",strvalue);
PRINT(strvalue," to base 2 equals ",lngReturn," to base 10");
END SUB

'Mode ATOOCT or Mode 12 (syntax 2)


SUB convertatooct()
'Declare internal variables
DIM strvalue as Str;
DIM lngReturn as long;
strvalue="16";
lngReturn = CONVERT("ATOOCT",strvalue);
PRINT(strvalue," to base 8 equals ",lngReturn," to base 10");
END SUB

'Mode ATOHEX or Mode 13 (syntax 2)


SUB convertatohex()
'Declare internal variables
DIM strvalue as Str;
DIM lngReturn as long;
strvalue="D";
lngReturn = CONVERT("ATOHEX",strvalue);
PRINT(strvalue," to base 16 equals ",lngReturn," to base 10");
END SUB

'Mode ATOBCD or Mode 14 (syntax 2)


SUB convertatobcd()
'Declare internal variables
DIM strvalue as Str;
DIM lngReturn as long;
strvalue="D";
lngReturn = CONVERT("ATOBCD",strvalue);
PRINT(strvalue," in BCD equals ",lngReturn," to base 10");
END SUB

SV_SCADABasic_fr 467
Exemple COPY_BUFFER
Appliqué à
Cet exemple montre l'utilisation de la commande COPY_BUFFER.
SUB main()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strline as Str;
DIM strResult as Str;
DIM intResult as integer;
DIM intlength as integer;

'Create a buffer
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
strline = "123.34;a string,here;345;123456789;‚t‚\n";

'Put the string srtline into the buffer


PUT_BUFFER(lngbuffer1, 0, strline);

'Retrieve the length of the character string strline


intlength=LEN(strline);
intResult = COPY_BUFFER(lngbuffer2, lngbuffer1 ,0);
strResult = CGET_BUFFER(lngbuffer2,0,intlength,0);
PRINT("The returned string is: ",strResult);

'This displays:
'"The returned string is: 123.34;a string,here;345;123456789;‚t‚"
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

SV_SCADABasic_fr 468
Exemple CRONTAB
Appliqué à

Exemple 1
Ce programme créé et modifie les événements d'exécution de programme dans différents horodates.
SUB main()
'-------- The 5th of August at 16.50.
CRONTAB("ADDPROG","ONCE","05/08/94","16:50", "clicell", "","cront");
'-------- 26 minutes past each hour.
CRONTAB("ADDPROG","EACH_HOUR","","26","clicell","", "cront");
'-------- Every day at 18.27
CRONTAB("ADDPROG","EACH_DAY","","18:27","clicell","", "cront");
'-------- Every week on Sunday at 18.27
CRONTAB("ADDPROG","EACH_WEEK","sun","18:28", "clicell","","cront");
'-------- The 27th of each month at 18.29
CRONTAB("ADDPROG","EACH_MONTH","27","18:29", "clicell","","cront");
'-------- 30 minutes past each hour
CRONTAB("ADDPROG","EACH_HOUR","","30","B1",0,0);
'-------- 30 minutes past each hour
CRONTAB("ADDPROG","EACH_HOUR","","30", "SYSTEM.ALARM.NEWAL",2 ,3);
CRONTAB("ADDPROG","EACH_HOUR","","30","B2",2,5);
END SUB

Exemple 2
Ce programme envoie la configuration du séquenceur vers tous les postes de la liste de clients de
modification.
DIM Handle As Long;
SUB SendSeq()
Handle = alloc_buffer (1000);
Set("EVTVAR", 0);
SENDLIST(0);
EVENT("ADDPROG", "EVTVAR", 1, "PGMCRON", "", "OnEvt");
CRONTAB("NETWORKBROADCAST" , "LIST1" , Handle , "EVTVAR");
END SUB

SUB OnEvt() DIM Ret As Str;


EVENT("DEL", "EVTVAR", 1, "PGMCRON", "", "OnEvt"); Ret = CGET_Buffer(Handle, 0, 255);
print(Ret); FREE_BUFFER(Handle); END SUB

SV_SCADABasic_fr 469
Exemple CYCLIC
Appliqué à

Exemple 1
Cet exemple illustre les modes de la commande CYCLIC.
'Database variables used:
'@ACTIVATION.STATE of type STATE

SUB prog1()
PRINT("The arguments passed are: ",GETARG("ARG1")," and ",GETARG("ARG2"));
END SUB

SUB prog2()
BEEP(1000,100); '1000 Hz for 1/10 second
END SUB

'Mode ADDPROG or Mode 1 (syntax 1)

SUB cyclicaddprog()
DIM intResult as integer;
DIM intDelay as integer;
intDelay=5;
intResult = CYCLIC("ADDPROG",intDelay, "CYCLIC.SCB","","prog1", "Argument1,Argument2"
,"@ACTIVATION.STATE");
'intResult = CYCLIC("ADDPROG",intDelay, "CYCLIC.SCB","","prog2", ""
,"@ACTIVATION.STATE");
END SUB

'Mode DEL or Mode 5 (syntax 1)

SUB cyclicdel()
DIM intResult as integer;
DIM intDelay as integer;
intDelay=5;
intResult = CYCLIC("DEL",intDelay, "CYCLIC.SCB","","prog1", "Argument1,Argument2"
,"@ACTIVATION.STATE");
END SUB

'Mode DELALL or Mode 6 (syntax 2)

SUB cyclicdelall()
DIM intResult as integer;
DIM intDelay as integer;
intDelay=5;
intResult = CYCLIC("DELALL");
END SUB

Exemple 2
Le programme PRINTVAR.PVB contient une fonction PRT_MES :
SUB PRT_MES ()
LPrint(1,"Register =",mes1);
END SUB
L'autre programme CYCLE.PVB démarre un cycle d'activation PRINTVAR.PVB toutes les 30 minutes :
SUB Main ()
If (Program("IS LOADED","PRINTVAR.PVB","") ==0) Then
Program("PRELOAD","PRINTVAR.PVB","");
Else
CYCLIC("ADD",1800,"PRINTVAR.PVB","","PRT_MES");

SV_SCADABasic_fr 470
End If
END SUB
Une fonction avec des délais pour démarrer et stopper les fonctions cycliques :
SUB MODIF_CYCLE(OldDly,NewDly)
CYCLIC("DEL",OldDly,"PRINTVAR.PVB","","PRT_MES");
CYCLIC("ADD",NewDly,"PRINTVAR.PVB","","PRT_MES");
END SUB

SV_SCADABasic_fr 471
Exemple DATETIME
Appliqué à

Exemple 1
Cet exemple montre l'utilisation des modes de la commande DATETIME.
'Database variables
'@DATETIME of type REGISTER
'@DATETIME.DAY of type REGISTER
'@DATETIME.MONTH of type REGISTER
'@DATETIME.YEAR of type REGISTER
'@DATETIME.HOUR of type REGISTER
'@DATETIME.MINUTE of type REGISTER
'@DATETIME.SECOND of type REGISTER
'@DATETIME.MILLISECOND of type REGISTER
'@DATETIME.WEEKDAY of type REGISTER
'@DATETIME.YEARDAY of type REGISTER
'@DATETIME.ISLEAPYEAR of type REGISTER
'A date-time is a whole number of seconds
' since 1st January 1980

'Mode DAY or Mode 1 (syntax 1)

SUB datetimeday()
DIM intResult as integer;
intResult = DATETIME ("DAY");
Print("Day = ",intResult);
@DATETIME.DAY = TOS (DATETIME ("DAY" , TOD(@DATETIME)) );
END SUB

'Mode MONTH or Mode 2 (syntax 1)

SUB datetimemonth()
DIM intResult as integer;
intResult = DATETIME ("MONTH");
@DATETIME.MONTH = TOS (DATETIME ("MONTH" , TOD(@DATETIME)) );
Print("Month = ",intResult);
END SUB

'Mode YEAR or Mode 3 (syntax 1)

SUB datetimeyear()
DIM intResult as integer;
intResult = DATETIME ("YEAR");
@DATETIME.YEAR= TOS (DATETIME ("YEAR" , TOD(@DATETIME)) );
Print("Year = ",intResult);
END SUB

'Mode HOUR or Mode 4 (syntax 1)

SUB datetimehour()
DIM intResult as integer;
intResult = DATETIME ("HOUR");
@DATETIME.HOUR = TOS (DATETIME ("HOUR" , TOD(@DATETIME)) );
Print("Hour = ",intResult);
END SUB

'Mode MINUTE or Mode 5 (syntax 1)

SUB datetimeminute()
DIM intResult as integer;
intResult = DATETIME ("MINUTE");

SV_SCADABasic_fr 472
@DATETIME.MINUTE = TOS (DATETIME ("MINUTE" , TOD(@DATETIME)) );
Print("Minute(s) = ",intResult);
END SUB

'Mode SECOND or Mode 6 (syntax 1)

SUB datetimesecond()
DIM intResult as integer;
intResult = DATETIME ("SECOND");
@DATETIME.SECOND = TOS (DATETIME ("SECOND" , TOD(@DATETIME)) );
Print("Second(s) = ",intResult);
END SUB

'Mode MILLISECOND or Mode 7 (syntax 1)

SUB datetimemillisecond()
DIM intResult as integer;
intResult = DATETIME ("MILLISECOND");
@DATETIME.MILLISECOND = TOS (DATETIME ("MILLISECOND" , TOD(@DATETIME)) );
Print("Millisecond(s) = ",intResult);
END SUB

'Mode WEEKDAY or Mode 8 (syntax 1)

SUB datetimeweekday()
DIM intResult as integer;
intResult = DATETIME ("WEEKDAY");
@DATETIME.WEEKDAY = TOS (DATETIME ("WEEKDAY" , TOD(@DATETIME)) );
Print("Day of the week = ",intResult);
END SUB

'Mode YEARDAY or Mode 9 (syntax 1)

SUB datetimeyearday()
DIM intResult as integer;
intResult = DATETIME ("YEARDAY");
@DATETIME.YEARDAY = TOS (DATETIME ("YEARDAY" , TOD(@DATETIME)) );
Print("Day in the year = ",intResult);
END SUB

'Mode ISLEAPYEAR or Mode 10 (syntax 1)

SUB datetimeisleapyear()
DIM intResult as integer;
intResult = DATETIME ("ISLEAPYEAR");
@DATETIME.ISLEAPYEAR = TOS (DATETIME ("ISLEAPYEAR" , TOD(@DATETIME)) );
Print("Leap year if value =(1) else (0) value = ",intResult);
END SUB

Exemple 2
Ce programme imprime la date et l'heure dans plusieurs formats.
SUB Main ()
DIM TD As Double;
TD = DateTimeValue();
PrintDateTime(TD);
TD = TD- 3600000; ' Subtract 1 hour
PrintDateTime(TD);
TD = DateTimeValue(25, 12, 2003, 23, 59, 59);
PrintDateTime(TD; ' 25 December 2003
TD = DateTimeValue("01/01/2000", "");
PrintDateTime(TD); ' 01 January 2000

SV_SCADABasic_fr 473
END SUB

SUB PrintDateTime(TD)
'------Prints time and date in a number of formats.
Print ("td = ", td, " --> ");
Print (DateTimeString (td, "#D/#M/###Y - #h:#m:#s.##l"));
Print (DateTimeString (td));
Print (DateTimeString (td, "D")," \\ ",DateTimeString (td,"T"));
Print (DateTime ("Weekday", td), ", ",DateTime ("Yearday",td));
Print (DateTime("Day",td), "/",DateTime("Month",td),"/", DateTime ("Year", td));
Print (DateTime ("Hour", td), ":", DateTime ("Minute",td),":", DateTime ("Second", td),
".",DateTime ("Millisecond", td));
Print (DateTime ("IsLeapYear", td));
END SUB

SV_SCADABasic_fr 474
Exemple DDE
Appliqué à
Cet exemple utilise chaque mode de la commande DDE.
'Mode INITIATE or Mode 1 (syntax 1)

SUB ddeinitiate()
'Declare code return
DIM lngReturn as long;
DIM strServDdeName as Str;
DIM strTopicName as Str;
strServDdeName="EXCEL";
strTopicName="[FOLDER1.XLS]Sheet1";
lngReturn = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngReturn==0)Then
PRINT("Error in opening DDE channel");
End If
END SUB

'Mode TERMINATE or Mode 2 (syntax 2)

SUB ddeterminate()
'Declare code Return
DIM lngChannel as long;
DIM intResult as integer;
DIM strServDdeName as Str;
DIM strTopicName as Str;
strServDdeName="EXCEL";
strTopicName="[Folder1.XLS]Sheet1";
lngChannel = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngChannel==0)Then
PRINT("Error in opening DDE channel");
End If
intResult = DDE ("TERMINATE",lngChannel);
If(intResult==0)Then
PRINT("Error in closing DDE channel");
End If
END SUB

'Mode TERMINATEALL or Mode 3 (syntax 3)

SUB ddeterminateall()
'Declare code Return
DIM lngChannel as long;
DIM intResult as integer;
intResult = DDE ("TERMINATEALL");
If(intResult==0)Then
PRINT("Error in closing all DDE channels");
End If
END SUB

'Mode TIMEOUT or Mode 4 (syntax 4)

SUB ddetimeout()
'Declare code Return
DIM lngChannel as long;
DIM lngDdeTimeout as long;
DIM intResult as integer;
DIM strServDdeName as Str;
DIM strTopicName as Str;
strServDdeName="EXCEL";
strTopicName="[Folder1.XLS]Sheet1";

SV_SCADABasic_fr 475
lngChannel = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngChannel==0)Then
PRINT("Error in opening DDE channel");
End If
lngDdeTimeout=500; ' in milliseconds => 500ms
intResult = DDE ("TIMEOUT", lngChannel, lngDdeTimeout);
If(intResult==0)Then
PRINT("Error when modifying DDE timeout channel");
End If
intResult = DDE ("TERMINATE",lngChannel);
If(intResult==0)Then
PRINT("Error in closing DDE channel");
End If
END SUB

'Mode EXECUTE or Mode 5 (syntax 5)

SUB ddeexecute()
'Declare code Return
DIM lngChannel as long;
DIM intResult as integer;
DIM strDdeCmd as Str;
DIM strServDdeName as Str;
DIM strTopicName as Str;
strServDdeName="EXCEL";
'It is very important to register the folder Folder2.xls
' before and in the Excel default folder
' so that Folder2.xls appears in the recent files list
strTopicName="[Folder2.XLS]Sheet1";
lngChannel = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngChannel==0)Then
PRINT("Error in opening DDE channel");
End If
strDdeCmd = "";
intResult = DDE ("EXECUTE", lngChannel, strDdeCmd);
If(intResult==0)Then
PRINT("Error when executing the command ",strDdeCmd," on the DDE channel");
End If
intResult = DDE ("TERMINATE",lngChannel);
If(intResult==0)Then
PRINT("Error in closing DDE channel");
End If
END SUB

'Mode REQUEST or Mode 6 (syntax 6)

SUB dderequest()
'Declare code Return
DIM lngChannel as long;
DIM intResult as integer;
DIM strDdeItem as Str;
DIM strServDdeName as Str;
DIM strTopicName as Str;
strServDdeName="EXCEL";
strTopicName="[Folder1.XLS]Sheet1";
lngChannel = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngChannel==0)Then
PRINT("Error in opening DDE channel");
End If
strDdeItem = "L1C1";'ligne nø1 et Colonne nø1 du Folder ouvert
intResult = DDE ("REQUEST", lngChannel, strDdeItem);
If(intResult==0)Then
PRINT("Error in querying the item ",strDdeItem," on the DDE channel");

SV_SCADABasic_fr 476
End If
intResult = DDE ("TERMINATE",lngChannel);
If(intResult==0)Then
PRINT("Error in closing DDE channel");
End If
END SUB

'Mode POKE or Mode 7 (syntax 7)

SUB ddepoke()
'Declare code Return
DIM lngChannel as long;
DIM intResult as integer;
DIM strDdeItem as Str;
DIM strServDdeName as Str;
DIM strTopicName as Str;

'In Excel the line will be =EXCEL|[Folder2.xls]Sheet1!'L1C1'


strServDdeName="EXCEL";
strTopicName="[Folder1.XLS]Sheet1";
lngChannel = DDE ("INITIATE",strServDdeName,strTopicName);
If(lngChannel==0)Then
PRINT("Error in opening DDE channel");
End If
strDdeItem = "L1C1";
strDdeValue = "test SV dde";
intResult = DDE ("POKE", lngChannel, strDdeItem,strDdeValue);
If(intResult==0)Then
PRINT("Error after changin ... ",strDdeValue," of item ",strDdeItem," on DDE channel");
End If
intResult = DDE ("TERMINATE",lngChannel);
If(intResult==0)Then
PRINT("Error in closing DDE channel");
End If
END SUB

SV_SCADABasic_fr 477
Exemple DDECONV
Appliqué à
Ces exemples illustrent les modes de la commande DDECONV.

Exemple 1
'Creates a DDE conversation in SV
'The conversation is called: SVEXCEL

'Mode START or Mode 0 (syntax 1)

SUB ddeconvstart()
'Declare return code
DIM intReturn as integer;
DIM strConvDdeName as Str;
strConvDdeName="SVEXCEL";
intReturn = DDECONV ("START",strConvDdeName);
If(intReturn==1)Then
PRINT("the name of the conversation is invalid");
End If
END SUB

'Mode STOP or Mode 1 (syntax 1)

SUB ddeconvstop()
'Declare return code
DIM intReturn as integer;
DIM strConvDdeName as Str;
strConvDdeName="SVEXCEL";
intReturn = DDECONV ("STOP",strConvDdeName);
If(intReturn==1)Then
PRINT("Conversation name is invalid.");
End If
END SUB

'Mode STATUS or Mode 2 (syntax 1)

SUB ddeconvstatus()
'Declare return code
DIM intReturn as integer;
DIM strConvDdeName as Str;
strConvDdeName="SVEXCEL";
intReturn = DDECONV ("STATUS",strConvDdeName);
PRINT("Conversation status =",intReturn);
If(intReturn==1)Then
PRINT("Conversation is absent.");
End If
END SUB

'Mode ON or Mode 3 (syntax 2)

SUB ddeconvon()
'Declare return code
DIM intReturn as integer;
intReturn = DDECONV ("ON");
If(intReturn==1)Then
PRINT("absent");
End If
END SUB

'Mode OFF or Mode 4 (syntax 2)

SV_SCADABasic_fr 478
SUB ddeconvoff()
'Declare return code
DIM intReturn as integer;
intReturn = DDECONV ("OFF");
If(intReturn==1)Then
PRINT("absent");
End If
END SUB

Exemple 2
Ce SUB arrête une conversation DDE particulière si elle est lancée, ou la lance si elle ne l'est pas.
SUB ToggleDDE (ConversationName)
DIM Status As Integer;
Status = DDECONV("STATUS", ConversationName);
If (Status == -1) Then
Break(); 'Conversation does not exist
End If
If (Status ==1) Then
DDECONV("START", ConversationName);
Else
DDECONV("STOP", ConversationName);
End If
END SUB

SV_SCADABasic_fr 479
Exemples DECLARE
Appliqué à

Exemple 1
Declare Function GetPrivateProfileString LIB "kernel32" ALIAS "GetPrivateProfileStringA"
(lpApplicationName As Str, lpKeyName As Str, pcDefault As Str, lpReturnedString As Long,
nSize As Long, lpFileName As Str) As Long;'Private
Declare Function WritePrivateProfileString LIB "kernel32" ALIAS
"WritePrivateProfileStringA" (lpApplicationName As Str, lpKeyName As Str, lpString As
Str, lpFileName As Str) As Long;

Sub Main()
End Sub

'-------- Test function activated by mimic button


Sub Test()
Dim lReturnHandle As long, lResWrite As Long, lResGet As Long;
Dim cSectionName As Str, cKeyName As Str, cKeyValue As Str, cDefault As Str, cFileName
As Str;

'-------- Initialisation
cFileName = "test.ini"; '-------- In the project's TH folder by default
cSectionName ="SECTION";
cKeyName ="10";
cKeyValue ="EGGBACONCHIPS";

'-------- Try write


lResWrite=WritePrivateProfileString (cSectionName, cKeyName, cKeyValue, cFileName);
Print ("Return from write = ", lResWrite);

'-------- Try read


lReturnHandle = Alloc_Buffer (255);
Put_Buffer (lReturnHandle, 0, String (255, "0"));
lResGet = GetPrivateProfileString (cSectionName, cKeyName , "Not Found", lReturnHandle,
255, cFileName);
Print ("Return from get = ", lResGet);
If (lResWrite != 0) Then
Print (Cget_Buffer (lReturnHandle, 0, lResGet));
End If
Free_buffer (lReturnHandle);
End Sub

SV_SCADABasic_fr 480
Exemple DIM
Appliqué à
Ces exemples déclare de grands ensembles de variable d'une manière identique.

Exemple 1
SUB main()
DIM t[5000] As str;
DIM i As integer;
FOR (i =0; i<5000; i++)
t[i] = toc(i);
PRINT (t[i]);
NEXT
END SUB
Résultats:
0
...
4085
4086

Exemple 2
SUB main()
DIM t[4600] As str;
DIM i As integer;
FOR (i =0; i<4600; i++)
t[i] = toc(i);
PRINT (t[i]);
NEXT
END SUB
Résultats:
0
...
4598
4598
4599

SV_SCADABasic_fr 481
Exemple EMAIL
Appliqué à
Cet exemple développe la commande EMAIL.
sub main ()
email("SEND", "EmailProfile01", "a.n.other@company.com", "", "", "EmailSender Subject
test", "EmailSender Message test");
end sub

où le fichier C\MAILCONFIG.XML a cette mini configuration:

<?xml version="1.0" encoding="iso-8859-1"?>


<!--Message Configuration File-->
<MessageConfig>
<MailGeneralSettings DefaultTemplateName="" DefaultProfileName=""
DefaultAttachmentEncoding="0" MaxAttachmentSize="1000"
ProhibitedAttachmentFileExtensions="exe,dll,vbs,js" />
<SmsGeneralSettings DefaultTemplateName="" DefaultProfileName="" />
<MessageTemplates />
<MailProfiles>
<MailProfile Name="EmailProfile01" Description="">
<MailAccounts>
<MailAccount Name="EmailAccount01" Description="" SequenceNumber="1">
<Sender Address="yourname@mycompany.com" DisplayName="" />
<ReplyTo Address="" />
<Server Type="0" Host="smtp.live.com" Port="25" DeliveryMethod="0" EncryptionMethod="1"
AuthenticationMode="1" UserName="yourname@hotmail.com" UserPassword="yourpassword" />
</MailAccount>
</MailAccounts>
</MailProfile>
</MailProfiles>
<SmsProfiles />
</MessageConfig>

Note
Dans le contenu du fichier ci-dessus, le serveur SMTP de Microsoft est utilisé. D'autres serveurs peuvent,
de façon égale, être utilisés comme Gmail de Google avec la ligne Server Type configurée ainsi :

<Server Type="0" Host="smtp.gmail.com" Port="587" EncryptionMethod="1"


AuthenticationMode="1" UserName=" yourname@gmail.com" UserPassword="yourpassword" />

SV_SCADABasic_fr 482
Exemple EVENT
Appliqué à

Exemple 1
Cet exemple illustre plusieurs modes de la commande EVENT.
Il appelle les modules 'test' et 'test2' du programme Beep.svs.
'Database variables used:
'@STATE01 of type STATE
'@AUTHORISATION of type STATE

'Mode ADDPROG or Mode 1 (syntax 1)

SUB eventaddprog()
'Declare variables
DIM intResult as integer;
intResult = EVENT("ADDPROG","@STATE01","ALL>ALL","beep.svs","","test" ,"1000,100"
,"@AUTHORISATION" );
END SUB

'Mode DEL or Mode 5 (syntax 2)

SUB eventdel()
'Declare variables
DIM intResult as integer;
intResult = EVENT("DEL","@STATE01","ALL>ALL","beep.svs","","test");
END SUB

'Mode DELALL or Mode 6 (syntax 3)

SUB eventdelall()
'Declare variables
DIM intResult as integer;
intResult = EVENT("DELALL");
END SUB

'Mode ADDPROGS or Mode 11 (syntax 1)

SUB eventaddprogs()
'Declare variables
DIM intResult as integer;
intResult = EVENT("ADDPROGS","@STATE01","ALL>ALL","beep.svs","","test2" ,"1000,100"
,"@AUTHORISATION" );
END SUB

'Mode DELPROG or Mode 21 (syntax 4)

SUB eventdelprog()
'Declare variables
DIM intResult as integer;
intResult = EVENT("DELPROG","@STATE01","ALL>ALL","beep.svs","","test");
END SUB
Ce programme (Beep.svs) est appelé celui ci-dessus.
SUB test()
DIM dblfrequency as double; 'in Hz
DIM dblduration as double; ' in ms
dblfrequency =DVAL(GETARG("ARG1"));
dblduration = DVAL(GETARG("ARG2"));
BEEP (dblfrequency,dblduration);
END SUB

SV_SCADABasic_fr 483
SUB test2()
PRINT("starting program test2");
END SUB

Exemple 2
Dans cet exemple, lorsque la routine DEF_EVN est exécutée, la modification de l'état 'DoorState'
déclenche l'exécution des fonctions TRANS_0 et TRANS_1.
'Program "TEST_TR" contains two functions.
SUB TRANS_1( )
PRINT("Open The Door");
END SUB
SUB TRANS_0( )
PRINT("Shut That Door!");
END SUB

'Program "DEF_EVN" contains :


SUB MAIN( )
IF (PROGRAM("IS_LOADED","TEST_TR","")==0) THEN
PROGRAM("PRELOAD","TEST_TR","");
ENDIF
EVENT("ADDPROG","DoorState",0,"TEST_TR","","TRANS_0");
EVENT("ADDPROG","DoorState",1,"TEST_TR","","TRANS_1");
END SUB

SV_SCADABasic_fr 484
Exemple EXCELTOBUF

Appliqué à

Exemple
'-------- Simple example of the use of ExcelToBuf
Sub ExcelToBuf1()
Dim lHandle As Long;
Dim cLineSepa As Str, cColSepa As Str;
Dim iFirstRow As Integer, iFirstCol As Integer, iLastRow As Integer, iLastCol As
Integer;

cLineSepa = ";"; ' Separators can only be a single char


cColSepa = ",";
iFirstCol = 1; ' First and last column and row are optional
iFirstRow = 1;
iLastCol = 10;
iLastRow = 2;

lHandle = ExcelToBuf("Book1.xlsx", "Sheet1", cLineSepa, cColSepa, iFirstRow, iFirstCol,


iLastRow, iLastCol);
BufToFile(lHandle, "Output.txt"); 'Dump to text file to check result

Print("Buffer size was ", Seq_Buffer("LEN", lHandle));


Free_Buffer(lHandle);End Sub
End Sub

SV_SCADABasic_fr 485
Exemple EXPORT

Appliqué à

Exemple
'-------- Generate the export "Trends" using default settings
Sub Generation()
Export("GENERATE", "Trends");
End Sub

'-------- Generate the export "Trends" between specific dates


Sub GenerationDates()
Dim StartDate as Double;
Dim EndDate as Double;
StartDate = DateTimeValue(8,1,2014,0,0,0);
EndDate = DateTimeValue(9,1,2014,0,0,0);
Export("GENERATE_DATES", "Trends", "", "", StartDate, EndDate, "");
End Sub

'-------- Generate the export "Trends" for a specific period


Sub GenerationPeriod()
Dim ReferenceDate as Double;
ReferenceDate = DateTimeValue();
Export("GENERATE_PERIOD", "Trends", "", "", ReferenceDate, 1, 1, 2, "");
End Sub

'-------- Generate the export "Tendance" for a period derived from a Trend Viewer
Sub ExportTrend()
Dim StartDate as double;
Dim EndDate as double;
StartDate = Trend("GETDATETIME", "Trends Export mimic", "", "Trend1", 1, 1);
EndDate = Trend("GETDATETIME", "Trends Export mimic", "", "Trend1", 1, 2);
Export("GENERATE_DATES", "Tendance", "", "", StartDate, EndDate, "");
End Sub

SV_SCADABasic_fr 486
Exemple EXPORT_LOG
Appliqué à
Dim cLineSeparator As Str;
Dim cColSeparator As Str;
Const ALARM_ON = 1, ALARM_OFF = 2, ALARM_ON_NACK = 4, ALARM_OFF_NOTACK = 8;
Const ALARM_ON_ACK = 16, ALARM_OFF_ACK = 32, ALARM_NOT_ACCESSIBLE = 64, ALARM_INHIBITED =
128;
Const ALARM_PROGRAM_MASKED = 256, ALARM_VARAIBLE_MASKED = 512, ALARM_USER_MASKED = 1024,
ALARM_EXPRESSION_MASKED = 2048;
Const ALARM_TAKEN_INTO_ACCOUNT = 4096, BIT_TO_0 = 8192, BIT_TO_1 = 16384, BIT_UNAVAILABLE
= 32768;
Const ACTION_COMMAND = 65536, ACTION_ACKNOWLEDGE = 131072, ACTION_LOGONOFF = 262144,
ACTION_EXECUTE_PROGRAM = 524288;
Const ACTION_MASK = 1048576;

Const NONE = 0, TOTAL_TRANSITION_COUNT = 1, COUNT_AT_0 = 2, COUNT_AT_1 = 4;


Const COUNT_AT_NS = 8, DUR_AT_0 = 16, DUR_AT_1 = 32, DUR_AT_NS = 64;

Const COUNT_AT_ALARM_OFF = 128, COUNT_AT_ALARM_ON = 256, COUNT_AT_ALARM_OFFACK = 512,


COUNT_AT_ALARM_OFFNOACK = 1024;
Const COUNT_AT_ALARM_ONACK = 2048, COUNT_AT_ALARM_ONNOACK = 4096,
COUNT_AT_ALARM_UNAVAILABLE = 8192, COUNT_AT_ALARM_MASKEDBYEXPRESSION = 16384;
Const COUNT_AT_ALARM_INHIBITED = 32768, COUNT_AT_ALARM_NOT_ACCESSIBLE = 65536,
COUNT_AT_ALARM_MASKEDBYPROGRAM = 131072, COUNT_AT_ALARM_MASKEDBYUSER = 262144;
Const COUNT_AT_ALARM_MASKEDBYVARIABLE = 524288;

Const DUR_AT_ALARM_OFF = 1048576, DUR_AT_ALARM_ON = 2097152, DUR_AT_ALARM_OFFACK =


4194304, DUR_AT_ALARM_OFFNOACK = 8388608;
Const DUR_AT_ALARM_ONACK = 16777216, DUR_AT_ALARM_ONNOACK = 33554432,
DUR_AT_ALARM_UNAVAILABLE = 67108864, DUR_AT_ALARM_MASKEDBYEXPRESSION = 134217728;
Const DUR_AT_ALARM_INHIBITED = 268435456, DUR_AT_ALARM_NOT_ACCESSIBLE = 536870912,
DUR_AT_ALARM_MASKEDBYPROGRAM = 1073741824, DUR_AT_ALARM_MASKEDBYUSER = 2147483648;
Const DURATION_AT_ALARM_MASKEDBYVARIABLE = 4294967296;

Sub Main ()
'-------- Initialise global variables
cLineSeparator = Chr(13);
cColSeparator = "'";
'-------- Set up event that is triggered when Export_trend is complete
Event("ADDPROG", "SVB.ExportLogStatus", "S>S", "E.svb", "", "OnChangeOfStatus");
End Sub

'-------- Export_Log of records


Sub Export_Log_EX1()
Dim dStartTime As Double, dEndTime As Double;
Dim iResult As Integer;
Dim llEvents As LongLong;

dEndTime = DateTimeValue();
dStartTime = dEndtime - 3600000; ' Current time less 1 hour
llEvents = ALARM_ON + ALARM_OFF + BIT_TO_0 + BIT_TO_1;
iResult = Export_Log("GETRECORD", "Loglist01", dStartTime, dEndTime, llEvents, 0, 29,
"", "@SVB.ExportLogStatus", cLineSeparator, cColSeparator, 0, "#D/#M/#Y|#h:#m:#s|#E|#T",
"Date|Time|Event|Title");

'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
Export_Log("CANCEL");

SV_SCADABasic_fr 487
Export_Log("DISPOSE");
End If
End If
End Sub

'-------- Export_Log of statistics


Sub Export_Log_EX2()
Dim dStartTime As Double, dEndTime As Double;
Dim iResult As Integer;
Dim llEvents As LongLong , llStatFlag As LongLong ;

dEndTime = DateTimeValue(); dStartTime = dEndtime - 3600000; ' Current time less 1 hour
llEvents = ALARM_ON + ALARM_OFF + BIT_TO_0 + BIT_TO_1;
llStatFlag = DUR_AT_0 + DUR_AT_1 + DUR_AT_NS;
iResult = Export_Log("GETSTATISTIC", "Loglist01", dStartTime, dEndTime, llEvents, 0,
29, "", "@SVB.ExportLogStatus", cLineSeparator, cColSeparator, 0, 0, llStatFlag, 0, 1,
0);

'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
Export_Log("CANCEL");
Export_Log("DISPOSE");
End If
End If
End Sub

'-------- On change of status variable process if complete else clean up


SubOnChangeOfStatus()
Dim sStatus As Single;
Dim lBufferHandle As Long;
Dim iResult As Integer, iLineNumber As Integer;

sStatus = SVB.ExportLogStatus;
If(sStatus==0 || sStatus==4 || sStatus ==5) Then ' Export complete or reached limits
Print("Export_Log complete - status is ", sStatus);
lBufferHandle = Alloc_Buffer(1024);
iResult = 1;
iLineNumber = 1;
While(iResult > 0)
iResult = Export_Log("READBUFFER", lBufferHandle);
If (iResult> 0) Then
BufToExcel(lBufferHandle, cLineSeparator, cColSeparator, "export.xlsx", "ex1",
"APPEND", iLineNumber );
iLineNumber = iLineNumber + iResult;
Print("Exported ",iResult, " lines to Excel");
End If
Delay(1); ' Allow program thread to break in case of overlong processing time
Wend
Print("Total lines = ",iLineNumber);
Export_Log("DISPOSE");
Free_Buffer(lBufferHandle);
Else
If(sStatus==1) Then ' Export running - do nothing
Print("Export_Log running");
Else ' Export failed - cancel and clean up
Print("Export_Log failed - status is ", sStatus);
Export_Trend("CANCEL");
Export_Trend("DISPOSE");
End If

SV_SCADABasic_fr 488
End If
End Sub

SV_SCADABasic_fr 489
Exemple EXPORT_TREND
Appliqué à

Dim cLineSeparator As Str;


Dim cColSeparator As Str;
Const MIN = 1, MAX = 2, AVE = 4, SUM = 8;
Const DEVIATION = 16, FIRST = 32, LAST = 64, COUNTER = 128;
Const MINDATE = 256, MAXDATE = 512, FIRSTDATE = 1024, LASTDATE = 2048;
Const WEIGHTED = 4096;

Sub Main ()
'-------- Initialise global variables
cLineSeparator = Chr(13);
cColSeparator = "'";
'-------- Set up event that is triggered when Export_trend is complete
Event("ADDPROG", "SVB.Status", "S>S", "E.svb", "", "OnChangeOfStatus");
End Sub

'-------- Export_Trend of raw values


Sub Export_Trend_EX1()
Dim dStartTime As Double, dEndTime As Double;
Dim iResult As Integer;

dEndTime = DateTimeValue();
dStartTime = dEndtime - 3600000; ' Current time less 1 hour
iResult = Export_Trend("GETRAW", "SVB.Register01", "", "Unit01", dStartTime, dEndTime,
"SVB.Status", cLineSeparator, cColSeparator, 0);

'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
EXPORT_TREND("CANCEL");
EXPORT_TREND("DISPOSE");
End If
End If
End Sub

'-------- Export_Trend of sampled values


Sub Export_Trend_EX2()
Dim dStartTime As Double, dEndTime As Double;
Dim iResult As Integer;
dEndTime = DateTimeValue();
dStartTime = dEndtime - 3600000; ' Current time less 1 hour
iResult = Export_Trend("GETSAMPLE", "SVB.Register01,SVB.Register02", "", "Unit01",
dStartTime, dEndTime, "SVB.Status", cLineSeparator, cColSeparator, 0, 0, 1, 1);

'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
Export_Trend("CANCEL");
Export_Trend("DISPOSE");
End If
End If
End Sub

'-------- Export_Trend of statistical values


Sub Export_Trend_EX3()

SV_SCADABasic_fr 490
Dim dStartTime As Double, dEndTime As Double, dStatFlag As Double;
Dim iResult As Integer;

dStatFlag = MIN + MAX + AVE + SUM + DEVIATION + FIRST + LAST + COUNTER + WEIGHTED; '
Add/delete stats as required
dEndTime = DateTimeValue();
dStartTime = dEndtime - 3600000; ' Current time less 1 hour
iResult = Export_Trend("GETSTATISTIC", "SVB.Register01,SVB.Register02", "", "Unit01",
dStartTime, dEndTime, "SVB.Status", cLineSeparator, cColSeparator, 0, dStatFlag );

'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
Export_Trend("CANCEL");
Export_Trend("DISPOSE");
End If
End If
End Sub

'-------- Export_Trend of aggregated values


Sub Export_Trend_EX4()
Dim dStartTime As Double, dEndTime As Double, dStatFlag As Double;
Dim iResult As Integer;

dStatFlag = MIN + MAX + AVE + SUM; ' Add/delete stats as required


dEndTime = DateTimeValue();
dStartTime = dEndtime - 3600000; ' Current time less 1 hour
iResult = Export_Trend("GETAGGREGATED", "SVB.Register01,SVB.Register02", "", "Unit01",
dStartTime, dEndTime, "SVB.Status", cLineSeparator, cColSeparator, 0, 0, dStatFlag, 1,
1);
'-------- Check return and, if a previous request is still running, cancel it and clear
buffer
If(iResult != 0) Then
Print("Result != 0, historic request not sent");
If(iResult == -30) Then
Export_Trend("CANCEL");
Export_Trend("DISPOSE");
End If
End If
End Sub

'-------- On change of status variable process if complete else clean up


SubOnChangeOfStatus()
Dim sStatus As Single;
Dim lBufferHandles Long;
Dim iResult As Integer, iLineNumber As Integer;

sStatus = SVB.Status;
If(sStatus==0 || sStatus==4 || sStatus ==5) Then ' Export complete or reached limits
Print("Trend_Export complete - status is ", sStatus);
lBufferHandle = Alloc_Buffer(1024);
iResult = 1;
iLineNumber = 1;
While(iResult > 0)
iResult = Export_Trend("READBUFFER", lBufferHandle);
If (iResult> 0) Then
BufToExcel(lBufferHandle, cLineSeparator, cColSeparator, "export.xlsx", "ex1",
"APPEND", iLineNumber );
iLineNumber = iLineNumber + iResult;
Print("Exported ",iResult, " lines to Excel");
End If

SV_SCADABasic_fr 491
Wend
Print("Total lines = ",iLineNumber);
Export_Trend("DISPOSE");
Free_Buffer(lBufferHandle);
Else
If(sStatus==1) Then ' Export running - do nothing
Print("Trend_Export running");
Else ' Export failed - cancel and clean up
Print("Trend_Export failed - status is ", sStatus);
Export_Trend("CANCEL");
Export_Trend("DISPOSE");
End If
End If
End Sub

SV_SCADABasic_fr 492
Exemple EXPRESSION
Appliqué à
Cet exemple illustre plusieurs modes de la commande EXPRESSION.
'Database variables used:
'@STATE01 of type STATE
'@STATE02 of type STATE
'@AUTORISATION of type STATE
'@REGISTER01 of type REGISTER
'@REGISTER02 of type REGISTER

'contents of a file model:


'EXPRM,"MODEL 01","STATE01 or STATE02",,,0,0,"expression model no01"
'EXPRM,"MODEL 02","REGISTER01 + REGISTER02",,,0,0,"expression model no02"
'contents of a file model:
'EXPRV,@STATE02,NOT @STATE01 ,,,0,0,comment expression01
'EXPRV,@REGISTER02,@REGISTER01 + 21,,,0,0, register variables

'Mode IMPORT_FILE_TEMP or Mode 0 (syntax 2)

SUB expressionimportfiletemp()
'Declare variables
DIM intResult as integer;
DIM strString01 as Str;
strString01 = "file model expressions.txt";
intResult = EXPRESSION("IMPORT_FILE_TEMP",strString01);
END SUB

'Mode IMPORT_BUFFER_TEMP or Mode 1 (syntax 1)

SUB expressionimportbuffertemp()
'Declare variables
DIM lngBuffer as long;
DIM intResult as integer;
DIM strString01 as Str;
strString01 = "EXPRM,MODEL 01,STATE01 or STATE02,,,0,0,expression model no01";
lngBuffer = ALLOC_BUFFER(1000);

'Put the strString01 into the buffer


PUT_BUFFER(lngbuffer,0,strString01);
intResult = EXPRESSION("IMPORT_BUFFER_TEMP",lngBuffer);
FREE_BUFFER(lngBuffer);
END SUB

'Mode IMPORT_FILE_ONVAR or Mode 2 (syntax 2)

SUB expressionimportfileonvar()
'Declare variables
DIM intResult as integer;
DIM strString01 as Str;
strString01 = "file expressions.txt";
intResult = EXPRESSION("IMPORT_FILE_ONVAR",strString01);
END SUB

'Mode IMPORT_BUFFER_ONVAR or Mode 3 (syntax 1)

SUB expressionimportbufferonvar()
'Declare variables
DIM lngBuffer as long;
DIM intResult as integer;
DIM strString01 as Str;
strString01 = "EXPRV,@STATE02,NOT @STATE01 ,,,0,0,comment expression01";

SV_SCADABasic_fr 493
lngBuffer = ALLOC_BUFFER(1000);

'Put the string strString01 into the buffer


PUT_BUFFER(lngbuffer,0,strString01);
intResult = EXPRESSION("IMPORT_BUFFER_ONVAR",lngBuffer);
FREE_BUFFER(lngBuffer);
END SUB

SV_SCADABasic_fr 494
Exemple FCLOSE et FOPEN
Appliqué à
Cet exemple illustre les commandes d'ouverture et de fermeture de fichiers.
'This program uses a file "util.txt" that is stored in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrLine as Str;
StrFilename = "util.txt"; 'name of the file to open in the TP folder

'For a full path put "\\" instead of "\" => "C:\\SV\\util.txt" '
StrAccess = "r"; 'opening in Read mode

' opening the file intResult = FOPEN(StrFilename , StrAccess);


If (intResult ==1) Then
PRINT("Opening of file ", StrFilename," succeeded");
End If

'closing the file intResult = FCLOSE(StrFilename);


If (intResult ==1) Then
PRINT("Closure of file ", StrFilename," succeeded");
End If
END

SV_SCADABasic_fr 495
Exemple FCOPY
Appliqué à
'-------- Copy file from source to destination
Sub FCOPY_EX1()
Dim cSource As Str, cDestination As Str;
Dim iReturn As Integer;
cSource = "MyFile.dat";
cDestination = "NewFile.dat";
iReturn = Fcopy(cSource, cDestination);
End Sub

'-------- Copy file from source to destination overwriting destination if it already


exists
Sub FCOPY_EX2()
Dim cSource As Str, cDestination As Str;
Dim iReturn As Integer;
cSource = "MyFile.dat";
cDestination = "NewFile.dat";
iReturn = Fcopy(cSource, cDestination, 1);
End Sub

SV_SCADABasic_fr 496
Exemple FMOVE
Appliqué à
'-------- Move file from source to destination
Sub FMOVE_EX1()
Dim cSource As Str, cDestination As Str;
Dim iReturn As Integer;
cSource = "MyFile.dat";
cDestination = "NewFile.dat";
iReturn = FMOVE(cSource, cDestination);
End Sub

'-------- Move file from source to destination overwriting destination if it already


exists
Sub FMOVE_EX2()
Dim cSource As Str, cDestination As Str;
Dim iReturn As Integer;
cSource = "MyFile.dat";
cDestination = "NewFile.dat";
iReturn = FMOVE(cSource, cDestination, 1);
End Sub

SV_SCADABasic_fr 497
Exemple FORMAT
Appliqué à
Cet exemple montre comment la commande FORMAT affiche différentes chaînes de caractères.
SUB MAIN ()
DIM count as integer;
DIM ch97 as integer;
DIM ch122 as integer;
DIM s as str;
DIM fp as double;
'
count = -9234;
ch97 = 97;
ch122 = 122;
s="Hello world!";
fp = 251.7366;
'
'Display integer
PRINT("Display integer");
PRINT(FORMAT("Decimal: %d", count)); 'Decimal: -9234
PRINT(FORMAT("Decimal: %i", count)); 'Decimal: -9234
PRINT(FORMAT("Justified: %.6d", count)); 'Justified: -009234
PRINT(FORMAT("Unsigned: %u", count)); ' Unsigned: 4294958062
'
'Display hexadecimal
PRINT("Display hexadecimal");
PRINT(FORMAT("Hex: %Xh", count)); 'Hex: FFFFDBEEh
PRINT(FORMAT("hex: 0x%x", count)); 'hex: 0xffffdbee
'
'Display octal
PRINT("Display octal");
PRINT(FORMAT("Octal: %o", count)); 'Octal: 37777755756
'
'Display characters
PRINT("Display characters");
PRINT(FORMAT("Character code 97: %c", ch97)); 'a
PRINT(FORMAT("Character code 97: %C", ch97)); 'a
PRINT(FORMAT("Character code 122: %c", ch122)); 'z
'
'Display string / text
PRINT("Display string / text");
PRINT(FORMAT("%s", s)); 'Hello world!
PRINT(FORMAT("%.9s", s)); 'Hello wor
'
'Display real number
PRINT("Real numbers:");
PRINT(FORMAT("%f", fp)); '251.736600
PRINT(FORMAT("%.2f ",fp)); '251.74
PRINT(FORMAT("%e", fp)); '2.517366e+002
PRINT(FORMAT("%E", fp)); '2.517366E+002
END SUB

SV_SCADABasic_fr 498
Exemple FORMULA
Appliqué à

Exemple 1
Cet exemple illustre les modes de la commande FORMULA.
Pour un chemin complet, utilisez "\\" au lieu de "\", par exemple "C:\\SV\\util.txt".

Toujours positionner un caractère de retour à la fin de chaque ligne dans FORMULA.DAT, autrement
la formule est ignorée.
'A text file "importFormula.txt" is in the TP folder file,
' formatted like FORMULA.DAT.
'Database variables used in the formulas:
'@BRCH1.REGISTER01 of type REGISTER
'@BRCH2.REGISTER01 of type REGISTER
'@BRCH3.REGISTER01 of type REGISTER
'@BRCH1.REGISTER02 of type REGISTER
'@BRCH2.REGISTER02 of type REGISTER
'@BRCH3.REGISTER02 of type REGISTER
'@BRCH1.REGISTER03 of type REGISTER
'@BRCH2.REGISTER03 of type REGISTER
'@BRCH3.REGISTER03 of type REGISTER

'Mode ADD or Mode 1 (syntax 1)

SUB formulaadd()
'Declare variables
DIM lngbuffer1 as long;
DIM intResult as integer;
DIM strFilename as Str;
strFilename = "Formula.txt";
lngbuffer1 = filetobuf(strFilename);
intResult = FORMULA("ADD",lngbuffer1);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode ENABLE or Mode 2 (syntax 2)

SUB formulaenable()
'Declare variables
DIM intResult as integer;
intResult = FORMULA("ENABLE", "formula01", "BRCH1");
END SUB

'Mode DISABLE or Mode 3 (syntax 2)

SUB formuladisable()
'Declare variables
DIM intResult as integer;
ntResult = FORMULA("DISABLE", "formula01", "BRCH1");
END SUB

'Mode DEL or Mode 4 (syntax 2)

SUB formuladel()
'Declare variables
DIM intResult as integer;
intResult = FORMULA("DEL", "formula01", "BRCH1");
END SUB

SV_SCADABasic_fr 499
'Mode DELALL or Mode 4 (syntax 2)

SUB formuladelall()
'Declare variables
DIM intResult as integer;
intResult = FORMULA("DELALL");
END SUB

'Mode DELALL or Mode 4 (syntax 2)

SUB formuladelall2()
'Declare variables
DIM intResult as integer;
'intResult = FORMULA("DELALL",3); 'Delete Computational type formulas
intResult = FORMULA("DELALL",14);
END SUB

Exemple 2
'This program uses a file "util.txt" that is stored in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrLine as Str;
StrFilename = "util.txt"; 'name of the file to open in the TP folder

StrAccess = "r"; 'opening in Read mode

' opening the file intResult = FOPEN(StrFilename , StrAccess);


If (intResult ==1) Then
PRINT("Opening of file ", StrFilename," succeeded");
End If

'Closing the file intResult = FCLOSE(StrFilename);


If (intResult ==1) Then
PRINT("Closing of file ", StrFilename," succeeded");
End If
END

SV_SCADABasic_fr 500
Exemple FPUTC
Appliqué à
Cet exemple illustre les modes de la commande FPUTC.
Pour un chemin complet, utilisez "\\" au lieu de "\", par exemple "C:\\SV\\tool.txt".

'This program uses a file "tool.txt"


' that is stored in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrChar1 as Str;
StrFilename = "doc1.txt"; 'name of the file to open in the TP folder

StrAccess = "w+"; ' opening in Write mode

' opening of the file


intResult = FOPEN(StrFilename , StrAccess);
If (intResult ==1) Then
PRINT("Opening the file ", StrFilename," succeeded");
End If
StrChar1= "A";
intResult = FPUTC(StrFilename,StrChar1);
If (intResult ==1) Then
PRINT("Writing succeeded.");
End If

'Closing the file


intResult = FCLOSE(StrFilename);
If (intResult ==1) Then
PRINT("Closing of the file ", StrFilename," succeeded");
End If
END SUB

SV_SCADABasic_fr 501
Exemple FPUTS
Appliqué à
Cet exemple illustre les modes de la commande FPUTS.
Pour un chemin complet, utilisez "\\" au lieu de "\", par exemple "C:\\SV\\util.txt".

'This program uses a file "tool.txt" stored in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrChar1 as Str;
StrFilename = "tool.txt"; [not doc1.txt]
'name of the file to open in the TP folder

StrAccess = "w+"; ' opening in Write mode

' opening the file


intResult = FOPEN(StrFilename , StrAccess);
If (intResult ==1) Then
PRINT("Opening of the file ", StrFilename," succeeded");
End If

StrChar1= "Hello, World!";


intResult = FPUTS(StrFilename,StrChar1);
If (intResult ==1) Then
PRINT("Writing succeeded");
End If

'Closing of the file


intResult = FCLOSE(StrFilename);
If (intResult ==1) Then
PRINT("Closing of the file ", StrFilename," succeeded");
End If
END SUB

SV_SCADABasic_fr 502
Exemple FSEEK
Appliqué à
Cet exemple illustre les modes de la commande FSEEK.
Pour un chemin complet, utilisez "\\" au lieu de "\".

'This program uses a file "tool.txt" stored


' in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrLine as Str;

StrFilename = "tool.txt"; 'name of file to open in TP folder


StrAccess = "r"; ' opening in Read mode

' opening the file


intResult = FOPEN(StrFilename , StrAccess);
If (intResult ==1) Then
PRINT("Opening of the file ", StrFilename," succeeded");
End If
PRINT(FGETC (StrFilename,2));
FSEEK(StrFilename,3,0);
PRINT(FGETC (StrFilename,2));

'Closing the file


intResult = FCLOSE(StrFilename);
If (intResult ==1) Then
PRINT("Closing of file ", StrFilename," succeeded");
End If
END SUB

'This program uses a file "tool.txt" stored


' in the TP folder of the project
SUB main()
DIM intResult as integer;
DIM intEOF as integer;
DIM StrAccess as Str;
DIM StrFilename as Str;
DIM StrLine as Str;
StrFilename = "tool.txt"; 'name of file to open in TP folder
StrAccess = "r"; ' opening in Read mode

' opening the file


intResult = FOPEN(StrFilename , StrAccess);
If (intResult ==1) Then
PRINT("Opening of the file ", StrFilename," succeeded");
End If

PRINT(FGETC (StrFilename,2));
FSEEK(StrFilename,3,0);
PRINT(FGETC (StrFilename,2));

'Closing the file


intResult = FCLOSE(StrFilename);
If (intResult ==1) Then
PRINT("Closing of file ", StrFilename," succeeded");
End If
END SUB

SV_SCADABasic_fr 503
Exemple FTP
Applies To
This program copies a file from and then to a file transfer site.
Sub Down ()
Dim cFTPsource As Str, cLocalDestn As Str;
Dim cName As Str, cPass As Str, cStatusVar As Str;
Dim iReturn As Integer;

cFTPsource = "ftp://ftp.xxxxxxxx.com/test.txt";
cLocalDestn = "test.txt";
cName = "xyz123";
cPass = "abc890";
cStatusVar = "FTPSTATUS";

iReturn = FTP("DOWNLOAD", cFTPsource, cLocalDestn, 1, cName, cPass, cStatusVar);


Print ("Return from FTP download is "iReturn);
End Sub

Sub Up ()
Dim cFTPdestn As Str, cLocalSource As Str;
Dim cName As Str, cPass As Str, cStatusVar As Str;
Dim iReturn As Integer;

cFTPdestn = "ftp://ftp.xxxxxxxx.com/test.txt";
cLocalSource = "test.txt";
cName = "xyz123";
cPass = "abc890";
cStatusVar = "FTPSTATUS";

iReturn = FTP("UPLOAD", cLocalSource, cFTPdestn, 1, cName, cPass, cStatusVar);


Print ("Return from FTP upload is "iReturn);
End Sub

SV_SCADABasic_fr 504
Exemple GETARG
Appliqué à

Exemple 1
Cet exemple utilise chaque mode de la commande GETARG.
'database variables
'TEXT01 type text
'TEXT02 type TEXT
'TEXT03 type TEXT
'TEXT04 type TEXT
SUB main()
'How the example works: a branch must be specified
getargmainbranch();
END SUB

'Mode MAINBRANCH or Mode 0 (syntax 1)

'retrieve the branch of the calling program


SUB getargmainbranch()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("MAINBRANCH");
@text01 = strReturn;
END SUB

'Mode ARG1 or Mode 1 (syntax 1)

SUB getargarg1()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG1");
@text01 = strReturn;
END SUB

'Mode ARG2 or Mode 2 (syntax 1)

SUB getargarg2()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG2");
@text01 = strReturn;
END SUB

'Mode ARG3 or Mode 3 (syntax 1)

SUB getargarg3()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG3");
@text01 = strReturn;
END SUB

'Mode ARG4 or Mode 4 (syntax 1)

SUB getargarg4()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG4");
@text01 = strReturn;
END SUB

SV_SCADABasic_fr 505
'Mode ARG5 or Mode 5 (syntax 1)

SUB getargarg5()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG5");
@text01 = strReturn;
END SUB

'Mode ARG6 or Mode 6 (syntax 1)

SUB getargarg6()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG6");
@text01 = strReturn;
END SUB

'Mode ARG7 or Mode 7 (syntax 1)

SUB getargarg7()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG7");
@text01 = strReturn;
END SUB

'Mode ARG8 or Mode 8 (syntax 1)

SUB getargarg8()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG8");
@text01 = strReturn;
END SUB

'Mode SOURCE or Mode 10 (syntax 1)

SUB getargsource()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("SOURCE");
@text01 = strReturn;
END SUB

'Mode PROGRAM or Mode 11 (syntax 1)

SUB getargprogram()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("PROGRAM");
@text01 = strReturn;
END SUB

'Mode BRANCH or Mode 12 (syntax 1)

SUB getargbranch()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("BRANCH");
@text01 = strReturn;
END SUB

SV_SCADABasic_fr 506
'Mode FUNCTION or Mode 13 (syntax 1)

SUB getargfunction()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("FUNCTION");
@text01 = strReturn;
END SUB

'Mode WINDOW or Mode 14 (syntax 1)

SUB getargwindow()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("WINDOW");
@text01 = strReturn;
END SUB

'Mode WBRANCH or Mode 15 (syntax 1)

SUB getargwbranch()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("WBRANCH");
@text01 = strReturn;
END SUB

'Mode IDENTIFIER or Mode 16 (syntax 1)

SUB getargidentifier()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("IDENTIFIER");
@text01 = strReturn;
END SUB

'Mode VARNAME or Mode 17 (syntax 1)

SUB getargvarname()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("VARNAME");
@text01 = strReturn;
END SUB

'Mode VARVALUE or Mode 18 (syntax 1)

SUB getargvarvalue()
'Declare the return code
DIM sngReturn as Single;
sngReturn = GETARG("VARVALUE");
@text02 = TOC(sngReturn);
END SUB

'Mode VARSTATUS or Mode 19 (syntax 1)

SUB getargvarstatus()
'Declare the return code
DIM Current_Region as integer;
Current_Region= GETARG("VARSTATUS");
END SUB

'Mode KEYTYPE or Mode 20 (syntax 1)

SV_SCADABasic_fr 507
SUB getargkeytype()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("KEYTYPE");
@text04 = strReturn;
'in the example: SC => SHIFT+CTRL
END SUB

'Mode KEYCODE or Mode 21 (syntax 1)

SUB getargkeycode()
'Declare the return code
DIM intReturn as integer;
intReturn = GETARG("KEYCODE");
PRINT(intReturn);
@text03 = TOC(intReturn);
'In the example: 3
END SUB

'Mode CRONTYPE or Mode 22 (syntax 1)

SUB getargcrontype()
'Declare the return code
DIM intReturn as integer;
intReturn = GETARG("CRONTYPE");
PRINT(intReturn);
@text01 = TOC(intReturn);
END SUB

'Mode CRONDATE or Mode 23 (syntax 1)

SUB getargcrondate()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("CRONDATE");
PRINT(strReturn);
@text02 = strReturn;
END SUB

'Mode CRONTIME or Mode 24 (syntax 1)

SUB getargcrontime()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("CRONTIME");
PRINT(strReturn);
@text03 = strReturn;
END SUB

SUB getargcron()
DIM strReturn as Str;
DIM intReturn as integer;
intReturn = GETARG("CRONTYPE");
PRINT(intReturn);
@text01 = TOC(intReturn);
strReturn = GETARG("CRONDATE");
PRINT(strReturn);
@text02 = strReturn;
strReturn = GETARG("CRONTIME");
PRINT(strReturn);
@text03 = strReturn;
END SUB

SV_SCADABasic_fr 508
'Mode ARG9 or Mode 25 (syntax 1)

SUB getargarg9()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG9");
@text01 = strReturn;
END SUB

'Mode ARG10 or Mode 26 (syntax 1)

SUB getargarg10()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG10");
@text01 = strReturn;
END SUB

'Mode ARG11 or Mode 27 (syntax 1)

SUB getargarg11()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG11");
@text01 = strReturn;
END SUB

'Mode ARG12 or Mode 28 (syntax 1)

SUB getargarg12()
'Declare the return code
DIM strReturn as Str;
strReturn = GETARG("ARG12");
@text01 = strReturn;
END SUB

Exemple 2
Cet exemple affiche tous les arguments appelés par la fonction :
sub func()
' Display of all the calling arguments
PRINT("MAINBRANCH = \"",GETARG("MAINBRANCH"),"\"");
PRINT("ARG1 = \"",GETARG("ARG1"),"\"");
PRINT("ARG2 = \"",GETARG("ARG2"),"\"");
PRINT("ARG3 = \"",GETARG("ARG3"),"\"");
PRINT("ARG4 = \"",GETARG("ARG4"),"\"");
PRINT("ARG5 = \"",GETARG("ARG5"),"\"");
PRINT("ARG6 = \"",GETARG("ARG6"),"\"");
PRINT("ARG7 = \"",GETARG("ARG7"),"\"");
PRINT("ARG8 = \"",GETARG("ARG8"),"\"");
PRINT("SOURCE = \"",GETARG("SOURCE"),"\"");
PRINT("PROGRAM = \"",GETARG("PROGRAM"),"\"");
PRINT("BRANCH = \"",GETARG("BRANCH"),"\"");
PRINT("FUNCTION = \"",GETARG("FUNCTION"),"\"");
PRINT("WINDOW = \"",GETARG("WINDOW"),"\"");
PRINT("WBRANCH = \"",GETARG("WBRANCH"),"\"");
PRINT("IDENTIFIER = \"",GETARG("IDENTIFIER"),"\"");
PRINT("VARNAME = \"",GETARG("VARNAME"),"\"");
PRINT("VARVALUE = \"",GETARG("VARVALUE"),"\"");
PRINT("VARSTATUS = \"",GETARG("VARSTATUS"),"\"");
PRINT("KEYTYPE = \"",GETARG("KEYTYPE"),"\"");

SV_SCADABasic_fr 509
PRINT("KEYCODE = \"",GETARG("KEYCODE"),"\"");
PRINT("CRONTYPE = \"",GETARG("CRONTYPE"),"\"");
PRINT("CRONDATE = \"",GETARG("CRONDATE"),"\"");
PRINT("CRONTIME = \"",GETARG("CRONTIME"),"\"");
END SUB

SV_SCADABasic_fr 510
Exemple HARDCOPY
Appliqué à
Ce programme illustre les modes de la commande HARDCOPY.
'Database variables:
'@ACTIVATION.STATE of Type STATE

'Mode SCREEN or Mode 1 (syntax 1)

SUB hardcopyscreen()
DIM intResult as integer;
intResult = HARDCOPY("SCREEN");
END SUB

'Mode OPTION or Mode 2 (syntax 1)

SUB hardcopyoption()
DIM intResult as integer;
intResult = HARDCOPY("OPTION",1,1); 'Adapt to the page
'intResult = HARDCOPY("OPTION",1,2); 'Full use of page
'intResult = HARDCOPY("OPTION",1,3); 'Scale factor mode
'intResult = HARDCOPY("OPTION",2,2); 'Reduced by 50% X
'intResult = HARDCOPY("OPTION",3,2); 'Reduced by 50% Y
'intResult = HARDCOPY("OPTION",5,"Hardcopy coulour"); 'Box title
'intResult = HARDCOPY("OPTION",6,"Copying in progress"); 'Message
'intResult = HARDCOPY("OPTION",9,"Hardcopy done"); 'Button text
'intResult = HARDCOPY("SCREEN");
END SUB

'Mode PREVIOUSWINDOW or Mode 4 (syntax 1)

SUB hardcopypreviouswindow()
DIM intResult as integer;
intResult = HARDCOPY("PREVIOUSWINDOW");
END SUB
Pour le mode 4, la fenêtre qui a perdu son focus ne doit pas être cachée ou recouverte par une
fenêtre ayant un focus.

SV_SCADABasic_fr 511
Exemple HISTORY
Appliqué à

Exemple 1
Ce programme extrait des données historiques d'un fichier texte :
'Program "EXTRACT1"
SUB Main ()
DIM ret as long;
DIM hd as double;
' Loading of "EXTRACT2" if not loaded :
If (Program ("Is_loaded", "EXTRACT2", "") == 0) Then
Program ("Preload", "EXTRACT2", "");
End if;
' Programing of execution of function "EndExtract"
' of the program "EXTRACT2" on switch to 1 of bit
' "BitExtract" :
Event ( "ADD", "BitExtract", 1, "EXTRACT2", "","EndExtract");
' Export of the trend variable "Valve1" in the
' file "C:\EXTRACT.TXT". The request for export
' is only valid for values archived in the running
' hour. The internal variables "BitExtract"
' (bit) and "ResultExtract" (register) must exist.
hd = DateTimeValue ();
ret = HISTORY ( "GetTrend", "Valve1", hd -3600000,hd, "C:\\EXTRACT.TXT", 0,
"#D/#M/###Y,#h:#m:#s.##l, #V", "BitExtract", "ResultExtract" );
If (ret == 0) Then
Print ("Error on GetTrend...");
Event ("DEL", "EndExtract", 1);
Exit SUB;
End If
END SUB

'Program "EXTRACT2"
SUB EndExtract ()
Print ("Export of variable Valve1 finished :");
If (ResultExtract < 0) Then
Print ("Error code = ", ResultExtract);
Else
Print (ResultExtract, "value(s) exported.");
End If
' Cancellation of the release :
Event ("DEL", "BitExtract", 1);
END SUB
Exemple de fichier "C:\EXTRACT.TXT" après export :
23/03/1994, 14:01:03.130, ?
23/03/1994, 14:04:45.520, 12.3
23/03/1994, 14:07:11.890, 11.9
23/03/1994, 14:12:52.460, 11.7
23/03/1994, 14:19:02.780, 11.4
23/03/1994, 14:25:59.340, 11
23/03/1994, 14:40:44.520, 11.2
23/03/1994, 14:56:31.200, 11.5
Le nombre maximum de valeur pouvant être exportées en même temps est de 4000. Pour exporter
plus de 4000 valeurs, l'instruction HISTORY peut être utilisée un certain temps, dépendant du
résultat du fichier.

Exemple 2
Ces programmes importent des données historiques :

SV_SCADABasic_fr 512
'Program "IMPORT1"
' Set up event for change of count variable
SUB Main()
Event("DELALL");
Event("ADD", "IMPORT.COUNT.MV1", "ALL>S", "Import.pvb", "","CountMV1");
END SUB

' Import Example 1. FORMAT and VARNAME keywords are


' contained in the import file
SUB LoadMV1()
HISTORY("IMPORTTREND","MV1.DAT", "IMPORT.STATUS.MV1","IMPORT.COUNT.MV1");
END SUB

' Function to run when count variable changes


SUB CountMV1 ()
If (@IMPORT.COUNT.MV1 == -1) Then
@IMPORT.MESSAGE = "Starting import of MV1";
Else
If (@IMPORT.COUNT.MV1 == 0) Then
@IMPORT.MESSAGE = "No import - check error messages";
Else
@IMPORT.MESSAGE = Addstring("Import succesfull - number of records imported = ",
TOC(@IMPORT.COUNT.MV1));
End If
End If
END SUB

' Import Example 2. FORMAT and VARNAME keywords are


' contained in instruction
SUB LoadMV2()
HISTORY("IMPORTTREND","MV2.DAT", "IMPORT.STATUS.MV2","IMPORT.COUNT.MV2",
"FORMAT,0,0,5", "VARNAME,MV2");
END SUB
Exemple de fichier d'importation pour LoadMV1 :
# Import example for variable MV1:
FORMAT,0,0,5
VARNAME,MV1
#
25/09/2000,00:00:00, 7.64
25/09/2000,00:10:00, 7.87
25/09/2000,00:20:00, 8.12
25/09/2000,00:30:00, 8.40
25/09/2000,00:40:00, 8.69
25/09/2000,00:50:00, 8.99
Exemple de fichier d'importation pour LoadMV2 :
# Import example
# FORMAT and VARNAME key words in instruction
#
25/09/2000,00:00:00, 7.64
25/09/2000,00:10:00, 7.87
25/09/2000,00:20:00, 8.12
25/09/2000,00:30:00, 8.40
25/09/2000,00:40:00, 8.69
25/09/2000,00:50:00, 8.99
25/09/2000,01:00:00, 9.30
25/09/2000,01:10:00, 9.62

SV_SCADABasic_fr 513
Exemple LAN Configuration Multipostes
Appliqué à

Exemple 1
Cet exemple illustre les modes de la commande LAN.
'Structure:
'An association of two producers
'The number of the association is: 1
'The number of the local server station is: 12
'The number of the remote server station is: 11

SUB main()
langetlists();
END SUB

'Mode CONNECT or Mode 1 (syntax 1)

SUB lanconnect()
DIM strResult as Str;
strResult = LAN("CONNECT","SERVER11S0");
END SUB

'Mode PRODUCT_Mode or Mode 2 (syntaxe 2)

'To force the local server station into Active mode:


SUB passive_to_active()
If (SYSTEM.STATION_NUMBER==12)
Then
LAN("PRODUCT_Mode",1,0,11);
Else
LAN("PRODUCT_Mode",1,0,12);
End If
END SUB

'To force the local server station into Passive mode:


SUB active_to_passive()
If (SYSTEM.STATION_NUMBER==12)
Then
LAN("PRODUCT_Mode",1,1,11);
Else
LAN("PRODUCT_Mode",1,1,12);
End If
END SUB

Exemple 2
Cet exemple montre l'utilisation de LAN pour commuter les serveurs réseau.
' NETWORK CONFIGURATION
' An association of 2 servers
' The association number = 1
' The number of the local server station is 12
' The number of the remote server station is 11

' Subroutine to switch the local server to active mode

SUB PASSIVE_TO_ACTIVE()
IF (SYSTEM.STATION_NUMBER == 12) THEN
LAN("PRODUCT_Mode",1,1,11);
ELSE
LAN("PRODUCT_Mode",1,1,12);
END IF

SV_SCADABasic_fr 514
END SUB

' Subroutine to switch the local server to passive mode

SUB ACTIVE_TO_PASSIVE()
IF (SYSTEM.STATION_NUMBER == 12) THEN
LAN("PRODUCT_Mode",1,0,11);
ELSE
LAN("PRODUCT_Mode",1,0,12);
END IF
END SUB

SV_SCADABasic_fr 515
Exemple LANGUAGE
Appliqué à
Cet exemple illustre les modes de la commande LANGUAGE.
Vous devez activer le mode Bilinguisme dans le menu : Configuration.Projet.Paramètres.

'Mode GET or Mode 0 (syntax 1)


SUB languageget()
DIM intResult as integer;
intResult = LANGUAGE("Get");
PRINT("the langage actuel est:",intResult);
END SUB

'Mode SET_L1 or Mode 1 (syntax 2)

SUB languagesetL1()
DIM intResult as integer;
intResult = LANGUAGE("SET_L1",1);
END SUB

'Mode SET_L2 or Mode 2 (syntax 2)

SUB languagesetL2()
DIM intResult as integer;
intResult = LANGUAGE("SET_L2",1);
END SUB

'Mode TOGGLE or Mode 3 (syntax 2)

SUB languagetoggle()
DIM intResult as integer;
intResult = LANGUAGE("TOGGLE",1);
END SUB

SV_SCADABasic_fr 516
Exemple LISTBOX
Appliqué à
This example contains a set of functions to support a pair of List-box form controls using the LISTBOX
instruction.
SUB Main()
END SUB

'declare variables:
SUB lbxSel()
DIM lRet As Long;
DIM sLbxText As Str;
DIM sLbxText1 As Str;
DIM sLbxData As Str;
DIM sLbxData1 As Str;

'retrieve content of selected item in 1st control:


lRet = LISTBOX ( "GETSELECTEDINDEX", "ctrl","","lbx" );
LISTBOX ( "SETSELECTEDINDEX", "ctrl","","lbx1", lRet);
sLbxText = LISTBOX ( "GETTEXT", "ctrl","","lbx", lRet);
sLbxText1 = LISTBOX ( "GETTEXT", "ctrl","","lbx1", lRet);
sLbxData = LISTBOX ( "GETUSERDATA", "ctrl","","lbx", lRet);
sLbxData1 = LISTBOX ( "GETUSERDATA", "ctrl","","lbx1", lRet);

'put its contents in a frame:


SET ( "LbxText" , sLbxText);
SET("LbxText1", sLbxText1);
SET("LbxData", sLbxData);
SET("LbxData1" , sLbxData1);
SET("LbxCount" , LISTBOX ( "COUNT", "ctrl","","lbx") );
SET("LbxCount1" , LISTBOX ( "COUNT", "ctrl","","lbx1"));
SENDLIST ("BLOC");

'concatenate and load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",sLbxData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",sLbxData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",sLbxData));
OPTIONLIST ( "LOAD", "ctrl","","opt2", ADDSTRING("opt",sLbxData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",sLbxData));
END SUB

'retrieve content of selected item in 2nd control:


SUB lbxSel1()
DIM lRet As Long;
DIM sLbxText As Str;
DIM sLbxText1 As Str;
DIM sLbxData As Str;
DIM sLbxData1 As Str;
lRet = LISTBOX ( "GETSELECTEDINDEX", "ctrl","","lbx1" );
LISTBOX ( "SETSELECTEDINDEX", "ctrl","","lbx", lRet);
sLbxText = LISTBOX ( "GETTEXT", "ctrl","","lbx", lRet);
sLbxText1 = LISTBOX ( "GETTEXT", "ctrl","","lbx1", lRet);
sLbxData = LISTBOX ( "GETUSERDATA", "ctrl","","lbx", lRet);
sLbxData1 = LISTBOX ( "GETUSERDATA", "ctrl","","lbx1", lRet);
lRet = LISTBOX ( "COUNT", "ctrl","","lbx");
lRet = LISTBOX ( "COUNT", "ctrl","","lbx1");

'put its contents in a frame:


SET ( "LbxText" , sLbxText);
SET("LbxText1", sLbxText1);
SET("LbxData", sLbxData);
SET("LbxData1" , sLbxData1);

SV_SCADABasic_fr 517
SET("LbxCount" , LISTBOX ( "COUNT", "ctrl","","lbx") );
SET("LbxCount1" , LISTBOX ( "COUNT", "ctrl","","lbx1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSellbx()
DIM lRet As Long;
LISTBOX ( "SETSELECTEDINDEX", "ctrl","","lbx", 2);
END SUB

SV_SCADABasic_fr 518
Exemple LOGDISPLAY
Appliqué à
Ce programme illustre les modes de l'instruction LOGDISPLAY
Pour identifier l'index de la fenêtre de consignations, sélectionner le menu Affichage.Explorateur
Graphique en mode édition.
'Use of a mimic MENU with a Log Display animation.
'The Log Display is for index REPLOG01.
'Configuration:
' Create a domain DOM01
' Create a nature NAT01
'Database variables used:
' @PRIORITY.MIN of type REGISTER
' @PRIORITY.MAX of type REGISTER
' @VALIDATE of type STATE
' @CODERETURN of type STATE
' @RETURN of type TEXT

'Mode BEGIN or Mode 0 (syntax 1)

SUB logdisplaybegin()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("BEGIN","MENU","","REPLOG01");
END SUB

'Mode BEFORE or Mode 1 (syntax 1)


SUB logdisplaybefore()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("BEFORE","MENU","","REPLOG01");
END SUB

'Mode AFTER or Mode 3 (syntax 1)

SUB logdisplayafter()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("AFTER","MENU","","REPLOG01");
END SUB

'Mode END or Mode 4 (syntax 1)

SUB logdisplayend()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("END","MENU","","REPLOG01");
END SUB

'Mode DOMAIN or Mode 9 (syntax 2)

SUB logdisplaydomain()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("DOMAIN","MENU","","REPLOG01","DOM01");
END SUB

SUB logdisplaydomainnofilter()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("DOMAIN","MENU","","REPLOG01","");

SV_SCADABasic_fr 519
END SUB

'Mode Nature or Mode 10 (syntax 2)

SUB logdisplayNature()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("Nature","MENU","","REPLOG01","NAT01");
END SUB

SUB logdisplayNaturenofilter()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("Nature","MENU","","REPLOG01","");
END SUB

'Mode SETDATETIME or Mode 12 (syntax 3)

SUB logdisplaysetdatetime()
'Declare return code
DIM intReturn as integer;
DIM dblHoroDebut as double;
DIM dblHoroFin as double;
dblTimeStart = DATETIMEVALUE("21/06/2002", "17:05:12:654");
dblTimeEnd = DATETIMEVALUE("21/06/2002", "17:10:12:654");
intReturn = LOGDISPLAY("SETDATETIME","MENU","","REPLOG01",dblTimeStart,dblTimeEnd) ;
END SUB

'Mode PRINTALL or Mode 11 (syntax 1)

SUB logdisplayprintall()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("PRINTALL","MENU","","REPLOG01");
END SUB

'Mode FILTER or Mode 26 (syntax 4)


SUB logdisplayfilter()
'Declare return code
DIM intReturn as integer;
DIM strFilter as Str;
strFilter = "=(#t BEG DOM01)";
intReturn = LOGDISPLAY("FILTER","MENU","","REPLOG01",strFilter);
END SUB

'Mode PRINT_SELECTED or Mode 14 (syntax 1)

SUB logdisplayprintselected()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("PRINT_SELECTED","MENU","","REPLOG01");
END SUB

'Mode PRINT_DISPLAY or Mode 15 (syntax 1)

SUB logdisplayprintdisplay()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("PRINT_DISPLAY","MENU","","REPLOG01");
END SUB

'Mode FIRST or Mode 16 (syntax 1)

SV_SCADABasic_fr 520
SUB logdisplayfirst()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("FIRST","MENU","","REPLOG01");
END SUB

'Mode LAST or Mode 17 (syntax 1)

SUB logdisplaylast()
'Declare return code
DIM intReturn as integer;
intReturn = LOGDISPLAY("LAST","MENU","","REPLOG01");
END SUB

SV_SCADABasic_fr 521
Exemple LOGICAL
Appliqué à

Exemple 1
Cet exemple illustre les modes de la commande LOGICAL.
'Mode NOT or Mode 0 (syntax 1)
SUB logicalnot()
'Declare variables
DIM lngReturn as long;
DIM lngValue as integer;

lngValue = 1; '00.....0001
lngReturn = LOGICAL("NOT",lngValue );
PRINT("NOT(",lngValue,")= ",lngReturn);

'Display NOT(1)= -2 '11.....1110


END SUB

'Mode AND or Mode 1 (syntax 2)

SUB logicaland()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;

lngValue1 = 1;'00.....0001
lngValue2 = 3;'00.....0011

'AND= 00.....0001
lngReturn = LOGICAL("AND",lngValue1,lngValue2);
PRINT(lngValue1," AND ",lngValue2," = ",lngReturn);

'Display "1 AND 3 = 1"


END SUB

'Mode XOR or Mode 2 (syntax 2)

SUB logicalxor()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;

lngValue1 = 1;'00.....0001
lngValue2 = 3;'00.....0011

'XOR= 00.....0010
lngReturn = LOGICAL("XOR",lngValue1,lngValue2);
PRINT(lngValue1," XOR ",lngValue2," = ",lngReturn);
'Display "1 XOR 3 = 2"
END SUB

'Mode OR or Mode 3 (syntax 2)

SUB logicalor()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;

SV_SCADABasic_fr 522
lngValue1 = 1;'00.....0001
lngValue2 = 3;'00.....0011

'OR= 00.....0011
lngReturn = LOGICAL("OR",lngValue1,lngValue2);
PRINT(lngValue1," OR ",lngValue2," = ",lngReturn);
'Display "1 OR 3 = 3"
END SUB

'Mode SHIFT_LEFT or Mode 4 (syntax 2)


SUB logicalshiftleft()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;

lngValue1 = 1;'00.....0001
lngValue2 = 3; 'shift by 3 digits
'SHIFT_LEFT = 00.....1000
lngReturn = LOGICAL("SHIFT_LEFT",lngValue1,lngValue2);
PRINT(lngValue1," SHIFT_LEFT ",lngValue2," = ",lngReturn);
'Display "1 SHIFT_LEFT 3 = 8"
END SUB

'Mode SHIFT_RIGHT or Mode 5 (syntax 2)

SUB logicalshiftright()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;
lngValue1 = 8; '00.....1000
lngValue2 = 3; 'shift b 3 digits
'SHIFT_RIGHT = 00.....0001
lngReturn = LOGICAL("SHIFT_RIGHT",lngValue1,lngValue2);
PRINT(lngValue1," SHIFT_RIGHT ",lngValue2," = ",lngReturn);
'Display "8 SHIFT_RIGHT 3 = 1"
END SUB

'Mode MODULO or Mode 6 (syntax 2)

SUB logicalmodulo()
'Declare variables
DIM lngReturn as long;
DIM lngValue1 as integer;
DIM lngValue2 as integer;
lngValue1 = 14;
lngValue2 = 12;
'Calculate modulo: 14 = 12 + 2
'14 equals 2 modulo 12
lngReturn = LOGICAL("MODULO",lngValue1,lngValue2);
PRINT(lngValue1," = ",lngReturn," (mod ",lngValue2,")");
'Display "14 = 2 (mod 12)"

END SUB

Exemple 2
Cet programme montre l'utilisation de l'instruction LOGICAL.
SUB main()
DIM x as long;
DIM y as long;
x = 622;

SV_SCADABasic_fr 523
y = 217;
print ("x = ", x);
print ("y = ", y);
print (" not(x) =", logical("not", x));
print (" x and y =", logical("and", x, y));
print (" x xor y =", logical("xor", x, y));
print (" x or y =", logical("or", x, y));
print (" x << 2 =", logical("shift_left", x, 2));
print (" x >> 2 =", logical("shift_right", x, 2));
print (" x modulus 7 =", logical("modulo", x, 7));
END SUB
The program will display:
x = 622
y = 217
not(x) =-623
x and y =72
x xor y =695
x or y =767
x << 2 =2488
x >> 2 =155
x modulus 7

SV_SCADABasic_fr 524
Exemple MULTIMEDIA
Appliqué à
Cet exemple illustre les modes de la commande MULTIMEDIA.
Il utilise :

• Un synoptique : MENU
• Un fichier wave Alarm.wav du dossier TP
• Un fichier avi demo.avi du dossier TP

Il retourne "true" ou "false" selon les capacités du lecteur de CD.


SUB capabilityeject()
PRINT(MULTIMEDIA("SEND","cdaudio function can eject"));
END SUB

'Begins recording. Print for debugging.


SUB startrec()
PRINT(MULTIMEDIA("SEND","open new type waveaudio alias mysnd"));
PRINT(MULTIMEDIA("SEND","record mysnd"));
END SUB

'To play a wave sound


'The .wav file must be present in the TP folder of this project
SUB playwav()
MULTIMEDIA ("SEND","Play Alarm.wav");
END SUB

'Opening an animation sequence with video


SUB play()
IF (Window("IS_OPEN","MENU","")) THEN
MULTIMEDIA ("OPENW","movie","demo.avi","MENU", "",70,10,320,240);
ELSE
MULTIMEDIA ("OPENW","movie","demo.avi","Projection");
END IF
MULTIMEDIA ("SEND","play movie");
MULTIMEDIA ("SEND","set movie time format frames");
END SUB

SV_SCADABasic_fr 525
Exemple OPTIONLIST
Applies To
This example contains a set of functions to support a pair of Option-button list form controls using the
OPTIONLIST instruction.
SUB Main()
END SUB

'declare variables:
SUB optSel()
DIM lRet As Long;
DIM soptText As Str;
DIM soptText1 As Str;
DIM soptData As Str;
DIM soptData1 As Str;
DIM lRet2 As Long;

'retrieve content of selected item in 1st control:


lRet = OPTIONLIST ( "GETSELECTEDINDEX", "ctrl","","opt" );
OPTIONLIST ( "SETSELECTEDINDEX", "ctrl","","opt1", lRet);
soptText = OPTIONLIST ( "GETTEXT", "ctrl","","opt", lRet);
soptText1 = OPTIONLIST ( "GETTEXT", "ctrl","","opt1", lRet);
soptData = OPTIONLIST ( "GETUSERDATA", "ctrl","","opt", lRet);
soptData1 = OPTIONLIST ( "GETUSERDATA", "ctrl","","opt1", lRet);

'put its contents in a frame:


SET ( "optText" , soptText);
SET("optText1", soptText1);
SET("optData", soptData);
SET("optData1" , soptData1);
SET("optCount" , OPTIONLIST ( "COUNT", "ctrl","","opt") );
SET("optCount1" , OPTIONLIST ( "COUNT", "ctrl","","opt1"));
SENDLIST ("BLOC");

'check the latest change


' 1 Selection has changed; 2 Option has changed
PRINT ( OPTIONLIST ( "GETEVENTTYPE", "ctrl","","opt") );
If ( OPTIONLIST ( "GETEVENTTYPE", "ctrl","","opt") == 2 )
Then
lRet2 = OPTIONLIST ( "GETSTATE", "ctrl","","opt", lRet);
OPTIONLIST ( "SETSTATE", "ctrl","","opt1", lRet, lRet2);
End If

'concatenate and load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",soptData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",soptData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",soptData));
OPTIONLIST ( "LOAD", "ctrl","","opt2", ADDSTRING("opt",soptData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",soptData));
END SUB

'retrieve content of selected item in 2nd control:


SUB optSel1()
DIM lRet As Long;
DIM soptText As Str;
DIM soptText1 As Str;
DIM soptData As Str;
DIM soptData1 As Str;
lRet = OPTIONLIST ( "GETSELECTEDINDEX", "ctrl","","opt1" );

OPTIONLIST ( "SETSELECTEDINDEX", "ctrl","","opt", lRet);


soptText = OPTIONLIST ( "GETTEXT", "ctrl","","opt", lRet);

SV_SCADABasic_fr 526
soptText1 = OPTIONLIST ( "GETTEXT", "ctrl","","opt1", lRet);
soptData = OPTIONLIST ( "GETUSERDATA", "ctrl","","opt", lRet);
soptData1 = OPTIONLIST ( "GETUSERDATA", "ctrl","","opt1", lRet);
lRet = OPTIONLIST ( "COUNT", "ctrl","","opt");
lRet = OPTIONLIST ( "COUNT", "ctrl","","opt1");

'put its contents in a frame:


SET ( "optText" , soptText);
SET("optText1", soptText1);
SET("optData", soptData);
SET("optData1" , soptData1);
SET("optCount" , OPTIONLIST ( "COUNT", "ctrl","","opt") );
SET("optCount1" , OPTIONLIST ( "COUNT", "ctrl","","opt1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSelopt()
DIM lRet As Long;
OPTIONLIST ( "SETSELECTEDINDEX", "ctrl","","opt", 2);
END SUB

SV_SCADABasic_fr 527
Exemple POPULATION
Appliqué à
Cette routine créé un filtre et affiche sa définition :
SUB Main ();
DIM HB As Long;
'--------- Create buffer
HB = Alloc_Buffer(4096);
'--------- Define population in buffer
Seq_Buffer("PUT_LINE",HB,"POPULATION,23,POP1,0,0");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TATT1,IN,ZONE1");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TATT1,IN,ZONE2");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TYPE,OUT,4");
'--------- Create population
Population("CREATE", HB);
Population("DUMP", "POP1"); ' Verify
Free_Buffer(HB);
END SUB

SV_SCADABasic_fr 528
Exemple PRINTER
Appliqué à

Exemple 1
Ce programme illustre les modes de la commande PRINTER.
const printer_no_primary = 1;
const printer_no_secondary = 2;

'Mode OFF or Mode 0 (syntax 1)

SUB printeroff()
DIM intResult as integer;
intResult = PRINTER("OFF",printer_no_primary);
END SUB

'Mode ON or Mode 1 (syntax 1)

SUB printeron()
DIM intResult as integer;
intResult = PRINTER("ON",printer_no_primary);
END SUB

'Mode CLEAR or Mode 2 (syntax 1)

SUB printerclear()
DIM intResult as integer;
intResult = PRINTER("CLEAR",printer_no_primary);
END SUB

'Mode GETNB or Mode 3 (syntax 1)

SUB printergetnb()
DIM intResult as integer;
intResult = PRINTER("GETNB",printer_no_primary);
Print("Result of GETNB is: ",intResult);
END SUB

'Mode STATUS or Mode 4 (syntax 1)

SUB printerstatus()
DIM intResult as integer;
intResult = PRINTER("STATUS",printer_no_primary);
Print("Result of STATUS is: ",intResult);
END SUB

'Mode SELECT or Mode 5 (syntax 2)

SUB printerselect()
DIM intResult as integer;
intResult = PRINTER("SELECT",printer_no_primary,printer_no_secondary);
END SUB

'Mode FLUSH or Mode 6 (syntax 1)

SUB printerflush()
DIM intResult as integer;
intResult = PRINTER("FLUSH",printer_no_primary);
END SUB

Exemple 2

SV_SCADABasic_fr 529
Ce programme créé un filtre et affiche sa définition :
SUB Main ();
DIM HB As Long;
'--------- Create buffer
HB = Alloc_Buffer(4096);
'--------- Define PRINTER in buffer
Seq_Buffer("PUT_LINE",HB,"PRINTER,23,POP1,0,0");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TATT1,IN,ZONE1");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TATT1,IN,ZONE2");
Seq_Buffer("PUT_LINE",HB,"POPDEF,TYPE,OUT,4");
'--------- Create PRINTER
PRINTER("CREATE", HB);
PRINTER("DUMP", "POP1"); ' Verify
Free_Buffer(HB);
END SUB

SV_SCADABasic_fr 530
Exemple PROGRAM
Appliqué à

Exemple 1
Ce programme illustre les modes de la commande PROGRAM.
'This program uses another program called BEEP.SCB
'that has a function main() and a fonction beepfunction1()
'Mode STOP or Mode 0 (syntax 1)

SUB programstop()
DIM intResult as integer;
intResult = PROGRAM("STOP","beep.SCB","");
END SUB

'Mode START or Mode 1 (syntax 1)

SUB programstart()
DIM intResult as integer;
intResult = PROGRAM("START","beep.SCB","");
END SUB

'Mode IS_LOADED or Mode 2 (syntax 1)

SUB programisloaded()
DIM intResult as integer;
intResult = PROGRAM("IS_LOADED","beep.SCB","");
IF(intResult) Then
PRINT("The program is loaded");
END IF
END SUB

'Mode PRELOAD or Mode 3 (syntax 1)

SUB programpreload()
DIM intResult as integer;
intResult = PROGRAM("PRELOAD","beep.SCB","");
END SUB

'Mode UNLOAD or Mode 4 (syntax 1)

SUB programunload()
DIM intResult as integer;
intResult = PROGRAM("UNLOAD","beep.SCB","");
END SUB

'Mode EXECUTE or Mode 5 (syntax 1)

SUB programexecute()
DIM intResult as integer;
intResult = PROGRAM("EXECUTE","beep.SCB","");
END SUB

'Mode FUNCTION or Mode 6 (syntax 2)

SUB programfunction()
DIM intResult as integer;
intResult = PROGRAM("FUNCTION","beep.SCB","","beepfunction1");
END SUB

'Mode IS_FUNCTION or Mode 7 (syntax 2)

SV_SCADABasic_fr 531
SUB programisfunction()
DIM intResult as integer;
intResult = PROGRAM("IS_FUNCTION","beep.SCB","","beepfunction1");
IF(intResult) Then
PRINT("The function exists");
END IF
END SUB

SV_SCADABasic_fr 532
Exemple RECIPE
Appliqué à

Exemple 1
Ce module utilise les modes READ et CREATE de l'instruction RECIPE.
SUB CopyRecipe (OldID, NewID)
DIM Handle As Long;
DIM OK As Integer;
DIM Title As STR;
Const BufSize 1024;
Handle = Alloc_Buffer (BufSize);
Title = AddString("New Recipe ", System("DATE"));
If (Recipe("READ", OldID, Handle, BufSize-1) ==1) THEN
Recipe("CREATE", Handle, NewID, Title, 1,"Auto");
OK = 1;
Else
OK = 0;
End If
Free_Buffer(Handle);
Return(OK);
END SUB

Exemple 2
Cet exemple envoie une recette et déclenche un événement. Par détection de l'événement, il retourne son
contenu.
DIM handle As Long ;
SUB SendRec()
handle = ALLOC_BUFFER ( 1000);
SET ( "EVTVAR2 " , 0 );
SENDLIST ( 0 );
EVENT ("ADDPROG", "EVTVAR2", 1, "PGMRECIPE", "", "onEvt2");
RECIPE ( "NETWORKBROADCAST" , "REC1" , "LIST2" , handle , "EVTVAR2", 1);
END SUB
SUB onEvt2 ()
DIM ret As Str;
EVENT ("DEL", "", 1, "EVTVAR2", "", "onEvt2");
ret = CGET_BUFFER ( handle , 0 ,255);
print ( ret );
FREE_BUFFER ( handle );
END SUB

SV_SCADABasic_fr 533
Exemple REGION
Appliqué à
Cet exemple configure deux régions afin que des fenêtres précédemment ouvertes par l'animation ou le
programme SCADA Basic apparaissent dans la région
2.
SUB Main()
'Declare variables
DIM Result As INTEGER;
DIM NoOfRegions As INTEGER;
DIM WhichRegion As INTEGER;
DIM SubMode As INTEGER;

'set the number of regions


Result = REGION("SETSYSREGION", 2);
NoOfRegions = REGION("GETSYSREGION");
PRINT ("Number of regions = ", NoOfRegions);

'set the submode for opening windows from animations


SubMode = REGION("GETSELECTIONMODE");
PRINT ("Current submode = ", SubMode);

'set the region for opening windows from animations


Result = REGION("SETSELECTION", 2, 1);
WhichRegion = REGION("GETSELECTION");
PRINT ("Open by animation in region = ", WhichRegion);

'set the region for opening windows from SCADA BASIC


Result = REGION("SETREGION", 2);
WhichRegion = REGION("GETREGION");
PRINT ("Open from SCADA BASIC in region = ", WhichRegion);
END SUB
S'il n'y a pas d'erreur, le résultat sera :
Number of regions = 2
Current submode = 1
Open by animation in region = 2
Open from SCADA BASIC in region = 2

SV_SCADABasic_fr 534
Exemple RETURN
Appliqué à
Ce SUB génére une valeur résultant à partie d'une valeur d'entrée.
SUB Main ()
DIM J As Integer;
For (J=1; J<=10; J++)
Print("Factorial ", J, " = ", Factorial(J));
Next J;
END SUB

SUB Factorial (Input)


DIM I AS Integer;
DIM Result As Long;
Result = 1;
If (Input < 1) Then
Return (0);
End If
For ( I = 1; I <=Input; I++)
Result = Result*TOL(I);
Next I;
Return(Result);
END SUB

SV_SCADABasic_fr 535
Exemple SELECTOR
Appliqué à

Exemple 1
Cet exemple illustre chaque mode de la commande SELECTOR.
'All variables that start with "WORKS", whose 2nd branch is "BLOC"
' that end with the code: WORKS.BLOC.*[0-9]$.
'This example requires a mimic "cell" to be loaded, with a Table animation
' whose index is "SELECTOR 1"

SUB filling()
DIM lngbuffer12 as long;
lngbuffer12 = ALLOC_BUFFER (4096);
'The file "SELECTOR .txt" holds a description of fields with
' separators as shown here: ; for columns and \n for lines.
lngbuffer12 = FILETOBUF ("SELECTOR .txt");
SELECTOR ("PUTARRAY","cell","","SELECTOR 1",lngbuffer12,5,0,10,3,";\n");
free_buffer(lngbuffer12);
END SUB

'Mode GETNBLINE or Mode 1 (syntax 1)

SUB SELECTOR getnbline()


'Retrieve the number of lines in view
PRINT ("Number of lines = ",SELECTOR ("GETNBLINE","cell","","SELECTOR 1"));
END SUB

'Mode GETNBCOL or Mode 2 (syntax 1)

SUB SELECTOR getnbcol()


'Retrieve the number of columns of the animation
PRINT ("Number of columns = ",SELECTOR ("GETNBCOL","cell","","SELECTOR 1"));
END SUB

'Mode GETCELL or Mode 3 (syntax 2)

SUB SELECTOR getcell()


'Retrieve the contents of cell x=3 y=1 (base 0)
PRINT ("CELLULE(3,1) = ",SELECTOR ("GETCELL","cell","","SELECTOR 1",3,1));
END SUB

'Mode GETLINE or Mode 4 (syntax 3)

SUB SELECTOR getline()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;
lngBuffer1 = ALLOC_BUFFER (4096);

'Retrieve in buffer hdl line 3 - fields separated by: ;


intResult = SELECTOR ("GETLINE","cell","","SELECTOR 1",3,lngBuffer1,";");
PRINT("GETLINE 3 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);
END SUB

'Mode GETCOL or Mode 5 (syntax 4)

SUB SELECTOR getcol()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;

SV_SCADABasic_fr 536
lngBuffer1 = ALLOC_BUFFER (4096);

'Retrieve column 1 (base 0) on retrieve the fields


'separated by: ; in buffer of hdl
intResult = SELECTOR ("GETCOL","cell","","SELECTOR 1",1,lngBuffer1,";");
PRINT("GETCOL 1 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);
END SUB

'Mode GETARRAY or Mode 6 (syntax 5)

SUB SELECTOR getarray()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;
lngBuffer1 = ALLOC_BUFFER (4096);
'Retrieve the subset of table contents between cell (2,0) and cell (4,2)
' - retrieval of fields separated by ; and : in buffer hdl
PRINT (">",SELECTOR ("GETARRAY","cell","","SELECTOR 1",lngBuffer1,2,0,4,2,";:"),"<");
PRINT ("GETARRAY 2,0-4,2 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);
END SUB

'Mode PUTCELL or Mode 7 (syntax 6)

SUB SELECTOR putcell()


'Declare variables
DIM intResult as integer;
'Writing to a cell
PRINT ("PUTCELL(3,2): ",SELECTOR ("PUTCELL","cell","","SELECTOR 1",0,0,"‚t‚ test"));
END SUB

'Mode PUTLINE or Mode 8 (syntax 3)

SUB SELECTOR putline()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;
lngBuffer1 = ALLOC_BUFFER (4096);
'Retrieve in hdl line 3, fields separated by ;
intResult = SELECTOR ("GETLINE","cell","","SELECTOR 1",3,lngBuffer1,";");
'Filling line 5 with contentsf hdl
' ie the previous line 3 in this example
PRINT (SELECTOR ("PUTLINE","cell","","SELECTOR 1",5,lngbuffer1,";"));
PRINT("PUTLINE 3 -> 5 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);
END SUB

'Mode PUTCOL or Mode 9 (syntax 4)

SUB SELECTOR putcol()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;
lngBuffer1 = ALLOC_BUFFER (4096);
'Retrieve column 1 (base 0)
' - retrieval of fields separated by ; and : in buffer hdl
intResult = SELECTOR ("GETCOL","cell","","SELECTOR 1",1,lngBuffer1,";");
'filling of column 3 with contents of hdl
'ie column 1
PRINT (SELECTOR ("PUTCOL","cell","","SELECTOR 1",3,lngbuffer1,";"));
PRINT("PUTCOL 1 -> 3 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);

SV_SCADABasic_fr 537
END SUB

'Mode PUTARRAY or Mode 10 (syntax 5)

SUB SELECTOR putarray()


'Declare variables
DIM lngBuffer1 as long;
DIM intResult as integer;
lngBuffer1 = ALLOC_BUFFER (4096);
'Retrieve the subset of table contents between (2,0) and cell (4,2)
' - retrieve fields separated by ; and : in buffer hdl
PRINT (">",SELECTOR ("GETARRAY","cell","","SELECTOR 1",lngBuffer1,0,0,2,2,";\n"),"<");
'filling of column 3 with contents of hdl
'ie column 1
intResult = SELECTOR ("PUTARRAY","cell","","SELECTOR 1",lngBuffer1,2,0,4,2,";\n");
PRINT("PUTARRAY 2,0-4,2 ",CGET_BUFFER(lngBuffer1,0,200));
free_buffer(lngBuffer1);
END SUB

'Mode SCROLL or Mode 11 (syntax 7)

'example of control of scrolling of the animation by forcing by program


SUB tobegin ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","TOBEGIN");
updatepcsel ();
END SUB

SUB pageup ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","PAGEUP");
updatepcsel ();
END SUB

SUB lineup ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","LINEUP");
updatepcsel ();
END SUB

SUB linedown ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","LINEDOWN");
updatepcsel ();
END SUB

SUB pagedown ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","PAGEDOWN");
updatepcsel ();
END SUB

SUB toend ()
SELECTOR ("SCROLL","cell","","SELECTOR 1","TOEND");
updatepcsel ();
END SUB

'to go to line line ll directly


SUB toline (ll)
SELECTOR ("SCROLL","cell","","SELECTOR 1","TOLINE",ll);
updatepcsel ();
END SUB

'Mode GETLISTART or Mode 12 (syntax 1)

SUB SELECTOR getlistart()


'Retrieve the 1st visible line
PRINT ("The forst line displayed is = ",SELECTOR ("GETLISTART","cell","","SELECTOR 1"));

SV_SCADABasic_fr 538
END SUB

'Mode GETNBLINEMAX or Mode 13 (syntax 1)

SUB SELECTOR getnblinemax()


PRINT ("The total number of lines shown in the memory table is = ",SELECTOR
("GETNBLINEMAX","cell","","SELECTOR 1"));
END SUB

'Mode VARIABLE or Mode 14 (syntax 9)

SUB SELECTOR variable()


DIM intResult as integer;
'Showing all variables of type TEXT
intResult = SELECTOR ("VARIABLE","cell","","SELECTOR 1",".*",8);
END SUB

'Mode VARMODE or Mode 15 (syntax 10)

SUB SELECTOR varmode()


DIM intResult as integer;
'Showing all variables of type TEXT
intResult = SELECTOR ("VARMODE","cell","","SELECTOR 1",2);
END SUB

'Mode SELECTLINE or Mode 16 (syntax 1)

SUB SELECTOR selectline()


'Retrieve the 1st visible line
PRINT ("The selected line is : ",SELECTOR ("SELECTLINE","cell","","SELECTOR 1"));
END SUB

'Mode SELECTCOL or Mode 17 (syntax 1)

SUB SELECTOR selectcol()


'Retrieve the 1st visible line
PRINT ("The selected column is : ",SELECTOR ("SELECTCOL","cell","","SELECTOR 1"));
END SUB

'Mode SELECTMODE or Mode 18 (syntax 7)

SUB modeoff() ' mode without selection


SELECTOR ("SELECTMODE","cell","","SELECTOR 1","OFF");
END SUB

SUB modemono() ' single selection mode


SELECTOR ("SELECTMODE","cell","","SELECTOR 1","MONO");
END SUB

SUB modemulti() ' multi-selection mode


SELECTOR ("SELECTMODE","cell","","SELECTOR 1","MULTI");
END SUB

SUB modeinput() ' mode saisie directe


SELECTOR ("SELECTMODE","cell","","SELECTOR 1","INPUT");
END SUB

'Mode SFIRSTCELL or Mode 19 (syntax 1)

SUB SELECTOR sfirstcell()


'Find the first cell selected from the start of the table (0,0).
PRINT ("The first cell selected is : ",SELECTOR ("SFIRSTCELL","cell","","SELECTOR 1"));
END SUB

SV_SCADABasic_fr 539
'Mode SNEXTCELL or Mode 20 (syntax 1)

SUB SELECTOR snextcell()


'Find the next cell selected from the last cell found
PRINT ("The next cell selected is : ",SELECTOR ("SNEXTCELL","cell","","SELECTOR 1"));
END SUB

'Mode ALLSELOFF or Mode 21 (syntax 1)

SUB SELECTOR allseloff()


SELECTOR ("ALLSELOFF","cell","","SELECTOR 1");
END SUB

'Mode CLICKCELL or Mode 22 (syntax 2)

SUB SELECTOR clickcell()


'Retrieve of contents of cell x=3 y=1 (base 0)
PRINT ("Select cell (3,1) = ",SELECTOR ("CLICKCELL","cell","","SELECTOR 1",3,1));
END SUB

'Mode GETSEL or Mode 23 (syntax 2)

SUB SELECTOR getsel()


'Enables you to know whether cell x=3 y=1 (base 0)is selected
PRINT ("Selection of cell (3,1) = ",SELECTOR ("GETSEL","cell","","SELECTOR 1",3,1));
END SUB

'Mode SELPROG or Mode 24 (syntax 11)

SUB SELECTOR selprog()


'The main function of program beep.SCB will be executed on selection
SELECTOR ("SELPROG","cell","","SELECTOR 1","beep.SCB","","");
END SUB

'Mode INPUTPROG or Mode 25 (syntax 11)


SUB SELECTOR inputprog()
'The main function of program beep.SCB will be executed on
' confirmation of dialog box
SELECTOR ("INPUTPROG","cell","","SELECTOR 1","beep.SCB","","");
END SUB

'Mode CLEAR or Mode 26 (syntax 1)

SUB SELECTOR clear()


'Enables purging of the table. Cells are re-initialised.
PRINT ("Purge of the table ",SELECTOR ("CLEAR","cell","","SELECTOR 1"));
END SUB

'Mode SETNBLINE or Mode 27 (syntax 7)

SUB SELECTOR setnbline()


'Moves on the table to line 10
SELECTOR ("SETNBLINE","cell","","SELECTOR 1",10);
END SUB

'Mode GETLASTCELL or Mode 28 (syntax 1)

SUB SELECTOR getlastcell()


'Returns the number of lines used in the table
'Renvoie le Number of line rempli in le tableau
PRINT ("Number of lines used ",SELECTOR ("GETLASTCELL","cell","","SELECTOR 1"));
END SUB

SV_SCADABasic_fr 540
'Mode SORT or Mode 27 (syntax 7)

SUB SELECTOR sort()


'Sorting column 0 of the table in ascending order
SELECTOR ("SORT","cell","","SELECTOR 1",0,0);
END SUB

Exemple 2
L'exemple suivant affiche les informations à partir d'un fichier contenant des données enregistrées dans
une des unités d'archivage d'une fenêtre de tendance. Le format du fichier peut être vu à partir de
l'extraction suivante :
940211142058, 244
940211142112, 237
940211142113, 230
940211142127, 223
940211142127, 216
940211142141, 209
940211142141, 202
940211142155, 195
Le programme affiche des données dans un synoptique appelé "cell" qui contient un tableau identifié
comme "SELECTOR 1".
' Program SEL.PVB
' Date 21-Mar-93
' Author RJM

SUB Main ()
END SUB
' Load data into Grid. Note the use of \n as a
' line delimiter.

SUB LoadGrid ()
DIM hdl2 As Long;
hdl2 = Filetobuf ("trend.dat");
SELECTOR ("PUTARRAY", "cell", "", "SELECTOR 1",hdl2,0,0, 35, 1, ", \n");
Free_Buffer(hdl2);
END SUB
' Functions to provide scroll facility.

SUB PageUp ()
SELECTOR ("SCROLL", "cell", "", "SELECTOR 1", "PAGEUP");
UPDATE ();
END SUB
SUB PageDown ()
SELECTOR ("SCROLL", "cell", "", "SELECTOR 1","PAGEDOWN");
UPDATE ();
END SUB
SUB LineUp ()
SELECTOR ("SCROLL", "cell", "","SELECTOR 1","LINEUP");
UPDATE ();
END SUB
SUB LineDown ()
SELECTOR ("SCROLL", "cell", "", "SELECTOR 1","LINEDOWN");
UPDATE ();
END SUB
SUB ToStart ()
SELECTOR ("SCROLL", "cell", "", "SELECTOR 1","TOBEGIN");
UPDATE ();
END SUB
SUB ToEnd ()
SELECTOR ("SCROLL", "cell", "", "SELECTOR 1","TOEND");

SV_SCADABasic_fr 541
UPDATE ();
END SUB
' Function to update a database variable to provide an
' indication of the current position of the file
' within the Grid.
SUB Update ()
DIM LStart As Integer;
DIM NblMax As Integer;
DIM Nbl As Integer;
LStart = SELECTOR ("GETLISTART", "cell", "", "SELECTOR 1");
Nblmax = SELECTOR ("GETNBLINEMAX", "cell", "", "SELECTOR 1");
Nbl = SELECTOR ("GETNBLINE", "cell", "", "SELECTOR 1");
pcsel = TOS((LStart*100)/(Nblmax - nbl));
END SUB

sub deselect()
SELECTOR ("ALLSELOFF", "cell", "", "SELECTOR 1");
END SUB

sub modeoff() 'mode without selection


SELECTOR ("SELECTMODE", "cell", "", "SELECTOR 1","OFF");
END SUB

sub modemono() 'mode mono selection


SELECTOR ("SELECTMODE", "cell","", "SELECTOR 1", "MONO");
END SUB

sub modemulti() 'mode multi selection


SELECTOR ("SELECTMODE", "cell", "","SELECTOR 1","MULTI");
END SUB

sub modeinput() 'mode direct entering


SELECTOR ("SELECTMODE", "cell", "", "SELECTOR 1", "INPUT");
END SUB

Exemple 3
‘Set the text and background color of a set of cells (from cell 0,0 to 2,2)
SUB PUTCOLOR()
dim col as Long;
dim red as Long;
dim green as Long;
dim blue as Long;
' Set the background color. Calculate the color using the values of the RGB components of
a color
' (each from 0 to 255)
red = TOL(@VARCOL.RED);
green = LOGICAL("SHIFT_LEFT", TOL(@VARCOL.GREEN), 8);
blue = LOGICAL("SHIFT_LEFT", TOL(@VARCOL.BLUE), 16);
col = red + green + blue;
SELECTOR("PUTBACKCOLOR", "GRIDS", "", "GRIDNEW", 0, 0, 2,2, col);
' Set the text color (opposite color of the background).
' Calculate the color using the values of the RGB components of the color (each from 0 to
255)
red = 255 - TOL(@VARCOL.RED);
green = LOGICAL("SHIFT_LEFT", 255 - TOL(@VARCOL.GREEN), 8);
blue = LOGICAL("SHIFT_LEFT", 255 - TOL(@VARCOL.BLUE), 16);
col = red + green + blue;
SELECTOR("PUTTEXTCOLOR", "GRIDS", "", "GRIDNEW", 0, 0, 2,2, col);
END SUB

' Read the background color of a cell (0, 0)


SUB GETCOLOR()

SV_SCADABasic_fr 542
dim col as long;
col = SELECTOR("GETCELLBACKCOLOR", "GRIDS", "", "GRIDNEW", 0, 0);
' Retrieve the RGB components of the color
@VARCOL.RED = TOS(LOGICAL("AND", col, 255));
@VARCOL.GREEN = TOS(LOGICAL("AND", LOGICAL("SHIFT_RIGHT", col, 8), 255));
@VARCOL.BLUE = TOS(LOGICAL("AND", LOGICAL("SHIFT_RIGHT", col, 16), 255));
END SUB

' Retrieve the variable name of the row currently selected (GRID in "Variable tracking"
mode).
SUB GETVARIABLENAME()
@TEXT1= SELECTOR("GETVARNAME", "GRIDS", "", "GRIDNEW", SELECTOR("SELECTLINE", "GRIDS",
"", "GRIDNEW"));
END SUB

SV_SCADABasic_fr 543
Exemple SEQ_BUFFER
Appliqué à

Exemple 1
Cet exemple utilise les modes de la commande SEQ_BUFFER.
'Mode CLEAR or Mode 1 (syntax 1)

SUB seqbufferclear()
'Declare variables
DIM lngbuffer1 as long;
DIM strline as Str;
DIM strResult as Str;
DIM intResult as integer;

lngbuffer1 = ALLOC_BUFFER(110);
strline = "123.34;a string,here;345;123456789;‚t‚\n";
PUT_BUFFER(lngbuffer1, 0, strline);
'Retrieve the buffer contents to display
strResult = CGET_BUFFER(lngbuffer1,0,30,0);
PRINT("The retrieved string is: ",strResult);
'All entries in the buffer are not shown
intResult = SEQ_BUFFER("CLEAR",lngbuffer1) ;
'Retrieve the buffer contents to display
strResult = CGET_BUFFER(lngbuffer1,0,30,0);
PRINT("The retrieved string is: ",strResult);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode PUT_LINE or Mode 2 (syntax 2)

SUB seqbufferputline()
'Declare variables
DIM lngbuffer1 as long;
DIM strline as Str;
DIM strResult as Str;
DIM intResult as integer;
lngbuffer1 = ALLOC_BUFFER(110);
strline = "123.34;a string here;345;123456789;‚t‚\n";
intResult = SEQ_BUFFER("PUT_LINE",lngbuffer1,strline) ;
'Retrieve the buffer contents to display
strResult = CGET_BUFFER(lngbuffer1,0,30,0);
PRINT("The retrieved string is: ",strResult);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode BEGIN or Mode 3 (syntax 3)

SUB seqbufferbegin()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
i = 1;
While ( i != 0)
'Read lines

SV_SCADABasic_fr 544
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve of the buffer in a type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

'Mode END or Mode 4 (syntax 3)

SUB seqbufferend()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("END",lngbuffer1);
SEQ_BUFFER ( "SEEKFIELD" ,-1, lngbuffer1 , "\n");
SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

'Mode NEXTFIELD or Mode 5 (syntax 4)

'Mode PREVFIELD or Mode 6 (syntax 4)

'Mode SEEKFIELD or Mode 7 (syntax 5)

SUB seqbufferfields()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve of buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
SEQ_BUFFER ( "PREVFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);

SV_SCADABasic_fr 545
END SUB

'Mode INSERTFIELD or Mode 8 (syntax 6)

SUB seqbufferinsertfield()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM lngbuffer3 as long;
DIM strResult as Str;
DIM strline as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer3 = ALLOC_BUFFER(110);
lngbuffer3 = ALLOC_BUFFER(110);
strline = "123.34;a string, here;345;123456789;‚t‚\n";
PUT_BUFFER(lngbuffer3, 0, strline);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ( "INSERTFIELD" ,2, lngbuffer1 , "\n", lngbuffer3) ;
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
FREE_BUFFER(lngbuffer3);
END SUB

'Mode CRLFTOCR or Mode 9 (syntax 3)

SUB seqbuffercrltocr()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
intResult = SEQ_BUFFER ("CRLFTOCR",lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

'Mode CRTOCRLF or Mode 10 (syntax 3)

SV_SCADABasic_fr 546
SUB seqbuffercrtocrlf()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
intResult = SEQ_BUFFER ("CRTOCRLF",lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

'Mode LEN or Mode 11 (syntax 3)

SUB seqbufferlen()
'Declare variables
DIM lngbuffer1 as long;
DIM strResult as Str;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("LEN",lngbuffer1);
PRINT(intResult);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode ASCIITOANSI or Mode 12 (syntax 3)

SUB seqbufferasciiansii()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
intResult = SEQ_BUFFER (12,lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve of buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

SV_SCADABasic_fr 547
'Mode ANSITOASCII or Mode 13 (syntax 3)

SUB seqbufferansiiascii()
'Declare variables
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM strResult as Str;
DIM intResult as Integer;
DIM i as integer;
lngbuffer1 = ALLOC_BUFFER(110);
lngbuffer2 = ALLOC_BUFFER(110);
lngbuffer1 = FILETOBUF("tool.txt");
intResult = SEQ_BUFFER ("BEGIN",lngbuffer1);
intResult = SEQ_BUFFER (13,lngbuffer1);
i = 1;
While ( i != 0)
'Read lines
i = SEQ_BUFFER ( "NEXTFIELD" , lngbuffer1 , "\n", lngbuffer2);
'Retrieve buffer as type Str if necessary
strResult = CGET_BUFFER ( lngbuffer2 , 0 , 255 );
PRINT(strResult);
Wend
FREE_BUFFER(lngbuffer1);
FREE_BUFFER(lngbuffer2);
END SUB

Exemple 2
Exemples de la commande SEQ_BUFFER, modes REPLACEFIELD et INSERTFIELD:
SEQ_BUFFER("Clear",hbuf1); 'clear the buffer
Put_Buffer(hbuf1, 0, "123,xyz"); 'insert a string of two fields
PRINT(CGET_BUFFER(hbuf1,0,40,0)); 'shows: 123,xyz
Seq_Buffer("Begin",hbuf1); 'locate pointer at start of buffer
res=SEQ_BUFFER("REPLACEFIELD", 2, hbuf1, ",", "456"); 'insert 456 as field 2
PRINT(CGET_BUFFER(hbuf1,0,40,0)); 'shows: 123,456
res=SEQ_BUFFER("REPLACEFIELD", 2, hbuf1, ",", "456,789"); 'retain: 456, insert: 789
PRINT(CGET_BUFFER(hbuf1,0,40,0)); 'shows: 123,456,789
Opération REPLACEFIELD :
Pour remplacer le champ spécifique "oField_i" avec votre nouveau champ "nField_i", vous pouvez utiliser :
SEQ_BUFFER("REPLACEFIELD", i, Handle, ",", "nField_i");
Opération INSERTFIELD :
Pour insérer votre nouveau champ "nField_i" avant le champ spécifique "oField_i", vous devez utiliser :
SEQ_BUFFER("INSERTFIELD", i, Handle, ",", "nField_i, oField_i");
Pour écrire des textes dans le buffer :
SUB main()
DIM hb As Long; Handle for the buffer
Alloc_Buffer(4096);
Seq_Buffer("PUT_LINE",hb,"POPULATION,23,ID1,0,0,Free_comment");
Seq_Buffer("PUT_LINE",hb,"POPDEF,ID1,TATT1,IN, DOM1");
Seq_Buffer("PUT_LINE",hb,"POPDEF,ID1,TATT1,IN, DOM2");
Seq_Buffer("PUT_LINE",hb,"POPDEF,ID1,TYPE,OUT,4" );
Population("CREATE",hb );
Population("DUMP","ID1") ;'For verification
Station_Filter("APPLY",2,"ID1");
Free_buffer(hb) ;
END SUB
Ce programme boucle à travers une lecture de ligne qui affiche leurs valeurs.

SV_SCADABasic_fr 548
DIM Hdl As Long; ' Contains the string to process
DIM Hdl2 As Long; ' Contains the current line
DIM Hdl3 As Long; ' Contains the current value
SUB Main ()
hdl = 0;
hdl2 = 0;
hdl3 = 0;
END SUB
SUB ReadFields()
DIM i As Integer;
DIM j As Integer;
DIM p As Str;
DIM sep As Str;
DIM sep2 As Str;
If ( hdl == 0 ) Then
hdl = ALLOC_BUFFER ( 16000 );
End If
sep = "\n";
sep2 = ",";
If ( hdl2 == 0 ) Then
hdl2 = ALLOC_BUFFER ( 1000 );
End If
If ( hdl3 == 0 ) Then
hdl3 = ALLOC_BUFFER ( 1000 );
End If
SEQ_BUFFER ( "BEGIN" , hdl ); ' Start position
i = 1;
While ( i != 0) ' Read the lines
i = SEQ_BUFFER ( "NEXTFIELD" , hdl , sep , hdl2, 1000);
p = CGET_BUFFER ( hdl2 , 0 , 255 );
If ( i == 0 ) Then
Break;
End If
j = SEQ_BUFFER ( "BEGIN" , hdl2 );
j = 1;
While ( j != 0)
j = SEQ_BUFFER ( "NEXTFIELD" , hdl2 , sep2 , hdl3 , 1000 );
p = CGET_BUFFER ( hdl3 , 0 , 255 );
PRINT ( p ) ;
Wend
Wend
END SUB

SV_SCADABasic_fr 549
Exemple STATION_FILTER
Appliqué à
Cet exemple utilise la commande STATION_FILTER.
SUB main()
populationcreate();
station_filter("CLEAR",2);
'To check
station_filter("APPLY",2,"POP01");

'To apply to log displays


station_filter("DUMP",2);
END SUB

'Mode CREATE or Mode 1 (syntax 1)

SUB populationcreate()
DIM strString1 as Str;
DIM lngBuffer as long ;

'Preparing the buffer


lngBuffer = ALLOC_BUFFER(4096) ; 'buffer handle
lngBuffer = FILETOBUF("popu1.dat");
population("CREATE",lngBuffer);

'Select variables for domains DOM1 and DOM2


'excluding text variables
free_buffer(lngBuffer) ;
END SUB

'Mode DUMP or Mode 3 (syntax 2)

SUB populationdump()
population("DUMP","POP01");
END SUB

SV_SCADABasic_fr 550
Exemple SUBENDSUB
Appliqué à
Cet exemple montre une main SUB appelant des procédures. Il y a aussi des appels parmi eux, entre
autres des procédures, avec et sans paramètres.
SUB Main()
DIM intResult as integer;

procedure1();
procedure2("parameter1");
intResult = procedure4();
PRINT("Return from Procedure4 = ",intResult);
END SUB

SUB procedure1()
'procedure without parameters
PRINT("Procedure1");
END SUB

SUB procedure2(strParam1)
'procedure with one parameter
PRINT("Procedure2 parameter: ",strParam1);
procedure3("parameter1","parameter2");
END SUB

SUB procedure3(strParam1,strParam2)
'procedure with two parameters
PRINT("Procedure3 parameters: ",strParam1,strParam2);
END SUB

SUB procedure4()
'procedure without parameters
PRINT("Procedure4");
Return(3);
END SUB
Le résultat est :
Procedure1
Procedure2 parameter: parameter1
Procedure3 parameters : parameter1 parameter2
Procedure4
Return from Procedure4 = 3

SV_SCADABasic_fr 551
Exemple SVALA Information d'Alarme
Appliqué à

Exemple 1
Ci-dessous un exemple de la commande SVALA.
Variables de la base de données nécessaires :

• @ALAEND est une variable de la base de données de type ETAT


• @NB_ALARMS est une variable de la base de données de type MESURE

Ce programme nécessite également que les Variables globales soient déclarées :

• DIM hdbuffer comme Long;


• DIM hparam comme Long;

Le mode "Main" doit être lancé en premier pour déclencher un événement avant le lancement du module
SvAla1.
SUB Main()
EVENT("ADDPROG","@ALAEND","ALL>1","sval.SCB","","putfile");
END SUB

SUB SvAla1()
DIM GFilter As STR;
DIM GFormat As STR;
DIM GState1 As STR;
DIM GState2 As STR;
DIM GState3 As STR;
DIM GState4 As STR;
DIM GState5 As STR;
DIM GState6 As STR;
DIM Gminmax As STR;
DIM Gmin As STR;
DIM Gmax As STR;
DIM chParam As STR;
chParam = "";
hdbuffer = ALLOC_BUFFER ( 48000 );
hparam = ALLOC_BUFFER ( 4000 );

' LIMITATION ON LINES


chParam = ADDSTRING(chParam,"0" );
'No. of lines ( 0 - no limitations,
' if this is not the size of the buffer )
chParam = ADDSTRING(chParam , ",");
'field separator

' MODE taking into account MIN & MAX


GMinMax="0";
chParam = ADDSTRING(chParam , GMinMax);
' equivalent - check all Min and Max boxes
chParam = ADDSTRING(chParam , ",");
'field separator

' MIN LEVEL


Gmin = "0";
chParam = ADDSTRING(chParam , Gmin);
'Priority‚ min
chParam = ADDSTRING(chParam , ",");
'field separator

' MAX LEVEL

SV_SCADABasic_fr 552
GMax="29";
chParam = ADDSTRING(chParam , GMax);
'Priority‚ max
chParam = ADDSTRING(chParam , ",");
'field separator

' TYPES OF ALARM


GState1 = "1"; 'taken into account
chParam = ADDSTRING(chParam , GState1);
'taken into account present not ack
chParam = ADDSTRING(chParam , ",");
'field separator
GState2 = "1"; 'taken into account
chParam = ADDSTRING(chParam , GState2);
'present ack
chParam = ADDSTRING(chParam , ",");
'field separator
GState3="1"; 'taken into account
chParam = ADDSTRING(chParam , GState3);
'Hidden not ack
chParam = ADDSTRING(chParam , ",");
'field separator
GState4="1"; 'taken into account
chParam = ADDSTRING(chParam , GState4);
'Inactive
chParam = ADDSTRING(chParam , ",");
'field separator
GState5 = "1"; 'taken into account
chParam = ADDSTRING(chParam , GState5);
'Invalid
chParam = ADDSTRING(chParam , ",");
'field separator
GState6 = "0"; 'not taken into account
chParam = ADDSTRING(chParam , GState6);
'User masked
chParam = ADDSTRING(chParam , ",");
'field separator

' FILTERING
'GFilter = "";
GFilter = "=(#A1 == DOM1)||(#A1 == DOM2)";
'GFilter = "=(#A1 == DOM1)";
chParam = ADDSTRING(chParam,GFilter);
'filter variables with Domain DOM1 or DOM2
chParam = ADDSTRING(chParam , ",");
'field separator

' FORMAT
GFormat="#D/#M/#Y #h:#m:#s #t #@A1 #@A2";
chParam = ADDSTRING(chParam, GFormat );
'Format

' MODIFYING THE BUFFER OF PARAMETERS


PUT_BUFFER(hparam,0,chParam);
PRINT("Extraced by SVALA :",SVALA(1,hdbuffer,hparam,"ALAEND",1,"NB_ALARMS"));
END SUB

SUB putfile()
BUFTOFILE (hdbuffer, "SvAlaResult","USEFULL_PART","Append");
FREE_BUFFER(hdbuffer);
FREE_BUFFER(hparam);
@ALAEND = 0;
END SUB

SV_SCADABasic_fr 553
Exemple 2
Ceci est un autre programme qui extrait une information sur des alarmes. Il utilise les commandes CYCLIC
et EVENT pour activer des fonctions SVALA.
DIM hdl As LONG;
DIM hparam As LONG;
DIM hdl2 As LONG;
DIM hdl3 As LONG;
DIM GFilter As STR;
DIM GFormat As STR;
DIM Gstate1 As STR;
DIM Gstate2 As STR;
DIM Gstate3 As STR;
DIM Gstate4 As STR;
DIM Gstate5 As STR;
DIM Gstate6 As STR;
DIM Gminmax As STR;
DIM Gmin As STR;
DIM Gmax As STR;
DIM Lock As INTEGER;

SUB Main()
hdl = 0;
hdl2 = 0;
hdl3 = 0;
hparam = 0;
Lock = 0 ;
END SUB

SUB AlarmExtract()
If ( Lock == 1 ) Then
PRINT ( "request in progress " );
CYCLIC ( "DEL" , 2 , "SvAla" ,"", "Filter2" );
CYCLIC ( "ADDPROG" , 2 , "SvAla" ,"", "Filter2" );
Return;
End If
Lock = 1 ;
@STATE = 0;
@ANA = 0;
GFilter = "";
GFilter = ADDSTRING(GFilter, @FILTER);
GFormat = "";
GFormat = ADDSTRING(GFormat, @ALAFORMAT);
GMinMax = FORMAT ( "%d" , @MINMAX );
GMin1 = FORMAT ( "%d" , @MIN );
GMin2 = FORMAT ( "%d" , @MAX );
GState1 =FORMAT ( "%d" , @ETAT1 );
GState2 =FORMAT ( "%d" , @ETAT2 );
GState3 =FORMAT ( "%d" , @ETAT3 );
GState4 =FORMAT ( "%d" , @ETAT4 );
GState5 =FORMAT ( "%d" , @ETAT5 );
GState6 =FORMAT ( "%d" , @ETAT6 );
DoAlarmExtract();
END SUB

SUB DoAlarmExtract()
DIM i As Integer;
DIM chParam As Str;
chParam = "";
If ( hdl == 0 ) Then
hdl = ALLOC_BUFFER ( 16000 );
End If
If ( hparam == 0 ) Then

SV_SCADABasic_fr 554
hparam = ALLOC_BUFFER ( 2000 );
End If

' Number of lines. 0 = no limitation


chParam = ADDSTRING(chParam,"0," ); '
' Level filter (0,1 or 2)
chParam = ADDSTRING(chParam , GMinMax
chParam = ADDSTRING(chParam , ",");
' Minimum priority
chParam = ADDSTRING(chParam , Gmin)
chParam = ADDSTRING(chParam , ",");
' Maximum priority
chParam = ADDSTRING(chParam , GMax);
chParam = ADDSTRING(chParam , ",");
' Alarms on and not acknowledged
chParam = ADDSTRING(chParam , GState1);
chParam = ADDSTRING(chParam , ",");
' Alarms on and acknowledged
chParam = ADDSTRING(chParam , GState2);
chParam = ADDSTRING(chParam , ",");
' Alarms off and not acknowledged
chParam = ADDSTRING(chParam , GState3);
chParam = ADDSTRING(chParam , ",");
' Alarms off
chParam = ADDSTRING(chParam , GState4);
chParam = ADDSTRING(chParam , ",");
' Invalid alarms
chParam = ADDSTRING(chParam , GState5);
chParam = ADDSTRING(chParam , ",");
' Alarms masked by the operator
chParam = ADDSTRING(chParam , GState6);
chParam = ADDSTRING(chParam , ",");
' Filter - Alarms of nature ELEC and starting with the name WORKSHOP
GFilter = "=(#t BEG WORKSHOP)&&(#A2 == ELEC)";
chParam = ADDSTRING(chParam,GFilter);
' Line format
chParam = ADDSTRING(chParam, GFormat );
PUT_BUFFER(hparam,0,chParam);
i=EVENT("ADDPROG","ETAT",1,"SVALA","","RcvEvt" );
i = SVALA ( "EXTRACT" , hdl, hparam , "ETAT" , 1 , "ANA" );
If ( i < 1 ) Then
PRINT (" i " , i );
End If
END SUB

SUB RcvEvt()
DIM i As Integer;
DIM j As Integer;
DIM p As Str;
DIM sep As Str;
DIM sep2 As Str;
DIM lig As Integer;
sep = "\n";
sep2 = ",";
If ( hdl2 == 0 ) Then
hdl2 = ALLOC_BUFFER ( 1000 );
End If
If ( hdl3 == 0 ) Then
hdl3 = ALLOC_BUFFER ( 1000 );
End If
SEQ_BUFFER ( "BEGIN" , hdl ); ' Start of buffer
i = 1;
While ( i != 0)

SV_SCADABasic_fr 555
i = SEQ_BUFFER ( "NEXTFIELD" , hdl , sep , hdl2, 1000);
p = CGET_BUFFER ( hdl2 , 0 , 255 );
j = SEQ_BUFFER ( "BEGIN" , hdl2 );
j = 1;
While ( j != 0)
j = SEQ_BUFFER ( "NEXTFIELD" , hdl2 , sep2 , hdl3 , 1000 );
p = CGET_BUFFER ( hdl3 , 0 , 255 );
Wend
Wend
Lock = 0 ;
i=EVENT("DEL","STATE",1);
END SUB

SV_SCADABasic_fr 556
Exemple Extraction SVLOG
Appliqué à
Cette exemple montre l'utilisation de l'instruction SVLOG pour extraire des données consignées dans
l'heure précédente à partir du filtre de consignation LIST1.
' Constants for log data type:

const VALTRANSEV = 1; 'Bit transition


const ALARMACQEV = 2; 'Alarm acknowledge
const WRITECMDEEV = 4; 'Send a command
const WRITECTRLEV = 8; 'Send a control value
const WRITETEXTEV = 16; 'Send text
const WRITERECIPESEV = 32; 'Send a recipe
const STARTEXP = 128; 'Log on
const STOPEXP = 256; 'Log off
const TRANSETAT_0 = 64; 'Bit transition to 0
const TRANSETAT_1 = 512; 'Bit transition to 1
const TRANSETAT_NS = 1024; ' Bit transition to NS
const TRANSETAT_ALLALL = 1600; 'All bit transitions
const TRANSALA_PRSACQ = 2048; 'Alarm On Ack
const TRANSALA_PRSNOACQ = 4096; 'Alarm On Nack
const TRANSALA_ABSACQ = 8192; 'Alarm Off
const TRANSALA_ABSNOACQ = 16384; 'Alarm Off Nack
const TRANSALA_NS = 32768; 'Alarm NS.
const TRANSALA_ACQOPERATOR = 65536; 'Operator ack
const TRANSALA_ALLALL = 63488; 'All alm transitions
const FORCAGEPROG = 131072; 'Run program
const TRANSALA_OFF = 262144; 'Alarm on
const TRANSALA_ON = 524288; 'Alarm off

' Global variable


DIM HandleDest As long; 'Buffer handle

SUB Main()
DIM Ret as long;
DIM HandleParam as long;
DIM Hd1 as double;
DIM Hd2 as double;
DIM Mask as long;
DIM ChParam as STR;
EVENT ("ADDPROG", "Extract.Fin", 1, "LOG", "", "EndExtract");

' Create the filter parameters buffer

HandleParam = alloc_buffer(1000);
Mask=0;
Mask = LOGICAL("OR",Mask, WRITECTRLEV);
Mask = LOGICAL("OR",Mask, TRANSETAT_ALLALL);
Hd1 = DateTimeValue();
Hd2 = Hd1 - 3600000;
chParam = addstring(chParam,"LIST1");
chParam = addstring(chParam,",");
chParam = addstring(chParam, format("%.0f",Hd2));
chParam = addstring(chParam,",");
chParam = addstring(chParam, format("%.0f",Hd1));
chParam = addstring(chParam,",");
chParam = addstring(chParam, "0"); ' Max lines
chParam = addstring(chParam,",");
chParam = addstring(chParam, "0"); ' Direction
chParam = addstring(chParam,",");
chParam = addstring(chParam, TOC(Mask)); ' Mask

SV_SCADABasic_fr 557
chParam = addstring(chParam,",");
chParam = addstring(chParam, "0"); ' Min priority
chParam = addstring(chParam,",");
chParam = addstring(chParam, "15"); ' Max priority
chParam = addstring(chParam,",");
' Selection filter
chParam = addstring(chParam, "=(#A1 == DOM1)||(#A1 == DOM2)");
chParam = addstring(chParam,",");
' Output format
chParam = addstring(chParam, "#h:#m:#s #E #O #T #t #C #c #d #n");
put_buffer(HandleParam,0,chParam);

' Create the output buffer


' ----------------------------------------------------
HandleDest = alloc_buffer(20000);
' Execute the extract function
' ----------------------------------------------------
Ret = SvLog("Extract", HandleDest, HandleParam,
"Extract.Fin","Extract.Status","Extract.Lignes", "Extract.HDeb","Extract.HFin");
If (Ret == 0) then
PRINT ("Error in extract function");
Event ("DelProg", "EndExtract", 1);
End if

' Free buffers


Free_Buffer(HandleParam);
END SUB

' Function to be executed when extraction is complete

SUB EndExtract()
DIM NomApp as STR;
DIM Ret as INTEGER;
PRINT ("Extract complete");
If (Extract.Status == 0) then
PRINT ("All lines extracted");
Else
PRINT ("Buffer full - some data may be missing");
End if
PRINT ("The first archive date is ", DateTimeString(Extract.HDeb));
PRINT ("The last archive date is ", DateTimeString (Extract.HFin));

' Convert the buffer to a file


BUFTOFILE(HandleDest,"C:\\EXTRACT.TXT");
FREE_BUFFER(HandleDest);

' Start WordPad to display the extracted information


NomApp="C:\\WORDPAD.EXE C:\\EXTRACT.TXT";
Ret=APPLICATION("LOAD",NomApp);
END SUB

SV_SCADABasic_fr 558
Exemple Base de Données SVSQL
Appliqué à
Cet exemple utilise un synoptique (SQLTEST) contenant deux zones (TITLE et DATA) dans lesquelles les
résultats de la commande SQL seront placés. L'utilisateur saisit le nom de la base de données dans la
variable texte @DATABASE.NAME et la commande SQL dans la variable @DATABASE.SQL. La variable
@DATABASE.ERROR est utilisée pour reporter à l'utilisateur 'état et la situation d'erreur.
' Program SVSQL
DIM HBase as long; 'Handle for database connection
DIM RetSQL as long; 'Return from SVSQL command

SUB Main ()
HBase = 0;
END SUB

SUB Connect()
@DATABASE.ERROR = AddString("Connecting to database", UCase(@DATABASE.NAME));
Delay(0.1);
ClearArray();
If (HBase > 0) Then
@DATABASE.ERROR = "Database already connected";
Return(0);
Else
If (CmpString(@DATABASE.NAME, "") ==0) Then
@DATABASE.ERROR = "Please enter database name";
Return(0);
Else
HBase = SVSQL("CONNECT",@DATABASE.NAME);
End If
End If
If (HBase > 0) then
@DATABASE.ERROR = "Database connected OK";
Else
@DATABASE.ERROR = "Database failed to connect";
End If
Print(Hbase);
END SUB

SUB Disconnect()
Print (Hbase);
@DATABASE.ERROR = AddString("Disconnecting database " , UCase(@DATABASE.NAME));
Delay(0.1);
If (HBase <= 0) Then
@DATABASE.ERROR = "Database not connected";
Return(0);
End if
RetSQL = SVSQL("DISCONNECT",HBase);
If (RetSQL == -1) Then
@DATABASE.ERROR = "Error disconnecting database";
Return(0);
Else
If (RetSQL == -2) Then
@DATABASE.ERROR = "Bad database handle";
Return(0);
Else
@DATABASE.ERROR = "Disconnected OK";
Hbase = 0;
ClearArray();
End If
End If

SV_SCADABasic_fr 559
END SUB

sub ExecuteSQL()
DIM HBufErr as long; ' Handle of error buffer
DIM HField as long; ' Handle of SQL buffer
DIM NbTableCol As Integer;
DIM NbCol As Long;
DIM i As Integer;
DIM j As Integer;
Const NbMaxRow = 15;
Const NbMaxCol = 5;

@DATABASE.ERROR = "Executing query";


Delay(0.1);
If (HBase <= 0) Then
@DATABASE.ERROR = "Database not connected";
return(0);
End If

' Initialise buffers

HBufErr = alloc_buffer(255);
HField = alloc_buffer(255);
ClearArray();

' Search for information

RetSQL = SVSQL("EXECUTE", HBase, @DATABASE.SQL);


If (RetSQL < 0) Then
RetSQL = SVSQL("ERROR", HBase , HBufErr);
@DATABASE.ERROR = Cget_Buffer(HBufErr, 0, RetSQL, 1);
Return(0);
Else
NbCol = SVSQL("NUMCOL", HBase);
End if
If (NbCol > NbMaxCol) then
NbTableCol = NbMaxCol;
Else
NbTableCol = TOI(NbCol);
End if

' Get column names from table

For (i=1 ; i<=NbTableCol; i++)


RetSQL = SVSQL("GETCOLNAME", HBase , I, HField);
If (RetSQL < 0) then
RetSQL = SVSQL("ERROR", HBase , HBufErr);
@DATABASE.ERROR = Cget_Buffer(HBufErr, 0, RetSQL, 1);
Return(0);
End If
SELECTOR("PUTCELL", "SQLTEST", "", "TITLE", 0, i-1, Cget_Buffer(HField, 0, RetSQL,
1));
Next i;

For (i=NbTableCol+1 ; i<=5; i++)


SELECTOR("PUTCELL", "SQLTEST", "", "TITLE", 0, i-1, "---");
Next i;

' Retrieve values and write to table

For(i=1; i<=NbMaxRow; i++)


RetSQL = SVSQL("FETCH", HBase);

SV_SCADABasic_fr 560
If (RetSQL != 0) Then
Break();
End If
Delay(0.1);
For (j=1 ; j<=NbTableCol; j++)
RetSQL = SVSQL("GETCOL", HBase , j, HField);
SELECTOR("PUTCELL", "SQLTEST", "", "DATA", i-1, j-1, Cget_Buffer(HField, 0, RetSQL,
1));
Next j;
Next i;
@DATABASE.ERROR = "Query complete";
END SUB

SUB ClearArray()
SELECTOR("CLEAR", "SQLTEST", "", "TITLE");
SELECTOR("CLEAR", "SQLTEST", "", "DATA");
END SUB

SV_SCADABasic_fr 561
Exemple Données SVTREND
Appliqué à

Exemple 1
Ce programme extrait des données de tendance (historiques) à partir d'une liste de variables, entre deux
dates.
SUB GetTrend()
DIM d_Date1 As Double;
DIM d_Date2 As Double;
DIM d_Period As Double;
DIM l_Res As Long;
DIM s_Misc As Str;
gn_Ind = 0;
d_Date1 = DATETIMEVALUE("16/02/2003", "08:00:00:000");
d_Date2 = DATETIMEVALUE("17/02/2003", "21:00:00:000");
If ( l_Result == 0 ) Then
l_Result = ALLOC_BUFFER ( 8000 );
End If
d_Period = 3600;
s_Div = " ,,@STATE,@CURVAR";
l_Res = SVTREND ( "GETTREND" , "STATE1,STATE2,MES1,MES2,MES3,MES4,MES5,MES6",
"TREND",d_Date1, d_Date2, d_Period, 2 , l_Result, s_Misc );
END SUB

SUB GetNext()
DIM l_Res As Long;
DIM s As Str;
gn_Ind++;
PRINT ("Pass", gn_Ind );
PRINT ("CURVAR" , @CURVAR );
s = CGET_BUFFER(l_Result , 0 , 1 );
If (CMPSTRING (s, "") != 0) Then
print("WRITE");
BUFTOFILE(l_Result, TOC(gn_Ind), "USEFULL_PART" );
@STATE = 0;
l_Res = SVTREND ( "GETNEXTBUFFER" , l_Result );
End If
END SUB
Lorsque le buffer est plein, la variable état LogVar est positionnée à 1. Ceci autorise un événément
à être déclenché (voir le verbe EVENT) afin de redémarrer l'extraction des données en mémoire.
Lorsque il y a trop de données à extraire, Handle_Result devient nul.

Lorsque DisplayMode est à 1, les données sont extraites en utilisant la liste de variables dans le buffer
Handle_Listvar avec le format défini par Format.

Données Exemple 1
Ceci montre le contenu du buffer, en utilisant une période d'échantillonnage de 1 seconde dans le mode 1.
Il y a 4 noms de variables dans le buffer pointé par ListHandle.
StrVar = STATE1:
20030226145546675,0
20030226145547675,0
20030226145548675,0
20030226145549675,1
20030226145550675,0
20030226145551675,1
StrVar = STATE2:
20030226145546675, 1
20030226145547675, 1

SV_SCADABasic_fr 562
20030226145548675, 0
20030226145549675, 1
20030226145550675, 0
20030226145551675, 0
StrVar = ANA1:
20030226145546675, -0.927184
20030226145547675, -0.927184
20030226145548675, -0.898794
20030226145549675, -0.882948
20030226145550675, -0.882948
20030226145551675, -0.882948
StrVar = ANA2:
20030226145546675, 64.99774
20030226145547675, 65.007904
20030226145548675, 65.018062
20030226145549675, 65.028214
20030226145550675, 65.038361
20030226145551675, 65.038361
Lorsque DisplayMode est à 2, les données échantillonnées de chaque variable sont contenues dans la
même ligne précédée par son horodate.

Données Exemple 2
La période d'échantillonnage est 1000 ms (1 seconde). Il y a 4 noms de variables dans le buffer pointé par
ListHandle.
20030226145546675,0,1,-0.927184,64.99774
20030226145547675,0,1,-0.927184,65.007904
20030226145548675,0,0,-0.898794,65.018062
20030226145549675,1,1,-0.882948,65.028214
20030226145550675,0,0,-0.882948,65.038361
20030226145551675,1,0,-0.882948, 65.038361

Exemple
Cet exemple calcule les températures moyennes, minimales et maximales.
REGISTERS.DAT est un fichier pour trouver les noms des variables mesures qui seront exécutées.

const MAX_VARIABLES = 1;
const BUFSIZE = 10000; ' size of buffer to take the data
dim hDest AS LONG;
dim hNames AS LONG;
dim hBranche AS LONG;
dim hVariables AS LONG;
dim nb_variables AS INTEGER;
dim nbPoints [8] as SINGLE;
dim SumValue [8] as SINGLE;
dim MinValue [8] as SINGLE;
dim MaxValue [8] as SINGLE;
dim AveValue [8] as SINGLE;
dim flagend as INTEGER;
dim filesource as STR;
dim verrou as INTEGER;
sub main ()
hDest = alloc_buffer (BUFSIZE);
filesource = "REGISTERS.DAT";
verrou = 0;
end sub

'
'******************** RequestSvTrend **************************

SV_SCADABasic_fr 563
' Fonction : Prepare les parametres pour le traitement
' Appel : Appel par l'opérateur
' Branche : Non
' Arg : Non
'**************************************************************
'
sub RequestSvTrend ()
if (verrou == 0) then
verrou = 1;
' allocation des buffers
hNames = filetobuf (filesource);
hBranche = filetobuf (filesource);
hVariables = alloc_buffer (1024);
seq_buffer ("BEGIN", hNames);
seq_buffer ("BEGIN", hBranche);
event ("ADDPROG", "BILAN.DONE", 1, "BILANS.TRT", "", "calcul");
@BILAN.DONE = 0;
traitement ();
end if
end sub
'
'******************** Traitement **************************
' Fonction : Prepare la liste des variables a traiter
' Appel : Sub RequestSvTrend
' Branche : Non
' Arg : Non
'**********************************************************
'
sub traitement ()
dim ch as STR;
dim i as INTEGER;
dim offset as INTEGER;
dim datedebut AS DOUBLE;
dim datefin AS DOUBLE;
dim echantillonnage AS DOUBLE;
echantillonnage = 0;
datedebut = DATETIMEVALUE (@BILAN.START.DATE, @BILAN.START.TIME);
datefin = DATETIMEVALUE (@BILAN.END.DATE, @BILAN.END.TIME);
i = 0;
offset = 0;
nb_variables = 0;
' composition d'un buffer contenant n variables
while (i++ < MAX_VARIABLES)
ch = seq_buffer ("NEXTFIELD", hNames, "\n", "STR");
if (cmpstring (ch, "")) then
put_buffer (hVariables, offset, format ("%s,", ch));
offset = offset + len (ch) + 1;
nb_variables++;
else
break;
end if
wend
ch = seq_buffer ("NEXTFIELD", hNames, "\n", "STR");
flagend = (cmpstring (ch, "") == 0);
ch = seq_buffer ("PREVFIELD", hNames, "\n", "STR");
offset--;
' remove last sep
put_buffer (hVariables, offset, "");
svtrend ("GETTREND", hVariables, "", datedebut, datefin, echantillonnage, 2, hDest,
",,BILAN.DONE,");
end sub
'
'******************** Calcul ***************************

SV_SCADABasic_fr 564
'
' Fonction : Traite le buffer resultat
' Appel Evenement : BILAN.DONE
' Branche : Non
' Arg : Non
'*******************************************************
'
sub calcul ()
dim ch as STR;
dim i as INTEGER;
dim hResult as LONG;
dim value as SINGLE;
dim BufLine as LONG;
' Y a t-il des données ?
if (cmpstring (cget_buffer (hDest, 0, 1), "")) then
hResult = seq_buffer ("CRTOCRLF", hDest, "NEW_BUFFER");
seq_buffer ("BEGIN", hResult);
seq_buffer ("SEEKFIELD", 1, hResult, ",");
for (i = 0; i < nb_variables; i++)
value = sval (seq_buffer ("NEXTFIELD", hResult, ",", "STR"));
nbPoints [i] = 0; ' nombre de points trouvés
SumValue [i] = 0; ' somme des valeurs
MinValue [i] = value; ' mini des valeurs
MaxValue [i] = value; ' maxi des valeurs
AveValue [i] = 0; ' moyenne
next
BufLine = alloc_buffer (500);
seq_buffer ("BEGIN", hResult);
while (seq_buffer ("NEXTFIELD", hResult, "\n", BufLine))
CalcStatistics (BufLine);
wend
free_buffer (hResult);
while (svtrend ("GETNEXTBUFFER", hDest))
hResult = seq_buffer ("CRTOCRLF", hDest, "NEW_BUFFER");
seq_buffer ("BEGIN", hResult);
while (seq_buffer ("NEXTFIELD", hResult, "\n", BufLine))
CalcStatistics (BufLine);
wend
free_buffer (hResult);
wend
free_buffer (BufLine);
for (i = 0; i < nb_variables; i++)
' calcul de la moyenne
if (nbPoints [i] != 0) then
AveValue [i] = SumValue [i] / nbPoints [i];
end if
' récupère le nom de la variable (branche)
ch = seq_buffer ("NEXTFIELD", hBranche, "\n", "STR");
' affectation des valeurs dans la BD
?ch.MIN = MinValue [i];
?ch.MAX = MaxValue [i];
?ch.MOY = AveValue [i];
next
end if
' traitement terminé ?
if (flagend) then
verrou = 0;
free_buffer (hNames);
free_buffer (hBranche);
free_buffer (hVariables);
event ("DEL", "BILAN.DONE", 1, "BILANS.TRT", "", "calcul");
' fermeture synoptique de saisie des horaires de début et fin
window ("CLOSE", "BILANS", "");

SV_SCADABasic_fr 565
' ouverture du synoptique des moyennes de températures, mini, maxi
window ("OPEN", "MOYENNES", "");
else
traitement ();
end if
end sub
'
'******************** CalcStatistics **************************
' Fonction : Calcule le cumul
' Appel : Sub Traitement
' Branche : Non
' Arg : Buffer contenant la ligne a traiter
'**************************************************************
'
sub CalcStatistics ( handle )
dim ch as STR;
dim i as INTEGER;
dim flag as INTEGER;
dim value as SINGLE;
i = 0;
flag = 1;
seq_buffer ("BEGIN", handle);
seq_buffer ("SEEKFIELD", 1, handle, ",");
while (flag)
ch = seq_buffer ("NEXTFIELD", handle, ",", "STR");
flag = cmpstring (ch, "");
if ((flag) && cmpstring (ch, "?")) then
' nombre de points valides trouvés
nbPoints [i]++;
' récupère valeur du point
value = sval (ch);
' effectue le cumul
SumValue [i] = SumValue [i] + value;
' récupère le mini
if (value < MinValue [i]) then
MinValue [i] = value;
end if
' récupère le maxi
if (value > MaxValue [i]) then
MaxValue [i] = value;
end if
end if
i++;
wend
end sub

SV_SCADABasic_fr 566
Exemple Information SYSTEM
Appliqué à

Exemple 1
Cet exemple utilise les modes de la commande SYSTEM.
L'exemple nécessite la création d'un utilisateur "user1" avec un mot de passe "pass1".

'Create a control variable of type State: @STATE01


'Mode SETDATE or Mode 1 (syntax 1)

SUB systemsetdate()
'Declare variables
DIM intResult as integer;
'change the system date
intResult = SYSTEM("SETDATE", 28, 06, 2002);
END SUB

'Mode SETTIME or Mode 2 (syntax 2)

SUB systemsettime()
'Declare variables
DIM intResult as integer;
'change the time of the system
intResult = SYSTEM("SETTIME", 21, 03, 00);
END SUB

'Mode GETDATE or Mode 3 (syntax 3)

SUB systemgetdate()
'Declare variables
DIM strResult as Str;
'Retrieve the system date
strResult = SYSTEM("GETDATE");
PRINT("GETDATE : ",strResult);
END SUB

'Mode GETTIME or Mode 4 (syntax 3)

SUB systemgettime()
'Declare variables
DIM strResult as Str;
'Retrieve the system time
strResult = SYSTEM("GETTIME");
PRINT("GETTIME : ",strResult);
END SUB

'Mode SETREGION or Mode 5 (syntax 4)

SUB systemsetregion()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("SETREGION",1);
PRINT("SETREGION : ",intResult);
END SUB

'Mode SETSYSREGION or Mode 6 (syntax 4)

SUB systemsetsysregion()
'Declare variables
DIM intResult as integer;

SV_SCADABasic_fr 567
intResult = SYSTEM("SETSYSREGION",1);
PRINT("SETSYSREGION : ",intResult);
END SUB

'Mode GETREGION or Mode 7 (syntax 7)

SUB systemgetregion()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("GETREGION");
PRINT("GETREGION : ",intResult);
END SUB

'Mode GETSYSREGION or Mode 8 (syntax 7)

SUB systemgetsysregion()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("GETSYSREGION");
PRINT("GETSYSREGION : ",intResult);
END SUB

'Mode SYSTEM or Mode 10 (syntax 5)

SUB systemsystem()
'Declare variables
DIM intResult as integer;
'starting calculatrice windows
intResult = SYSTEM("SYSTEM","%SystemRoot%\\System32\\calc.exe");
PRINT("SYSTEM : ",intResult);
END SUB

'Mode LOGIN or Mode 11 (syntax 6)

SUB systemlogin()
'Declare variables
DIM intResult as integer;
'starting calculatrice windows
intResult = SYSTEM("LOGIN","user1", "pass1");
PRINT("LOGIN : ",intResult);
END SUB

'Mode LOGOUT or Mode 12 (syntax 7)

SUB systemlogout()
'Declare variables
DIM intResult as integer;
'starting calculatrice windows
intResult = SYSTEM("LOGOUT");
PRINT("LOGOUT : ",intResult);
END SUB

'Mode SETDATETIME or Mode 13 (syntax 8)

SUB systemsetdatetime()
'Declare variables
DIM intResult as integer;
'starting calculatrice windows
intResult = SYSTEM("SETDATETIME","28/06/02","21:38:00");
PRINT("SETDATETIME : ",intResult);
END SUB

'Mode LANGUAGE or Mode 14 (syntax 7)

SV_SCADABasic_fr 568
SUB systemlanguage()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("LANGUAGE");
PRINT("LANGUAGE : ",intResult);
END SUB

'Mode USER or Mode 15 (syntax 9)

SUB systemuser()
'Declare variables
DIM strResult as Str;
strResult = SYSTEM("USER","NAME");
PRINT("USER NAME : ",strResult);
END SUB
'Mode USER or Mode 15 (syntax 1)0

SUB systemuser2()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("USER","RIGHTS1");
PRINT("USER RIGHTS1 : ",intResult);
PRINT("USER RIGHTS2 : ",SYSTEM("USER","RIGHTS2"));
PRINT("USER RIGHTS3 : ",SYSTEM("USER","RIGHTS3"));
PRINT("USER RIGHTS4 : ",SYSTEM("USER","RIGHTS4"));
PRINT("USER RIGHTS5 : ",SYSTEM("USER","RIGHTS5"));
PRINT("USER RIGHTS6 : ",SYSTEM("USER","RIGHTS6"));
END SUB

'Mode EXIT or Mode 16 (syntax 7)

SUB systemxit()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("EXIT");
PRINT("EXIT : ",intResult);
END SUB

'Mode REPAINT or Mode 17 (syntax 7)

SUB systemrepaint()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("REPAINT");
PRINT("REPAINT : ",intResult);
END SUB

'Mode PASSWORD or Mode 21 (syntax 1)1

SUB systempassword()
'Declare variables
DIM strResult as Str;
strResult = SYSTEM("PASSWORD","user1");
PRINT("PASSWORD : ",strResult);
END SUB

'Mode USERNAME or Mode 22 (syntax 1)1

SUB systemusername()
'Declare variables
DIM strResult as Str;
strResult = SYSTEM("USERNAME","pass1");

SV_SCADABasic_fr 569
PRINT("USERNAME : ",strResult);
END SUB

'Mode MKDIR or Mode 23 (syntax 1)2

SUB systemmkdir()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("MKDIR","e:\\test1");
PRINT("MKDIR : ",intResult);
END SUB

'Mode RMDIR or Mode 24 (syntax 1)2

SUB systemrmdir()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("RMDIR","e:\\test1");
PRINT("RMDIR : ",intResult);
END SUB

'Mode OPERATORMODE or Mode 25 (syntax 1)4

SUB systemoperatormode()
'Declare variables
DIM intResult as integer;
'dans a Log Display
'on valide l'enregistrement of l'op‚rateur courant
'intResult = SYSTEM("OPERATORMODE", 1);
PRINT("OPERATORMODE : ",intResult);
@STATE01=1;
@STATE01=0;
'dans a Log Display
'on inhibe l'enregistrement of l'op‚rateur courant
intResult = SYSTEM("OPERATORMODE", 0);
'PRINT("OPERATORMODE : ",intResult);
@STATE01=0;
@STATE01=1;
END SUB

'Mode GETDRIVETYPE or Mode 26 (syntax 1)3

SUB systemgetdrivetype()
'Declare variables
DIM intResult as integer;
intResult = SYSTEM("GETDRIVETYPE", "C:");
PRINT("GETDRIVETYPE : ",intResult);
END SUB

'Mode GETDISKSIZE or Mode 27 (syntax 1)3

SUB systemgetdisksize()
'Declare variables
DIM lngResult as long;
lngResult = SYSTEM("GETDISKSIZE", "C:");
PRINT("GETDISKSIZE : ",lngResult);
END SUB

'Mode GETDISKFREESPACE or Mode 28 (syntax 1)3

SUB systemgetdiskfreespace()
'Declare variables
DIM lngResult as long;

SV_SCADABasic_fr 570
lngResult = SYSTEM("GETDISKFREESPACE", "C:");
PRINT("GETDISKFREESPACE : ",lngResult);
END SUB

'Mode GETDIRECTORYSIZE or Mode 29 (syntax 1)3


--
SUB systemgetdirectorysize()
'Declare variables
DIM lngResult as long;
lngResult = SYSTEM("GETDIRECTORYSIZE", "C:\\WINNT");
PRINT("GETDIRECTORYSIZE : ",lngResult);
END SUB

Exemple 2
Cet exemple modifie les divers paramètres système.
Modification du temps système en avançant d'une heure :
SUB Summer ()
Const OneHour = 3600000;
DIM LongTime As Double;
DIM NewTime As Str;
DIM NewDate As Str;
LongTime = DateTimeValue () + OneHour;
NewDate = DateTimeString(LongTime, "D");
NewTime = DateTimeString(LongTime, "T");
SYSTEM(13, NewDate, NewTime);
END SUB

Connexion d'un utilisateur au système :


SUB Boss ()
SYSTEM("LOGIN", "superuser", "bigboss");
END SUB

SUB AutoOff ()
If (Activity == 0) Then
SYSTEM("LOGOUT");
End If
END SUB ()
Gestion d'un système multi-écrans :
' START.PVB Loaded on startup of system
SUB Main ()
Program("PRELOAD", "setreg.pvb", "");
SYSTEM("SETSYSREGION", 2); ' two screens
END SUB

' SETREG.PVB
SUB Main ()
END SUB

SUB LeftWin (WinName)


SYSTEM("SETREGION", 1); ' Select left screen
WINDOW("OPEN", WinName);
END SUB

SUB RightWin (WinName)


SYSTEM("SETREGION", 2); ' Select right screen
WINDOW("OPEN", WinName);
END SUB

SV_SCADABasic_fr 571
Exemple TEMPORARY_DB
Appliqué à
Cet exemple illustre les modes de la commande TEMPORARY_DB.
'Mode OFF or Mode 0 (syntax 1)

SUB temporarydboff()
DIM intResult as integer;
intResult = TEMPORARY_DB("OFF");
END SUB

'Mode ON or Mode 1 (syntax 1)

SUB temporarydbon()
'enables creation of temporary variables in animations and symbols.
DIM intResult as integer;
intResult = TEMPORARY_DB("ON");
END SUB

'Mode ADDBIT or Mode 2 (syntax 2)

SUB temporarydbaddbit()
DIM intResult as integer;
intResult = TEMPORARY_DB("ADDBIT", "@STATEAB03", "label‚ language 1", "label‚ language
2");
END SUB

'Mode ADDREG or Mode 3 (syntax 3)

SUB temporarydbaddreg()
DIM intResult as integer;
intResult = TEMPORARY_DB("ADDREG", "@REGISTER01", "label‚ language 1", "label‚ language
2", -20, 35, "##.##u", "øC");
END SUB

'Mode ADDTXT or Mode 4 (syntax 4)

SUB temporarydbaddtxt()
DIM intResult as integer;
intResult = TEMPORARY_DB("ADDTXT", "@TEXTE01", "label‚ language 1", "label‚ language 2",
32);
intResult = TEMPORARY_DB("ADDTXT", "@TEXTE02", "label‚ language 1", "label‚ language 2",
32);
END SUB

SV_SCADABasic_fr 572
Exemple TEXTVAR
Appliqué à

Exemple 1
Cet exemple illustre les modes de la commande TEXTVAR.
'Uses a file called "ReadMe.txt" stored
' in the TP folder of your current project
'Database variables:
'TEXT01 of type TEXT
'TEXT02 of type TEXT

SUB main()
textvarbuftotext();
textvartexttobuf();
textvarfiletotext();
textvartexttofile();
textvartextcompare();
textvartextcopy();
textvartextlen();
END SUB

'Mode BUFTOTEXT or Mode 1 (syntax 1)

SUB textvarbuftotext()
DIM IntResult as integer;
DIM lngbuffer1 as long;
lngbuffer1 = FILETOBUF("ReadMe.txt");
IntResult = TEXTVAR("BUFTOTEXT", "TEXT01", lngbuffer1, 0, 0, 15);
free_buffer(lngbuffer1);
END SUB

'Mode TEXTTOBUF or Mode 2 (syntax 1)

SUB textvartexttobuf()
DIM IntResult as integer;
DIM strResult as Str;
DIM lngbuffer1 as long;
lngbuffer1 = ALLOC_BUFFER(250);
IntResult = TEXTVAR("TEXTTOBUF", "TEXT01", lngbuffer1, 0, 0, 15);
strResult = CGET_BUFFER(lngbuffer1,0,15,0);
PRINT("The returned string is: ",strResult);
free_buffer(lngbuffer1);
END SUB

'Mode FILETOTEXT or Mode 3 (syntax 2)

SUB textvarfiletotext()
DIM IntResult as integer;
IntResult = TEXTVAR("FILETOTEXT", "TEXT02", "ReadMe.txt", 0, 0, 15);
END SUB

'Mode TEXTTOFILE or Mode 4 (syntax 3)

SUB textvartexttofile()
DIM IntResult as integer;
DIM lngbuffer1 as long;
lngbuffer1 = FILETOBUF("ReadMe.txt");
IntResult = TEXTVAR("TEXTTOFILE", "TEXT01","text1.txt",0, 0, 15);
END SUB

'Mode TEXTCOMPARE or Mode 5 (syntax 4)

SV_SCADABasic_fr 573
SUB textvartextcompare()
PRINT(TEXTVAR("TEXTCOMPARE","TEXT01","TEXT02",4));
'Compare the first 4 characters
END SUB

'Mode TEXTCOPY or Mode 6 (syntax 5)

SUB textvartextcopy()
DIM intResult as integer;
intResult = TEXTVAR("TEXTCOPY","TEXT01","TEXT03");
END SUB

'Mode TEXTLEN or Mode 7 (syntax 6)

SUB textvartextlen()
DIM intResult as integer;
intResult = TEXTVAR("TEXTLEN","TEXT01");
PRINT("Length of the character string: ",intResult);
END SUB

Exeample 2
Cet exemple configure et affiche des variables texte :
SUB Main()
'This subroutine assumes that the mimic contains
' these text variables: mytext and mytext2.
'The file test.txt in project folder TP contains
' between 4 and 50 characters (here: abc,123).
'It contains short delays, so pause before showing results,
' allocate a memory buffer and load it from a text file.
DIM hbuf as long;
PRINT("Open file result: ", FOPEN("test.txt", "r+"));
PRINT("Put to file result: ", FPUTS("test.txt", "abc,123"));
hbuf = FILETOBUF("test.txt");
PRINT("Buffer contains: ", CGET_BUFFER(hbuf, 0, 50, 0));
'clear the text variables
@mytext = "";
@mytext2 = "";
DELAY(0.1); 'to reset the variables
PRINT("Text variables mytext: ", @mytext, "; mytext2: ", @mytext2);
'all buffer to first variable
PRINT("BufToText all: ", TEXTVAR( "BUFTOTEXT", "mytext", hbuf, 0, 0, 0), " chars.");
DELAY(0.1); 'to reset the variables
PRINT("mytext: ", @mytext, "; mytext2: ", @mytext2);
'copy from variable mytext (4 chars. from offset 3) to end of file
PRINT("TextToFile: ", TEXTVAR("TEXTTOFILE", "mytext", "test.txt", 3, 1, 4), " chars.");
'3 characters from buffer at offset 4 to other variable
PRINT("BufToText: ", TEXTVAR("BUFTOTEXT", "mytext2", hbuf, 0, 4, 3), " chars.");
DELAY(0.1); 'to reset the variables
PRINT("Text variables mytext: ", @mytext, "; mytext2: ", @mytext2);
'compare the first 4 characters of the variables
PRINT("Compare result (0 means equal): ", TEXTVAR("TEXTCOMPARE", "mytext", "mytext2",
4));
'copy 3 chars. from file to start of variable
PRINT("FileToText: ", TEXTVAR("FILETOTEXT", "mytext2", "test.txt", 0, 8, 3), "
chars.");
DELAY(0.1); 'to reset the variables
PRINT("Text variable mytext2: ", @mytext2);
'copy variable mytext2 to mytext
PRINT("TextCopy result: ", TEXTVAR("TEXTCOPY", "mytext", "mytext2"));
DELAY(0.1); 'to reset the variables
PRINT("Text variables mytext: ", @mytext, "; mytext2: ", @mytext2);

SV_SCADABasic_fr 574
PRINT("Compare result (0 means equal): ", TEXTVAR("TEXTCOMPARE", "mytext", "mytext2",
4));
'Close the file and release the buffer
FCLOSE("test.txt");
FREE_BUFFER(hbuf);
END SUB

Résultats
Ce programme affiche les résultats dans la fenêtre de Mise au Point des Programmes (F9, Montrer
résultats).
Open file result: 1
Put to file result: 1
Buffer contains: abc,123,123
Text variables mytext: ; mytext2:
BufToText all: 11 chars.
mytext: abc,123,123; mytext2:
TextToFile: 4 chars.
BufToText: 3 chars.
Text variables mytext: abc,123,123; mytext2: 123
Compare result (0 means equal): 1
FileToText: 3 chars.
Text variable mytext2: 123
TextCopy result: 1
Text variables mytext: 123; mytext2: 123
Compare result (0 means equal): 0

SV_SCADABasic_fr 575
Exemple TREEVIEW
Appliqué à
This example contains a set of functions to support a pair of Tree-view form controls using the TREEVIEW
instruction.
SUB Main()
END SUB

'declare variables:
SUB tvwSel()
DIM lRet As Long;
DIM stvwText As Str;
DIM stvwText1 As Str;
DIM stvwData As Str;
DIM stvwData1 As Str;

'retrieve contents of selected item in 1st control:


lRet = TREEVIEW ( "GETSELECTEDINDEX", "ctrl","","tvw" );
TREEVIEW ( "SETSELECTEDINDEX", "ctrl","","tvw1", lRet);
stvwText = TREEVIEW( "GETTEXT", "ctrl","","tvw", lRet);
stvwText1 = TREEVIEW( "GETTEXT", "ctrl","","tvw1", lRet);
stvwData = TREEVIEW( "GETUSERDATA", "ctrl","","tvw", lRet);
stvwData1 = TREEVIEW( "GETUSERDATA", "ctrl","","tvw1", lRet);

'put its contents in a frame:


SET ( "tvwText" , stvwText);
SET("tvwText1", stvwText1);
SET("tvwData", stvwData);
SET("tvwData1" , stvwData1);
SET("tvwCount" , TREEVIEW( "COUNT", "ctrl","","tvw") );
SET("tvwCount1" , TREEVIEW( "COUNT", "ctrl","","tvw1"));
SENDLIST ("BLOC");

'concatenate and load contents into a form control of each kind:


COMBOBOX ( "LOAD", "ctrl","","cbx2", ADDSTRING("cbx",stvwData));
LISTBOX ( "LOAD", "ctrl","","lbx2", ADDSTRING("lbx",stvwData));
CHECKLIST ( "LOAD", "ctrl","","chk2", ADDSTRING("chk",stvwData));
OPTIONLIST ( "LOAD", "ctrl","","opt2", ADDSTRING("opt",stvwData));
TREEVIEW ( "LOAD", "ctrl","","tvw2", ADDSTRING("tvw",stvwData));
END SUB

'retrieve content of selected item in 2nd control:


SUB tvwSel1()
DIM lRet As Long;
DIM stvwText As Str;
DIM stvwText1 As Str;
DIM stvwData As Str;
DIM stvwData1 As Str;
lRet = TREEVIEW( "GETSELECTEDINDEX", "ctrl","","tvw1" );
TREEVIEW( "SETSELECTEDINDEX", "ctrl","","tvw", lRet);
stvwText = TREEVIEW( "GETTEXT", "ctrl","","tvw", lRet);
stvwText1 = TREEVIEW( "GETTEXT", "ctrl","","tvw1", lRet);
stvwData = TREEVIEW( "GETUSERDATA", "ctrl","","tvw", lRet);
stvwData1 = TREEVIEW( "GETUSERDATA", "ctrl","","tvw1", lRet);

'put its contents in a frame:


lRet = TREEVIEW( "COUNT", "ctrl","","tvw1");
SET ( "tvwText" , stvwText);
SET("tvwText1", stvwText1);
SET("tvwData", stvwData);
SET("tvwData1" , stvwData1);
SET("tvwCount" , TREEVIEW( "COUNT", "ctrl","","tvw") );

SV_SCADABasic_fr 576
SET("tvwCount1" , TREEVIEW( "COUNT", "ctrl","","tvw1"));
SENDLIST ("BLOC");
END SUB

'select 2nd item:


SUB setSeltvw()
DIM lRet As Long;
TREEVIEW( "SETSELECTEDINDEX", "ctrl","","tvw", 2);
END SUB

SV_SCADABasic_fr 577
Exemple Affichage TREND
Appliqué à
Dans l'exemple suivant, une fenêtre nommée BigTrend contient une fenêtre de tendance identifiée comme
TRN1.
SUB Checkmode () ' Check current mode for trend
DIM res AS INTEGER;
res = TREND("GETTYPE", "BigTrend", "", "trn1", 1);
IF (res == 2) THEN
trend.type =REAL ();
ELSE
trend.type = HIST ();
END IF
END SUB
SUB REAL () ' Change trend to real time
TREND("SETTYPE", "BigTrend", "", "trn1", 0, 1);
RETURN ("RealTime");
END SUB
SUB HIST () ' Change trend to historic
TREND(1, "BigTrend", "", "trn1", 0, 2);
RETURN ("Historic");
END SUB
SUB PERIOD2 () ' Double the trend period
DIM TrendPeriod AS DOUBLE;
TrendPeriod = TREND(7, "BigTrend", "", "trn1");
TREND(6, "BigTrend", "trn1", "", (TrendPeriod*2));
END SUB
SUB PERIOD1 () ' Half the trend period
DIM TrendPeriod AS DOUBLE;
TrendPeriod = TREND(7, "BigTrend", "", "trn1");
TREND(6, "BigTrend", "", "trn1", (TrendPeriod/2));
END SUB
SUB SCROLLPLUS100 () 'Scroll trend forward 100%
TREND (10, "BigTrend", "", "trn1", 100);
END SUB
SUB SCROLLMINUS100 () 'Scroll trend back 100%
TREND (10, "BigTrend", "", "trn1", -100);
END SUB
SUB SCROLLPLUS10 () 'Scroll trend forward 10%
TREND (10, "BigTrend", "", "trn1", 10);
END SUB
SUB SCROLLMINUS10 () 'Scroll trend back 100%
TREND (10, "BigTrend", "", "trn1", -10);
END SUB

SV_SCADABasic_fr 578
Exemple VARIABLE
Appliqué à

Exemple 1
Cet exemple illustre chaque mode de la commande VARIABLE et imprime les résultats dans un panneau
de déboguage du gestionnaire de programme.
'Mode STATUS or Mode 1 (syntax 1)

SUB variablestatus()
PRINT("--STATUS @STATE01--");
PRINT("EXIST = ",VARIABLE("STATUS","@STATE01",1));
PRINT("VALID = ",VARIABLE("STATUS","@STATE01",2));
PRINT("MASK = ",VARIABLE("STATUS","@STATE01",3));
PRINT("ENABLE = ",VARIABLE("STATUS","@STATE01",4));
PRINT("COM = ",VARIABLE("STATUS","@STATE01",5));
PRINT("HDATE = ",VARIABLE("STATUS","@STATE01",6));
END SUB

'Mode MASK or Mode 2 (syntax 2)

SUB variablemask() PRINT("--MASK @STATE01--"); PRINT("USERPROG1 = ",VARIABLE ("MASK",


"@STATE01", 1)); PRINT("USERPROG2 = ",VARIABLE ("MASK", "@STATE01", 2)); PRINT("USERPROG3
= ",VARIABLE ("MASK", "@STATE01", 3)); ->PRINT("USERPROG3 = ",VARIABLE ("MASK",
"@STATE01", 4); PRINT("USERPROG4 = ",VARIABLE ("MASK", "@STATE01", 4));->PRINT("USERPROG4
= ",VARIABLE ("MASK", "@STATE01", 8)); PRINT("OPERATOR = ",VARIABLE ("MASK", "@STATE01",
4));-> PRINT("OPERATOR = ",VARIABLE ("MASK", "@STATE01", 16)); END SUB 'Mode UNMASK or
Mode 3 (syntax 2) SUB variableunmask() PRINT("--UNMASK @STATE01--"); PRINT("USERPROG1 =
",VARIABLE ("UNMASK", "@STATE01", 1)); PRINT("USERPROG2 = ",VARIABLE ("UNMASK",
"@STATE01", 2)); PRINT("USERPROG3 = ",VARIABLE ("UNMASK", "@STATE01", 3));-
>PRINT("USERPROG3 = ",VARIABLE ("UNMASK", "@STATE01", 4)); PRINT("USERPROG4 = ",VARIABLE
("UNMASK", "@STATE01", 4));-> PRINT("USERPROG4 = ",VARIABLE ("UNMASK", "@STATE01", 8));
PRINT("OPERATOR = ",VARIABLE ("UNMASK", "@STATE01", 4));-> PRINT("OPERATOR = ",VARIABLE
("UNMASK", "@STATE01", 16)); END SUB

'Mode ENABLE or Mode 4 (syntax 3)

SUB variableenable()
PRINT("--ENABLE @STATE01--");
PRINT("ENABLE = ",VARIABLE ("ENABLE","STATE01"));
END SUB

'Mode DISABLE or Mode 5 (syntax 3)

SUB variabledisable()
PRINT("--DISABLE @STATE01--");
PRINT("DISABLE = ",VARIABLE ("DISABLE","STATE01"));
END SUB

'Mode LONGLABEL or Mode 6 (syntax 4)

SUB variablelonglabel()
PRINT("--LONGLABEL @STATE01--");
PRINT("LONGLABEL = ",VARIABLE ("LONGLABEL","STATE01"));
END SUB

'Mode ASSOCLABEL or Mode 7 (syntax 4)

SUB variableassoclabel()
PRINT("--ASSOCLABEL @STATE01--");
PRINT("ASSOCLABEL = ",VARIABLE ("ASSOCLABEL","STATE01"));
END SUB

SV_SCADABasic_fr 579
'Mode SIMU or Mode 8 (syntax 5)

SUB variablesimuon()
PRINT("--SIMU @STATE02--");
PRINT("SIMU ON= ",VARIABLE ("SIMU","STATE02",1));
END SUB
SUB variablesimuoff()
PRINT("--SIMU @STATE02--");
PRINT("SIMU OFF= ",VARIABLE ("SIMU","STATE02",0));
END SUB

'Mode DOMAIN or Mode 9 (syntax 4)

SUB variabledomain()
PRINT("--DOMAIN @STATE01--");
PRINT("DOMAIN = ",VARIABLE ("DOMAIN","STATE01"));
END SUB

'Mode Nature or Mode 10 (syntax 4)

SUB variableNature()
PRINT("--Nature @STATE01--");
PRINT("Nature = ",VARIABLE ("Nature","STATE01"));
END SUB

'Mode UNIT or Mode 11 (syntax 4)

SUB variableunit()
PRINT("--UNIT @REGISTER01--");
PRINT("UNIT = ",VARIABLE ("UNIT","REGISTER01"));
END SUB

'Mode NUMBER or Mode 12 (syntax 6)

SUB variablenumber()
PRINT("--NUMBER @REGISTER01--");
PRINT("NUMBER = ",VARIABLE ("NUMBER","REGISTER01"));
END SUB

'Mode THRESHOLD_GETTYPE or Mode 13 (syntax 3)

SUB variablethresholdgettype()
PRINT("--THRESHOLD_GETTYPE @REGISTER01--");
PRINT("THRESHOLD_GETTYPE = ",VARIABLE ("THRESHOLD_GETTYPE","REGISTER01"));
END SUB

'Mode THRESHOLD_GETVALUE or Mode 14 (syntax 7)

SUB variablethresholdgetvalue()
PRINT("--THRESHOLD_GETVALUE @REGISTER01--");
PRINT("THRESHOLD_GETVALUE = ",VARIABLE ("THRESHOLD_GETVALUE","REGISTER01", 1));
END SUB

'Mode THRESHOLD_SETVALUE or Mode 15 (syntax 8)

SUB variablethresholdsetvalue()
DIM intValue as integer;
intValue= 8;
PRINT("--THRESHOLD_SETVALUE @REGISTER01--");
PRINT("THRESHOLD_SETVALUE = ",VARIABLE ("THRESHOLD_SETVALUE","REGISTER01",1,intValue,1));
END SUB

SV_SCADABasic_fr 580
'Mode BATT or Mode 22 (syntax 9)

SUB variablebatt()
PRINT("--BATT @REGISTER01--");
PRINT("BATT = ",VARIABLE ("BATT","REGISTER01",2));
END SUB

'Mode TATT or Mode 23 (syntax 10)

SUB variabletatt()
PRINT("--TATT @REGISTER01--");
PRINT("TATT = ",VARIABLE ("TATT","REGISTER01",3));
END SUB

'Mode WRITE or Mode 24 (syntax 11)

SUB variablewrite()
PRINT("--WRITE--");
'PRINT("WRITE = ",VARIABLE ("WRITE",0)); 'WRITE OFF
PRINT("WRITE = ",VARIABLE ("WRITE",1)); 'WRITE ON
END SUB

'Mode LOCKTONODE or Mode 25 (syntax 12)

SUB variablelocktonode()
PRINT("--LOCKTONODE--");
'Lock messages to station 2
PRINT("LOCKTONODE = ",VARIABLE ("LOCKTONODE",2));
END SUB

'Mode UNLOCKTONODE or Mode 26 (syntax 12)

SUB variableunlocktonode()
PRINT("--UNLOCKTONODE--");
'Unlock messages to station no. 2
PRINT("UNLOCKTONODE = ",VARIABLE ("UNLOCKTONODE",2));
END SUB

'Mode FLOWPARAMTONODE or Mode 27 (syntax 13)

'Control all variable for remote client station no.2


' with a stopping threshold of 100 and activation threshold of 150
SUB variableFlowParamToNode()
VARIABLE("FLOWPARAMTONODE",2,100,150,15);
END SUB

'Control of register and text variables


' for the client station no.5,
' with a stopping threshold of 50 and activation threshold of 60
SUB variableFlowParamToNode2()
VARIABLE("FLOWPARAMTONODE",5,50,60,12);
END SUB

'Mode IMPORTBUFFER or Mode 28 (syntax 14)

SUB variableimportbuffer()
DIM lngbuffer1 as long;
lngbuffer1 = FILETOBUF("var.txt");
PRINT("--IMPORTBUFFER--");
PRINT("IMPORTBUFFER = ",VARIABLE ("IMPORTBUFFER",lngbuffer1));
FREE_BUFFER(lngbuffer1);
END SUB

SV_SCADABasic_fr 581
'Mode IMPORTFILE or Mode 29 (syntax 15)

SUB variableimportfile()
PRINT("--IMPORTFILE--");
PRINT("IMPORTFILE = ",VARIABLE ("IMPORTFILE","var.txt"));
END SUB

'Mode STARTWATCHLIST or Mode 30 (syntax 16)

'Mode STOPWATCHLIST or Mode 31 (syntax 17)

SUB variablestartwatchlist()
DIM lngbuffer1 as long;
DIM lngbuffer2 as long;
DIM intResult as integer;
lngbuffer1 = FILETOBUF("var2.txt");
PRINT("--STARTWATCHLIST--");
lngbuffer2 = VARIABLE("STARTWATCHLIST","",lngbuffer1,"STATE02",1));
intResult = VARIABLE("STOPWATCHLIST",lngbuffer2);
FREE_BUFFER(lngbuffer1);
END SUB

'Mode GET_LONG_IN_DB or Mode 32 (syntax 18)

SUB variablegetlongindb()
PRINT("--GET_LONG_IN_DB--");
PRINT("GET_LONG_IN_DB = ",VARIABLE ("GET_LONG_IN_DB","REGISTER01"));
END SUB

'Mode GET_DOUBLE_IN_DB or Mode 33 (syntax 19)

SUB variablegetdoubleindb()
PRINT("--GET_DOUBLE_IN_DB--");
PRINT("GET_DOUBLE_IN_DB = ",VARIABLE ("GET_DOUBLE_IN_DB","REGISTER01"));
END SUB

'Mode GET_PHYSICAL_MIN or Mode 34 (syntax 19)

SUB variablegetphysicalmin()
PRINT("--GET_PHYSICAL_MIN--");
PRINT("GET_PHYSICAL_MIN = ",VARIABLE ("GET_PHYSICAL_MIN","REGISTER01"));
END SUB

'Mode GET_PHYSICAL_MAX or Mode 35 (syntax 19)

SUB variablegetphysicalmax()
PRINT("--GET_PHYSICAL_MAX--");
PRINT("GET_PHYSICAL_MAX = ",VARIABLE ("GET_PHYSICAL_MAX","REGISTER01"));
END SUB

'Mode GET_CONTROL_MIN or Mode 36 (syntax 19)

SUB variablegetcontrolmin()
PRINT("--GET_CONTROL_MIN--");
PRINT("GET_CONTROL_MIN = ",VARIABLE ("GET_CONTROL_MIN","REGISTER01"));
END SUB

'Mode GET_CONTROL_MAX or Mode 37 (syntax 19)

SUB variablegetcontrolmax()
PRINT("--GET_CONTROL_MAX--");
PRINT("GET_CONTROL_MAX = ",VARIABLE ("GET_CONTROL_MAX","REGISTER01"));

SV_SCADABasic_fr 582
END SUB

'Mode SETBATT or Mode 38 (syntax 20)

SUB variablesetbatt()
PRINT("--SETBATT @REGISTER01--");
PRINT("SETBATT = ",VARIABLE ("SETBATT","REGISTER01",2));
END SUB

'Mode SETTATT or Mode 39 (syntax 21)

SUB variablesettatt()
PRINT("--SETTATT @REGISTER01--");
PRINT("SETTATT = ",VARIABLE ("SETTATT","REGISTER01",3));
END SUB

'Mode SAVE or Mode 40 (syntax 22)

SUB variablesave()
PRINT("--SAVE *--");
PRINT("SAVE = ",VARIABLE ("SAVE"));
END SUB

'Mode GET_ALARM_PRIORITY or Mode 42 (syntax 3)

SUB variablegetalarmpriority()
PRINT("--GET_ALARM_PRIORITY @ALARM01--");
PRINT("GET_ALARM_PRIORITY = ",VARIABLE ("GET_ALARM_PRIORITY","ALARM01"));
END SUB

'Mode GET_COMMAND_LEVEL or Mode 43 (syntax 3)

SUB variablegetcommandlevel()
PRINT("--GET_COMMAND_LEVEL @ALARM01--");
PRINT("GET_COMMAND_LEVEL = ",VARIABLE ("GET_COMMAND_LEVEL","ALARM01"));
END SUB

'Mode GET_CONTROL_LEVEL or Mode 44 (syntax 3)

SUB variablegetcontrollevel()
PRINT("--GET_CONTROL_LEVEL @REGISTER01--");
PRINT("GET_CONTROL_LEVEL = ",VARIABLE ("GET_CONTROL_LEVEL","REGISTER01"));
END SUB

'Mode GET_TEXT_LEVEL or Mode 45 (syntax 3)

SUB variablegettextlevel()
PRINT("--GET_TEXT_LEVEL @TEXT01--");
PRINT("GET_TEXT_LEVEL = ",VARIABLE ("GET_TEXT_LEVEL","TEXT01"));
END SUB

'Mode GET_TYPE or Mode 46 (syntax 3)

SUB variablegettype()
PRINT("--GET_TYPE @TEXT01--");
PRINT("GET_TYPE = ",VARIABLE ("GET_TYPE","TEXT01"));
END SUB

'Mode GET_DEADBAND_TYPE or Mode 53 (syntax 3)

SUB variablegetdeadbandtype()
PRINT("--GET_DEADBAND_TYPE @REGISTER01--");
PRINT("GET_DEADBAND_TYPE = ",VARIABLE ("GET_DEADBAND_TYPE","REGISTER01"));

SV_SCADABasic_fr 583
END SUB

'Mode GET_DEADBAND_VALUE or Mode 54 (syntax 23)

SUB variablegetdeadbandvalue()
PRINT("--GET_DEADBAND_VALUE @REGISTER01--");
PRINT("GET_DEADBAND_VALUE = ",VARIABLE ("GET_DEADBAND_VALUE","REGISTER01"));
END SUB

'Mode SET_DEADBAND or Mode 55 (syntax 24)

SUB variablesetdeadband()
PRINT("--SET_DEADBAND @REGISTER01--");
PRINT("SET_DEADBAND = ",VARIABLE ("SET_DEADBAND","REGISTER01", 3, 2));
END SUB

Exemple 2
Cet exemple montre plusieurs utilisations de l'instruction VARIABLE.
' Subroutine to return variable status
SUB status()
DIM res AS INTEGER;
res = VARIABLE("STATUS", setvar.name, "VALID");
IF (res == 0) THEN
setvar.valid = 0;
ELSE
setvar.valid = 1;
END IF
res = VARIABLE("STATUS", setvar.name, "ENABLE");
IF (res == 0) THEN
setvar.enable = 0;
ELSE
setvar.enable = 1;
END IF
END SUB

' Subroutine to toggle inhibit


SUB inhibit()
DIM res AS INTEGER;
IF (setvar.enable == 0) THEN
res = VARIABLE("DISABLE", setvar.name);
ELSE
res = VARIABLE("ENABLE", setvar.name);
END IF
END SUB

SUB threshold()
print(VARIABLE("THRESHOLD_GETVALUE", "txremp", 0));
VARIABLE("THRESHOLD_SETVALUE", "txremp", 0, 52, 1);
print(VARIABLE("THRESHOLD_GETTYPE", "txremp"));
END SUB

SV_SCADABasic_fr 584
Exemple WEBVUE
Appliqué à
L'exemple suivant liste les utilisateurs de tous les postes clients Web à partir du poste Superviseur :
SUB MAIN()
CheckList();
END SUB

SUB CheckList()
DIM res AS INTEGER;
DIM ClientList AS STR;
DIM hbuffer As LONG;
hbuffer = ALLOC_BUFFER(50); 'allocate a buffer of 50KB
res = WEBVUE("LIST", hbuffer); 'get a list of user-station pairs
ClientList = CGET_BUFFER(hbuffer,0,255);
PRINT("Number of web clients: ", res);
PRINT("List of web clients: ", ClientList);
FREE_BUFFER(hbuffer);
END SUB
Depuis un poste client Web, pour obtenir le nom d'utilisateur de ce poste :
SUB GetWebUser()
DIM i As Integer;
DIM lUser As Long;
DIM sUser As Str;
lUser = ALLOC_BUFFER (128);
i = GETARG ("WEB");
WEBVUE ("USERNAME", i, lUser);
sUser = CGET_BUFFER(lUser,0,255);
PRINT ("User: ", sUser);
FREE_BUFFER (lUser);
END SUB
Cette Sub est exécutée dans une fenêtre contextuele ouverte dans un client WebVue. Elle fournit le nom
de la variable de contexte :
Sub Load()
Dim lContext As LONG;
Dim iSession As INTEGER;
Dim sContext As STR;
Dim Ret as INTEGER;
PRINT ("SetVarWithContext WebVue and Supervisor");
iSession = GETARG ("WEB");
WINDOW("CLOSE","TREND","");
If (iSession != 0) Then
WINDOW("CLOSE","Trend","");
lContext = ALLOC_BUFFER ( 1000 );
WEBVUE ("CONTEXT", iSession, lContext);
sContext = CGET_BUFFER (lContext, 0, SEQ_BUFFER("LEN",lContext));
PRINT (sContext);
WINDOW("OPEN","Trend","");
End If
End Sub

SV_SCADABasic_fr 585
Exemple WINDOW
Appliqué à
Cet exemple illustre les modes de la commande WINDOW.
Const csttempsreel = 0;
Const cstref1 = 1;
Const cstref2 = 2;
Const csttest = 3;
SUB main()
windowcurrentname();
windowcurrentbranch();
END SUB

'Mode CLOSE or Mode 0 (syntax 1)

SUB windowclose()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("CLOSE","window01","BRANCH01");
END SUB

SUB windowclosetemppsreel()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("CLOSE","window01","BRANCH01", csttempsreel);
END SUB

SUB windowclosetest()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("CLOSE","window01","BRANCH01", csttest);
END SUB

SUB windowcloseref1()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("CLOSE","window01","BRANCH01", cstref1);
END SUB

SUB windowcloseref2()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("CLOSE","window01","BRANCH01", cstref2);
END SUB

'Mode OPEN or Mode 1

SUB windowopen()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("OPEN","window01","BRANCH01");
END SUB

SUB windowopenmere()
'Declare return code
DIM intReturn as integer;
intReturn = WINDOW("OPEN","window01","BRANCH01","MENU","");
END SUB

SUB windowopenmereref()
'Declare return code
DIM intReturn as integer;

SV_SCADABasic_fr 586
intReturn = WINDOW("OPEN","window01","BRANCH01","MENU","",150,150);
END SUB

'Mode IS_OPEN or Mode 2 (syntax 1)

SUB windowisopen()
PRINT("IS_OPEN : ",WINDOW("IS_OPEN","window01","BRANCH01"));
END SUB

'Mode SHOW or Mode 3 (syntax 1)

SUB windowshow()
PRINT("SHOW : ",WINDOW("SHOW","window01","BRANCH01"));
END SUB

'Mode HIDE or Mode 4 (syntax 1)

SUB windowhide()
PRINT("HIDE : ",WINDOW("HIDE","window01","BRANCH01"));
END SUB

'Mode CHANGE or Mode 5 (syntax 10)


SUB windowchange()
PRINT("CHANGE : ",WINDOW("CHANGE","window01","BRANCH01",50,50,200,200));
END SUB

'Mode CLOSEUNDER or Mode 6 (syntax 1)

SUB windowcloseunder()
PRINT("CLOSEUNDER : ",WINDOW("CLOSEUNDER","window01","BRANCH01"));
END SUB

'Mode PRELOAD or Mode 7 (syntax 1)

SUB windowpreload()
PRINT("PRELOAD : ",WINDOW("PRELOAD","window01","BRANCH01"));
END SUB

'Mode CLOSEALL or Mode 8 (syntax 6)

SUB windowcloseall()
PRINT("CLOSEALL : ",WINDOW("CLOSEALL"));
END SUB

'Mode MAIN or Mode 9 (syntax 3)


SUB windowmain()
PRINT("MAIN : ",WINDOW("MAIN",50,50,200,200));
END SUB

'Mode CURRENTNAME or Mode 10 (syntax 7)

SUB windowcurrentname()
PRINT("CURRENTNAME : ",WINDOW("CURRENTNAME"));
END SUB

'Mode CURRENTBRANCH or Mode 11 (syntax 8)

SUB windowcurrentbranch()
PRINT("CURRENTBRANCH : ",WINDOW("CURRENTBRANCH"));
END SUB

'Mode CAPTION or Mode 12 (syntax 8)

SV_SCADABasic_fr 587
SUB windowcaption()
DIM strTitre as Str;
strTitle = "#D ";
'strTitle = "#D";
PRINT("CAPTION : ",WINDOW("CAPTION","window01","BRANCH01",strTitre));
END SUB

'Mode REFSET or Mode 13 (syntax 9)

SUB windowrefset()
PRINT("REFSET : ",WINDOW("REFSET","window01","BRANCH01",csttempsreel,csttest));
END SUB

'Mode CURRENTREF or Mode 14 (syntax 7)

SUB windowcurrentref()
PRINT("CURRENTREF : ",WINDOW("CURRENTREF"));
'Mode_REALTIME 0
'Mode_REF1 1
'Mode_REF2 2
'Mode_TEST 3
END SUB

'Mode POPUPCLOSE or Mode 15 (syntax 6)

SUB windowpopupclose()
PRINT("POPUPCLOSE : ",WINDOW("POPUPCLOSE"));
END SUB

'Mode ACCESSLEVEL or Mode 16 (syntax 1)

SUB windowaccesslevel()
PRINT("ACCESSLEVEL : ",WINDOW("ACCESSLEVEL","window01","BRANCH01"));
END SUB

'Mode OPENNEW or Mode 17 (syntax 1)

SUB windowopennew()
PRINT("OPENNEW : ",WINDOW("OPENNEW","window01","BRANCH01"));
END SUB

'Mode PRINT or Mode 18 (syntax 1)

SUB windowPRINT()
'The window must first be open
PRINT("PRINT : ",WINDOW("PRINT","window01","BRANCH01"));
END SUB

'Mode ZOOM or Mode 19 (syntax 1)1

SUB windowzoom()
'The window must first be open
PRINT("ZOOM : ",WINDOW("ZOOM","window01","BRANCH01",50,50,70));
END SUB

'Mode GETREGION or Mode 20 (syntax 1)

SUB windowgetregion()
PRINT("GETREGION : ",WINDOW("GETREGION","window01","BRANCH01"));
END SUB

'Mode GETSUBWINDOW or Mode 21 (syntax 12)

SV_SCADABasic_fr 588
SUB windowgetsubwindow()
'PRINT("GETSUBWINDOW : ",WINDOW("GETSUBWINDOW","#M1"));
PRINT("GETSUBWINDOW : ",WINDOW("GETSUBWINDOW","#U"));
END SUB

'Mode GETSUBBRANCH or Mode 22 (syntax 12)

SUB windowgetsubbranch()
'PRINT("GETSUBBRANCH : ",WINDOW("GETSUBBRANCH","#M1"));
PRINT("GETSUBBRANCH : ",WINDOW("GETSUBBRANCH","#U"));
END SUB

'Mode SETPREVIOUS or Mode 23 (syntax 6)

SUB windowsetprevious()
PRINT("SETPREVIOUS : ",WINDOW("SETPREVIOUS"));
END SUB

'Mode LAYER or Mode 24 (syntax 13)


SUB windowlayer()
PRINT("LAYER : ",WINDOW("LAYER","window01","BRANCH01",csttempsreel,2,2));
END SUB

'Mode HARDCOPY or Mode 25 (syntax 14)


SUB windowhardcopy()
'The window must first be open
PRINT("HARDCOPY : ",WINDOW("HARDCOPY","window01","BRANCH01",csttempsreel,1));
END SUB

'Mode SAVE or Mode 26 (syntax 15)


SUB windowsave()
PRINT("SAVE : ",WINDOW("SAVE","window01","BRANCH01","ASCII32"));
'save the mimic in ASCII
END SUB

SV_SCADABasic_fr 589
Exemple XMLPATH
Appliqué à

Exemple 1 - Extraction de données depuis un fichier xml


Contenu du fichier books.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="Cooking">
<details lang="en" title="Everyday Italian" author="Giada De Laurentiis"
year="2005" price="30.99" />
</book>
<book category="Children">
<details lang="en" title="Harry Potter" author="J K. Rowling" year="2005"
price="5.99" />
</book>
<book category="Web">
<details lang="en" title="XQuery Kick Start" author="James McGovern" year="2003"
price="49.99" />
</book>
</bookstore>
Exemple de programme pour extraire des données
Sub Main()
Dim cXPath As Str, cReturn As Str;
Dim iReturn As Integer, i As Integer;
Dim sReturn As Single;

iReturn = XMLPATH ( "LOADFILE", "CTX1", "books.xml" );


Print ("Return from LOADFILE = ", iReturn);

For (i=1; i<4; i++)


cXPath = FORMAT ("bookstore/book[%d].category", i);
cReturn = XMLPATH ( "GETSTR", "CTX1", cXPath);
Print(cXPath, " = ", cReturn);
cXPath = FORMAT ("bookstore/book[%d]/details.author", i);
cReturn = XMLPATH ( "GETSTR", "CTX1", cXPath);
Print(cXPath, " = ", cReturn);
cXPath = FORMAT ("bookstore/book[%d]/details.title", i);
cReturn = XMLPATH ( "GETSTR", "CTX1", cXPath);
Print(cXPath, " = ", cReturn);

cXPath = FORMAT ("bookstore/book[%d]/details.year", i);


iReturn = XMLPATH ( "GETINT", "CTX1", cXPath);
Print(cXPath, " = ", iReturn);

cXPath = FORMAT ("bookstore/book[%d]/details.price", i);


sReturn = XMLPATH ( "GETSINGLE", "CTX1", cXPath);
Print(cXPath, " = ", sReturn);
Next

iReturn = XMLPATH ( "UNLOAD", "CTX1");


Print ("Return from UNLOAD = ", iReturn);
End Sub

Exemple 2 - Données retournées par le mode LIST


<list myid="767565456788" > //myid is my own session id if the verb is call from a WebVue
context
<session> //A first active session
id="535625424245" //First session id

SV_SCADABasic_fr 590
creationtime= xy //Session opening date and time. Value of type double that can be
converted using the DATETIME verb.
username="web" //Session username
address="192.168.1.123" //Remote web client IP address (or router address)
computername="" // Remote web client computer name if it can be retrieved
clienttype=" webvue " //Session type. Value is webvue for WebVue sessions and wst for
Web Services Toolkit sessions. <wst> // Additional information to identify partners’
products sessions
key=""
<wst />
<session />

<session> //A second active session


id="535625422312"
creationtime=xxxxxxx
username="user_dr"
address="192.168.1.124"
computername=""
clienttype="
webvue " //="webvue" or "wst"
<wst> //This session is used by the Dream Report Web Services driver
key=" DreamReport"
<wst />
<session />
<list />
Script pour analyser les données retournées
Sub WebList()
Dim lHandle As Long;
Dim i As Integer;
Dim sPath As Str;

WEBVUE ( "LIST" );
lHandle = XMLPATH ( "GET", "webvue/list", "list.myid");
If (lHandle != 0 ) Then
PRINT ("myid ",CGET_BUFFER ( lHandle, 0, 255 ));
End If

i=0;

While (1)
sPath = FORMAT ("list.session[%d].id", i+1);
lHandle = XMLPATH ( "GET", "webvue/list", sPath );

If (lHandle == 0 ) Then
Break;
End If

PRINT ("id ",CGET_BUFFER ( lHandle, 0, 255 ));


sPath = FORMAT ("list.session[%d].creationtime", i+1);
PRINT( "creationtime ", XMLPATH ( "GETDOUBLE", "webvue/list", sPath ));
sPath = FORMAT ("list.session[%d].username", i+1);
lHandle = XMLPATH ( "GET", "webvue/list", sPath );
PRINT ("username ",CGET_BUFFER ( lHandle, 0, 255 ));
sPath = FORMAT ("list.session[%d].computername", i+1);
lHandle = XMLPATH ( "GET", "webvue/list", sPath );
PRINT ("computername ",CGET_BUFFER ( lHandle, 0, 255 ));
sPath = FORMAT ("list.session[%d].address", i+1);
lHandle = XMLPATH ( "GET", "webvue/list", sPath );
PRINT ("address ",CGET_BUFFER ( lHandle, 0, 255 ));
sPath = FORMAT ("list.session[%d].clienttype", i+1);
lHandle = XMLPATH ( "GET", "webvue/list", sPath );
PRINT ("clienttype ",CGET_BUFFER ( lHandle, 0, 255 ));
i=i+1;

SV_SCADABasic_fr 591
Wend
End

Exemple 3 - Utilisation de XMLPATH pour décompresser un namespace


Sub main()
End Sub

Sub subscription()
Dim WinName as Str;
Dim WinBranch as Str;
Dim NameSpace as Str;
Dim iRet as Integer;

WinName = WINDOW("CURRENTNAME");
WinBranch = WINDOW("CURRENTBRANCH");
NameSpace = AddString(WinBranch,"/", WinName, "/alarm1");
@lineselect.Syno = WinName;
@lineselect.Branch = WinBranch;
@lineselect.AlarmSelected = "";
@lineselect.NameSpace = NameSpace;
iRet = AlarmDisplay"LINESELECT",WinName,WinBranch,"alarm1","P","","SelectionLine","");
Print("Subscription with result: ",iRet);
End Sub

Sub SelectionLine()
Dim WinName as Str;
Dim WinBranch as Str;
Dim NameSpace as Str;
Dim AlarmSelected as Str;
Dim iBuf as Long;

WinBranch = WINDOW("CURRENTBRANCH");
NameSpace = AddString(WinBranch,"/",WinName,"/alarm1");
@lineselect.NameSpace = NameSpace;
iBuf = XMLPATH("GET",NameSpace,"lineselect/variable");
AlarmSelected = CGET_BUFFER(iBuf, 0, 255);
@lineselect.AlarmSelected = AlarmSelected ;
XMLPATH("UNLOAD",NameSpace);
End Sub

SV_SCADABasic_fr 592
Mots Réservés
Voir aussi

Les mots marqués d'un astéristique (*) ne sont pas documentés. Ne pas utiliser.

A E LCASE SINGLE
ACOS ELSE LEFT SLEEP (*)
ADDCHAINE ELSEC (*) LEN SMS
ADDSTRING EMAIL LGET_BUFFER SNMP
ALARM END LISTBOX SPACE
ALARMDISPLAY ENDSUB LNS SQRT
ALIAS ERROR LOG START (*)
ALLOC_BUFFER EVENT LOGDISPLAY STATION_FILTER
ANIMATION EXCELTOBUF LOGICAL STOP
APPLICATION EXECUTE (*) LOGICAL64 STR
ARRET (*) EXIT LONG STRING
AS EXP LONWORKS SUB
ASC EXPORT LPRINT SVAL
ASCIIFIELD EXPRESSION LTRIM SVALA
ASIN LVAL SVBATCH
ASSOCIATEDACTIONS F SVBRANCH
ASSOCLABEL FCLOSE M SVKEY
ATAN FEOF M104 SVLOG
FGETC M61850 SVSQL
B FGETS MAJANA (*) SYSTEM
BASIC FILETOBUF MAPDISPLAY
BEEP FOR MDNP3 T
BIN FORMAT MID TAN
BRANCH (*) FORMULA MULTIMEDIA TEMPORARY_DB
BREAK FPUTC NEXT TEXTVAR
BUFTOEXCEL FPUTS THEN
BUFTOFILE FREAD O TOC
BYVAL FREE_BUFFER OCT TOD
FSEEK OPC TODOUBLE
C FSTAT OPTIONLIST TOHMS
CALL(*) FTP TOI
CAPTION FUNCTION TOL
CGET_BUFFER FWRITE P TOLL
CHAR(*) POPULATION TOS
CHART G POW TRACE
CHECKLIST PRINT TRACEOFF

SV_SCADABasic_fr 593
CHR GETARG PRINTER TRACEON
CIMWAY GETPROJECTDIR PROGRAM TREEVIEW
CMPCHAINE (*) GETTREE PUT_BUFFER TREE
CMPSTRING GROUPALARM TREND
COMBOBOX R
CONST H RECIPE U
CONVERT HARDCOPY REFRESH_DB UCASE
COPY_BUFFER HEX REGION UNLING
COS HISTORY REGVAR2D USER_PROGRAM (*)
CRONTAB RENAME
CYCLIC I RETURN V
IF RIGHT VARIABLE
D IGET_BUFFER RTRIM
DATETIME INT (*) W
DATETIMESTRING INTEGER S WEBVUE
DATETIMEVALUE IRAND SELECTOR WEND
DDE IVAL SEND(*) WHILE
DDECONV SENDLIST WINDOW
DECLARE K SEQ_BUFFER
DELAI (*) KEY SET X
DELAY SGET_BUFFER XMLPATH
DGET_BUFFER L SHELL (*)
DIM LAN SIM (*)
DOUBLE LANGUAGE
DVAL

SV_SCADABasic_fr 594
Codes de Touches de Fonctions
Voir aussi Appliqué à
Touche de Code de Touche de Action Standard
Fonction Fonction
F1 1 Shift type D - non Aide en ligne.
disponible
F2 2 Menu utilisateur (Logon / Logoff).
F3 3 Menu d'administration (configuration des droits
utilisateurs).
F4 4 Fenêtre 'A propos'.
F5 5 - (Non utilisé)
F6 6 Affiche le menu de configuration et les barres d'outils.
F7 7 Place la fenêtre d'événements au premier plan.
F8 8 Masque le menu et les barres d'outils.
F9 9 Mise au point des programmes.
F10 10 Shift type D - non Sortie du Superviseur.
disponible
F11 11 Gestion de l'Export de données.
F12 12 Affiche l'affichage du magnétoscope.
F13 13 -
F14 14 -
F15 15 -
F16 16 -
Back space 17 -
Tab 18 Non utilisé. -
Enter 19 Non utilisé. -
Shift 20 -
Ctrl 21 Non utilisé.
Alt 22 Non utilisé.
Pause 23 Non utilisé.
Esc 24
Space 25 Non utilisé.
Page up 26 Fenêtre suivante.
Page down 27 Fenêtre précédente.
End 28 Dernière zone de contrôle.
Home 29 Première zone de contrôle.
Left arrow 30
Up arrow 31 Zone de contrôle précédente.
Right arrow 32
Down arrow 33 Zone de contrôle suivante.
Print 34 Non utilisé.
Insert 35

SV_SCADABasic_fr 595
Delete 36
121 Sélecteur de variables.
123 Configuration LNS.
Numlock 37 Non utilisé.

Un exemple de configuration des touches de fonction est visible dans le chapitre de l'instruction KEY.

SV_SCADABasic_fr 596
Définition d'une Population
Voir aussi Appliqué à
Une population est définie par un nombre de lignes de texte enregistrées dans un buffer mémoire. Le
texte est placé dans le buffer en utilisant l'instruction SEQ_BUFFER.
Chaque définition de population consiste en une ligne définissant son nom suivi par un nombre d'autres
lignes définissant ses attributs.
Le nombre d'attributs de chaque type est limité à 50 pour une population, par exemple 50 domaines, 50
natures, etc ...

S'il y a plus d'attributs ajoutés, cela entraîne une erreur dans l'observateur
d'événements lorsque l'application est chargée :'\popu.dat line 104...'.

Syntaxe pour le Nom de Population


POPULATION, Version, Name, 0, 0, Comment
Argument Signification
Version Toujours 23.
Name Nom par lequel la population est connue.
Comment Commentaire en format libre.

Syntaxe pour les Attributs de Population


POPDEF, Name, Attribute, Mode, Value
Argument Signification
Nom Nom de la population à laquelle les attributs sont appliqués.
Attribut Type d'attribut :
TATT1 Un domaine.
TATT2 Une nature
FLAG Un masque hexadécimal.
0080 Variable équipement.
0100 Variable interne.
0200 Variable externe.
0400 Variable de diffusion.
1000 DDE Variable.
TYPE Un masque hexadécimal.
0001 Variable état.
0002 Variable mesure.
0004 Variable texte.
0008 Variable d'alarme.
Mode IN Inclus dans la population.
OUT Exclus de la population.
Value Valeur de l'attribut.
Par exemple, si le paramètre attribut est de type FLAG, il peut prendre la valeur 0080.

SV_SCADABasic_fr 597
Encodage de Message
Appliqué à
Les encodages de messages suivants peuvent être utilisés lors de l'envoi d'un message électronique
utilisant les instructions EMAIL ou EVENT.

Code Encodage
874 Thaïlandais (Windows)
932 Japonais (Shift-JIS)
936 Chinois simplifié (GB2312)
949 Coréen
950 Chinois traditionnel (Big 5)
1250 Europe centrale (Windows)
1251 Cyrillique (Windows)
1252 Europe de l'ouest (Windows)
1253 Grecque (Windows)
1254 Turc (Windows)
1255 Hébreux (Windows)
1256 Arabe (Windows)
1257 Balte (Windows)
1258 Vietnamien (Windows)
20127 US-ASCII
28591 Europe de l'ouest (ISO)
28592 Europe centrale (ISO)
28594 Balte (ISO)
28595 Cyrillique (ISO)
28596 Arabe (ISO)
28597 Grecque (ISO)
28599 Turc (ISO)
28603 Estonien (ISO)
50220 Japonais (JIS)
50225 Coréen (ISO)

SV_SCADABasic_fr 598
Expressions de Filtres
Appliqué à
Une expression de filtres peut être utilisée dans les instructions suivantes pour filtrer les données extraites
:

• ALARMDISPLAY
• LOGDISPLAY
• SVALA
• SVLOG
• SVTREND
• SVBRANCH

Un filtre commence avec un signe égal et se poursuit par une ou plusieurs expressions combinées avec
des opérateurs logiques. Chaque expression comprend un attribut, un opérateur et une valeur. Par
exemple :
=(#t BEG ALM)
qui comprend tous les noms de variables (#t) commençant (BEG) avec le texte ALM.
Les symboles suivants sont supportés :
Symbole Attribut
#t Nom de variable.
#T Libellé de variable (description).
Attribut booléen (comme un mot).
to Attributs étendus. A1 et A2 sont réservés pour Domaine et Nature.

Symbole Opération
== Egalité.
!= Inégalité.
> Supérieur à.
< Inférieur à.
>= Supérieur ou égal à.
<= Inférieur ou égal à.
^ or BEG Commençant par "string"
[ or INC Incluant "string"
$ or END Finissant par "string"
&& ET logique utilisé entre les éléments d'expression.
|| ORlogique utilisé entre les éléments d'expression.

Les noms d'attributs utilisés dans les expressions de filtres n'autorisent pas les espaces.
Par exemple (#A5==T 5) n'est pas autorisé.

Exemples d'Expressions de Filtres


Filtre Signfication
=(#t BEG FACTORY)&&((#A1 == Le nom de la variable commencent par FACTORY et le
DOM1)||(#A1 == DOM2)) Domaine est soit DOM1, soit DOM2.
=(#A1 == DOM1)||(#A2 == NAT1) Le Domaine est DOM1 ou la Nature est NAT1.
=(#A5 >=10)&&(#A5 < 35) L'attribut A5 est supérieur ou égal à 10 et inférieur à 35

SV_SCADABasic_fr 599
Expressions Régulières
Voir aussi Appliqué à
Les expressions régulières utilisées par SELECTOR sont dérivées des notes utilisées en automatisme pour
décrire le language formel et l'état final des machines.
Les expressions régulières sont formées de caractères : opérandes comme "a", "O" et "," et de méta-
caractères (opérateurs) comme "+", "|" et "[". Une expression régulière, qui est similaire à une expression
arithmétique familière, peut être soit une expression basique, soit une expression complexe formée par
des opérateurs appliqués à plusieurs expressions basiques.
Les méta-caractères réguliers pour les expressions et leurs utilisations, sont les suivants :
Opérateur Utilisation
\ Utilisé dans des séquences Echap pour spécifier les caractères n'ayant aucune représentation
(similaire à ceux utilisés en langage C).
\b Retour arrière.
\t Tabulation horizontale.
\n Nouvelle ligne ou interligne.
\f Nouvelle page ou présentation.
\r Retour automatique.
\ddd Valeur octale.
\c c représente n'importe quelle chaîne de caractères qui peut être prise littéralement.
^ L'accent circonflexe signifie le début d'une chaîne. Par exemple, "^abc" est égal à toutes les
chaînes qui commencent par "abc". Lors De son utilisation comme 1er caractère d'une
catégorie de caractères, il signifie une catégorie négative.
$ Le signe dollar signifie la fin d'une chaîne. Par exemple, "$z" est égal à toutes les chaînes
ayant "z" comme dernier caractère.
. Le point signifie n'importe quel caractère simple. Il faut être prudent avec ".*" qui signifie
tout.
[ L'ouverture de crochet signifie le début d'une classe de caractères.
] L'ouverture de crochet signifie la fin d'une classe de caractères.
| La barre droite est l'opérateur OU, "a|b" signifie soit "a", soit "b".
() Les parenthèses sont utilisées pour des expressions de groupe de la même façon que les
expressions arithmétiques.
* L'astérisque signifie 0 ou plus d'instances dans la chaîne spécifiée.
+ Le signe plus indique une fermeture positive et signifie 1 ou plus d'une expression spécifiée.
Par exemple "+z" signifie une chaîne de 1 ou plus "z"s.
? Le point d'interrogation signifie 0 ou 1 selon l'expression spécifiée. Par exemple "?9" signifie
soit une chaîne nulle, soit "9".

Classes de Caractères
Les classes de caractères sont des styles sténographiques pour signifier un ou plusieurs caractères.
Par exemple [AaBb] est égal à (A|a|B|b) et signifie "A", "a", "B", et "b".
Il y a également les valeurs, comme [A-Z] qui signifient tous les caractères en majuscules.
Les classes de caractères négatifs spécifient des caractères qui ne seront pas pris en compte. Par
exemple, [^A-Z] signifie tout excepté les caractères alphanumériques en majuscules.

Exemples d'Expressions Régulières


Tous les noms de variables ayant comme première branche "System" :

SV_SCADABasic_fr 600
^System
Tous les noms de variables dont la fin est un numéro :
[0-9]$
Tous les noms de variables :
.*

SV_SCADABasic_fr 601
Format du Buffer de Paramètre pour Alarmes
Voir aussi Appliqué à
Le buffer de paramètre doit contenir une chaîne composée des éléments suivants séparés par des virgules
:
MaxLines[,Direction[,MinPriority[,MaxPriority[,ONNOACK[,ONACK[,OFFNOACK[,OFF[,NS[,Mask[,Filter[,For
mat]]]]]]]]]]]
Paramètre Signification
MaxLines Nombre maximum de lignes à extraire. Une valeur de 0 indique l'absence de limite.
Direction Présentation du résultat du tri :
0: Dernier événement en haut.
1: Dernier événement en bas.
MinPriority Priorité d'alarme minimum.
MaxPriority Priorité d'alarme maximum
ONNOACK 1: inclut les éléments Présents, Non acquittés; 0: omis.
ONACK 1: inclut les éléments Présents, Acquittés; 0: omis.
OFFNOACK 1: inclut les éléments Au repos, Non acquittés; 0: omis.
OFF 1: inclut les éléments Au repos, Acquittés; 0: omis.
NS 1: inclut les éléments invalides; 0: omis.
Mask Constantes pour le masque des données de type consignation :
1: Transition d'état
2: Acquittement d'alarme
4: Envoi de commande
8: Envoi de consigne
16: Envoi de texte
32: Envoi de recette
128: Connexion
256: Déconnexion
64: Transition d'état à 0
512: Transition d'état à 1
1024: Transition d'état à invalide
1600: Toutes les transitions d'état
2048: Alarme présente acquittée
4096: Alarme présente non acquittée
8192: Alarme au repos
16384: Alarme au repos non acquittée
32768: Alarme invalide
65536: Acquittement par opérateur
63488: Toutes les transitions d'alarme
131072: Exécution d'un programme
262144: Alarmes présentes
524288: Alarmes au repos
Filter Chaîne définissant un filtre d'alarme.
Voir le chapitre sur Les Expressions de Filtres. Si nul, il n'y a pas de filtre.

SV_SCADABasic_fr 602
Format Chaîne définissant le format des données extraites.
Utilise la même syntaxe que celle définissant le format de chaque ligne dans l'affichage
d'une fenêtre d'alarmes.
Si nul, le format par défaut #D/#M/#Y #h:#m:#s #E #T #C sera utilisé.

SV_SCADABasic_fr 603
Format du Buffer de Paramètre pour Consignations
Voir aussi Appliqué à
Le buffer de paramètre doit contenir une chaîne composée des éléments suivants séparés par des virgules
:
LogList,StartTime,EndTime[,MaxLines[,Direction[,Mask[,MinPriority[,MaxPriority[,Filter[,Format]]]]]]]
Paramètre Signification
LogList Nom de la liste de consignation.
StartTime Heure de début d’extraction.
EndTime Heure de fin d’extraction.
MaxLines Nombre maximum de lignes à extraire. Une valeur de 0 indique l'absence de limite.
Direction Présentation du résultat du tri :
0 : Dernier événement en haut.
1 : Dernier événement en bas.
Mask Constantes pour le masque des données de type consignation :
1: Transition d'état
2: Acquittement d'alarme
4: Envoi de commande
8: Envoi de contrôle
16: Envoi de texte
32: Envoi de recette
128: Connexion
256: Déconnexion
64: Transition d'état à 0
512: Transition d'état à 1
1024: Transition d'état invalide
1600: Toutes les transitions d'état
2048: Alarme présente acquittée
4096: Alarme présente non acquittée
8192: Alarme au repos
16384: Alarme au repos non acquittée
32768: Alarme invalide
65536: Acquittement par opérateur
63488: Toutes les transitions d'alarme
131072: Exécution d'un programme
262144: Alarme présente
524288: Alarme disparue
MinPriority Priorité d'alarme minimum.
MaxPriority Priorité d'alarme maximum.
Filter Chaîne définissant un filtre d'alarme.
Voir le chapitre sur Les Expressions de Filtres. Si nul, il n'y a pas de filtre.
Format Chaîne définissant le format des données extraites.
Utilise la même syntaxe que celle définissant le format de chaque ligne dans l'affichage
d'une fenêtre d'alarmes. Si nul, le format par défaut #D/#M/#Y #h:#m:#s #E #T #C
sera utilisé.

SV_SCADABasic_fr 604
Format du Buffer de Recette
Appliqué à
Le buffer utilisé par l'instruction RECIPE, modes READ et CREATE, utilise le format suivant :
Recipe header
Recipe variable definition 1
Recipe variable definition 2
" "
Recipe variable definition N

Format de l'entête de recette


H,Number,Name,Family,Level,AllowVar,TrackVar,Branch,,Type,,SendFlag,SendMode,0,OPCMode
Argument Signification
H Toujours H. Flag indiquant le début de l'entête de recette.
Number Numéro de la recette.
Name Nom de la recette.
Family Famille de la recette. Optionnel.
Level Niveau de la recette. Optionnel.
AllowVar Nom de l'état d'autorisation d'envoi de la recette. Optionnel
TrackVar Nom de la variable mesure ou texte forcée lors de l'envoi de la recette. Optionnel.
Branch Branche de la recette. Optionnel.
Type Flag indiquant le type de la recette.
0 = Propriétaire
1 = Base de données
SendFlag Flag indiquant si la recette doit être envoyée si une ou plusieurs variables sont invalides.
0 = Ne pas envoyer
1 = Envoyer
SendMode Mode d'envoi de la recette.
0 = Multiple
1 = Bloc
OPCMode Mode OPC.
0 = Sérialisation optimisée
1 = Sérialisation complète
2 = Aucune optimisation (écriture unitaire)
3 = Optimisation complète

Format de variable d'une recette


V,VarName,1,Value,Minimum,Maximum,0,ValueVarName
Argument Signification
V Toujours V. Flage indiquant le début d'une définition de variable.
VarName Nom de la variable.
Value Valeur à laquelle la variable va être positionnée ou champ nul si la valeur est contenue
dans une autre variable.
Minimum Valeur minimum à laquelle la variable peut être positionnée.
Maximum Valeur maximum à laquelle la variable peut être positionnée.
ValueVarName Nom d'une variable contenant la valeur à laquelle la variable va être positionnée.
Optionnel.

SV_SCADABasic_fr 605
Format du Rapport d'Import de Variable
Voir aussi Appliqué à
Le mode IMPORTFILE de l'instruction VARIABLE génère un fichier de rapport optionnel. Chaque ligne de ce
rapport a la structure suivante :
No Description
1 Nom du poste.
2 Nombre d'objets importés.
3 Nombre de variables ajoutées.
4 Nombre de variables modifiées.
5 Nombre de variables supprimées.
6 Nombre de variables inchangées.
7 Nombre d'objets pour lesquels la modification n'est pas définie.
8 Nombre d'échecs.

Exemple
SERVER_1,116,0,20,0,0,96,0
CLIENT_1,116,0,20,0,0,96,0

SV_SCADABasic_fr 606
Paramètres d'Objets de Communication
Voir aussi Appliqué à
Avec le mode 8 (CFG) de l'instruction CIMWAY, le champ paramètre param a différentes significations
dépendantes de la valeur de Modif. Ce chapitre spécifie leurs réglages.
Dans tous les cas, le type est STR. Par exemple : "1#0#0#0#0#40".

Protocoles Généraux Signification


PORT_NUMBER Modification du N° de port
sur l'objet réseau
pour la modification du n° de port
si connexion sur le port série (COM1 … COM64)
paramètres est compris entre "1" et "64"
EQT_ADDRESS Adresse équipement
sur l'objet équipement
pour la modification de l'adresse équipement
Paramètres = Suite de champs séparés par des #
Les bornes mini et maxi de chaque champ dépendent des protocoles.
APPLICOM_ACCESS paramètres = n°_carte#n°_canal#n°_logique_équipement
n° de carte compris entre 1 et 8
n° de canal compris entre 0 et 3
n° logique de l'équipement compris entre 1 et 65535
H1 paramètres = adresse_ethernet#TSAP
adresse ethernet comprise entre 1 et 65535
TSAP libellé de 6 caractères maximum
MODBUS+ paramètres =
n°_carteP#RP1#RP2#RP3#RP4#RP5#n°_carteS#RS1#RS2#RS3#RS4
#RS5
n° de carte principale compris entre 0 et 1
RP1#RP2#RP3#RP4#RP5 adresse de routage principale
n° de carte de secours entre 0 et 1
RS1#RS2#RS3#RS4#RS5 adresse de routage de secours
TRANSMMS_NODQS paramètres =
nom_de_la_voie_DAU#nom_de_l'équipement
nom_de_la_voie_DAU compris entre 1 et 127 inclus
nom_de_l'équipement compris entre 1 et 65535
APRILNET paramètres = zone#noeud#adresse_jbus
zone compris entre 1 et 1023 inclus
noeud compris entre 1 et 1023 inclus

SV_SCADABasic_fr 607
adresse jbus (si passerelle, sinon 0) comprise entre 0 et 255
XBUS-IP-MASTER paramètres
=Adresse_esclave#adresse_IP1#adresse_IP2#adresse_IP3#adresse_IP
4
#Port_Number
ETHWAY paramètres = station#driver#réseau#porte#module#voie
adresse_équipement compris entre 0 et 64 si DH+ compris entre 0 et
255 si DH
adresse_équipement compris entre 0 et 255 (0 si pas de passerelle)
IPS7param Voir le chapitre Communication.Utilisation des drivers natifs du
Superviseur.Protocoles Ethernet TCP/IP.Siemens S7 Master.Scada
Basic.
SAIA Param = Sbus_station#ip1#ip2#ip3#ip4#port#cpu#ts_address#flag
Sbus_station: Sbus address
#ip1#ip2#i3#ip3: IP address
#port: port number
#cpu: CPU number
#ts_address: Time stamp address (optional)
#flag: = 8 for UTC time, else 0 (optional)
MEMORY_ADDRESS Adresse de trame
sur l'objet trame
pour la modification de l'adresse de la trame
Paramètres = Suite de champs séparés par des #

Protocoles Signification
Spécifiques
APPLICOM_ACCESS
paramètres = adresse_DB#adresse_distante
adresse_DB est l'adresse dans la Data Base de la carte applicom.
Elle est comprise entre 0 et 32000.
adresse_distante est l'adresse mémoire dans l'équipement
Pour les équipements de type SIEMENSparamètres =
adresse_DB#adresse_distante[#N°_Data_bloc]
Si le N° de Data bloc est omis, le numéro configuré sera utilisé.

si protocole = SINEC
H1, SINEC L1, DH+,
DH+ sur carte KT
paramètres = n°_DB#adresse_distante
n°_DB numéro de DB compris entre 1 et 256.
adresse_distante est l'adresse mémoire dans l'équipement.
APRILNET

SV_SCADABasic_fr 608
On ne peut pas modifier l'adresse des BIT en INPUT.
N10
On ne peut modifier que le repère automate.

SV_SCADABasic_fr 609
Poids des Droits d'Accès
Appliqué à

Droits d'Accès Administration


Pour les droits d'accès administration, les poids binaires représentent :
Poids Signification
1 Modifier la date et l'heure
2 Modifier son mot de passe
4 Créer et modifier des utilisateurs
8 Détruire des utilisateurs et/ou leurs associations
16 Associer des postes aux profils
32 Créer des profils
64 Détruire des profils
128 Activer la déconnexion automatique
256 Activer la durée de vie du mot de passe

Droits d'Accès Système


Pour les droits d'accès système, les poids binaires représentent :
Poids Signification
1 Accès
2 Conduite et Acquittement
4 Suivi et Calques
8 Sortie du projet
16 Aide
32 Développement
64 Ergonomie
128 Administration
256 Bureau
512 Recette
1024 Table horaire

Droits d'Accès Recette


Pour les droits d'accès de recette, les poids binaires représentent :
Poids Signification
1 Gestion
2 Enregistrement
4 Création
8 Modification fiches
16 Temps-réel
32 Envoi
64 Suppression

Droits d'Impression Fenêtre


SV_SCADABasic_fr 610
Retourne 1 si l'utilisateur a les droits d'impression fenêtre, 0 sinon.

Pour plus d'informations, voir le chapitre sur les Droits d'accès dans l'aide de la configuration.

SV_SCADABasic_fr 611
Maintenance des Actions Associées par Programme
Voir aussi Appliqué à
Le procédé de configuration des actions associées pour les alarmes est décrit dans le chapitre
"Association d'une action avec une alarme" dans l'aide principal.

Les chapitres de cette section spécifient :

• Le format d'enregistrement des actions associées dans le projet application.


• Le format à utiliser pour les modifier.

Fichiers
Les fichiers d'enregistrement et d'importation des actions associées se trouvent dans le répertoire du
projet comme suit :
Nom du fichier Sous-répertoire Contenus
ACTION.DAT C Enregistrements des actions : une ligne par action.
XXXX.DAT TP Modifications : une ligne par ajout ou suppression.

où XXXX est le nom utilisé dans l'instruction ASSOCIATEDACTIONS.

Format des Actions Associées


Le format de stockage d'une action associée est le suivant :
No. Description Type Taille (octets) Valeur(s)
1 Type d’enregistrement Caractère 6 ACTION
2 Type d’action Numerique 2 0
0 = action associée aux alarmes
3 Bouton du sélecteur Caractère 2 LB ou RB
LB = bouton gauche
RB = bouton droit
4 Nom de la variable Caractère 40
5 Indicateur programme ou fenêtre Caractère 1 P/W
P = Programme
W = Fenêtre
6 Nom programme ou fenêtre Caractère 12
7 Branche Caractère 30
8 Fonction Caractère 30
9 Arguments (entre guillemets) Caractère 2 047
10* Liste des producteurs Caractère 14
11* Liste des consommateurs Caractère 14
12* Origine de l’objet Numerique 2
0 si local
>0 si couche métier
13* Numéro de version de l’objet Numerique 2
14* Commentaire de l’objet Caractère 80

* Nouveaux champs.

SV_SCADABasic_fr 612
Le type d'enregistrement est facultatif (par exemple l'utilisateur peut écrire un enregistrement avec
ou sans).

Ajout d'une Action Associée


Le format d'ajout d'une action associée est le suivant. Il commence avec le mot clé "AAA".
No. Description Type Taille (octets) Valeur(s)
1 Type d’enregistrement Caractère 6 AAA
2 Type d’action Numerique 2 0
0 = action associée aux alarmes
3 Bouton du sélecteur Caractère 2 LB ou RB
LB = bouton gauche
RB = bouton droit
4 Nom de la variable Caractère 40
5 Indicateur programme ou fenêtre Caractère 1 P/W
P = Programme
W = Fenêtre
6 Nom programme ou fenêtre Caractère 12
7 Branche Caractère 30
8 Fonction Caractère 30
9 Arguments (entre guillemets) Caractère 2 047
10 Liste des producteurs Caractère 14
11 Liste des consommateurs Caractère 14
12 Origine de l’objet Numerique 2
0 si local
>0 si couche métier
13 Numéro de version de l’objet Numerique 2
14 Commentaire de l’objet Caractère 80

Le type d'enregistrement est facultatif (par exemple l'utilisateur peut écrire un enregistrement avec
ou sans).

L'exemple ci-dessous décrit la séquence des lignes :

AAA,0,PAR,"action 1 label Fra","action 1 label Eng","action 2 label Fra","action 2 label


Eng"
AAA,0,LB,"testAA",P,"x","","","","S1","C1",0,0,"action 1 test"
AAA,0,RB,"testAA",W,"mm","","","","S1","C1",0,0,"action 2 test"
AAA,0,LB,"ALARMAA",P,"X","","","","S1","C1",0,0,"test1"
AAA,0,RB,"ALARMAA",W,"mm","","","","S2","C2",0,0,"test2"

Suppression d'une Action Associée


Le format de suppression d'une action associée est le suivant. Il commence avec le mot clé "DAAA".
No. Description Type Taille (octets) Valeur(s)

SV_SCADABasic_fr 613
1 Type d’enregistrement Caractère 6 DAAA
2 Type d’action Numerique 2 0
0 = action associée aux alarmes
3 Bouton du sélecteur Caractère 2 LB ou RB
LB = bouton gauche
RB = bouton droit
4 Nom de la variable Caractère 40
5 Indicateur programme ou fenêtre Caractère 1 P/W
P = Programme
W = Fenêtre
6 Nom programme ou fenêtre Caractère 12
7 Branche Caractère 30
8 Fonction Caractère 30
9 Arguments (entre guillemets) Caractère 2 047
10 Liste des producteurs Caractère 14
11 Liste des consommateurs Caractère 14
12 Origine de l’objet Numerique 2
0 si local
>0 si couche métier
13 Numéro de version de l’objet Numerique 2
14 Commentaire de l’objet Caractère 80

La séquence des lignes dépend des effets désiré :

• La première ligne est nécessaire si vous ne désirez pas supprimer toutes les entrées (sans elle,
toutes les actions seront perdues).
• A partir de la seconde ligne, au moins 5 champs par ligne sont nécessaires.

DAAA,0,PAR,"action 1 label Fra","action 1 label Eng","action 2 label Fra","action 2 label


Eng"
DAAA,0,LB,"testAA",P,"x","","","","","",0,0,""
DAAA,0,RB,"testAA",W,"mm","","","","","",0,1,""

SV_SCADABasic_fr 614
Maintenance des Actions Evénementielles par Programme
Appliqué à

Le format d'import d'actions événementielles depuis un fichier est le même que leur format
d'enregistrement s'ils sont saisis manuellement dans l'Application Explorer.

• Des actions événementielles configurées (importées ou saisies manuellement) sont sauvegardées


dans un fichier ASCII, EVENT.DAT, dans le répertoire C du projet.
• Des actions événementielles peuvent être importées depuis n'importe quel fichier ASCII avec la
syntaxe appropriée. Par défaut, le fichier doit être localisé dans le répertoire TP du projet.

Format des Actions Evénementielles


Le format de stockage d'un import ou d'une action évenementielle est le suivant :
No. Description Type Taille (octets) Valeur(s)
1 Type d'enregistrement Caractère EVTPROG
2 Nom d'événement Caractère 40
3 Description Caractère 80
4 Réservé Numérique
5 Réservé Numérique
6 Liste des producteurs Caractère
7 Réservé Caractère
8 Nom de la variable de déclenchement Caractère 40

9 Déclenchement d'une transition sur bit Numérique 0 = à 0. 1 = à 1. 2


= par une
expression.
10 Flag du bit d’activation Numérique 1 pour activation, 0
sinon.
11 Nom du bit d’activation Caractère
12 Expression de déclenchement Caractère 240
13 Nom du programme Caractère
14 Branche Caractère
15 Fonction Caractère
16 Arguments (entre guillemets) Caractère

Suppression d'une Action Evénementielle


Le format de suppression d'une action événementielle est la même que pour l'ajout, excepté que le type
d'enregistrement est DEVTPROG.

SV_SCADABasic_fr 615
Masquage par Programme
Voir aussi Appliqué à
Le masquage est normalement une opération temporaire effectuée dynamiquement sur l'état courant
d’une variable. Une variable masquée (ayant un niveau de masquage différent de 0) continue d’être
rafraichie mais sa valeur n'est plus diffusée en dehors de la base de données temps réel. Désormais toutes
les options de paramétrages de cette variable sont invalidées (Y compris les fonctionnalités alarmes et
enregistrements sur disque). La valeur de la variable est toutefois accessible par un programme SCADA
BASIC. Le masquage et démasquage d'une variable peut être fait de plusieurs manières, chaque niveau de
masquage étant représenté par un poids binaire dans le masque :

• Par un programme SCADA BASIC. Plus de 4 niveaux de masque peuvent être configurés de cette
façon :

1 = Niveau 1
2 = Niveau 2
4 = Niveau 3
8 = Niveau 4

• Par un opérateur. Par exemple, un alarme été peut être masquée en utilisant une option disponible
dans la fenêtre d'alarmes. Le poids binaire de cette option est 16.

• Par dépendance. Si la valeur de la variable dépend d'une autre, par exemple un état de seuil, la
variable source deviendra invalide à cause du masquage de la variable dépendante causant ainsi son
invalidité. Le poids binaire de cette option est 32. Autre exemple d'une variable apparaissant
masquée : une alarme est inhibée par une autre alarme ou état.

Lorsque la variable est démasquée, sa valeur redevient automatiquement disponible.

SV_SCADABasic_fr 616
Masques d'Evénements
Appliqué à

Masque inférieur (Modes EVENTMASK et EVENTMASKEX)


Valeur Signification
0 Aucune
1 Transition d'un état
2 Acquittement d'une alarme
4 Envoi d'une commande
8 Envoi d'une consigne (action opérateur)
16 Envoi d'un texte (action opérateur)
32 Envoi d'une recette (action opérateur)
64 Transition d'état à 0
128 Début d'exploitation (action opérateur)
256 Fin d'exploitation (operator action)
512 Transition d'état à 1
1024 Transition d'état à NS
2048 Alarme présente, acquittée
4096 Alarme présente, non acquittée
8192 Alarme au repos, acquittée
16384 Alarme absente, non acquittée
32768 Alarme NS
65536 Alarme acquittée (action opérateur)
131072 Exécution d'un programme (action
opérateur)
262144 Disparition d'alarme
524288 Apparition d'alarme
1048576 Alarme non accessible
2097152 Alarme inhibée
4194304 arme masquée par programme
8388608 Alarme masquée par variable
16777216 Alarme masquée par utilisateur
33554432 Alarme masquée par expression
67108864 Alarme masquée par utilisateur (action
opérateur)
134217728 Alarme démasquée par utilisateur (action
opérateur)
268435456 Alarme début de prise en compte (action
opérateur)
536870912 Alarme fin de prise en compte (action
opérateur)
1073741824 Echec de tentative de connexion (action
opérateur)

Masque supérieure (Mode EVENTMASKEX seulement)


Valeur Signification
1 Envoi à 0 (action opérateur)

SV_SCADABasic_fr 617
2 Envoi à 1 (action opérateur)
4 Etat 0
8 Etat 1

Il est simple de combiner 2 ou plusieurs masques d'événéments en utilisant l'instruction


LOGICAL.

SV_SCADABasic_fr 618
Mode d'envoi SENDLIST
Appliqué à
Les paramètres du mode d'envoi (OPCMode) de l'instruction SENDLIST déterminent la façon dont les
variables sont envoyées selon le type de communication utilisée.

Pour des variables équipement


• Bloc - Les variables sont regroupées selon la trame de communication à laquelle elles appartiennent.
Pour une trame donnée, toutes les variables entre l'adresse la plus haute et la plus basse sont
envoyées même si elles n'appartiennent pas à la recette.
• Multiple - Les variables sont regroupées selon la trame de communication à laquelle elles
appartiennent en blocs continus. Seules les variables de la recette sont envoyées, un plus grand
nombre d'écritures peut être nécessaire (une écriture pour chaque bloc).

Pour des variables OPC


Il y a quatre options d'envoi de variables dans un serveur OPC. Elles seront mieux illustrées par un
exemple.
Noter que l'ordre dans lequel les variables sont déclarées dans la recette affecte directement
la séquence dans laquelle elles sont écrites dans les serveurs OPC.
Le Superviseur est connecté à deux serveurs OPC. Le serveur OPC 1 contient les variables MV1 et MV2. Le
serveur OPC 2 contient MV3 et MV4. Le Superviseur s'abonne à MV1 et MV2 en utilisant le groupe
Groupe1 et MV3 et MV4 en utilisant Groupe2. Une recette est configurée contenant les 4 variables dans
l'odre MV3, MV1, MV2 et MV4.

• Sérialisation optimisée
• Ecriture MV3 sur le Serveur OPC 2 et attente du résultat.
• Si le résultat est OK, écriture MV1 et MV2 sur le serveur OPC 1 et attente du résultat.
• Si le résultat est OK, écriture MV4 et attente du résultat.
• La recette est terminée. Trois écritures OPC ont été utilisées.
• Sérialisation complète
• Ecriture MV3 sur le serveur OPC 2 et attente du résultat.
• Si le résultat est OK, écriture MV1 sur le serveur OPC 1 et attente du résultat.
• Si le résultat est OK, écriture MV2 sur le serveur OPC 1 et attente du résultat.
• Si le résultat est OK, écriture MV4 et attente du résultat.
• La recette est terminée. Quatre écritures OPC ont été utilisées.
• Aucune optimisation
• Ecriture MV3 sur le serveur OPC 2.
• Ecriture MV1 sur le serveur OPC 1.
• Ecriture MV2 sur le serveur OPC 1.
• Ecriture MV4 sur le serveur OPC 2.

SV_SCADABasic_fr 619
• Attente de tous les résultats.
• La recette est terminée. Quatre écritures OPC ont été utilisées.
• Optimisation complète
• Ecriture MV3 et MV4 sur le serveur OPC 2.
• Ecriture MV1 et MV2 sur le serveur OPC 1.
• Attente de tous les résultats.
• La recette est terminée. Deux écritures OPC ont été utilisées.

Si la liste envoyée par SENDLIST ne contient que des variables OPC, les deux modes peuvent
être utilisés.

SV_SCADABasic_fr 620
Mode Réseau de SVBATCH
Voir aussi Appliqué à

Description
La base de données de traçabilité est distribuée. Il est possible de définir des listes de station, et de
réaliser les opérations suivantes par rapport à cette liste :

• SELECT : Sélection d’un ensemble d’enregistrements


• UPDATE : Mise à jour d’un enregistrement. Les 2 critères de recherche pour le mode UPDATE sont
l’identifiant du lot et la date de début.Si un enregistrement répond à ces 2 critères sur des postes
différents, il seront tous mis a jour.
• DELETE : même fonctionnement que pour le mode UPDATE
• CANCEL : Permet d’annuler une requête de sélection. (SELECT ou ARCHIVELIST). Avec cette
requête, il n’est pas nécessaire de réaliser tous les GETNEXTBUFFER.
• ARCHIVE
• BATCHLIST
• ARCHIVELIST
• GETNEXTBUFFER : Permet de récupérer la suite des enregistrements de la sélection, lorsque le
buffer SCADA BASIC est trop petit pout tout contenir.

Le mode CREATE reste local à la station.

Structure
Toutes les requêtes sont événementielles, le résultat de la requête est obtenue sur passage à 1 du bit
événement défini (NETWORKBROADCAST).
Le buffer de status permet d’obtenir le mode de requête en cours et de la traiter.
Un fois ce traitement terminé, le mode NEXTCOMMAND permet de réactiver l’éxécution des requêtes.
Tant que NEXTCOMMAND n’est pas appelé, toutes les requêtes empilées sont en attente d’exécution.

SV_SCADABasic_fr 621
Modification du Son joué par WEBVUE Mode MULTIMEDIA
Voir aussi
Le fichier son joué est appelé bip.wav et est embarqué dans l'applet Java AiWebVue.jac localisé dans le
répertoire suivant :
<Installation folder>\bin\WebServerExtensions\WebVue\Classes
Le fichier jar est un format zip et peut être édité en utilisant un éditeur zip. La procédure est la suivante :
(avant de démarrer, faire une sauvegarde de AiWebvue.jar par précaution)

1. Créer un nouveau fichier son et nommer le bip.wav.


2. Modifier le nom du fichier AiWebVue.jar en AiWebVue.zip.
3. Editer le fichier zip avec n'importe quel éditeur zip et remplacer le fichier existant bip.wav par le
nouveau que vous venez de créer.
4. Renommer le fichier avec le nom d'origine AiWebVue.jar.

Si vous avec déjà utilisé WebVue, vous devez purger le cache java pour forcer le chargement du fichier jar
au prochain démarrage de WebVue. Des instructions se trouvent dans l'aide principale dans le chapitre
Mise-à-jour de l'Applet.

SV_SCADABasic_fr 622
Structures des Données Batch
Voir aussi Appliqué à

Structure du Fichier SVBATCH


Les fichiers produits par SVBATCH sont enregistrés dans le répertoire projet PER.
Pour chaque base de données, il existe un répertoire contenant un ou plusieurs fichier, chacun
représentant une table (une liste d'enregistrements). Les autres répertoires contiennent des sauvegardes
et des copies d'archives de la base de données.
Voir l'image

Le Fichier Base de Données


Il se trouve dans le répertoire PER du projet :
BATCHDB.DAT
Il est automatiquement chargé au démarrage.

Format du Fichier Paramètre


Il existe un seul fichier INFOS.DAT pour chaque base de données localisée dans le répertoire Database. Le
fichier contient une ligne ayant la structure suivante :
BASEINFOS, DatabaseName, DatabaseType, NbAttributes, NbBackups, , AttributeMask
Attribut Signification
DatabaseName Nom de la base de données et son répertoire de localisation.
DatabaseType Type de base de données (Dans un premier temps, seulement le type Propriétaire est
généré).
NbAttributes Nombre d'attributs configurés pour l'enregistrement.
NbBackup Nombre de copies de sauvegarde (dans le répertoire BAK).
AttributeMask Nombre décimal représentant un masque binaire sélectionnant les attributs utilisés
comme index lors de l'utilisation du mode SELECT (#A1 à #A32)

CE MASQUE DOIT ETRE EDITE MANUELLEMENT. Chaque attribut devant être un index est représenté
par un binaire de 1. Par exemple, pour utiliser les attributs 1, 2, 5 et 6, le masque doit être 110011
ou 51 en décimal.

Lorsque le mode SELECT est utilisé, les attributs texte utilisés dans l'expression de recherche doivent
être indexés.

Exemple
BASEINFOS,DBREPORT,,19,3,,131071
où 131071 en décimal correspond au masque binaire 11111111111111111.
Il indique que l'expression de recherche peut être utilisée dans les premiers 17 attributs texte (#A1 à
#A17)

SV_SCADABasic_fr 623
Fichier de Rapport Batch
Il se trouve dans le répertoire PER\DatabaseName du projet:
BatchId.RPT
Attribut Signification
BatchId Identifie un batch.

Les fichiers table (.rpt)


Chaque table créée dans une base de données aura un fichier équivalent dans le répertoire de base de
données.
Le nom de fichier a le format TableName.rpt. Les fichiers sont ASCII et peuvent être ouverts avec un
éditeur de texte comme NotePad. Chaque fichier a la structure suivante :
BASE, "DatabaseName"
BATCH, "TableNAme",
DATE, "StartDate", "EndDate", "LongVal", "StringVal1", "StringVal2",.., "StringVal32"
Il y a une ligne de début commençant par DATE pour chaque enregistrement créé.

Exemples de fichier .rpt


BASE,Production
BATCH,Machine 1
DATE,01/05/2002 06:00:00:000,01/05/2002 14:00:00:000,,"B100","Nuts","M4","22345"
DATE,01/05/2002 14:00:00:000,01/05/2002 22:00:00:000,,"B101","Nuts","M4","11222"
DATE,02/05/2002 08:00:00:000,02/05/2002 14:00:00:000,,"B102","Bolts","M8","897"
DATE,02/05/2002 14:00:00:000,02/05/2002 22:00:00:000,,"B103","Bolts","M4","5672"
DATE,03/05/2002 14:00:00:000,03/05/2002 22:00:00:000,,"B104","Bolts","M6","1234"
DATE,03/05/2002 14:00:00:000,03/05/2002 22:00:00:000,,"B105","Bolts","M6","5667"
DATE,04/05/2002 14:00:00:000,04/05/2002 22:00:00:000,,"B106","Bolts","M4","9876"
DATE,04/05/2002 14:00:00:000,04/05/2002 22:00:00:000,,"B107","Bolts","M6","5670"

BASE,DB3
BATCH,An2
DATE,08/04/1998 09:44:40:000,08/04/1998 09:48:41:000,1,"PRODUCT1","
PRODUCT2",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
DATE,08/04/1998 09:50:53:000,08/04/1998 09:57:05:000,2,"PRODUCT1",
,"PRODUCT3",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

SV_SCADABasic_fr 624
Suppression d'une Variable, Tendance ou Expression
Voir aussi Appliqué à
Ces informations s'appliquent à partir de la version 7.20d du logiciel sauf précisions.

Suppression d'une variable


Pour supprimer une variable, ajouter la ligne suivante dans le fichier VAREXP.DAT :
DNVAR,Variable_Name

Exemple
Pour supprimer ces variables : motor1.rate et motor1.stop
DNVAR,motor1.rate
DNVAR,motor1.stop

Suppression d'une tendance


Pour supprimer une tendance propriétaire :
DTR, VarName, Unit_name
Pour supprimer une tendance base de données HDS (à partir de la version 8.10 du logiciel) :
DTR_HDS, VarName, LogicalGroupName

Suppression d'une expression


Pour supprimer une expression d'une variable, ajouter la ligne suivante dans le fichier EXPRV.DAT :
DEXPRV, "Branch","ResultVarLeaf"
ou
DEXPRV, "","@Branch.ResultVarLeaf"

Suppression d'un modèle d'expression


Pour supprimer un modèle d'expression, ajouter la ligne suivante dans le fichier EXPRV.DAT :
DEXPRM,"ExpressionTemplateName"

Entêtes
Pour supprimer, il faut ajouter des entêtes dans les modes IMPORTFILE/IMPORTBUFFER d'une variable (à
partir de la version 10.0 du logiciel) :

• "EXPRESSIONTEMPLATE" entêtes pour ajouter/modifier un modèle d'expression dans le nouveau


format.
• "EXPRESSIONONVAR" entêtes pour ajouter/modifier une expression sur variable dans le nouveau
format.
• "DEXPRESSIONONVAR, Name" entêtes pour supprimer une expression sur variable.

SV_SCADABasic_fr 625
Utilisation des Branches dans les Programmes
Voir aussi
Les programmes peuvent être démarrés avec une branche de variable. Par la suite toutes les variables
dans un programme, non précédées par le caractère @, sont relatives à cette branche.
Il y a plusieurs façons d'allouer une branche à un programme :

1. Par l'instruction TREE pour changer le nom de la branche sous contrôle d'un programme.
2. Par l'animation Exécution - Programme. Notez qu'il y a une limitation avec la fonction MAIN - voir ci-
après.
3. Par le lancement d'un programme ou la fonction d'une autre programme avec l'instruction
PROGRAM.

Si vous utilisez l'animation Exécution - Programme pour démarrer la fonction MAIN la


branche ne sera pas automatiquement positionnée. A la place vous pouvez utiliser
l'instruction GETARG(12) pour obtenir la branche et TREE pour la positionner.

SV_SCADABasic_fr 626
Variables de Conditions
Voir aussi Appliqué à
Ce chapitre liste les conditions disponibles pour chaque type de variable.

Variables Etat ou Alarme


L'expression pour les variables états ou alarmes peut contenir un certain nombre de conditions dans
lesquelles un événement peut être déclenché. La syntaxe utilisée est la suivante :
State1 > State2, State3 > State4, .....StateN-1 > StateN
où StateN-1 > StateN définit une transition d'un état à un autre.
Pour les variables états, les états disponibles sont :

Etat Signification
0 Faux
1 Vrai
S Significatif (valide)
NS Non significatif (invalide)
ALL Tous les états

Par exemple: ALL>NS, ALL>1.


Pour les variables alarmes, les états disponibles sont :

Etat Signification
S Significatif (valide)
NS Non significatif (invalide)
ALL Tous les états
ACKON Présente et acquittée
ACKOFF Au repos
NOACKON Présente et non acquittée
NOACKOFF Disparue et non acquittée

Par exemple: ACKON>ALL, ACKOFF>ALL.

Variables Texte
L'expression pour les variables texte ne peut contenir qu'une seule condition.

Condition Signification
ALL>S Transition de n'importe quelle valeur vers une valeur significative (valide).
NS > S Transition d'une valeur non significative (invalide) vers une valeur significative
(valide).
S>S Toute modification d'une valeur significative.
S>ALL Transition à partir d'une valeur significative (valide) vers un autre état.

SV_SCADABasic_fr 627
S > NS Transition à partir d'une valeur significative vers non-significative (invalide).
= string Egal à la chaîne donnée.
> string La valeur ASCII d'une variable texte est supérieure à celle de string.
< string La valeur ASCII d'une variable texte est inférieure à celle de string.

Variables Mesure
L'expression pour les variables mesure ne peut contenir qu'une seule condition.

Condition Signification
ALL>S Transition de n'importe quelle valeur vers une valeur significative (valide).
NS > S Transition d'une valeur non significative (invalide) vers une valeur significative
(valide).
S>S Toutes modifications d'une valeur significative vers une valeur significative.
S>ALL Transition à partir d'une valeur significative (valide) vers un autre état.
S > NS Transition à partir d'une valeur significative vers non-significative (invalide).
= value Egal à "value".
+ value La variable est augmentée par une valeur égale ou supérieure à value.
- value La variable est diminuée par une valeur égale ou supérieure à value.
> value La variable est supérieure à value.
< value La variable est inférieure à value.

SV_SCADABasic_fr 628

Vous aimerez peut-être aussi