Problème arrêt programme

 Je me permets de vous contacter pour un problème de programme sur lequel je bute depuis une semaine. Vous trouverez en fichier le programme sous labView 2009.
Pour résumé, ce programme fait l'acquisition de trois tensions analogiques et une entrée numérique DIO0 via un boitier USB6009 et la programmation d'une tension analogique sur la voie AO0.
J'ai une première boucle de lecture des valeurs qui s'opère toute les 500ms
J'ai une structure évenement "Start Process" qui me permet de tracer un graphique X,Y avec X le temps en cours et Y une valeur analogique
Mon problème principal est le suivant:
Lorsque le programme "Process" se termine, la seule boucle qui continue à tourner est la boucle d'acquisition des tensions et d'affichage des tensions analogiques sur des indicateurs en face avant.
Lorsque je clique alors sur le bouton "Cancel", j'obtiens un sablier sur le PC et je n'ai plus la main sur le PC même en fermant LabView, je dois rebooter!! je n'arrive pas à voir et à isoler le problème même en phase animation de l'execution ( ampoule)? ou alors l'erreur est tellement grosse que je ne la vois pas!!
Pouvez vous m'aider car je commence à m'arracher les cheveux
Autre petit détail, moins important celui-là, je n'arrive pas à trouver la procédure pour effacer un graphique afin qu'il n'y en ait qu'un seul de visible sur le graphe?
En vous remerciant d'avance...
Attachments:
MonProjet.ZIP ‏185 KB

Dupliqué >> http://forums.ni.com/t5/Discussions-de-produit-de-NI/Probl%C3%A8me-arr%C3%AAt-programme-acquisition-...

