[PCVue] Excecution de script sur serveur redondant

Partie du forum pour tout ce qui concerne la supervision industrielle. Forum, conseil, astuce et entraide sur les logiciels de supervision tels que PC Vue, Vijeo designer, WinCC, win cc, monitor pro, so machine, Citect, Intouch .
Répondre
Avatar du membre
maxpeigne
Dieu du process
Dieu du process
Messages : 771
Enregistré le : 11 oct. 2015, 17:31
Localisation : Nord pas de calais

[PCVue] Excecution de script sur serveur redondant

Message par maxpeigne »

Bonjour à tous,

- J'ai 2 serveurs redondants sous PCVue 7.20D, donc un prod, j'en ais tout le temps un actif, et l'autre passif.

- Via un script que j'ai tapé, je viens lire un fichier texte (données de production) stocké sur un "serveur-data".

Mon problème: Les deux serveurs exécutent le script en même temps, ce qui fait que je me retrouve avec mes données de prod en double dans l'automate...

Pour résoudre ce problème, je dispose d'un bit sur chacun des serveurs qui me dit si celui ci est actif ou passif (SYSTEME.STATUT.1.10 pour le 1er et SYSTEME.STATUT.2.10 pour le second). Je l'utilise donc pour exécuter mon script uniquement sur le serveur actif.
Mais comme le noms de la variable "Serveur Actif" est différent pour les 2 serveurs, j'ai un souci lorsque je génère une nouvelle version de projet.
Le script du serveur 1 (celui sur lequel je développe) est recopié tel quel dans le serveur 2 (avec SYSTEME.STATUT.1.10 au lieu de SYSTEME.STATUT.2.10 pour savoir s'il est actif)... résultat j'ai mes deux serveurs qui envoient les données de prod lorsque le serveur 1 est actif, et qui ne font rien l'autre c'est le serveur 2 qui est actif.
Je suis donc obligé de modifier manuellement la variable du serveur actif en cours sur le pc serveur 2 à chaque nouvelle version (et mes responsables ont la bougeotte, ça veut dire nouvelle version toutes les 2 semaines...).

Avez vous une solution? J'ai pensé à spécifier à PCVue de ne pas recopier CE script lorsque je fais une nouvelle version, mais je ne sais pas si c'est possible.

Merci.
http://automacile.fr - Site et tutoriels sur l'arduino.
steph68
Codeur fou
Codeur fou
Messages : 275
Enregistré le : 21 oct. 2015, 08:23

Re: [PCVue] Excecution de script sur serveur redondant

Message par steph68 »

hello,

dans ton script, tu ne peux pas indexer la bonne variable en fonction d'une constante du PC (adresse IP par ex ou nom de la station ... --> il faut pouvoir accéder à l'API de Windows) ?

sinon il faut faire un MUTEX (Mutual Exclusion)

