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

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é...
CordialemntMessage Edité par Ecosmose_CNRS le 05-26-2005 06:13 PM
Julien
Conception Informatique et électronique
CNRS LCSR Web
Orléans la Source FRANCE

Similar Messages

  • Comment remplacer un registre à décalager par une variable globale

    Bonjour tout le monde,
    Je vous sollicite encore une fois par manque d'expérience....
    Alors cette fois-ci j'ai un VI qui va acquérir une tension et faire la moyenne de celle-ci, mais mon problème est que j'utilise une boucle while avec un registre à décalage et d'après mon tuteur c'est à cause de cette boucle que je n'obtiens pas les résultats escontés.
    Il m'a donc conseillé de supprimer ma boucle while et de mette une variable globale qui gère la période de moyennage à la place de mon registre à décalage. 
    Le souci c'est que je ne connais ni d'adem ni d'eve cette variable...
    Est-ce que quelqu'un aurait l'amabilité de m'expliquer un peu cmt ça fonctionne parce que je ne trouve pas mon bonheur dans les exemples et les autres sujets?
    Et surtout est-ce la bonne solution?
    REM: le VI a été créé par une autre personne je n'est fais que de modifier la partie moyennage, donc les autres variables globales ne sont pas de moi.
    Merci d'avance!
    Attachments:
    VI_TEST2.vi ‏50 KB
    VI_TEST2.vi ‏50 KB

    Bonjour à toi,
    Tu trouveras ci-dessous un exemple d'implémentation d'une variable globale fonctionnelle :
    Basic Functional Global Variable Example
    J'ai regardé ton programme mais je ne suis pas sûr d'avoir bien compris ce qu'il devait faire, aussi je ne peux pas te conseiller entre les deux solutions, essaye avec la variable globale fonctionnelle cela sera de toute facon un bon exercice d'apprentissage.
    Pour le reste du programme, il est en principe fortement déconseillé d'utiliser des structures séquences déroulées. Il vaut mieux, si on veut s'assurer du bon déroulement de son programme, utiliser une structure de machine à état ou bien tout simplement le flux de données, principe natif de LabVIEW :
    Programmation par flux de données dans LabVIEW
    Machine à états simple
    J'espère que cela t'aidera,
    Bonne journée,
    M-Junior

  • Datasocket comment retrouver une variable avec un lien datasocket mal configuré dans un VI

    Bonjour,
    J'ai dans un projet une variable configurée avec un lien datasocket en mode lecture qui fait appel à une adresse IP fixe.
    Je le vois avec la commande Netstat sous dos...
    Mon problème c'est que je n'arrive pas à la retouver dans tous les VIs de mon projet pour la corriger ....
    Y'a t'il une astuce
    Merci

    Bonjour Clément,
    Malheureusement je ne saisi pas très bien votre problème
    Utilisez-vous des variables partagées que vous avez liées à une adresse IP?
    Elles ne sont pas présentent dans une bibliothèque de votre projet?
    Je ne comprends ce que vous voulez dire lorsque vous écrivez: "je n'arrive pas à la retrouver dans tous les VIs de mon projet"
    Peut-être pourriez vous poster votre projet?
    Cordialement
     PS: ce forum est destiné au posts en anglais si vous désirez poster en français vous avez le forum français.
    Message Edité par Véronique D le 04-01-2008 04:29 AM
    VéroniqueD
    NI France

  • Comment conserver les caractéristiques typo à une variable titre en continu ?

    Bonjour,
    Je réalise un livre avec plusieurs chapitres sur indesign 5.5. Le nom de chaque chapitre apparaît sur les pages de droite de ma maquette par une variable "titre en continu". Ces titres sont déterminés par un style de paragraphe.
    Dans l'un des titres de chapitre apparaît un exposant (style de caractère) qui disparaît dans la variable.
    Comment puis-je résoudre ce problème ?
    Merci d'avance pour votre aide
    Sophie

    I hope you can read English.
    Working from a Google translation I think you are asking about how to format the content of a variable when you want to have part of the text with a different style, in this case superscript. This may not be possible for you using variables.
    Variables are treated as single characters, as far as formatting and text flow are concerned. For that reason they cannot have multiple formats within the same variable string, nor can they break across multiple lines. You mentioned you are using a Paragraph Style based header variable. Depending on just where and how your multiple formats need to appear you may be able to accomplish your task using a series of Character Style based header variables instead, but it isn't always workable.

  • Après avoir lancé la mise a jour de l'ipad 2, il ne redémarre pas et impossible de le restaurer une fois connecté à l'itunes. Que faire?

    Après avoir lancé la mise a jour de l'ipad 2, il ne redémarre pas et impossible de le restaurer une fois connecté à l'itunes. Que faire?

    Bonjour et merci de votre réponse,
    Pour ce qui est du controle de mon chassis, je ne souhaite pas faire appel au websever... j'aimerais que l'affichage de l'IHM sur la tablette soit "propre", je veux dire par la, que je voudrais que l'utilisateur ai l'impression d'utiliser une application standard comme on peut le voir de nos jour sur nos tablette et non pas afficher mon interface dans un navigateur web... c'est juste par soucis esthétique mais j'y tiens beaucoup :-)
    Je n'avais pas pensé au variable partagé sur le réseau car je n'en ai jamais utilisé, je pensais qu'il était possible de mettre à jour des commandes a l'aide de Viserver meme si ces variable sont situé dans une boucle while... Cela me semble bisard que ce ne soit pas possible car il me semble que l'on peut controler un exécutable créer à partir de VI labview.

  • Comment créer une variable globale

    Bonjour,
    Ca fait maintenant un moment que j'utilise Labview (1ans), et pour la première fois je pense avoir besoin d'une variable globale, mais je n'arrive pas a la maitre en oeuvre.
    Mon problème est le suivant. Je voudrais qu'en cliquant sur un bouton STOP de la face avant d'un de mes VI, sela est l'accion d'apuiller aussi sur le bouton stop d'un autre VI (sous-sous-vi). Je pensais donc mettre une variable global qui surveil à quel état est le bouton stop de mon VI, et faire surveiller cette variable globalle par mon sous-sous-vi pour l'aréter quand on apuis sur stop.
    J'ai donc ajouter une variable globale à mon VI, mais je n'arrive pas à la relier à mon bouton STOP. (jobtien un fil de liaison brisé).
    N'ayant jamais mis de variables globale en place, je ne comprend pas pourquoi, et ne trouve pas de solutions.
    Si quelqu'un pouvais m'expliquer pas a pas comment écrir dans une variable globale, puis comment lire une variable globale, cela m'aiderais grandement. ( je n'ai pas non plus compris pourquoi les variables globales ont une face avant???)
    Merci pour votre aide.
    Nico

    Bonjour,
    Il semblerait que vous ayez créé votre Variable Global en laissant le type par défaut. Du coup vous essayez d’écrire un booléen dans une variable de type Double.
    Je vous conseil de lire ce lien pour tout ce qui est utilisation de variable partagée.  
    Message Edité par BenjaminR le 05-26-2008 04:51 AM
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Pièces jointes :
    VarGlob_Revolution.png ‏151 KB

  • Lire la valeur retournée par une fonction (DLL) dans Pass/Fail test

    Bonjour,
    comme le titre l'indique je charche à tester une fonction en l'appelant d'une DLL (en C) en utilisant le Pass/Fail test. La fonction retourne la somme entre deux entier x et y.
    Quel sont les étapes à suivre et surtout comment je peux récupérer la valeur retournée et faire un teste sur elle!!
    Que dois-je écrire dans la rubrique "Data Source"...
    Vous trouvez ci-joint une idée de ce que j'ai fait..
    merci pour votre réponse
    Pièces jointes :
    PassFail.JPG ‏94 KB

    La question n'est pas très claire...
    Disons que si le but est de vérifier si la valeur est entre certaines bornes ex: 10<x<15 ou x<20 par exemple, alors il faut utiliser un "numericlimit test" 
    Pour réutiliser une valeur (variable) dans TestStand, le plus simple est de l'assigner à une variable locale dans TestStand. (Même méthode qu'en haut mais remplacer l'expression par Locals.MaVariable )
    Rodéric L
    Certified LabVIEW Architect

  • Comment créer une variable partagés d'un cluster?

    bonjour,
    Je cherche à créer une variable partagé d'un cluster à 5 elements de type chaine de caractère comment faire??
    merci d'avance

    Il faut faire un control personnalisé du cluster (un définition de type par exemple). Ensuite dans la création de variable, il faut sélectionner "from custom control" dans le type de données...
    Rodéric L
    Certified LabVIEW Architect

  • Forcer une variable booléenne

    Bonjour,
    J'ai créé un VI contenant une variable booléenne, A. Lorsqu'elle est mise à 1, un sous-VI s'ouvre. Ce sous-VI contient également une variable booléenne, B, qui, elle, permet de retourner au VI lorsqu'elle est mise à 1. Je souhaite forcer A à 0 lorsque B est à 1. Comment fait-on?
    Merci pour votre aide
    Message Edité par lindaa le 02-02-2007 07:48 AM

    Bonjour Lindaa,
    Un moyen de réaliser ce que vous souhaitez est d'utiliser les variables locales (clique-droit sur la commande>créer>variable locale).
    Ci-dessous un petit exemple réalisant ce que vous souhaitez, le VI principale est test booleen.
    Cordialement,
    Christophe S.
    FSE East of France І Certified LabVIEW Associate Developer І National Instruments France
    Attachments:
    invert_subVI.vi ‏10 KB
    test booleen.vi ‏15 KB

  • Shared Variable connectivity in LabVIEW Mobile

    Hello,
    I'm developping an application for a portable device running Pocket PC 2003 O/S.
    I'm trying to figure out whether shared variable connectivity VIs (Open, Read, Write, etc..) are supported in LabVIEW Mobile 2010 module or not?
    Is dragging shared variables from the "My Computer" target directly under "Pocket PC 2003 Device" target the only way to use shared variables in LabVIEW Mobile?
    Thanks.

    Is NI planning to implement progamatically connecting/reading/writing/closing of SV's functionality using the PDA/LabVIEW Mobile module ?.
    In my company we have started to include a cFP 2220 + various I/O modules with one of our products - might I say thats not easy when the Siemens guys can sell their PLC's at a fraction of the NI cost- but please do read on...
    As a user-interface an 8" touch panel is used. One of the problems is that I have to "hardcode" the IP address of the SV's used on the touch panel to connect to specific variables on the cFP 2220 var. engine. This gives the tedious work of recompiling the touch panel code over and over again for specific customers needing specific IP addresses for their cFP controllers. And if the customer uses MAX to change the IP address of the cFP, then his GUI stops working.
    Initiallly I had this problem with the cFP 2120 controller, and thought that my problems would be solved when the cFP2220 came out, since it has two network cards. One card could then be used for "local" communication with the touch panel/GUI and the other for the company network of our customer. Needless to say I was sad to find out that the var. engine can only run on one of the cards - not both.
    The only other solution I see it to implement a homemade protocol via TCP/IP, but this is a lot of work and not really the intention of the Shared Variable.
    Any suggestions to a soltion of the above problem would be greatly apriciated.
    /søren jensen

  • I can't access iPhoto because of this message (sorry, it is in French) : "Votre bibliothèque est utilisée par une autre application ou est devenue illisible"

    Here is messaqge : "I can't access iPhoto because of this message (sorry, it is in French) : "Votre bibliothèque est utilisée par une autre application ou est devenue illisible"".
    I am on a iMac 27"with OS X Lion.
    The problem appeared while I was doing an import from an USB hard disk and an electric shutdown happened... The iMac and everything started well after but ipohoto.

    OK, when you find the solution please post it, it may help others in the future. BTW there are some other simple resets you can do, first is restart in Safe Mode, this will clear some caches. It's possibe one has become corrupt. Next would be to do SMC and PRAM resets, the instructions for both are:
    SMC RESET
    Shut down the computer.
    Unplug the computer's power cord and all peripherals.
    Press and hold the power button for 5 seconds.
    Release the power button.
    Attach the computers power cable.
    Press the power button to turn on the computer.
    PRAM RESET
    Shut down the computer.
    Locate the following keys on the keyboard: Command, Option, P, and R. You will need to hold these keys down simultaneously in step 4.
    Turn on the computer.
    Press and hold the Command-Option-P-R keys. You must press this key combination before the gray screen appears.
    Hold the keys down until the computer restarts and you hear the startup sound for the second time.
    Release the keys.

  • J'ai importer des CD sur iTunes et entrer toutes les infos une par une sauf que quand je regarde le fichiers dans l'explorateur windows, il n'y a que le titre et rien d'autre

    J'ai importer des CD sur iTunes et entrer toutes les infos une par une sauf que quand je regarde le fichiers dans l'explorateur windows, il n'y a que le titre et rien d'autre. Comment faire pour que les infos des musiques iTunes sois les memes sur le fichiers en questions ?
    Mes musiques se trouvent dans un dossier sur mon bureau.
    Merci

    http://en.wikipedia.org/wiki/Comparison_of_audio_formats
    http://translate.google.com/translate?sl=auto&tl=fr&js=n&prev=_t&hl=en&ie=UTF-8& layout=2&eotf=1&u=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComparison_of_audio_for mats&act=url
    http://fr.wikipedia.org/wiki/Format_de_fichier_audio#Caract.C3.A9ristiques_des_f ormats_audio
    I think the bit rate of 1023kbps as opposed to 1411kbps illustrates that the Apple Lossless file is 72% of the size of the original, however it sill consists of 16bit stereo sampled at 44.1KHz. You can also compare the lossy AAC formats to see if you can hear any difference at higher sample rates.
    Wav -> Apple Lossless -> Wav = original data
    Wav -> ACC -> Wav = degraded data
    Je pense que le débit binaire de 1023kbps contre 1411kbps illustre le fait que le fichier Apple Lossless est de 72% de la taille de l'original, mais il se compose de filon-couche stéréo 16bit échantillonnées à 44,1 KHz. Vous pouvez également comparer les formats avec perte AAC pour voir si vous pouvez entendre aucune différence des taux d'échantillonnage élevé.
    Wav -> Apple Lossless -> Wav = données d'origine
    Wav -> ACC -> Wav = données dégradées
    tt2

  • Changer etat d une variable booléenne

    Bonjour.
    Je débute avec labview et j'ai généré un signal numérique dont l'état est stocké dans une varable booléenne que je dois faire évoluer au cours du temps. La règle d'évolution du signal est que le signal a une chance sur dix de changer d'état.
    J'ai donc créer une variable booléene correspondant à l'état du signal, créer une boucle infinie à l'aide d 'une boucle while,stocker l'état du signal à laide d'une registre à décalage, réaliser un tirage aléatoire.
    VOIR pièce jointe
     Il faut que je crée une condition pour que l'état de ma variable booléenne change et la je bloque (passage de 0 à 1 ou vice versa); l'énoncé me demandant qu'il y ait une chance sur 10. Il me restera à afficher les résultat dans un graphe déroulant.
    Quelqu'un pourrait-il m'aider en m'indiquant comment changer l'état de ma variable afin que je puisse poursuivre mon travail?
    MERCI
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    IMAGE 1.png ‏25 KB

    Merci beaucoup pour votre réponse qui m'a beaucoup aidé dans la partie 1. Je me permets donc de revenir vers vous pour la suite qui me pose un peu problème.
    Voila dans un premier temps ce qui m'est demandé dans la suite de l'exercice (partie 2)
     II] décodage des fronts montants
     On souhaite maintenant compter l'ensemble des fronts montants du signal. Pour cela, il faut détecter les changements d'état du signal (d'état bas à état haut).
     Modifier votre programme précédent pour stocker le nombre de fronts montants.
    Etapes intermédiaires :
    - créer une variable compteur
    --‐ Utiliser un registre à décalage pour pouvoir incrémenter le compteur
    --‐ Incrémenter le compteur lors d'un changement d'état
    Cela ne ME pose a priori pas de problème voir pièce jointe image 2.
    Qu'en pensez vous?
    La partie 3 me pose un peu plus de problème de part l'utilisation du MYDAQ.
    VOIR PIECE JOINTE INFO
    En fait j'éprouve des difficultés à retrouver le signal avec le MYDAQ. Je pense que le programme fonctionne mais je n'arrive pas à le relire avec l'oscilloscope.
    Voici la consigne de la partie 3 :
    3  génération du signal à l'aide du MYDAQ
    On souhaite maintennant envoyer le signal simulé sur la ligne de sortie D0 du MYDAQ. Pour cela, on doit modifier notre programme pour ajouter l'envoi du signal numérique sur la sortie D0 du MYDAQ. Réaliser la génération du signal corespondant sur sortie et vérifier à l'aide de l'oscilloscope MYDAQ que le signal est correct; Vous devez obeserver exactement le même signal que celui de votre face avant.
    Pouvez-vous m'indiquez si cela vous semble correct?
    Je vous emercie encore pour votre aide qui m'a fait beaucoup progressé.
    Pièces jointes :
    Image 2.png ‏87 KB
    info.png ‏248 KB

  • Insérer une variable dans une boite de dialogue

    Bonjour,
    Je souhaite insérer une variable (valeur extraite d'un tableau Excel) dans une boite de dialogue. J'ai vu qu'on pouvait modifier le VI Express de la boite de dialogue mais je ne vois pas comment insérer cette variable dans le message d'entrée.
    D'avance merci

    Hello,
    First, I think that you can get more help if you write in english. Because i didn't understand completly your question.
    What you're trying to do it's simply what's in the attached picture? it's not all the code. Simply the read cell and the dialog.
    Software developer
    www.mcm-electronics.com
    PS: Don't forget to rate a good anwser ; )
    Currently using Labview 2011
    PORTUGAL
    Attachments:
    excel_dialolog.JPG ‏5 KB

  • Comment retrouver l'utilisation d'une variable partagée dans un projet

    J'ai un projet assez important où j'utilise des variiableables partagées. Le problème arrive lorsque je veux les retrouver.
    Avec un vi ou une variable glogale, c'est facile : il suffit de faire un clic droit et de sélectionner "trouver toutes les instances". Mais pour une variable partagée, ça n'existe pas.
    Existe-t'il une méthode? quelle-est-elle?

    Bonjour,
    Veuillez suivre cette procédure afin de résoudre votre problème.
    In order to see your Network-Published Shared Variables in the VI Hierarchy you must change their Variable Type to Single-Process. You should only change this property type when you are not accessing the variables from the network. Changing the Variable Type can be done by right-clicking on your variable in the Project Explorer Window and selecting Properties from the drop-down menu. In the Shared Variable Properties window change the Variable Type to Single-Process. Once the variable type has been changed, you can now see what variables are being used by what VI's. To do this open your Main VI, go to VIEW » VI Hierarchy. In the VI Hierarchy window go to VIEW » Include Globals. Now all of your variables will be seen as Globes in the VI Hierarchy.
    Cordialement

Maybe you are looking for

  • How can I uninstall and reinstall the latest upgrade if that is my problem.

    I can only get Firefox to open when I initially startup my computer. If I open the mail first, I can't get into Firefox. I can use the email while Firefox is open, but if I have closed Firefox I can't open any links in the mail messages. I have to sh

  • Strange orange lightspot on the screen?

    Hello, I purchased xperia z3 from a local retailer about two months ago and everything has worked just as expected. But about two weeks ago I noticed a little, strange orange lightspot on the screen above the charging/USB port, on the upper left corn

  • PS file in illustrator changes color when I move it??

    When I open a ps file in illustrator some objects change color when I move them and are displayed correctly in preview and Photoshop, why and how do I fix this? Also the object seems to be duplicated. It should have the same and only the colors of th

  • "Restrictions Do Not Allow Explicit Content"???

    Downloaded a few podcasts yesterday.  Listened to one of them on the ride home last night (from my iPhone, after syncing).  Tried to pick up where I left off this morning, and these particular podcasts are "grayed out" and, when tapped, say "Content

  • Are my settings correct for .m2t transfer through mpeg streamclip?

    hello, i shot a video on the **sony hvr z7u** using compact flash cards and the video was shot on 1080i ...all the files are currently in m2t... i used mpeg streamclip and used the follow settings: -apple pro res 422 codec -100 percent quality -uncom