Intégration d'une DLL générée sur Simulink dans un algorithme Labview, à finalité app temps réel sur NI myRIO

Bonjour à tous,
En deux mots : dans le cadre d'un projet interfacultés, je dois intégrer à mon algorithme Labview l'exécution d'un algorithme d'optimisation actuellement codé sur Simulink d'un tiers. La finalité de mon algorithme est de générer une app temps réel que j'exécute sur le matériel embarqué, NI myRIO.
J'ai pu lire que justement il était possible d'intéragir entre Labview et Simulink, via le fait que Simulink permet de générer une DLL, et Labview de la lire/exécuter.
Mes questions sont :
Est-ce tout-à-fait envisageable dans mon optique d'app temps réel sur myRIO ? (Par exemple, l'exécution de la DLL pourra-t-elle se faire en parallèle du reste mon algorithme Labview (autres acquisitions de données, etc))
Quid du toolkit NI Labview model interface ? Est-il indispensable de l'acquérir (et si oui pourquoi) ?
Je sais qu'il est possible de réécrirer directement sur Labview des algorithmes d'optimisation (ici, du MPC), mais ce serait à priori la dernière option envisagée.

Bonjour,
Le MIT est la seule option non-obsolète pour exécuter des modèles Simulink dans LabVIEW. Et si tant est que vous utilisez MIT 2014 (avec LabVIEW 2014), vous pourrez exécuter votre modèle Simulink sur le myRIO.
Les bases pour que tout fonctionne se trouvent ici :
- http://digital.ni.com/public.nsf/allkb/E552B0CD4E48215586257DF7005BE055?OpenDocument
Cordialement,
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer

Similar Messages

  • Intégration d'une DLL dans un executable

    Bonjour,
    c'est une question qui je sais à déjà été posée, cependant les réponses ne m'ont pas aidé à résoudre mon problème.
    J'ai un dossier comprenant un .vi un projet et une .dll. Le projet contient ce .vi qui fait appel à cette .dll.
    Lorsque je l'execute sur mon PC, pas de souci, tout fonctionne. 
    Je souhaite en faire une application .exe avec le builder. 
    Ma .dll n'apparait pas dans l'explorateur de projet onglet dépendance/.vi.lib
    Du coup, lorsque je l'execute sur un autre PC, cela ne fonctionne pas.
    Quelles sont les étapes pour inclure la .dll dans le projet puis dans l'application.
    Bien à vous.

    Bonjour,
    Pour que ta dll puisse apparaitre, tu peux faire un clic droit sur Poste de travail dans ton projet LabVIEW et Ajouter >> Fichier, ou bien un faire un glisser-déposer.
    Best Practices for Managing NI LabVIEW Applications Using the Project Explorer
    J'espère que cela répond à ta question,
    Bonne journée,
    M-Junior

  • Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?

    Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?

    Bonjour,
    L’utilisation d’une « commande d’onglet », ou « tabcontrol », ne pose pas de problème pour la définition d’une DLL à partir d’un VI.
    Selon la version de LabVIEW que vous utilisez, le processus de création de DLL sera différent.
    Si vous utilisez une version antérieure à la v8, vous pouvez vous reporter à ce lien : Construire une DLL avec LabVIEW 7.0.
    Sinon, vous devez enregistrer votre VI dans un projet, puis définir le connecteur de votre VI avec les paramètres d’entrées/sorties (cette opération est indépendante des différentes « commandes d’onglet » que vous avez pu implémenter).
    Sélectionnez, dans le projet les « spécifications de construction » dans le projet (via un click droit), pour créer une DLL. Dans la boite de dialogue qui s’ouvre alors, à l’onglet « fichiers source », vous pouvez ajouter votre VI parmi les « VIs exportés » et configurer, en fonction des E/S câblées sur le connecteur de votre VI, les fonctions contenues dans la DLL.
    J’espère que ces quelques éléments auront pu vous éclairer.
    Cordialement,
    Guillaume H.
    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;}
    >> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense

  • Intégration en attente des PDF dans Adobe Help Manager

    Sur le Creative Cloud (version MAC 10.6.8), dans Adobe Help Manager, il m'est impossible de mettre à jour les documentations PDF qui sont obsolétes, elles se téléchargent mais la fenêtre reste bloquée au stade de l'intégration en attente avec le message :
    Même au bout de plusieurs heures pas de changement, par conséquent impossible de mettre les documentations PDF en local.
    Quelqu'un aurait-il une idée du problème ?

    Bonjour,
    Notre équipe de documentation vient d'ajouter la date aux guides de références de nos différents produits pour CS6.
    Voici quelques examples (dans différentes langues):
    http://help.adobe.com/archive/fr/photoshop/cs6/photoshop_reference.pdf
    http://help.adobe.com/archive/de/after-effects/cs6/after_effects_reference.pdf
    http://help.adobe.com/archive/es/premiere-pro/cs6/premiere_pro_reference.pdf
    http://help.adobe.com/archive/jp/audition/cs6/audition_reference.pdf
    Je sais que ce n'est pas encore optimal - car comme Pierre-Etienne l'a indiqué, il est toujours mieux de savoir le time stamp de la version avant de télécharger le document. Je discute avec l'équipe Adobe Help Manager pour voir comment l'on peut adresser ce problème.
    Mais, il s'agit tout de même d'un pas dans la bonne direction.
    Cordialement,
    --Jean-François.

  • Formalisme Donnée pour appel d'une DLL

    Bonjour à tous,
    Je suis confronté à un problème dans le cadre de l'utilisation d'une DLL externe, je n'arrive pas à formaliser les données sous labview pour qu'elle soit correctement interprété par la dll via un noeud d'appel externe.
    Les informations fournies par les fichiers d'entête sont les suivantes :
    /** \brief Permet de lire et vérifier l'EEPROM BARTON HILL */
    EXPORT int EEPROM_BARTONHILL_CheckRead(FATHANDLE fatHandle, Read_EEPROM_BARTONHILL* data);
    /** \brief parametres de la lecture de l'EEPROM BARTON HILL */
    typedef struct
    char errorCode; /** \brief code erreur de la requete */
    char refFile[FILENAME_SIZE]; /** \brief Chemin et nom du fichier de reference */
    char maskFile[FILENAME_SIZE]; /** \brief Chemin et nom du fichier de mask */
    unsigned int testResult; /** \brief Nombre d'octet different de la reference */
    } Read_EEPROM_BARTONHILL;
    /** \brief Taille maximum en octets du chemin d'un fichier */
    #define FILENAME_SIZE 50
    Sous python, elles sont interprétées de la manière suivante :
    class Read_EEPROM_BARTON(Structure):
    _pack_ = 1
    _fields_ = [("errorCode", c_byte),
    ("refFile", c_char*50),
    ("maskFile", c_char*50),
    ("result", c_uint),
    J'arrive à faire fonctionner correctement cette bibliothèque sous Python, mais je n'arrive pas à mettre en forme correctement les chaines de caractères pour que labview les interprètes correctement. Il s'agit de lien relatif vers un fichier.
    Comment faire pour que labview interprète correctement les pointeurs inclus dans la structure, je pense avoir utiliser quasiment toutes les possibilités du noeud d'appel sans succès.
    Je vous remercie d'avance pour vos réponses.
    Cordialement,
    Michael.

    Bonjour Eric,
    Merci de ta réponse.
    Comme tu l'as signalé, j'ai bien réaliser l'appel à DLL avec un cluster, en configurant le noeud de méthode en "Adapter au type".
    A partir de là, j'ai tester de les configurations possibles (handle par valeur, pointeur sur les handles, .....), rien n'y fait la dll me retourne un code d'erreur me signalant que mes paramètres sont non valides.
    Quand tu parles de préallouer les chaines de caractères, tu signifies quoi ?
    Pour ma part, j'ai forcé la taille des chaines de caractères à 50 via deux méthodes (soit avec la fonction formater chaine qui force la taille de la chaine résultat à 50, soit en passant par un tableau de U8 redimensionner).
    Je pense que mon problème vient justement de la gestion des chaînes de caractères, mais je ne vois pas le problème dans ma gestion.
    Cordialement,
    Michael

  • Appel d'une dll avec un callback d'une autre fonction

    Bonjour.
    J'ai une carte d"acquisition vidéo dont je souhaite réaliser les drivers sous labview. Une DLL est fournie avec le manuel SDK d'utilisation.
    Mais je coince à ce niveau :
    Register Draw callback function: RegisterDrawFun()
    API:
    int RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun), LONG nUser)
    Parameters:
    DWORD nport Channel Index
    DRAWFUN(DrawFun) callback function
    LONG nUser user data
    Callback function explanation:
    void CALLBACK DrawFun(LONG nPort,HDC hDc,LONG nUser)
    nPort channel number
    hDc devide context of offscreen surface is similar to the DC of display window
    nUser user data
    Return Values:
    If the function succeeds, the return value is 0.
    Remarks:
    When the video is previewed with offcreen mode, the application call this function to get the device context of offscreen surface so that the application can draw lines, strings, rectangles on the surface of video.
    C'est le callback de la fonction "drawfun"  que je ne sais pas mettre en oeuvre. Et dans quelle DLL de windows ce trouve cette fonction car elle n'est pas dans la DLL fournie.
    Pourriez vous aussi me dire , comment obtient t'on le "handle" d'une valeur contenu dans un indicateur pour le donner en argument d'un appel à une DLL.
    Merci d'avance pour votre aide.
    Cordialement,
    MH.

    Dupliqué >> http://forums.ni.com/t5/LabVIEW/appel-d-une-dll-av​ec-un-callback-d-une-autre-fonctionappel-d-une/m-p​...

  • Appel d'une dll avec un callback d'une autre fonctionappel d'une dll avec un callback d'une autre fonction

    Bonjour.
    J'ai une carte d"acquisition vidéo dont je souhaite réaliser les
    drivers sous labview. Une DLL est fournie avec le manuel SDK
    d'utilisation.
    Mais je coince à ce niveau :
    Register Draw callback function: RegisterDrawFun()
    API:
    int RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun), LONG nUser)
    Parameters:
    DWORD nport Channel Index
    DRAWFUN(DrawFun) callback function
    LONG nUser user data
    Callback function explanation:
    void CALLBACK DrawFun(LONG nPort,HDC hDc,LONG nUser)
    nPort channel number
    hDc devide context of offscreen surface is similar to the DC of display window
    nUser user data
    Return Values:
    If the function succeeds, the return value is 0.
    Remarks:
    When the video is previewed with offcreen mode, the
    application call this function to get the device context of offscreen
    surface so that the application can draw lines, strings, rectangles on
    the surface of video.
    C'est le callback de la fonction "drawfun"  que je ne sais pas mettre
    en oeuvre. Et dans quelle DLL de windows ce trouve cette fonction car
    elle n'est pas dans la DLL fournie.
    Pourriez vous aussi me dire , comment obtient t'on le "handle" d'une
    valeur contenu dans un indicateur pour le donner en argument d'un appel à
    une DLL.
    Merci d'avance pour votre aide.
    Cordialement,
    MH.

    Salut,
    Tu dois utiliser un "Call Library Function Node".  Je ne saurais comment traduire en francais. 
    Ca se situe a l'interieur des fonctions de connectivite sous libraries et executables.
    Lorsque tu installes le "Call Library Function Node" sur ton diagramme, tu dois par-apres le configurer.
    Tu cliques (2x) sur l'icone et tu choisi la fonction dll auquel tu veux envoyer des valeurs.  Une fois choisi, tu peux joindre les parametres.

  • [Labwindows/CVI] Integration d'une DLL VC++

    Bonjour à tous,
    J'ai une DLL VC++ avec le .h et le .lib et je n'arrive pas à l'integrer correctement dans un projet CVI.
    dans le .h j'ai une fonction declaré comme suite
    GET_TX(const int FreqMhz, double& resultsevm);
    Labwindows n'accepte pas le passage par reference (double&) donc j'ai modifier la declaration comme suite à fin de l'integrer
    GET_TX(const int FreqMhz, double *resultsevm);
    c'est vrai que j'ai pas d'erreur de compilation suite a cette modif, mais il me semble que la valeur resultsevm retourné par la DLL pas correcte (valeur tres grand % au valeur attendu ) !!!
    Pouvez-vous m'expliquer comment faire pour integrer la dll correctement ?
    si non comment loader la dll dynamiquement ?
    merci d'avance

    Bonjour Tanite, et bienvenue sur le forum de discussins de National Instruments.
    Voici deux documents qui pourraient éventuellement vous aider à utiliser votre DLL dans votre projet CVI :
    1. Creating Import Libraries for a DLL in LabWindows/CVI
    2. FAQ: Using Dynamic Link Libraries with LabWindows/CVI
    Cordialement,
    Vincent.O
    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;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Passer un tableau à une dll labview

    Bonjour
    J'ai créé une dll labview avec une methode qui sert à passer un tableau de double.
    Quand je passe mon tableau , j'ai une erreur memoire insufissante et ça ne fonctionne pas. je joints mon code et le projet de la dll
    la methode : labview dll_tableau
    le client de test pour la dll : test dll.vi
    question annexe : comment fait on pour débugger une dll en labview?
    Merci
    Attachments:
    test.zip ‏808 KB

    Bonjour,
    J'ai essayé de faire fonctionner votre programme. En appelant le programme test dll.vi j'obtiens bien une erreur de mémoire insuffisante. En revanche je ne comprends pas l'intérêt de la structure séquence, ni celui des différentes étapes. En n'utilisant uniquement l'étape n°2, cette erreur de mémoire n'intervient plus. Je n'ai pas été plus loin dans les tests. Aussi, à quoi de servent les différentes étapes de cette structure?
    Bonne journée,
    M-Junior

  • Appli Android // Intégration d'icones personnalisées // Plantage de Flash

    Bonjour,
    Flash plante pendant la publication après intégration des icônes personnalisées dans l'onglet "ICONES" et FICHIERS INCLUS" des paramétres de publication (PNG transparent).
    La version sans icônes fonctionne parfaitement.
    Quelqu'un a t il une idée a ce sujet ?
    Merci
    je précise.
    Je travaille sur Flash CC. Donc quand je publie mon application (.apk, Android) 
    > Paramètres de publication > Cible AIR 14 for Android, AS3
    > J'intègre mes icônes personnalisées (PNG)
    > J'inclus mes fichiers icônes (Onglet Général)
    > Je publie mon application
    > ET PENDANT LA PUBLICATION, FLASH PLANTE
    Je précise que la publication avant intégration des icônes ne pose aucun problème. J'en déduit que ce plantage est causé par l'intégration des icônes.
    Merci de votre aide

    Bonjour,
    Je ne peux pas répondre en détail mais une chose est certaine : pour publier une app sur l'App-Store il faut un Mac.
    Apple fait tout ce qui est en son pouvoir pour rendre cette exigence incontournable.
    Je ne sauis pas quelles bidouilles sont conseillées pour passer outre mais souvent il ne faut pas chercher plus loin.

  • Continuité d'états intégration module simulation

    Bonjour,
    Dans une boucle de simulation, je souhaite pouvoir changer les systèmes différentiels intégrés en conservant la valeur de l'état au moment ou je change d'équations différentielles.(Pour être plus clair, mon cas d'étude est une bille sur un plan incliné, dès que la bille dépasse le bord du plan elle rentre en chute libre. Les conditions initiales de cette chute libre (eq diff2) correspondent à la valeur de l'état au moment ou elle quitte la plan incliné (eq diff1)). Je ne parviens pas à charger les conditions de l'eq diff2 par l'état de la bille issue de l'eq diff1.
    Voici, ci dessous, une image d'un VI élémentaire  qui isole mon problème. Je ne parviens pas à avoir la continuité de l'état entre 2 intégrations consécutives (1/p) et (2/p)...  Il semble que les boucles de simulation ne se comportent pas comme une simple boucle While..
    Est ce que que quelqu'un a une idée? Merci d'avance
    ML
    Attachments:
    Capture d’écran 2010-11-19 à 10.49.04.png ‏31 KB

    Duplicate:  RESET et continuité de CI integrateur boucle simulation
    Yann C.
    France

  • Intégration d'un FP (CVI) sous Visual Studio Express

    Bonjour
    Je souhaite basculer une de mes projets LabWindows sous Visual Studio Express 2013.
    J'ai réussi à intégrer mes panel et différentes varialbes et fonction mais je coince sur l'intégration des drivers instruments (Fp)
    Comment puis je faire pour intégrer mes Fp dans un projet sous Visual Studio?
    Merci pour votre aide.

    Bonjour,
    Pouvez vous me préciser le matériel utilisé ?
    Je vous conseille de passer par les compteurs pour cela je vous invite à regarder les deux liens suivants :
    http://zone.ni.com/devzone/cda/tut/p/id/4523
    http://zone.ni.com/devzone/cda/tut/p/id/3117
    Aussi, étant donné que l'on est dans le domaine échantillonné, il faudra que vos coefficients (de division et multiplication) soit des multiples entier de la fréquence source.
    Cordialement,

  • Recupérer les valeur d'un Control via un .obj appelé depuis une DLL- Getting a Control value from an .obj file called from a dll

    Bonjour,
    Suite au passage à la version CVI 2013, il faut passer par un fichier .obj au lieu du .c quand on veut utiiser la LoadExternalModule.
    Le pb qui en résulte impossibilité de récupérer la valeur des control dans l'uir géré par le .obj qui est appelé par une dll.
    Autrement, il m'est impossible de faire parvenir à la dll les valeur des control ( dll qui appelle le .obj).
    Quelqu'un a eu le même soucis amigos?
    Merci
    Hi,
    When using the LoadExternalModule function in CVI 2013, we can no longer use a .c file. Instead we have to use an .obj file.
    My issue is that' impossible for me to get a control value from an .iur managed by the .obj witchi is called by a dll. 
    Otherwise it's impossible for me to get the control vale when calling the .obj from a dll.
    Any suggestions Amigos
    Thanks

    For people who could be interested in, here the code I provided to the customer. This code demonstrates that calling a function defined in a .obj file from a DLL which is called itself by a program can be realized without throwing any error.
    In order to use this example, you will have to :
    1) Open "main.cws"
    2) Define "Madll" as Active Project (right clic on the project and click on "Set Active Project")
    3) Build the DLL (CTRL+M)
    4) Define "Main" as Active Project
    5) Click on "Debug Project" in order to build the executable and run it
    This example has been built with CVI 2013.
    Jérémy C.
    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
    Attachments:
    main.zip ‏70 KB

  • Possibilité de passage d'une structure C d'une dll appelée dans Labview

    Bonjour, 
    J'aimerais savoir s'il existe un moyen de passer une structure (type de donnée en C) au
    travers de la  boîte de dialogue : "Appeler une fonction d'une
    DLL" pour l'utiliser dans Labview (idéalement sauver directement dans un
    cluster).
    A ce jour j'utilise des pointeurs sur les paramètres individuels pour passer les
    données traitées par ma DLL. 
    Exemple : void  Message(uint32_t *arg1, double *arg2, int32_t arg3)
    En vous remerciant d'avance,
    Meilleures salutations.

    Bonjour,
    En effet, il existe un moyen de passer un cluster dans une DLL en utilisant le type de données "Adapt to Type".
    Il existe une knowledgeBase sur le site de National Instruments expliquant la procédure à suivre.
    How Do I Use Adapt To Type For Call Library Function Nodes?
    Salutations,
    Laurent P.
    Application Engineer
    National Instruments

  • Liaison d'une structure entre CVI et TestStand pour une DLL

    Bonjour,
    Je vous écris car en se moment je fais un ajout d'instrument sur un driver en passant par une DLL. Pour le nouvel appareil, il me faut modifier un projet existant. Ce qui me pose porblème c'est que dans le projet il y a une structure qui est passé en paramètre de fonctions usuelles et j'aimerais pouvoir ajouter dans cette structure de nouveau élément. Car quand je code dans la structure les nouvelles composantes et que je modifie, la structure déjà existant dans la séquence TestStand lié à l'ancien code, je n'arrive pas à transmettre les valeurs de TestStand à mon code. Alors que les anciens composants de la structure prennent bien leurs valeurs. J'ai bien essayé de recréer sous TestStand un nouveau type de structure sans partir de l'existant, hélas le résultat à été le même.
    Il est fort possible que j'ai oublié une manipulation n'étant pas encore totalement bien familiariser avec l'environnement de CVI et de TestStand.
    Merci de l'effort de lecture. En attendant une réponse à mon problème, je reste disponible pour plus de détails

    Rodéric -- En ce qui concerne la structure, j'y ai pensé et du coup la première chose que j'ai fait c'est en recréer une nouvelle. en ce qui concerne le menu déroulant, je t'ai pris un imprimé. On voit bien ma structure dans les choixs mais quand je la séléectionne on se retrouve dans le cas du premier screenshot.
    Eric -- Pour le Header, je le recompile en même temps que mon projet et j'arrive ensuite à voir mon paramètre lors d'une implantation de celle-ci depuis ma structure. concrètement j'ai du mal à percevoir le "reconstruire la DLL en prenant en considérant la nouvelle structure". Si tu pouvais un peu plus m'éclairer sur ce point, s'il te plait.
    Pièces jointes :
    MenuDeroulant.JPG ‏19 KB
    PieceOfCode.JPG ‏18 KB