une variable unique qui est à 1 lorsqu'un script s'exécute (empêche l'autre de se dérouler en parallèle) et retombe à 0 lorsque le boulot est fini
mais s'il y a un décalage temporel (genre le deuxième script démarre 5 minutes après le premier), le boulot sera quand même fait 2 fois ... --> pour y remédier, met en place un TIMESTAMP (date de la dernière exécution) pour un blocage pendant 24 heures par exemple ... le hic c'est que tu ne seras pas lequel des deux aura fait le boulot (le premier qui a pris la main) ... bon ça devient compliqué là :mrgreen:

sinon, peut être le plus simple à faire, c'est à l'automate de trancher et de rejeter les doublons (et éventuellement de vérifier la cohérence) ... ça me paraît plus logique

juste quelques idées

@+
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1573
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: [PCVue] Excecution de script sur serveur redondant

Message par MiGaNuTs »

Bonjour.

Il est en VB ou en scada basic ton script ?

Remarque ça change pas grand chose en fait.

Dans PCVue 10 il y'a la variable System.STATION_NUMBER qui te renvoi le numéro du poste. du coup tu peut t'en servir pour aller lire la bonne variable "jeton" t’indiquant le serveur actif.
Ça te permets de faire une truc du genre " Quel serveur suis-je -> Ai-je la main -> Je fait (ou pas) des trucs "
Je sait pas si elle existait dans PCVue 7. (Au passage, ça date de quelle année cette install ?)
Avatar du membre
maxpeigne
Dieu du process
Dieu du process
Messages : 771
Enregistré le : 11 oct. 2015, 17:31
Localisation : Nord pas de calais

Re: [PCVue] Excecution de script sur serveur redondant

Message par maxpeigne »

Merci pour vos réponses!
steph68 a écrit :dans ton script, tu ne peux pas indexer la bonne variable en fonction d'une constante du PC (adresse IP par ex ou nom de la station ... --> il faut pouvoir accéder à l'API de Windows) ?
Bonne question, j'ai posé la question il y a 5 ans lors d'une formation PCVue mais ma version étant ancienne (7.20d), la formatrice n'a pas pu me repondre. Si j'arrive à contacter la hotline je poserai la question.
steph68 a écrit :sinon, peut être le plus simple à faire, c'est à l'automate de trancher et de rejeter les doublons (et éventuellement de vérifier la cohérence) ... ça me paraît plus logique
C'est une idée, mais ça risque de poser problème si j'ai (rellement) deux fois de suite les même paramètres à envoyer :?
MiGaNuTs a écrit :Dans PCVue 10 il y'a la variable System.STATION_NUMBER qui te renvoi le numéro du poste. du coup tu peut t'en servir pour aller lire la bonne variable "jeton" t’indiquant le serveur actif.
Ça te permets de faire une truc du genre " Quel serveur suis-je -> Ai-je la main -> Je fait (ou pas) des trucs "
Le problème reste identique car dans le script du serveur 1, System.STATION_NUMBER devra etre egal à 1 et pour le serveur 2, System.STATION_NUMBER = 2.

Je sais que changer uniquement une comparaison dans un script n'est pas une grosse modif, mais si le serveur crame dans 7 ans, je ne pense pas que beaucoup de monde se rappellera de cette modif... :roll:

PS: L'install date de 2002.
http://automacile.fr - Site et tutoriels sur l'arduino.
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1573
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: [PCVue] Excecution de script sur serveur redondant

Message par MiGaNuTs »

Bah justement, grâce a cette variable tu peut écrire un script qui n'aura pas le même comportement sur les 2 machines, et donc avoir le même script partout.
Laurent
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 124
Enregistré le : 20 oct. 2015, 11:16
Localisation : Oise et Ile-de-France / France

Re: [PCVue] Excecution de script sur serveur redondant

Message par Laurent »

Salut,

si la variable System.STATION_NUMBER n'existe pas sous PCVue 7.20, tu peux la bricoler :
- un fichier texte en dehors du répertoire de projet, contenant une chaine permettant de distinguer le serveur (C:\SERVEUR.TXT contenant "1" pour le premier, "2" pour l'autre);
- une variable initialisée au lancement de PCVue, dans laquelle tu recopie le contenu du fichier.
Reste à tester cette variable dans les scripts. Ca te parait honnète ?
Laurent
Avatar du membre
maxpeigne
Dieu du process
Dieu du process
Messages : 771
Enregistré le : 11 oct. 2015, 17:31
Localisation : Nord pas de calais

Re: [PCVue] Excecution de script sur serveur redondant

Message par maxpeigne »

La variable System.STATION_NUMBER existe sous PCVue 7.20D !

Je vais donc pouvoir la comparer au serveur actif (je testerai cela en fin de semaine).

Merci de votre aide !
http://automacile.fr - Site et tutoriels sur l'arduino.
Avatar du membre
maxpeigne
Dieu du process
Dieu du process
Messages : 771
Enregistré le : 11 oct. 2015, 17:31
Localisation : Nord pas de calais

Re: [PCVue] Excecution de script sur serveur redondant

Message par maxpeigne »

Pour conclure le sujet, voila la solution que j'ai adoptée:

Code : Tout sélectionner

	' Determination du serveur actif
	if (SYSTEM.SERVER.2.10 == 1) then
		iServeurActif = 2;
	else
		iServeurActif = 1;
	end if
	
	'On active le script uniquement si ce PC est le serveur actif
	if (toi(SYSTEM.STATION_NUMBER) == iServeurActif) then
	...
Merci à tous pour le coup de main ;)
http://automacile.fr - Site et tutoriels sur l'arduino.
Répondre