LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Evénement déclenché par une variable connectée par Datasocket à un serveur OPC

Bonjour,

J'utilise un serveur OPC pour lire et écrire des variables sur un automate. J'ai essayé de connecter les variables directement avec un connexion Datasocket et d'utiliser les VI en exemple. Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs.
Dans mon application, j'ai besoin d'"attendre" une valeur particulière d'une variable automate. Je voudrais donc dans un premier temps, vérifier que la variable n'est pas à la valeur souhaitée et si ce n'est pas le cas, avoir un événement qui se déclenche au changement de valeur de cette variable. Cette méthode de programmation fonctionne lorsque la connexion de la variable locale n'est pas activée, mais pas avec la connexion Datasocket.
Est-ce normal? Y-at-il un moyen pour que ce soit le serveur qui informe le client Labview que la variable a changé d'état?

Cécile
0 Kudos
Message 1 of 4
(1,904 Views)
Bonjour Cécile !

Et bienvenue sur ce Forum ...francais

Je ne vous apporterai pas d'élément complet de réponse car je n'ai jamais utilisé de process DATASOCKET .

Cependant je pense pouvoir vous aider lorsque , je vous cite :

"Dans les deux cas, les ressources de mon PC augmentent et les temps de réponse sont assez longs. "

Je pense que vous utilisez des boucles contenant des tableaux ou des variables locales et pire encore ,pour l'espace mémoire, des fonctions concaténation, des fonctions de modification de tableau etc...
En effet contrairement à certains languages de programmation utilisant des boucles (presque tous maintenant) Labview génére à chaque itération de boucle une allocation mémoire (différente si ce n'est pas le premier appel ) lors d'une lecture ou écriture de variable locale (imaginez alors si c'est un tableau de clusteur par ex...) l'utilisation mémoire augmente alors à chaque lecture ecriture des variables...

Utilisez un registre à décalage (click droit sur la boucle for ou while) pour que votre variable soit transmise à la prochaine itération (même en arretant Labview, vous pouvez utiliser les valeurs précédents l'arret !) et ne soit plus réallouer à chaque itération


vous pouvez avoir plus de détails en lisant l'Application note suivante...

Labview Performance and Memory Management
et un sujet (en anglais) qui définit bien la différence et le fonctionnement des variables
locales et noeuds de propriété


que vous pourrez retrouver dans le répertoire manuals de LAbview...n'oubliez pas de préciser à chaque sujet votre config et des infos précises sur votre problème , le monde des sytèmes electronique - informatique et vaste et varié...

Cordialemnt

Message Edité par Ecosmose_CNRS le 05-26-2005 06:13 PM

Julien
Conception Informatique et électronique
CNRS LCSR Web
Orléans la Source FRANCE
0 Kudos
Message 2 of 4
(1,901 Views)
Ca y est je me souviens ...mais ce n'est pas tout à fait ce que je pensais ....

le fameux utilitaires se nomme Execution Trace Toolkit....

l'autre qui ressemble comme deux gouttes d'eau est Real-time System Manager (c'est avec celui-ci que je confondais..oups !)

Voilou
Julien
Conception Informatique et électronique
CNRS LCSR Web
Orléans la Source FRANCE
0 Kudos
Message 3 of 4
(1,895 Views)
Bonjour Cécile,

Si votre souci est toujours d'actualité, le mieux serait sans doute de nous faire parvenir un exemple simple reproduisant votre souci.

Cordialement,
0 Kudos
Message 4 of 4
(1,877 Views)