Maybe you are looking for

  • Bought a new computer running windows 8.1 and it will not allow me to install all in one lexmark printer.

    I have this lexmark printer running on 3 other computer, windows 7 and windows xp, but in 8.1 I get a message saying incompatable. What is really going on? 

  • How to update Qosmio Player on F10?

    Hi, there. I bought Qosmio F10-100 and had a problem watching TV in MCE and Qosmio player both {no sound, b&w, poor quality}. Then I installed new version of TV tuner driver and solved MCE problem. Now I want to update Qosmio Player {no sound}, I dow

  • Update termination when creating delivery in ECC 6.0 system

    Hi Issue: Update termination occured when creating a delivery with Order rederence from VL01N in ECC 6.0. Created a delivery from VL01N and press 'pack' button and saved. I received a message 'Delivery XXXXXXXX is created' and then when i ran VL03N i

  • G4/QS  128 radeon 9200 mac edition & 24" monitor

    Hello everyone!I just bough a 24" samsung lcd/tft display.I have the radeon 9200/128 agp card.This card is the PC version,flashed to work in the G4.When I 'm playing a tv show i downloaded and when i choose full screen the black seems to have bloches

  • Finding files via the servlet container.

    We are currently developing a web application on Tomcat. We have several XML files that are deployed with our application which are parsed on startup. Currently we do this by retrieving the InputStream of each file via the ContextClassLoader: Thread.