LAN

Icône du lien vers le conceptVoir également Icône du lien vers le conceptExemple

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
0 Le serveur devient passif

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
2 = Liste client
3 = Autre liste

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
2 = Liste client
3 = Autre liste

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.
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_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 :

SYSTEM.ClientConnectionNodeName.ACTIVECXT

SYSTEM.ServerConnectionNodeName.ACTIVECXT

SYSTEM.NodeName.ACTIVECXT

SYSTEM.ClientConnectionNodeName.ACTIVE_NUMBER

SYSTEM.ServerConnectionNodeName.ACTIVE_NUMBER

SYSTEM.NodeName. ACTIVE_NUMBER

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");