LAN
Contrôle de la communication client/serveur.
Voir aussi le chapitre sur les applications Multipostes.
Si exécutée dans le contexte d'une session WebVue, cette instruction est traitée par le back end web qui est un poste exécutant le logiciel PcVue au sein du système distribué multiposte.
Support WebVue - Oui.
| 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_NUMBER | 6 |
| 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 |
| 19 | START_NODE | 15 |
| 20 | STOP_NODE | 15 |
A partir de la version 7.20a, PRODUCT_MODE est obsolète, SET_SERVER_MODE doit être utilisé à la place.
Le mode CONNECT est obsolète, le mode START_CONNECTION doit être utilisé à la place.
Certains modes nécessitent de passer le nom d'une connexion en paramètres. Consultez la rubrique Règles de nommage des variables systèmes multi-postes dans le chapitreApplication Explorer pour plus d'informations sur la règle de nommage pour les connexions.
Syntaxe 1
IntVal = LAN (Mode, RemoteServerConnection);
Type de retour : INTEGER
|
Argument |
Définition |
|
RemoteServerConnection |
Nom de la connexion de type serveur tel que configuré sur un nœud rattaché à un poste PcVue dans l'application distribuée. Type STR |
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 et le serveur distant doit appartenir à une association de serveurs. Retour : 1 si OK, 0 sinon. |
Syntaxe 2
IntVal = LAN (Mode, AssocNb, Flag);
Type de retour : INTEGER
|
Argument |
Définition |
|
AssocNb |
Numéro d'association. |
|
Flag |
Code indiquant le nouvel état du serveur : 1 Le serveur devient actif |
Exécution
|
Mode |
Mnémonique |
Action |
|
2
|
PRODUCT_MODE |
Bascule le poste local en serveur actif ou passif. 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 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);
Type de retour : LONG
|
Argument |
Définition |
|
ListType |
Type INTEGER: 1 = Liste serveur |
|
StationName |
Nom du poste. Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
3 |
GET_LISTS |
Remplit BuffList avec les postes appartenant à la liste ListName. 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, ListType, ListName);
Type de retour : LONG
|
Argument |
Définition |
|
ListType |
Type INTEGER. 1 = Liste serveur |
|
ListName |
Nom de la liste. Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
4 |
GET_STATIONS_INLIST |
Remplit BuffList avec les postes appartenant à la liste ListName. 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 5
IntVal = LAN(Mode, AssocName, ServerName, ServerMode);
Type de retour: INTEGER.
|
Argument |
Définition |
|
AssocName |
Nom de l'association. |
|
ServerName |
Nom du poste serveur dans l’association. |
|
ServerMode |
Etat requis : SET_SERVER_ACTIF = actif SET_SERVER_PASSIF = passif |
Exécution
|
Mode |
Mnémonique |
Action |
|
5 |
SET_SERVER_MODE |
Ce mode permet de basculer le poste serveur à l'état actif seulement si ce poste 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.
Pour des raisons de compatibilité, les variables qui n'ont pas de liste de stations de serveur changent aussi.
Les variables internes qui commencent par SYSTEM ne pas de commutateur.
Quand le poste qui est active est forcée passive, le poste de l'association (en dehors de la station qui est forcée) qui a le plus petit nombre sera forcée d'activer.
Syntaxe 6
IntVal = LAN(Mode, StationName [, AlsoSearchAssociation]);
Type de retour : INTEGER
|
Argument |
Définition |
|
StationName |
Nom du poste. |
|
AlsoSearchAssociation |
Optionnel. Si le nom du poste correspond à un nom d'association, retourne : Retour : Numéro de poste si OK, 0 sinon (nom du poste n'existe pas...). 0 : Le numéro de l'association si le numéro du poste n'est pas trouvé. |
Exécution
|
Mode |
Mnémonique |
Action |
|
6 |
GET_STATION_NUMBER |
Fournit le numéro de poste à partir de son nom. Retour : Numéro de poste si OK, 0 sinon (nom du poste n'existe pas...). |
Syntaxe 7
StrVal = LAN(Mode, StationNumber, AlsoSearchAssociation);
Type de retour : STR
|
Argument |
Définition |
|
StationNumber |
Numéro du poste. |
|
AlsoSearchAssociation |
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é. |
Exécution
|
Mode |
Mnémonique |
Action |
|
7 |
GET_STATION_NAME |
Fournit le numéro de poste à partir de son nom. Retour : Nom du poste si OK, sinon une chaîne vide (numéro de poste n'existe pas...). |
Syntaxe 9
IntVal = LAN (Mode, AssocName, StationName, AvailableRate);
Type de retour : INTEGER
|
Argument |
Définition |
|
AssocName |
Nom de l'association. |
|
StationName |
Nom du poste serveur dans l’association. |
|
AvailableRate |
Taux de disponibilité compris entre 0 et 100. Type INTEGER |
Exécution
|
Mode |
Mnémonique |
Action |
|
10 |
SET_AVAILABLE_RATE |
Modifie dynamiquement le taux de disponibilité du poste serveur StationName au sein de l'association AssocName. Ce mode peut s'exécuter depuis n’importe quel poste. Retour : 1 si OK, 0 sinon. |
Le taux de disponibilité peut être modifié pour anticiper qu'un serveur d'archive va être ralenti par une opération de maintenance (une purge par exemple). Pour les associations temps réel, cela peut être utile pour forcer un serveur à devenir le principal.
Ce mode peut par exemple être utile dans les situations où 2 postes serveur d'une association à actif unique ont été déconnectés. Les 2 sont alors actifs, mais lorsqu'ils seront reconnectés, seul celui avec la plus grande restera actif.
Si tous les postes ont le même taux de disponibilité, celui avec le plus petit numéro de poste restera actif. Sinon, c'est le poste avec le plus haut niveau de disponibilité qui restera actif.
Cette modification n’est pas persistante car elle n’entraîne pas de changement au niveau de la configuration.
Syntaxe 10
IntVal = LAN (Mode, AssocName, StationName [, ClientStationName]);
Type de retour : INTEGER
|
Argument |
Définition |
|
AssocName |
Nom d'association. |
|
StationName |
Nom du poste serveur dans l’association d'historiques. |
|
ClientStationName |
Poste client des historiques produites par l’association AssocName. 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_SERVER |
Il est possible de choisir dynamiquement au sein d’une association le serveur qui 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 |
Définition |
|
AssocName |
Nom de l’association d'historiques. |
|
StationName |
Nom du poste serveur dans l’association d'historiques. |
|
ClientStationName |
Le nom d'un client pour les données historiques produites par l'association AssocName. |
Exécution
|
Mode |
Mnémonique |
Action |
|
12 |
RESET_READ_SERVER |
Le poste serveur StationName du poste client ClientStationName dans l’association 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 |
Définition |
|
RemoteStation |
Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans la configuration multipostes). Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
13 |
START_CONNECTIONS |
Si le poste exécutant le programme a configuré un lien avec le poste distant spécifié, 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é. |
| 14 | STOP_CONNECTIONS |
Si le poste exécutant le programme a configuré un lien avec le poste distant spécifié, 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, RemoteConnection);
Type de retour : INTEGER.
|
Argument |
Définition |
|
RemoteStation |
Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans la configuration multipostes). Type STR. |
| RemoteConnection | Nom de la connexion de type serveur ou client du poste distant RemoteStation. Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
15 |
START_CONNECTION |
Si RemoteConnection est une connexion serveur et que le poste exécutant le programme est configuré pour avoir un lien avec le poste RemoteStation, il se connecte au poste RemoteStation sur la connexion RemoteConnection. Si RemoteConnection est une connexion client et que le poste exécutant le programme est configuré en tant que serveur, celui-ci accepte les connexions provenant du poste RemoteStation à travers la connexion RemoteConnection. |
| 16 | STOP_CONNECTION |
Si RemoteConnection est une connexion serveur et que le poste exécutant le programme est configuré pour avoir un lien avec le poste RemoteStation, celui-ci ferme la connexion RemoteConnection. Si RemoteConnection 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 de RemoteStation avec la connexion RemoteConnection. |
| Retour : 1 si OK, 0 sinon. |
Syntaxe 14
IntVal = LAN (Mode SourceNodeName[, DestinationNodeName]);
Type de retour: INTEGER.
|
Argument |
Définition |
| SourceNodeName | Nom du nœud source. Type STR. |
| DestinationNodeName | Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans la configuration multipostes). Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
17 |
SET_ACTIVE_NODE |
Ce mode permet de choisir le nœud actif d'un serveur vers n'importe quel poste distant auquel il est connecté. Ce mode peut être exécuté sur n’importe quel poste. Les variables systèmes suivantes sont mises à jour :
Retour : 1 si OK, 0 sinon. |
Syntaxe 15
IntVal = LAN (Mode, RemoteStation, RemoteNode);
Type de retour : INTEGER.
|
Argument |
Définition |
|
RemoteStation |
Nom du poste distant dans l'application distribuée (tel qu'il est spécifié dans la configuration multipostes). Type STR. |
| RemoteNode | Nom du nœud du poste distant RemoteStation. Type STR. Type STR. |
Exécution
|
Mode |
Mnémonique |
Action |
|
19 |
START_NODE |
Si le poste exécutant le programme a une connexion configurée avec le nœud spécifié du poste distant, il se connecte au nœud de ce poste. Si le poste exécutant le programme est configuré en tant que serveur, il accepte la connexion à partir du nœud spécifié de ce poste distant. |
| 20 | STOP_NODE |
Si le poste exécutant le programme a une connexion configurée avec le nœud spécifié du poste distant, il se déconnecte du nœud de ce poste. Si le poste exécutant le programme est configurée en tant que serveur, il n'accepte plus la connexion à partir du nœud spécifié de ce poste distant. |
| 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");