Similar Messages

  • Problème arrêt programme acquisition USB6009

    Je me permets de vous contacter pour un problème de programme sur lequel je bute depuis une semaine. Vous trouverez en fichier le programme sous labView 2009.
    Pour résumé, ce programme fait l'acquisition de trois tensions analogiques et une entrée numérique DIO0 via un boitier USB6009 et la programmation d'une tension analogique sur la voie AO0.
    J'ai une première boucle de lecture des valeurs qui s'opère toute les 500ms
    J'ai une structure évenement "Start Process" qui me permet de tracer un graphique X,Y avec X le temps en cours et Y une valeur analogique
    Mon problème principal est le suivant:
    Lorsque le programme "Process" se termine, la seule boucle qui continue à tourner est la boucle d'acquisition des tensions et d'affichage des tensions analogiques sur des indicateurs en face avant.
    Lorsque je clique alors sur le bouton "Cancel", j'obtiens un sablier sur le PC et je n'ai plus la main sur le PC même en fermant LabView, je dois rebooter!! je n'arrive pas à voir et à isoler le problème même en phase animation de l'execution ( ampoule)? ou alors l'erreur est tellement grosse que je ne la vois pas!!
    Pouvez vous m'aider car je commence à m'arracher les cheveux
    Autre petit détail, moins important celui-là, je n'arrive pas à trouver la procédure pour effacer un graphique afin qu'il n'y en ait qu'un seul de visible sur le graphe?
    En vous remerciant d'avance
    Pièces jointes :
    MonProjet.ZIP ‏185 KB

    Première chose, quand tu remets ton booléen à la fin du programme c'est mieux de le faire en début de programme, au cas ou tu ai un problème lors d'une éxécution, sinon tu as un bug aussi à l'exécution suivante.
    Pourquoi n'utiliserais tu pas une occurence pour synchroniser tes boucles?
    Sinon d'un point d evue graphique tu pourrais améliorer ton programme afin qu'il soit plus facile à maintenir (commentaires, sous VI, label sur les cables, merger les erreurs, j'aurais aussi récupéré le status des erreurs pour la condition d'arrêt avec un ou pour s'ajouiter à ton bouton stop)
    Rodéric L
    Certified LabVIEW Architect

  • Problème arrêt acquisitio​n sur graphique CVI

    Bonjour,
    voici mon problème :
       je fais l'acquisition de température en continue mais je souhaiterais l'arrêter aprés un certain temps
    Le problème c'est que plus je diminue mon sleep plus plus l'acquisition sur le graphique mets de tempsà s'arrêter
    voici mon programme
    #include "graphessai.h"
    #include <windows.h>
    #include <NIDAQmx.h>
    #include <formatio.h>
    #include <analysis.h>
    #include <ansi_c.h>
    #include <cvirte.h>    
    #include <userint.h>
    #define echelletc                30
    #define offsettc                -50
    #define nbpointtc                10
    #define NUM_PLOTS           20100
    #define ABS_DATE_TIME_FORMAT_STRING "%X  %B %#d, %Y"
    #define REL_DATE_TIME_FORMAT_STRING "%#M:%S.%3f"
    #define MSG_FORMAT_STRING "Current window: %s  -  %s"
    static int PanelHandle, PlotArray[NUM_PLOTS] = { 0 }, CurrentPlotIndex;
    static double StartTime;
    static void TakeSample (void);
    double tc1[10];
    double tc_mean;
    double curTime;
    TaskHandle tc1_task; 
    int main (int argc, char *argv[])
        if (InitCVIRTE (0, argv, 0) == 0)
            return -1;  /* out of memory */
        if ((PanelHandle = LoadPanel (0, "Graphessai.uir", PANEL)) < 0)
            return -1;
        DAQmxCreateTask("TC1",&tc1_task);
        DAQmxCreateAIVoltageChan (tc1_task, "PXI1Slot5/ai6", "", DAQmx_Val_RSE, 0, 10, DAQmx_Val_Volts, "");
        DisplayPanel (PanelHandle);
        RunUserInterface ();
        DiscardPanel (PanelHandle);
        return 0;
    int CVICALLBACK QuitCallback (int panel, int control, int event,
            void *callbackData, int eventData1, int eventData2)
        switch (event)
        case EVENT_COMMIT:
            QuitUserInterface (0);
            break;
        return 0;
    static void TakeSample (void)
        double value;
        double i;
        for(i=0;i<20/0.001;i++){
                DAQmxReadAnalogF64 (tc1_task, 10, 10.0, DAQmx_Val_GroupByChannel, tc1, 10, NULL, 0);
        Mean (tc1, 10, &tc_mean);
         if (StartTime == 0.)
            StartTime = curTime;
        GetCurrentDateTime (&curTime);
        value = tc_mean * echelletc+offsettc; 
        // gPlotArray is a circular buffer; if we've looped around, discard the old plot
        if (PlotArray[CurrentPlotIndex])
            DeleteGraphPlot (PanelHandle, PANEL_GRAPH, PlotArray[CurrentPlotIndex], VAL_DELAYED_DRAW);
       PlotArray[CurrentPlotIndex] =PlotXY (PanelHandle, PANEL_GRAPH, &curTime, &value, 1, VAL_DOUBLE,
            VAL_DOUBLE, VAL_CONNECTED_POINTS, VAL_EMPTY_DIAMOND, VAL_SOLID, 1, VAL_RED);
                  Sleep (1);   
            if (++CurrentPlotIndex == NUM_PLOTS)
            CurrentPlotIndex = 0;
    int CVICALLBACK START (int panel, int control, int event,
            void *callbackData, int eventData1, int eventData2)
        switch (event)
            case EVENT_COMMIT:
             TakeSample ();
                break;
        return 0;
    j'aimerais que l'acquisition s'arrête au bout de 20 SEcondes (juste pour l'exemple plus tard il faudra que je l'arrête au bout de 24 h)) mais mon programme s'arrête environ 25 minutes plus tard
    si quelqu'un à une idée elle serait la bienvenue
    Cordialement

    Bonjour,
    Je n'utilise pas DAQmx pour mes applications du coup je ne l'ai pas installé et je n'ai pas accés à l'aide. Cependant ces fonctionalités étaient déjà disponibles dans le driver précédent (NIDAQ). D'après les quelques documents présent sur le site de NI, la création de mémoire tampon se fait certainement à l'initialisation de la tache d'acquisition (fonction DAQmxCfgSampClkTiming je pense). Le lancement de la tache se fera avec DAQmxStartTask et l'arret avec DAQmxStopTask puis DAQmxClearTask. Pour la lecture des données et le rafraichissement du graphe, il est possible de créer un évenement qui sera déclenché tout les N échantillons acquis (fonction DAQmxRegisterEveryNSamplesEvent). C'est dans la fonction associée a cet évènement qu'il faudra utiliser la fonction "xxxRead" pour lire vos échantillons et les afficher. A vous de dimensionner la mémoire tampon et le nombre d'échantillons qui provoquent l'évènement afin d'obtenir un rafraichissement du graphe plusieurs fois par seconde. J'espère que cela va vous aider ... sans carte d'acquisition et sans aide sur l'API de DAQmx je ne peux pas vous en dire beaucoup plus !  Fouillez dans les exemples de code, il y a certainement un exemple d'acquisition avec mémoire tampon (Buffered acquisition) et un autre sur les évènements DAQmx.
    cordialement,
    Stéphane        
    Labwindows/CVI user since version 4.0

  • Problème arrêt acquisition sur graphique CVI

    bonjour,
    je refais ce poste car je viens de m'apercevoir que je l'avais mis dans le forum anglais
      je fais l'acquisition de température en continue mais je souhaiterais l'arrêter aprés un certain temps
    Le problème c'est que plus je diminue mon sleep plus plus l'acquisition sur le graphique mets de tempsà s'arrêter
    voici mon programme
    #include "graphessai.h"
    #include <windows.h>
    #include <NIDAQmx.h>
    #include <formatio.h>
    #include <analysis.h>
    #include <ansi_c.h>
    #include <cvirte.h>    
    #include <userint.h>
    #define echelletc                30
    #define offsettc                -50
    #define nbpointtc                10
    #define NUM_PLOTS           20100
    #define ABS_DATE_TIME_FORMAT_STRING "%X  %B %#d, %Y"
    #define REL_DATE_TIME_FORMAT_STRING "%#M:%S.%3f"
    #define MSG_FORMAT_STRING "Current window: %s  -  %s"
    static int PanelHandle, PlotArray[NUM_PLOTS] = { 0 }, CurrentPlotIndex;
    static double StartTime;
    static void TakeSample (void);
    double tc1[10];
    double tc_mean;
    double curTime;
    TaskHandle tc1_task; 
    int main (int argc, char *argv[])
        if (InitCVIRTE (0, argv, 0) == 0)
            return -1;  /* out of memory */
        if ((PanelHandle = LoadPanel (0, "Graphessai.uir", PANEL)) < 0)
            return -1;
        DAQmxCreateTask("TC1",&tc1_task);
        DAQmxCreateAIVoltageChan (tc1_task, "PXI1Slot5/ai6", "", DAQmx_Val_RSE, 0, 10, DAQmx_Val_Volts, "");
        DisplayPanel (PanelHandle);
        RunUserInterface ();
        DiscardPanel (PanelHandle);
        return 0;
    int CVICALLBACK QuitCallback (int panel, int control, int event,
            void *callbackData, int eventData1, int eventData2)
        switch (event)
        case EVENT_COMMIT:
            QuitUserInterface (0);
            break;
        return 0;
    static void TakeSample (void)
        double value;
        double i;
        for(i=0;i<20/0.001;i++){
                DAQmxReadAnalogF64 (tc1_task, 10, 10.0, DAQmx_Val_GroupByChannel, tc1, 10, NULL, 0);
        Mean (tc1, 10, &tc_mean);
         if (StartTime == 0.)
            StartTime = curTime;
        GetCurrentDateTime (&curTime);
        value = tc_mean * echelletc+offsettc; 
        // gPlotArray is a circular buffer; if we've looped around, discard the old plot
        if (PlotArray[CurrentPlotIndex])
            DeleteGraphPlot (PanelHandle, PANEL_GRAPH, PlotArray[CurrentPlotIndex], VAL_DELAYED_DRAW);
       PlotArray[CurrentPlotIndex] =PlotXY (PanelHandle, PANEL_GRAPH, &curTime, &value, 1, VAL_DOUBLE,
            VAL_DOUBLE, VAL_CONNECTED_POINTS, VAL_EMPTY_DIAMOND, VAL_SOLID, 1, VAL_RED);
                  Sleep (1);   
            if (++CurrentPlotIndex == NUM_PLOTS)
            CurrentPlotIndex = 0;
    int CVICALLBACK START (int panel, int control, int event,
            void *callbackData, int eventData1, int eventData2)
        switch (event)
            case EVENT_COMMIT:
             TakeSample ();
                break;
        return 0;
    j'aimerais que l'acquisition s'arrête au bout de 20 SEcondes (juste pour l'exemple plus tard il faudra que je l'arrête au bout de 24 h)) mais mon programme s'arrête environ 25 minutes plus tard
    si quelqu'un à une idée elle serait la bienvenue
     Lounette m'a conseillé d'utiliser des mémoires tampons mais je n'ai aucune idée de comment ça marche
    Cordialement

    Bonjour,
    Je pense que le plus "simple" serait d'utiliser les threads.
    En effet tu pourrais soit créer un seul thread avec l'acquisition via DAQmx et l'affichage. Soit créer deux threads un pour l'acquisition qui envoyera ces données à l'autre thread via une file d'attente (Thread Safe Queue). On parle souvent d'architecture producteur / consommateur pour les problèmes LabVIEW.
    Dans tout les cas tu pourras facilement arrêter un thread via les fonctions adéquates comme CmtTerminateThreadPoolThread . Sans avoir de soucis pour attendre l'arrêter de la fonction.
    Je te conseil cet article : http://zone.ni.com/devzone/cda/tut/p/id/3663#toc3
    Cela demande plus de temps de développement mais ça peut être utile.
    Cordialement,
    Da Helmut

  • Problème arrêt boucle esclave

    Bonjour,
    Je rencontre un problème pour l'arrêt de ma boucle esclave. Pourtant, j'ai 3 boucles while avec un booléen et des varaibles locales pour arrêter ces boucles.
    Néanmoins, dans une boucle esclave, j'ai une tempo, et celle-ci doit être terminée pour que mon programme s'arrête.
    Or, je cherche à arrêter mon programme instantanément ou presque ( quelques secondes au maximum ).
    Ci-joint une image pour comprendre mon problème et mon VI.
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Mode _Auto_Cluster.vi ‏151 KB
    Erreur_arrêt.JPG ‏142 KB

    Je comprends mieux votre explication comme cela, oui cela pourrait fonctionner mais dans mon VI, ce n'est pas un temps d'attente de 60 secondes.
    Le 60 sert à convertir en min, le temps d'attente correspond donc au temps du palier (temporisation) multiplié par le 60.
    J'ai testé avec une structure event mais le programme se bloque.
    Donc, soit il faudrait un nouveau moyen pour la temporisation ou un moyen d'arrêter mon case même si l'attente est en cours d'execution.
    Cependant, je n'ai pas trop d'idée là-dessus..
    Pièces jointes :
    Erreur_arrêt.JPG ‏142 KB

  • Problème enregistrement et erreur 1073807339

    Bonjour,
    Je cherche à suivre l'évolution de la résistance (j’impose un courant, je récupère une tension puis U=RI) et de la température de mon échantillon au cours du temps, grâce à deux équipements Keithley connectés par GPIB.
    Pour le suivi de la résistance, l’utilisateur détermine le pas de temps d’enregistrement en entrée. Pour le suivi de la température, l’utilisateur définit un pas de temps d’enregistrement et un seuil de détection de variation (typiquement 1 %).
    Sur la face avant se trouvent quelques indicateurs pour déterminer les causes de l’arrêt du programme (ne sont pas des problèmes LabView) ou les potentielles erreurs LabView.
    Je rencontre deux problèmes avec mon programme :
    1/ parfois, l’enregistrement de la résistance s’arrête (mais le programme continue d'enregistrer la température). Il semblerait que ce problème arrive lorsque je consulte ou copie le fichier texte dans lequel sont enregistrées les données  (pas à chaque fois).
    2/ si j’utilise j’utilise excel ou que j’effectue diverses autres actions sur l’ordinateur alors que le programme LabView est lancé, le message d’erreur suivant s’affiche : « Error 1073807339 occured at VISA wait an event for RQS.VI », et le programme ne tourne alors plus correctement (problème avec le Keithley me permettant de suivre l’évolution de la température).
    Si vous pouviez m’aider à comprendre d’où viennent ces problèmes (surtout le premier), ça me serait bien utile. Vous trouverez en PJ le programme LabView et différents sous-VI. Je n’ai mis que peu d’explications dans le programme, donc si besoin je peux apporter des compléments d’informations.
    Merci de votre aide,
    Simon
    Pièces jointes :
    Conditions enregistrement.vi ‏11 KB
    calcul pas de temps-M2.vi ‏10 KB
    Pgm principal.vi ‏82 KB

    réponse rapide avant d'ouvrir ton code :
    Excel n'est pas partageur, si tu ouvres un fichier avec Excel, il  ne laisse pas d'autres appli accèder à ce fichier, en tout cas c'était vrai avant, peut être queles versions récente sont plus souples, mais pas sûr.
    après avoir vu le code :
    je pense que de lire le fichier de résultat pour voir la dernière valeur n'est pas une super idée, tu pourrais conserver cette valeur dans un shift register pour éviter les accès au fichier.
    ensuite, ouvrir ton fichier avec une autre appli pendant que ton soft continu d'y ajouter des valeurs est un peu risqué, en fait ça va dépendre de l'appli que tu utilises, selon comment elle fonctionne tu auras différents comportement, si tu prends Notepad++ tu n'auras pas de soucis, si tu prends Excel, là c'est plus problématique...
    il y a plusieurs option, avant d'écrire ton fichier, t'assurer qu'il est "libre" en récupérant l'erreur à la sortie d'un "open file", c'est moyen parce que tu dois ensuite stocker les valeurs den mémopire jusqu'à ce que le fichier soit libre..
    autre option, utiliser des TDMS (fichiers qui permettent les accès conccurents), il existe aussi un Addin pour qu'Excel puisse ouvrir ces fichiers.
    Il y a surement d'autre option auxquelles je n'ai pas pensé.
    Bonne chance
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

  • Problème PID

    Bonjour, 
    J'ai un problème avec un programme Labview type ConpactRIO. Je travaille sous 3 cibles IHM (PC), RT, FPGA.
    Dans ma cible RT, j'utilise 6 PID.
    Malheuresement quand je lance mon programme, les entrées/sorties automate se bloquent à l'activation de la structure PID.
    Est ce que vous auriez une idée du type de problème rencontré, et d'une solution pour contourner le problème.
    J'avais pensé à transférer les boucles PID sur le cible IHM(PC).
    Mais le plus important à l'heure actuelle est que je puisse identifier qu'elle est le problème.
    Merci d'avance
    Simon

    Hi Simaoniko,
    You are on English speeaking forum. Please ask your question in English please or post it in French forum.
    http://forums.ni.com/t5/Discussions-au-sujet-de-NI/bd-p/4171
    Thanks
    Paolo_P
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • "Adobe encore a cessé de fonctionner" (Adobe Encore has stopped working)

    English version below
    Bonjour,
    J'ai un problème depuis que j'ai installé Adobe Premiere Pro CS6 et qu'Adobe Encore CS6 a été installé en même temps.
    Voilà en fait Adobe Premiere Pro ne reconnaît pas ma carte graphique (là n'est pas le souci, je savais que je n'arriverai sûrement pas à démarrer le programme avec mon laptop), mais j'ai aussi un problème assez incompréhensible avec Adobe Encore.
    Que je le lance normalement ou en tant qu'administrateur, Encore se lance en ~5 secondes, une fenêtre apparaît en surimpression qui me propose d'ouvrir un document, de créer un nouveau document ou de "m'enquérir" des nouveautés du logiciel. Jusque là aucun souci le logiciel semble stable.
    Mais dès que je clique sur nouveau , l'écran se grise et apparaît la tant redoutée boîte de dialogue "Adobe Encore a cessé de fonctionner", ça me dit que Windows essaye de résoudre le problème puis le programme s'arrête. Sans message supplémentaire de Windows ni rien. J'ai essayé de redémarrer, de supprimer le cache du logiciel et de windows, de lancer en admin, ... rien n'y fait.
    En espérant que quelqu'un pourra un peu m'aider là dessus car je perd patience, merci d'avance !
    Hi everyone,
    I've had an issue since I installed Premiere Pro CS6 and Encore CS6 on my laptop.
    Premiere Pro won't work, which is no surprise given my lame GPU, but Encore won't work.
    In fact, when I launch it, Encore lauches in about 5 seconds and then it opens, a window pops up with 3 options : create a new file or project (cant remember the name), open a file or check the news related to Encore.
    But Encore wont let me create a file : it crashes whenever I try and since I have no .enc file on my computer (first time user), I can't check the 'open file' option. The third choice does nothing but open a tab with adobe website on Google Chrome.
    Please help in any way you can, I'm running out of patience here and don't know what to do !
    Tristan

    Premiere Pro won't work, which is no surprise given my lame GPU,
    This must be fixed.  The GPU only affects playback, not whether the program works.
    Encore wont let me create a file : it crashes whenever I try
    Many possibilities.  Please answer the questions that you'll find at the link below:
    Adobe Forums: FAQ: What information should I provide when asking a question on this forum?
    Welcome to the forum!
    Jeff

  • Erreur de timeout sur Visa Write

    Bonjour,
    Je suis étudiant en énergétique 4e année et je réalise dans le cadre d'un stage une méthode de mesure de débit à travers une porte à l'aide de capteurs à fil chaud et de deux autres types de capteurs.
    J'utilise dans labview un programme dont le visuel+fichier est en pièce jointe.
    Sur le principe, le programme (assez complexe car le signal est traité par la suite) fonctionne de la manière suivante : j'utilise pour acquérir les signaux donnés par le multimètre agilent 34970A trois ensembles "visa write puis visa read" pour l'acquisition successive de signaux de tension, d'intensité, puis de tension (3 types de capteurs différents) avec timeout de 20 seconde, le tout dans une boucle while pour des acquisitions de plusieurs centaines de points, avec une série de valeurs toute les 5 secondes. 
    Aléatoirement, au bout d'un certain nombre de réalisation de la boucle (non régulier, parfois 1H, parfois 10 minutes, parfois 6h), la boucle s'arrête, et j'obtiens l'erreur suivante :
    L'erreur -1073807339 s'est produite à : VISA Read dans VitesseTemperatureRTDDirection2-essais10bon_moymobil.vi
     VISA:  (Hex 0xBFFF0015) Le délai d'attente (timeout) a expiré avant que l'opération ne soit achevée.
     Pourtant, le temps de réponse de mes capteur est inférieur à la seconde. ce sont des capteurs à fil chaud
    Je pense qu'il peut subsister un problème dans mon programme labview sur la méthode d'acquisition de ce multimètre. L'erreur peut également venir du multimètre ou des capteurs (faux contact)
    J'ai essayé d'être le plus claire possible, néanmoins n'hésitez pas à demander des explications 
    Merci d'avance pour vos précieuses réponses 
    Attachments:
    VitesseTemperatureRTDDirection2- essais10bon_optimize_avecsigne050510.vi ‏155 KB
    erreurprogramme.jpg ‏164 KB

    Pourquoi vous employez le "Read" dans la premiere commande de VISA, et "Init-Fetc" dans le prochain VISA?  Essai utilisant le "Read" tout pars tout.  Si ceci ne fixe pas le probleme, changez du "XON-XOFF" au aucun handshaking.  Temps au temps, les "binary bits" (je ne savez pas les mots en Francais) resemble XOFF.  J'espere que ceci vous aide.
    - tbob
    Inventor of the WORM Global

  • Dynamic Class intanciation

    Any body know how to bring a new compiled Class into an alreay running application.
    For instance
    if a change print statment of Child.java and recompile during Arr.java programme is runnig, i want to see changed string in my Arr programme.
    Thanks in advance
    public class Arr  {
        public Arr() {
        public static void main(String[] args){
            Arr arr = new Arr();
            int i=0;
            try{
            while(i< 15){
              Child1 c1 = new Child1();
            Thread.sleep(4000);
            i++;
        }catch(Exception e){}
    public class Child1 {
        public Child1() {
        System.out.println("My change here should be visible every time i get compiled");
    }

    I am not 100% sure, but I think what you are asking is impossible. You can't change the code of an application while it is running, but there might be someway to do it.
    If you are expecting something to change you should not be hardcoding it. Put it in a database or a file somewhere instead.

  • DAQmxWaitU​ntilTaskDo​ne error 200621

    Bonjour
    Voci mon probleme, je souhaite générer un signal en sortie d'une carte d'acquisition et arreter la tache à la fin de la génération du signal. pour cela je creer ma tache, et la configure, puis je la start, actuellement je mets un delai entre le start et le stop de ma tache. pour qu'elle est le temps de s'effectuer.
    j'ai un tableau de 80 000 points echantillonné a 100khertz sur 2 voies ( soit 40 000 points par voie, pour un temps de 0.4s)
    si je met un delais plus long que ma tache(0.4s et plus), labwindows me renvoie l'erreur -200621 Onboard device memory underflow.
    si je mets un delais plus cours( inferieur a 0.4s), la tache s'execute sans probleme mais coupe le signal a la fin du delais ( ce qui est normal).
    J'ai aussi utilisé la fonction DAQmxWaitUntilTaskDone, et je me retrouve avec la meme erreur .
    en faisant: Configuration tache
                    Start tache
                    DAQmxWaitUntilTaskDone
                    stop tache
    Ma question est la suivant, comment puis je faire pour eviter de mettre des délais qui me "mange" une partie de ma génération de signal, et en meme temps eviter les erreurs?
    Je vous remercie
    cordialement

    Bonjour Julien_B,
    Serait-il possible d'avoir le VI en question?
    Il serait plus facile de trouver une réponse adaptée à ton problème avec le programme.
    En attendant as-tu regardé les exemples LabVIEW et plus particulièrement l'exemple "Voltage - Finite Output.vi" ?
    Dans l'attente de ton retour,
    Bonne journée,
    Valentin
    Valentin
    Certified TestStand Architect
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Creation des tableau à deux dimension sur labview

    Bonjour,
    Je suis en stage dans une boite où je fais de l'acquisition de donnés dur Labview mais je découvre encore ce logiciel. J'ai rencontré un petit problème dans ma programmation :/ c'est le suivant: Je fais de l'acquisition des données via la sortie analogique d'un boitier "USB 1208ls" connecté à un inclinomètre et relié à mon ordinateur via un cable USB!! Sur mon programme labview je réussi à visualisé les valeurs de la tension de l'inclinomètre transmises par le boitier. Mais vu que à chaque valeur de tension correspond un angle d'inclinaison j'aimerais Créer un tableau 2 colonnes et n lignes où je mettrais les valeurs de tension dans la première colonne et des angles correspondante dans la deuxième colonne!! De manière à récupéré les tension à la sortie de mon VIs (aplitude and level measurements) et les angles à la sortie de la fonction Arcsinus que j'ai crée!! voilà je vous remercie d'avance pour vos éventuelles réponses

    En fait j'ai pas un tableau qui contient les valeurs de la tension et de l'angle mais deux tableaux 1 D. Aussi quand je relie l'entrée de la fonction built array au reistre situé à gauhe j'ai une erreur. j'ai jointdeux image d'avant la connexion et après .
    merci.
    Pièces jointes :
    avant.PNG ‏36 KB
    après.PNG ‏36 KB

  • Lecture des ports de la carte PCI6509

    Bonjour, nous programmons au niveau des registres la carte PCI-6509 (par vxWorks).
    Nous programmons le port0 en sortie et nous envoyons le motif "A5" sur ce port (registre à l'adresse 0x40 depuis l'adresse de base BAR1) .
    Nous possédons l'outillage SCB-100 qui permet de vérifier que la programmation du port0 est correcte.
    Ensuite, à l'aide de l'outillage, nous rebouclons le port0 sur le port1 , puis à l'aide des registres, nous configurons le port1 en entrée.
    Et nous essayons de lire l'état de ce port (registre à l'adresse 0x50 depuis l'adresse de base BAR1) .
    A cette adresse 0x50, nous ne récupérons pas le motif "A5". Mais si nous effectuons une lecture à l'adresse 0x53, nous retrouvons le motif "A5".
    Pourquoi ce décalage?
    Merci d'avance pour votre réponse.

    Bonjour,
    après investigations complémentaires, nous pensons avoir trouvé l'explication : il y a bien une incohérence sur les adresses des registres dans la documentation http://www.ni.com/pdf/manuals/371580a.pdf
    Est-ce un problème connu chez National Instruments ? Merci de nous le confirmer afin que nous puissions continuer dans l'état et contourner le problème de façon sereine sans qu'il ne subsiste de doutes sur la programmation des registres .
    Explication/Description du problème:
    0°) Rappel : programmation de la carte PCI 6509 par vxWorks, carte 6509 installée dans un PC basé sur un processeur x86, adresse BAR1=0xFE908000
    1°) nous programmons le port0 en sortie et nous envoyons l'octet 0xA5 (offset d'adresse 0x40)
    2°) grâce à l'outillage SCB-100, nous vérifions bien au voltmètre que les sorties TTL correspondant bien au motif "A5" envoyé précédemment
    3°) ensuite, toujours à l'aide de l'outillage, nous rebouclons le port0 sur le port1 , puis à l'aide des registres, nous configurons le port1 en
    entrée (octet 0x01 à l'offset d'adresse 0x51)
    4°) nous écrivons les octets 0x59 et 0x58 aux offsets d'adresses suivants: 0x52, 0x53 (port1)
    5°) nous effectuons une lecture d'octet aux offsets d'adresses suivants: 0x50, 0x51, 0x52, 0x53 (port1)
    6°) nous attendons normalement à récupérer dans l'ordre les octets suivants: 0xA5, 0x01, 0x59 et 0x58,
    mais en réalité nous obtenons 0x58, 0x59, 0x01 et 0xA5
    7°) Afin de dédouaner notre méthode de lecture des octets, nous installons un autre type de carte (gestion de liaisons séries HDLC) sur le bus PCI du PC
    et nous effectuons le même type d'écritures/lectures
    Sur 4 octets consécutifs (adresses 0xFE900060 à 0xFE900063), nous écrivons sur cette carte les octets dans cet ordre: 0x41, 0x42, 0x43 et 0x44
    Puis nous réalisons la lecture à ces adresses et nous récupérons : 0x41, 0x42, 0x43 et 0x44, ce qui est complètement identique !
    Conclusion: suite à ces essais, nous en déduisons que pour la lecture des registres de la carte PCI6509, il y a une permutation à faire sur les offsets d'adresses indiqués dans la documentation , ce qui est faisable par programmation. Les permutations sont applicables à l'intérieur d'un groupe de 4 octets consécutifs.
    Pouvez-vous confirmer notre observation? Merci d'avance.

  • Photoshop elemets 12

    Bonjour,
    Je suis débutant dans Photoshop et toute instalation.
    J'ai acheté et installé photoshop elements 12 su mon PC portable Toshiba Satellite X200.
    Je n'arrive pas à le démarrer. J'ai essayé de le démarrer en administrateur, j'ai essayé de le désinstaler et le réinstaller, j'ai éteint et rallumé l'ordinateur, j'ai fermé tout programme et antivirus.
    je clique sur l'application et elle ne s'ouvre même pas. aucun message d'erreur et aucune aide.
    Je ne comprend pas ce que j'ai pu faire de faux ou comment gérer mon problème.
    Ce programme coûte cher et cela m'exaspère d'avoir payé pour rien.
    Merci de vos réponses.

    Merci de votre réponse
    Oui j'ai déjà regardé et j'ai plus de tout ce qui est demandé.
    Processeur à 2 GHz
    Windows 7
    2 Go de RAM
    200 Go d'espace disque disponible (espace supplémentaire requis durant l'installation)
    Écran couleur avec carte vidéo 16 bits
    Résolution d'écran 1 024 x 768
    Pilote d’affichage compatible Microsoft DirectX 9
    Lecteur de DVD-ROM
    Connexion Internet requise pour l'activation du produit*

  • Acuqisition de données sous LABVIEW

    Salut!!!
    je suis en train de réalsier projet qui concerne l'acquisiton de données entre PC(LABVIEW) et une carte qui contien un PIC16f877
    et cela via le port RS232. J'ai terminé tous les taches necessaires pour assurrer la comminication ;mais j'ai recontré un probleme 
    au niveau de la lecture des donnees qui viennent  du PIC (Tx du port RS232) et je voudrais savoir est ce que le probleme vient du 
    configuration du PORT sur LABVIEW ou bien sur la carte (qui est construite par ISIS ) et surtout au niveau de la programmation du PIC a base
    du langage MIKROC
    tous  les explications sont attachés  
    MERci
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    diagramme PID.gif ‏54 KB
    01.pdf ‏219 KB

    Bonsoir,
    Déjà vous avez un problème dans votre programme sur mikroC:
    1:  Pourquoi vous avez ajouter les 4 sec de delay, sa n'a aucune importance pour la configuration des ports,vous pouvez l'enlever,
    2:  Pour le 2ème delay 100 suffira largement.
    3: Votre écriture sur uart est fausse:
     tout d'abord il faut mette cette condition
    if (UART1_Tx_Idle())
                (Vous écrivez ici)!!
    4: la valeur du temp n'est pas un seul caractère, donc il faut ajouter (text)"uart_write_text(....)
    5:Les lignes 25,26,27, je ne voie pas leurs utilitées vaut mieux les supprimer pour qu'ils vous cause pas de problème lorsque vous faite l'acqusition dans Labview.
    Corriger votre programme et j'attend votre réponse!!
    Bonne courage!!
    Cordialement!

Maybe you are looking for