Systèmes de contrôle automatisé CPU et sécurité industrielle. Découvrir LabView Lab View

Bonjour collègues!

Dans un article relativement court, je voudrais parler du langage de programmation LabVIEW. Ce produit très intéressant ne jouit malheureusement pas d'une grande popularité, et j'aimerais combler dans une certaine mesure le vide existant.

Qu'est-ce que LabVIEW ?

LabVIEW est l'un des produits phares de National Instruments. Tout d'abord, il convient de noter que LabVIEW est une abréviation qui signifie Laboratoire art oratoire V virtuel je instrumentation E ingénierie O orkbench. Déjà dans le nom, on peut tracer l'orientation vers la recherche en laboratoire, les mesures et la collecte de données. En effet, construire un système SCADA dans LabVIEW est un peu plus facile que d'utiliser des outils de développement "traditionnels". Dans cet article, je voudrais montrer que la portée possible de LabVIEW est un peu plus large. Il s'agit d'un langage de programmation fondamentalement différent, ou si vous voulez toute une "philosophie" de programmation. Un langage fonctionnel qui fait penser différemment et offre parfois des opportunités absolument fantastiques au développeur. LabVIEW est-il vraiment un langage de programmation ? C'est une question controversée - il n'y a pas de norme ici, comme, par exemple, ANSI C. Dans les cercles étroits de développeurs, nous disons que nous écrivons dans le langage "G". Formellement, un tel langage n'existe pas, mais c'est la beauté de cet outil de développement : de version en version, de plus en plus de nouvelles constructions sont introduites dans le langage. Il est difficile d'imaginer que dans la prochaine réincarnation de C, par exemple, une nouvelle structure pour la boucle for apparaîtra. Et dans LabVIEW, c'est tout à fait possible.
Cependant, il convient de noter que LabVIEW est inclus dans le classement TIOBE des langages de programmation, occupant actuellement la trentième place - quelque part entre Prolog et Fortran.

NI LabVIEW - histoire de la création

National Instruments a été fondé en 1976 par trois fondateurs - Jeff Kodosky, James Truchard et Bill Nowlin dans la ville américaine d'Austin, au Texas. La principale spécialisation de l'entreprise était outils pour les mesures et l'automatisation de la production.
La première version de LabVIEW est sortie dix ans après la création de l'entreprise - en 1986 (il s'agissait d'une version pour Mac d'Apple). Les ingénieurs de NI ont décidé de défier les langages de programmation "traditionnels" et ont créé un environnement de développement entièrement graphique. Jeff est devenu le principal idéologue de l'approche graphique. De nouvelles versions ont été publiées année après année. La première version multiplateforme (y compris Windows) était la version 3 sortie en 1993. La version actuelle est la 8.6, sortie l'année dernière.

La société a son siège social à Austin à ce jour. Aujourd'hui, l'entreprise emploie près de quatre mille personnes et des bureaux sont situés dans près de quarante pays (il y a aussi un bureau en Russie)

Mon introduction à LabVIEW

Mon introduction à LabVIEW a eu lieu il y a presque dix ans. J'ai commencé à travailler dans le cadre d'un nouveau contrat et mon patron de l'époque m'a tendu un paquet de CD avec les mots "maintenant tu vas travailler là-dessus". J'ai installé LabVIEW (c'était la cinquième version), et après avoir joué un moment, je me suis dit qu'il n'y avait rien de sérieux à faire là-dessus, il valait mieux utiliser Delphi "à l'ancienne" ... À quoi il m'a dit - vous ne l'avez tout simplement pas goûté. Travailler une semaine ou deux. Au bout d'un moment, je comprendrai que je ne pourrai plus écrire sur autre chose que LabVIEW. Je suis tombé amoureux de cette langue, même si ce n'était pas "le coup de foudre".

D'une manière générale, il est assez difficile de comparer les langages de programmation graphiques et textuels. Il s'agit peut-être d'une comparaison de la catégorie "PC" contre "MAC" ou "Windows" contre "Linux" - vous pouvez discuter autant que vous le souhaitez, mais l'argument n'a absolument aucun sens - chaque système a le droit d'exister et chacun aura à la fois des partisans et des opposants, de plus, chaque produit a sa propre niche. LabVIEW n'est qu'un outil, quoique très flexible.

Alors qu'est-ce que LabVIEW ?

LabVIEW est une plateforme multiplateforme environnement graphique développement d'applications. LabVIEW est fondamentalement un langage de programmation universel. Et bien que ce produit soit parfois étroitement associé au matériel National Instruments, il n'est néanmoins pas associé à une machine spécifique. Il existe des versions pour Windows, Linux, MacOS. Textes sources portable, et les programmes auront le même aspect sur tous les systèmes. Le code généré par LabVIEW peut également être exécuté dans Windows Mobile ou PalmOS (en toute honnêteté, il convient de noter que la prise en charge de PalmOS a été interrompue, mais Palm lui-même est plus à blâmer ici). Ce langage peut être utilisé avec succès pour créer grands systèmes, pour le traitement de texte, les images et les bases de données.

LabVIEW est un langage de très haut niveau. Cependant, rien ne vous empêche d'inclure des modules de "bas niveau" dans les programmes LabVIEW. Même si vous souhaitez utiliser des inserts en assembleur - cela est également possible, il vous suffit de générer une DLL et d'insérer des appels dans le code. D'autre part, un langage de haut niveau vous permet d'effectuer facilement des opérations très non triviales avec des données, ce qui, dans un langage régulier, pourrait prendre plusieurs lignes (voire des dizaines de lignes) de code. Cependant, par souci d'équité, il convient de noter que certaines opérations des langages de bas niveau (par exemple, travailler avec des pointeurs) ne sont pas si faciles à implémenter dans LabVIEW en raison de son "haut niveau". Bien entendu, le langage LabVIEW inclut des constructions de contrôle de base qui ont des analogues dans les langages "traditionnels" :

  • variables (locales ou globales)
  • ramification (structure de cas)
  • For - boucles avec et sans vérification de terminaison.
  • boucles tant que
  • Opérations de regroupement.

LabVIEW - fonctionnalités du programme et du langage

Dans LabVIEW, les modules logiciels qui sont développés sont appelés "Virtual Instruments" (instruments virtuels) ou simplement VI. Ils sont enregistrés dans des fichiers *.vi. Les VIs sont les blocs de construction qui composent un programme LabVIEW. Chaque programme LabVIEW contient au moins un VI. En termes de langage C, vous pouvez sans problème faire une analogie avec une fonction, à la seule différence que dans LabVIEW, une fonction est contenue dans un fichier (vous pouvez également créer des bibliothèques d'outils). Il va sans dire qu'un VI peut être appelé à partir d'un autre VI. Fondamentalement, chaque VI se compose de deux parties - le schéma fonctionnel et la face-avant. Un schéma fonctionnel est un code de programme (plus précisément, un visuel représentation graphique code) et le panneau avant est l'interface. Voici à quoi ressemble un exemple classique de Hello, World! :

Au cœur de LabVIEW se trouve le paradigme du flux de données. Dans l'exemple ci-dessus, la constante et le terminal indicateur sont reliés par une ligne. Cette ligne s'appelle Wire. Vous pouvez l'appeler "fil". Les fils transportent des données d'un élément à un autre. Tout ce concept s'appelle Data Flow. L'essence du schéma fonctionnel est les nœuds (nœuds), les sorties de certains nœuds sont connectées aux entrées d'autres nœuds. Le nœud ne commencera à s'exécuter que lorsque toutes les données nécessaires au travail arriveront. Il y a deux nœuds dans le diagramme ci-dessus. L'un d'eux est une constante. Ce nœud est autosuffisant - il commence à s'exécuter immédiatement. Le deuxième nœud est un indicateur. Il affichera les données que la constante transmet (mais pas immédiatement, mais dès que les données arrivent de la constante).

Voici un exemple un peu plus complexe : additionner et multiplier deux nombres. Dans les langues traditionnelles, nous écrirons quelque chose comme

int a, b, somme, mul ;
//...
somme = a + b;
mul = a*b;

Voici à quoi cela ressemble dans LabVIEW :

Notez que l'addition et la multiplication sont automatiquement effectuées en parallèle. Sur une machine à deux processeurs, les deux processeurs seront automatiquement activés.

Et voici à quoi ressemblent les boucles while/for et if/then/else :

Comme déjà mentionné, tous les éléments seront exécutés en parallèle. Vous n'avez pas besoin de réfléchir à la manière de paralléliser une tâche en plusieurs threads pouvant s'exécuter en parallèle sur plusieurs processeurs. À dernières versions vous pouvez même spécifier explicitement sur lequel des processeurs telle ou telle boucle while doit être exécutée. Il existe maintenant des modules complémentaires pour les langages textuels qui vous permettent de prendre facilement en charge les systèmes multiprocesseurs, mais cela n'est probablement pas implémenté aussi simplement que dans LabVIEW. (enfin, j'ai encore glissé dans la comparaison avec les langages textuels). Si l'on parle déjà de multithreading, il convient également de noter qu'un développeur dispose d'un large choix d'outils pour synchroniser les threads - sémaphores, files d'attente, rendez-vous, etc.

LabVIEW inclut un riche ensemble d'éléments pour créer des interfaces utilisateur. Les interfaces de Delphi ont été rapidement « attaquées » sur quoi, et dans LabVIEW, ce processus est encore plus rapide.

La livraison standard de LabVIEW comprend également des blocs pour travailler avec des fichiers ini, le registre, des fonctions pour travailler avec des fichiers binaires et de test, des fonctions mathématiques, des outils puissants pour tracer (et où sans cela en laboratoire), et en plus de la possibilité déjà mentionnée d'appels DLL, LabVIEW vous permet de travailler avec des composants ActiveX et .net. À partir de la huitième version, le support des classes a été ajouté à LabVIEW - le langage est devenu orienté objet. Le support implémenté ne peut pas être qualifié de complet, mais les principales caractéristiques des langages orientés objet - l'héritage et le polymorphisme sont présentes. En outre, la fonctionnalité du langage peut être étendue avec des modules supplémentaires, tels que NI Vision Toolkit - pour le traitement d'image et la vision industrielle, et autres. Et avec l'aide du module Application Builder, vous pouvez générer un fichier exe exécutable. Avec Internet Toolkit, vous pouvez travailler avec serveurs ftp, en utilisant le Database Connectivity Toolkit - avec des bases de données, etc.

Vous pouvez souvent entendre l'opinion que le code graphique est peu lisible. En effet, par habitude, la profusion d'icônes et de chefs d'orchestre est quelque peu choquante. De plus, les développeurs novices créent des programmes "feuilles" et des programmes "spaghetti". Cependant, un développeur LabVIEW expérimenté ne créera jamais de diagrammes plus grands que la taille de l'écran, même si le programme se compose de centaines de modules. Un programme bien conçu est en fait "auto-documenté" car il est déjà basé sur une représentation graphique.

Assez longue durée Lors de la programmation dans LabVIEW, j'étais pleinement convaincu que LabVIEW est un interpréteur et que les diagrammes de blocs sont constamment interprétés par le noyau. Après avoir discuté avec des ingénieurs de NI, il s'est avéré que ce n'était pas le cas. LabVIEW est un compilateur (la qualité de la génération de code laisse toutefois à désirer). Mais la compilation a lieu "à la volée" - à tout moment du développement, le programme est toujours prêt à fonctionner. De plus, le code LabVIEW peut être compilé dans un fichier exécutable à part entière qui peut être exécuté sur un ordinateur sans LabVIEW installé (bien qu'il nécessite LabVIEW Run-Time). Vous pouvez également compiler le package d'installation-installer, utilitaires tiers le type InstallShield n'est pas requis.

Une description plus détaillée des fonctionnalités du package dépasse le cadre de cet article, mais je suggère simplement de l'essayer (les liens sont donnés ci-dessous). Comme disaient les grands... la seule façon apprendre un nouveau langage de programmation - y écrire des programmes. Eh bien, les programmeurs expérimentés pourront extrapoler les connaissances acquises à leurs propres besoins.

Bonjour collègues!

Dans un article relativement court, je voudrais parler du langage de programmation LabVIEW. Ce produit très intéressant ne jouit malheureusement pas d'une grande popularité, et j'aimerais combler dans une certaine mesure le vide existant.

Qu'est-ce que LabVIEW ?

LabVIEW est l'un des produits phares de National Instruments. Tout d'abord, il convient de noter que LabVIEW est une abréviation qui signifie Laboratoire art oratoire V virtuel je instrumentation E ingénierie O orkbench. Déjà dans le nom, on peut tracer l'orientation vers la recherche en laboratoire, les mesures et la collecte de données. En effet, construire un système SCADA dans LabVIEW est un peu plus facile que d'utiliser des outils de développement "traditionnels". Dans cet article, je voudrais montrer que la portée possible de LabVIEW est un peu plus large. Il s'agit d'un langage de programmation fondamentalement différent, ou si vous voulez toute une "philosophie" de programmation. Un langage fonctionnel qui fait penser différemment et offre parfois des opportunités absolument fantastiques au développeur. LabVIEW est-il vraiment un langage de programmation ? C'est une question controversée - il n'y a pas de norme ici, comme, par exemple, ANSI C. Dans les cercles étroits de développeurs, nous disons que nous écrivons dans le langage "G". Formellement, un tel langage n'existe pas, mais c'est la beauté de cet outil de développement : de version en version, de plus en plus de nouvelles constructions sont introduites dans le langage. Il est difficile d'imaginer que dans la prochaine réincarnation de C, par exemple, une nouvelle structure pour la boucle for apparaîtra. Et dans LabVIEW, c'est tout à fait possible.
Cependant, il convient de noter que LabVIEW est inclus dans le classement TIOBE des langages de programmation, occupant actuellement la trentième place - quelque part entre Prolog et Fortran.

NI LabVIEW - histoire de la création

National Instruments a été fondé en 1976 par trois fondateurs - Jeff Kodosky, James Truchard et Bill Nowlin dans la ville américaine d'Austin, au Texas. La principale spécialisation de l'entreprise était les outils de mesure et d'automatisation de la production.
La première version de LabVIEW est sortie dix ans après la création de l'entreprise - en 1986 (c'était la version pour Apple Mac). Les ingénieurs de NI ont décidé de défier les langages de programmation "traditionnels" et ont créé un environnement de développement entièrement graphique. Jeff est devenu le principal idéologue de l'approche graphique. De nouvelles versions ont été publiées année après année. La première version multiplateforme (y compris Windows) était la version 3 sortie en 1993. La version actuelle est la 8.6, sortie l'année dernière.

La société a son siège social à Austin à ce jour. Aujourd'hui, l'entreprise emploie près de quatre mille personnes et des bureaux sont situés dans près de quarante pays (il y a aussi un bureau en Russie)

Mon introduction à LabVIEW

Mon introduction à LabVIEW a eu lieu il y a presque dix ans. J'ai commencé à travailler dans le cadre d'un nouveau contrat et mon patron de l'époque m'a tendu un paquet de CD avec les mots "maintenant tu vas travailler là-dessus". J'ai installé LabVIEW (c'était la cinquième version), et après avoir joué un moment, je me suis dit qu'il n'y avait rien de sérieux à faire là-dessus, il valait mieux utiliser Delphi "à l'ancienne" ... À quoi il m'a dit - vous ne l'avez tout simplement pas goûté. Travailler une semaine ou deux. Au bout d'un moment, je comprendrai que je ne pourrai plus écrire sur autre chose que LabVIEW. Je suis tombé amoureux de cette langue, même si ce n'était pas "le coup de foudre".

D'une manière générale, il est assez difficile de comparer les langages de programmation graphiques et textuels. Il s'agit peut-être d'une comparaison de la catégorie "PC" contre "MAC" ou "Windows" contre "Linux" - vous pouvez discuter autant que vous le souhaitez, mais l'argument n'a absolument aucun sens - chaque système a le droit d'exister et chacun aura à la fois des partisans et des opposants, de plus, chaque produit a sa propre niche. LabVIEW n'est qu'un outil, quoique très flexible.

Alors qu'est-ce que LabVIEW ?

LabVIEW est un environnement de développement d'applications graphiques multiplateforme. LabVIEW est fondamentalement un langage de programmation universel. Et bien que ce produit soit parfois étroitement associé au matériel National Instruments, il n'est néanmoins pas associé à une machine spécifique. Il existe des versions pour Windows, Linux, MacOS. Le code source est portable et les programmes auront le même aspect sur tous les systèmes. Le code généré par LabVIEW peut également être exécuté sur Windows Mobile ou PalmOS (pour être juste, le support de PalmOS a été abandonné, bien que Palm lui-même soit plus à blâmer ici). Ce langage peut être utilisé avec succès pour créer de grands systèmes, pour traiter des textes, des images et travailler avec des bases de données.

LabVIEW est un langage de très haut niveau. Cependant, rien ne vous empêche d'inclure des modules de "bas niveau" dans les programmes LabVIEW. Même si vous souhaitez utiliser des inserts en assembleur - cela est également possible, il vous suffit de générer une DLL et d'insérer des appels dans le code. D'autre part, un langage de haut niveau vous permet d'effectuer facilement des opérations très non triviales avec des données, ce qui, dans un langage régulier, pourrait prendre plusieurs lignes (voire des dizaines de lignes) de code. Cependant, par souci d'équité, il convient de noter que certaines opérations des langages de bas niveau (par exemple, travailler avec des pointeurs) ne sont pas si faciles à implémenter dans LabVIEW en raison de son "haut niveau". Bien entendu, le langage LabVIEW inclut des constructions de contrôle de base qui ont des analogues dans les langages "traditionnels" :

  • variables (locales ou globales)
  • ramification (structure de cas)
  • For - boucles avec et sans vérification de terminaison.
  • boucles tant que
  • Opérations de regroupement.

LabVIEW - fonctionnalités du programme et du langage

Dans LabVIEW, les modules logiciels qui sont développés sont appelés "Virtual Instruments" (instruments virtuels) ou simplement VI. Ils sont enregistrés dans des fichiers *.vi. Les VIs sont les blocs de construction qui composent un programme LabVIEW. Chaque programme LabVIEW contient au moins un VI. En termes de langage C, vous pouvez sans problème faire une analogie avec une fonction, à la seule différence que dans LabVIEW, une fonction est contenue dans un fichier (vous pouvez également créer des bibliothèques d'outils). Il va sans dire qu'un VI peut être appelé à partir d'un autre VI. Fondamentalement, chaque VI se compose de deux parties - le schéma fonctionnel et la face-avant. Le schéma fonctionnel est le code du programme (plus précisément, une représentation graphique visuelle du code), tandis que le panneau avant est l'interface. Voici à quoi ressemble un exemple classique de Hello, World! :

Au cœur de LabVIEW se trouve le paradigme du flux de données. Dans l'exemple ci-dessus, la constante et le terminal indicateur sont reliés par une ligne. Cette ligne s'appelle Wire. Vous pouvez l'appeler "fil". Les fils transportent des données d'un élément à un autre. Tout ce concept s'appelle Data Flow. L'essence du schéma fonctionnel est les nœuds (nœuds), les sorties de certains nœuds sont connectées aux entrées d'autres nœuds. Le nœud ne commencera à s'exécuter que lorsque toutes les données nécessaires au travail arriveront. Il y a deux nœuds dans le diagramme ci-dessus. L'un d'eux est une constante. Ce nœud est autosuffisant - il commence à s'exécuter immédiatement. Le deuxième nœud est un indicateur. Il affichera les données que la constante transmet (mais pas immédiatement, mais dès que les données arrivent de la constante).

Voici un exemple un peu plus complexe : additionner et multiplier deux nombres. Dans les langues traditionnelles, nous écrirons quelque chose comme

int a, b, somme, mul ;
//...
somme = a + b;
mul = a*b;

Voici à quoi cela ressemble dans LabVIEW :

Notez que l'addition et la multiplication sont automatiquement effectuées en parallèle. Sur une machine à deux processeurs, les deux processeurs seront automatiquement activés.

Et voici à quoi ressemblent les boucles while/for et if/then/else :

Comme déjà mentionné, tous les éléments seront exécutés en parallèle. Vous n'avez pas besoin de réfléchir à la manière de paralléliser une tâche en plusieurs threads pouvant s'exécuter en parallèle sur plusieurs processeurs. Dans les versions récentes, vous pouvez même spécifier explicitement sur quel processeur telle ou telle boucle while doit être exécutée. Il existe maintenant des modules complémentaires pour les langages textuels qui vous permettent de prendre facilement en charge les systèmes multiprocesseurs, mais cela n'est probablement pas implémenté aussi simplement que dans LabVIEW. (enfin, j'ai encore glissé dans la comparaison avec les langages textuels). Si l'on parle déjà de multithreading, il convient également de noter qu'un développeur dispose d'un large choix d'outils pour synchroniser les threads - sémaphores, files d'attente, rendez-vous, etc.

LabVIEW inclut un riche ensemble d'éléments pour créer des interfaces utilisateur. Les interfaces de Delphi ont été rapidement « attaquées » sur quoi, et dans LabVIEW, ce processus est encore plus rapide.

La livraison standard de LabVIEW comprend également des blocs pour travailler avec des fichiers ini, le registre, des fonctions pour travailler avec des fichiers binaires et de test, des fonctions mathématiques, des outils puissants pour tracer (et où sans cela en laboratoire), et en plus de la possibilité déjà mentionnée d'appels DLL, LabVIEW vous permet de travailler avec des composants ActiveX et .net. À partir de la huitième version, le support des classes a été ajouté à LabVIEW - le langage est devenu orienté objet. Le support implémenté ne peut pas être qualifié de complet, mais les principales caractéristiques des langages orientés objet - l'héritage et le polymorphisme sont présentes. En outre, la fonctionnalité du langage peut être étendue avec des modules supplémentaires, tels que NI Vision Toolkit - pour le traitement d'image et la vision industrielle, et autres. Et avec l'aide du module Application Builder, vous pouvez générer un fichier exe exécutable. En utilisant Internet Toolkit, vous pouvez travailler avec des serveurs ftp, en utilisant Database Connectivity Toolkit - avec des bases de données, etc.

Vous pouvez souvent entendre l'opinion que le code graphique est peu lisible. En effet, par habitude, la profusion d'icônes et de chefs d'orchestre est quelque peu choquante. De plus, les développeurs novices créent des programmes "feuilles" et des programmes "spaghetti". Cependant, un développeur LabVIEW expérimenté ne créera jamais de diagrammes plus grands que la taille de l'écran, même si le programme se compose de centaines de modules. Un programme bien conçu est en fait "auto-documenté" car il est déjà basé sur une représentation graphique.

Pendant assez longtemps, en programmant dans LabVIEW, j'étais complètement convaincu que LabVIEW est un interpréteur et que les diagrammes de blocs sont constamment interprétés par le noyau. Après avoir discuté avec des ingénieurs de NI, il s'est avéré que ce n'était pas le cas. LabVIEW est un compilateur (la qualité de la génération de code laisse toutefois à désirer). Mais la compilation a lieu "à la volée" - à tout moment du développement, le programme est toujours prêt à fonctionner. De plus, le code LabVIEW peut être compilé dans un fichier exécutable à part entière qui peut être exécuté sur un ordinateur sans LabVIEW installé (bien qu'il nécessite LabVIEW Run-Time). Vous pouvez également créer un programme d'installation de package d'installation, les utilitaires tiers tels que InstallShield ne sont pas nécessaires.

Une description plus détaillée des fonctionnalités du package dépasse le cadre de cet article, mais je suggère simplement de l'essayer (les liens sont donnés ci-dessous). Comme le disaient les grands, "... la seule façon d'apprendre un nouveau langage de programmation est d'y écrire des programmes". Eh bien, les programmeurs expérimentés pourront extrapoler les connaissances acquises à leurs propres besoins.

Presque tous les développeurs d'appareils sur microcontrôleurs, qu'ils soient amateurs ou professionnels, ont tôt ou tard besoin de connecter un appareil à microcontrôleur à son « grand frère », à savoir un PC. C'est alors que se pose la question, quel logiciel utiliser pour échanger avec le microcontrôleur, analyser et traiter les données reçues de celui-ci ? Souvent, pour échanger le MK avec un ordinateur, ils utilisent l'interface et le protocole RS232 - le bon vieux Port COM dans une implémentation ou une autre.

Côté informatique, divers programmes terminaux sont utilisés, il en existe des centaines. Mais ces programmes n'assurent que la réception et la transmission d'informations. Il est difficile de le traiter et de le visualiser sous une forme visuelle.

Certaines personnes écrivent elles-mêmes de tels logiciels dans un langage de programmation (Delphi, C ++), en les dotant des fonctionnalités nécessaires. Mais cette tâche n'est pas facile, vous devez connaître, en plus de la langue elle-même, l'appareil système opérateur, les méthodes de travail avec les ports de communication, de nombreux autres détails techniques qui détournent l'attention de l'essentiel - la mise en œuvre de l'algorithme du programme. En général, soyez un programmeur Windows/Unix en cours de route.

Dans le contexte de ces approches, le concept d'instruments virtuels (vi) diffère fortement. Cet article se concentrera sur le produit logiciel LabView de Nationals Instruments. Je commence tout juste à maîtriser ce merveilleux produit, je peux donc faire des inexactitudes et des erreurs. Les spécialistes corrigeront :-)) Au fait, c'est quoi LabView ?

LabView est un environnement de développement et une plate-forme pour exécuter des programmes écrits en langage graphique programmation "G" société National Instruments.

parlant langage clair, LabView - Il s'agit d'un environnement permettant de créer des applications pour les tâches de collecte, de traitement, de visualisation d'informations provenant de divers appareils, installations de laboratoire, etc. aussi pour gérer procédés technologiques et appareils. Cependant, avec l'aide de LabView, vous pouvez créer des logiciels d'application tout à fait ordinaires. Ce n'est pas mon but de décrire en détail ce produit et de travailler avec lui. LabView contient des milliers de pages d'excellente documentation et des centaines de livres. Internet regorge de ressources liées à LabView où vous pouvez trouver des réponses à toutes vos questions.

Le but de cet article est de montrer à quel point il est facile et pratique, par rapport à la programmation traditionnelle, de créer des applications pour un PC et quelle est la puissance de LabView. (En fait, c'est discutable, car en programmation traditionnelle, sur le même Delphi, ce n'est pas plus difficile à faire. Et en termes d'efficacité, c'est à peine pire, sinon mieux. Mais pour cela, il faut étudier Delphi beaucoup plus longtemps. Tout est rapide et clair presque immédiatement J'ai étudié quelques manuels et avant de clôturer toutes sortes de cadrans. Donc, pour les programmeurs, c'est comme la cinquième patte d'un chien, mais pour de tels camarades éloignés d'un ordinateur comme moi, c'est tout. Une fois, en une demi-heure heure, quand j'ai vu LabView pour la première fois, j'ai construit un système brutal utilisant un contrôle manuel mince d'irrigation et de chauffage pour une serre de chanvre.Avec toutes sortes de contrôleurs PID.J'ai apporté aux potentiomètres et capteurs du stand de laboratoire qui était dans notre technicien et a lancé cette unité infernale. Et tout a fonctionné tout de suite, sans débogage. D'ailleurs, tout l'équipement du collisionneur de hadrons fonctionne sur LabView, ainsi que beaucoup d'équipements scientifiques. note DI HALT) Après tout, la plupart des ingénieurs en électronique sont étrangers à la programmation pour PC, n'est-ce pas ? C'est ce que nous essayons de résoudre. Afin de ne pas étudier les chevaux à vide sphériques, nous nous sommes fixés et mettons en œuvre une tâche simple. La tâche est vraiment simple, mais sur cette base, vous pouvez comprendre les principes de base de la programmation dans LabView. Nous utiliserons LabView version 2010. Pour les autres versions, les différences seront minimes.

Une tâche
Nous avons des frais Microcontrôleur AVR connecté à l'ordinateur via RS232. Le contrôleur est chargé d'un micrologiciel, selon lequel le contrôleur mesure la valeur de tension à l'une des entrées ADC et transmet le code ADC (de 0 à 1023) à l'ordinateur via un canal série. Il est nécessaire d'écrire un programme PC qui recevra un flux de données de l'ADC, affichera le code ADC, convertira le code ADC en une valeur de tension en volts, affichera la valeur de tension en volts, tracera le changement de tension dans le temps.

Eh bien, probablement assez de paroles, commençons peut-être !

Donc, ce dont nous avons besoin pour travailler :

  • En fait LabView lui-même. Vous pouvez télécharger une version d'évaluation depuis le site Web de NI : http://www.ni.com/trylabview/. En outre, une version piratée est facilement googlable. Soit dit en passant, sur rutracker.org, en plus de l'abîme des pirates, il existe également une version Linux pour laquelle l'enregistrement ne semble pas du tout nécessaire. NI a décidé de rencontrer l'open source ?
  • Vous devez également télécharger le composant NI VISA. Sans ce programme, LabView ne « verra » pas le port COM de l'ordinateur. VISA contient des fonctions pour travailler avec les ports de communication et bien plus encore. Vous pouvez le télécharger sur joule.ni.com. Installez LabView et VISA. L'installation de ce logiciel est standard, il n'a pas de fonctionnalités particulières.

Tout d'abord, nous devons nous assurer que VISA a trouvé un port COM dans le système et fonctionne correctement avec celui-ci. Vous pouvez le vérifier comme suit : exécutez le programme Mesure et automatisation. Il est livré avec LabView. S'il n'est pas installé, vous pouvez l'installer manuellement. Sur le disque (l'image avec LabView l'a).

Sur le côté gauche de la fenêtre, nous voyons le matériel trouvé dans le système. Entre autres, on retrouve notre port COM. Sur la droite, il y a un bouton de panneau de test Open Visa. Avec lui, vous pouvez tester l'appareil sélectionné. Dans le cas d'un port COM, vous pouvez y envoyer ou recevoir une séquence de caractères par défaut ou arbitraire. Si tout est en ordre avec le port, vous pouvez procéder directement à la création de notre programme.

Nous démarrons LabView. Dans la fenêtre Getting Started, sélectionnez Blank Vi, ce qui signifie un nouvel instrument virtuel.

Nous obtenons quelque chose comme ceci :

Alors qu'est-ce que nous avons. L'espace de travail se compose de deux grands panneaux Front Panel et Block Diagram. Sur le panneau avant, nous composerons l'interface de notre programme à l'aide des contrôles du panneau Contrôles. Ces éléments sont les poignées de résistances variables qui nous sont familières, des LED, des boutons, des dispositifs de pointage, un écran d'oscilloscope, etc. Ils servent à entrer des informations dans le programme et à afficher les résultats de l'exécution. Dans le panneau Schéma fonctionnel, le code du programme se trouve directement. Ici, il faut prendre un peu de recul et expliquer le principe de la programmation en LabView. Un petit exemple. Il est d'usage de commencer à travailler sur le programme avec la conception de l'interface, puis la mise en œuvre de l'algorithme de travail sur le schéma fonctionnel. Faisons le programme le plus simple pour multiplier deux nombres. Pour ce faire, nous allons placer sur la face avant en faisant glisser trois contrôles, disons les éléments Knob et Numeric Indicator pour afficher le résultat.

Nous formerons l'interface comme notre cœur le désire, par exemple comme ceci :

Ok, maintenant nous devons implémenter la multiplication réelle. Allez dans le panneau du diagramme de blocs et voyez que pour chacun de nos contrôles, une icône correspondante a été créée. Il est préférable de changer immédiatement le mode d'affichage sous forme de terminaux. Le diagramme ne sera pas si encombré. En outre dans les terminaux on voit le type des données avec lesquelles n'importe quel kontrol agit. Pour ce faire, faites un clic droit sur l'icône et décochez Afficher en tant qu'icône. En haut de l'écran, la commande se présente sous la forme d'un terminal, en bas et à droite sous la forme d'une icône. Afin de configurer la vue sur le schéma fonctionnel en tant que terminaux par défaut, vous devez sélectionner l'élément de menu Outils->Options, sélectionner Schéma fonctionnel à gauche et décocher Placer les terminaux du panneau avant sous forme d'icônes. Très utile pour afficher l'aide contextuelle. Vous pouvez l'afficher avec la combinaison Ctrl + H. Cette fenêtre affiche des informations sur l'objet sur lequel le curseur est actuellement superposé. Objet méga pratique.

Nous devons maintenant ajouter la fonction de multiplication au schéma fonctionnel. Cliquez avec le bouton droit sur le diagramme et sélectionnez la fonction Multiplier dans la palette numérique. Mettons-le sur un schéma. Il convient de noter que LabView ne dispose que d'un vaste ensemble de fonctionnalités. Cela comprend diverses mathématiques, statistiques, analyse de signal, contrôle PID, traitement vidéo, son et image. Vous ne pouvez pas tout lister.

Le concept le plus important dans la programmation LabView est le concept DataFlow. L'essentiel est le suivant : contrairement aux langages de programmation impératifs, où les instructions sont exécutées dans un ordre séquentiel, dans LabView, les fonctions ne fonctionnent que s'il existe des informations sur toutes les entrées de fonction (chaque fonction a des valeurs d'entrée et de sortie). Ce n'est qu'alors que la fonction implémente son algorithme et que le résultat est envoyé à une sortie pouvant être utilisée par une autre fonction. Ainsi, au sein d'un même VI, les fonctions peuvent fonctionner indépendamment les unes des autres.

Maintenant, afin de relancer notre exemple, nous devons suivre ce concept et donner à l'entrée de la fonction les valeurs numériques que nous avons définies pour les contrôles, et obtenir le résultat de la sortie et l'afficher.

Pour connecter des éléments sur un diagramme, utilisez l'outil Connecter un fil du panneau Outils. Sélectionnez-le et dessinez nos connexions.

C'est tout, vous pouvez exécuter ce programme stupide pour une exécution cyclique et tourner les boutons en observant le résultat de la multiplication.

Comme vous pouvez le voir, il semble n'y avoir rien de compliqué. Mais en même temps, LabView vous permet de résoudre des problèmes de toute complexité ! Ept, le système de contrôle TANK est fait dessus ! Pour que.

Eh bien, maintenant faisons plus choses intéressantes, à savoir, nous allons fabriquer notre voltmètre le plus simple, dont j'ai parlé au tout début.

Alors que devons-nous faire. Vous devez d'abord configurer et initialiser port série. Démarrer une boucle sans fin. Dans la boucle, nous utilisons la fonction pour lire depuis le port et recevoir des informations. Convertissons les informations à afficher sur le graphique, recalculons le code ADC en valeur de tension en volts. A la sortie de la boucle, on ferme le port.
Donc, dans l'interface de notre programme, il n'y aura pas d'éléments de contrôle autres que le bouton Stop, mais il n'y aura qu'un affichage du résultat, nous allons faire ceci : nous allons d'abord créer un schéma fonctionnel, puis ajouter les éléments manquants à le panneau avant. Même s'il faut faire le contraire ! Mais dans ce cas, c'est plus pratique.

Sur le panneau du diagramme, nous plaçons l'élément While Loop de la palette Structures, c'est notre boucle infinie. Nous encerclons la zone avec un cadre de cycle, suffisant pour tenir à l'intérieur de l'algorithme. Il y a un point rouge dans le coin inférieur droit, faites un clic droit dessus et sélectionnez Créer un contrôle. Le bouton Stop apparaîtra immédiatement sur le panneau avant. Lorsque vous cliquez dessus, notre programme se termine.

Maintenant, en dehors de la boucle, nous devons placer les fonctions d'initialisation et de fermeture du port. Initialisation à gauche, fermeture à droite. Encore une fois, faites un clic droit et sélectionnez les fonctions Configurer le port, Lire et Fermer. Ces fonctions se trouvent dans la palette Instrument I/O -> Serial. La fonction de lecture est placée à l'intérieur de la boucle. Nous connectons les sorties et les entrées des fonctions à l'aide d'une bobine avec des fils. Pour la fonction Read, nous devons spécifier le nombre d'octets qu'elle acceptera. Nous faisons un clic droit sur l'entrée centrale de la fonction Lire et sélectionnez Créer-> Constante, entrez une valeur, par exemple 200. À ce stade, cela devrait se passer comme dans la capture d'écran.

Vous devez créer des contrôles pour la fonction d'initialisation du port. Deux nous suffisent amplement - la vitesse du port et le nom du port. De la même manière que nous avons créé une constante pour la fonction read, nous créons des contrôles. RMB sur les entrées requises de la fonction et de l'élément d'initialisation

Créer->Contrôle.

Nous sommes intéressés par deux entrées : Nom de la ressource Visa et Débit en bauds(9600 par défaut). Passons maintenant au panneau avant et ajoutons les composants nécessaires, à savoir l'écran de dessin graphique et les étiquettes pour afficher le code ADC et la tension en volts.
Par conséquent, il s'agit d'éléments Waveform Chart de la palette Graph et de deux éléments Numeric Indicator de la palette Numeric.

Revenons au schéma fonctionnel et déplaçons les éléments qui sont apparus à l'intérieur de la boucle. Nous approchons de la fin ! La seule chose est que nous devons encore convertir la chaîne de caractères provenant de la sortie de la fonction Read dans un format que nos indicateurs assimileront. Et aussi pour mettre en œuvre les mathématiques les plus simples pour traduire le code ADC en volts. Vous trouverez ci-dessous des captures d'écran du panneau avant et du schéma fonctionnel à ce stade :

Pour convertir une chaîne, nous utiliserons la fonction Scan from string de la palette String. Nous l'avons mis à l'intérieur de la boucle. Mathématiques maintenant. Afin de convertir le code ADC en une valeur de tension en volts, vous devez multiplier le code par la valeur de la tension de référence (dans mon cas, c'est cinq volts) et diviser la valeur résultante par 1023 (puisque l'ADC a un capacité de 10 bits). Les fonctions nécessaires de multiplication et de division, ainsi que les constantes (5 et 1023) seront mises en boucle. Je ne ferai pas de captures d'écran de chaque connexion, car il existe déjà des images dofiga. Je vais donner l'écran final de toutes les connexions. Tout y est extrêmement simple.

Je pense que tout est clair, si vous avez des questions posez les dans les commentaires. Découvrons-le ensemble :-))) En attendant, le programme est prêt.

Passons à notre interface et peaufinons un peu le graphique. Sélectionnez la valeur inférieure sur l'axe Y et réglez-la sur 0. Sélectionnez la valeur supérieure et réglez-la sur 5. Ainsi, notre échelle sur l'axe Y se situe dans la plage de 0 à 5 volts. Eh bien, nous sélectionnons le port COM, saisissons le taux de change, lançons notre programme à l'aide du bouton avec la flèche et tordons violemment la résistance sur la carte, tout en observant le résultat de notre travail à l'écran. Cliquez sur le bouton Arrêter pour arrêter le programme.

Comme vous pouvez le voir, tout est assez simple. Cet exemple ce n'est qu'une infime partie de toutes les possibilités de LabView. Si cet article aide quelqu'un, je serai heureux. Ne frappez pas fort dans les commentaires, je ne suis pas un pro. Encore une petite astuce. Si le diagramme ressemble à Cthulhu, vous pouvez essayer d'utiliser le bouton Nettoyer le diagramme. Cela amènera le schéma dans une forme plus ou moins divine, mais il doit être utilisé avec prudence. Voici le résultat de son travail

Et vous pouvez également combiner des pièces en blocs fonctionnels afin qu'elles n'encombrent pas le circuit.

Presque tous les développeurs d'appareils sur microcontrôleurs, qu'ils soient amateurs ou professionnels, ont tôt ou tard besoin de connecter un appareil à microcontrôleur à son « grand frère », à savoir un PC. C'est alors que se pose la question, quel logiciel utiliser pour échanger avec le microcontrôleur, analyser et traiter les données reçues de celui-ci ? Souvent, pour échanger le MK avec un ordinateur, ils utilisent l'interface et le protocole RS232 - le bon vieux port COM dans une implémentation ou une autre.

Côté informatique, divers programmes terminaux sont utilisés, il en existe des centaines. Mais ces programmes n'assurent que la réception et la transmission d'informations. Il est difficile de le traiter et de le visualiser sous une forme visuelle.

Certaines personnes écrivent elles-mêmes de tels logiciels dans un langage de programmation (Delphi, C ++), en les dotant des fonctionnalités nécessaires. Mais cette tâche n'est pas facile, vous devez connaître, en plus de la langue elle-même, le périphérique du système d'exploitation, comment travailler avec les ports de communication et de nombreuses autres subtilités techniques qui détournent l'attention de l'essentiel - la mise en œuvre du programme algorithme. En général, soyez un programmeur Windows/Unix en cours de route.

Dans le contexte de ces approches, le concept d'instruments virtuels (vi) diffère fortement. Cet article se concentrera sur le produit logiciel LabView de Nationals Instruments. Je commence tout juste à maîtriser ce merveilleux produit, je peux donc faire des inexactitudes et des erreurs. Les spécialistes corrigeront :-)) Au fait, c'est quoi LabView ?

LabView est un environnement de développement et une plate-forme pour l'exécution de programmes écrits dans le langage de programmation graphique G de National Instruments.

En termes simples, LabView est un environnement permettant de créer des applications pour les tâches de collecte, de traitement, de visualisation d'informations provenant de divers instruments, paramètres de laboratoire, etc. Et aussi pour le contrôle des processus et dispositifs technologiques. Cependant, avec l'aide de LabView, vous pouvez créer des logiciels d'application tout à fait ordinaires. Ce n'est pas mon but de décrire en détail ce produit et de travailler avec lui. LabView contient des milliers de pages d'excellente documentation et des centaines de livres. Internet regorge de ressources liées à LabView où vous pouvez trouver des réponses à toutes vos questions.

Le but de cet article est de montrer à quel point il est facile et pratique, par rapport à la programmation traditionnelle, de créer des applications pour un PC et quelle est la puissance de LabView. (En fait, c'est discutable, car en programmation traditionnelle, sur le même Delphi, ce n'est pas plus difficile à faire. Et en termes d'efficacité, c'est à peine pire, sinon mieux. Mais pour cela, il faut étudier Delphi beaucoup plus longtemps. Tout est rapide et clair presque immédiatement "J'ai étudié quelques manuels et avant de clôturer toutes sortes de cadrans. Donc, pour les programmeurs, c'est comme la cinquième patte d'un chien, mais pour des camarades aussi éloignés de l'ordinateur que moi, c'est tout. Une fois, en une demi-heure, quand j'ai vu LabView pour la première fois, j'ai construit un système brutal utilisant un contrôle manuel mince d'irrigation et de chauffage pour une serre de chanvre.Avec toutes sortes de contrôleurs PID.J'ai apporté aux potentiomètres et capteurs du stand de laboratoire qui était en notre technicien et a lancé cette unité infernale. Et tout a fonctionné tout de suite, sans débogage. D'ailleurs, tout l'équipement du collisionneur de hadrons fonctionne sur LabView, ainsi que beaucoup d'équipements scientifiques. note DI HALT) Après tout, la plupart des ingénieurs en électronique sont étrangers à la programmation pour PC, n'est-ce pas ? C'est ce que nous essayons de résoudre. Afin de ne pas étudier les chevaux à vide sphériques, nous nous sommes fixés et mettons en œuvre une tâche simple. La tâche est vraiment simple, mais sur cette base, vous pouvez comprendre les principes de base de la programmation dans LabView. Nous utiliserons LabView version 2010. Pour les autres versions, les différences seront minimes.

Une tâche
Nous avons une carte avec un microcontrôleur AVR connecté à un ordinateur via RS232. Le contrôleur est chargé d'un micrologiciel, selon lequel le contrôleur mesure la valeur de tension à l'une des entrées ADC et transmet le code ADC (de 0 à 1023) à l'ordinateur via un canal série. Il est nécessaire d'écrire un programme PC qui recevra un flux de données de l'ADC, affichera le code ADC, convertira le code ADC en une valeur de tension en volts, affichera la valeur de tension en volts, tracera le changement de tension dans le temps.

Eh bien, probablement assez de paroles, commençons peut-être !

Donc, ce dont nous avons besoin pour travailler :

  • En fait LabView lui-même. Vous pouvez télécharger une version d'évaluation depuis le site Web de NI : http://www.ni.com/trylabview/. En outre, une version piratée est facilement googlable. Soit dit en passant, sur rutracker.org, en plus de l'abîme des pirates, il existe également une version Linux pour laquelle l'enregistrement ne semble pas du tout nécessaire. NI a décidé de rencontrer l'open source ?
  • Vous devez également télécharger le composant NI VISA. Sans ce programme, LabView ne "verra" pas le port COM de l'ordinateur. VISA contient des fonctions pour travailler avec les ports de communication et bien plus encore. Vous pouvez le télécharger sur joule.ni.com. Installez LabView et VISA. L'installation de ce logiciel est standard, il n'a pas de fonctionnalités particulières.

Tout d'abord, nous devons nous assurer que VISA a trouvé un port COM dans le système et fonctionne correctement avec celui-ci. Vous pouvez le vérifier comme suit : exécutez le programme Mesure et automatisation. Il est livré avec LabView. S'il n'est pas installé, vous pouvez l'installer manuellement. Sur le disque (l'image avec LabView l'a).

Nous obtenons quelque chose comme ceci :


Alors qu'est-ce que nous avons. L'espace de travail se compose de deux grands panneaux Front Panel et Block Diagram. Sur le panneau avant, nous composerons l'interface de notre programme à l'aide des contrôles du panneau Contrôles. Ces éléments sont les poignées de résistances variables qui nous sont familières, des LED, des boutons, des dispositifs de pointage, un écran d'oscilloscope, etc. Ils servent à entrer des informations dans le programme et à afficher les résultats de l'exécution. Dans le panneau Schéma fonctionnel, le code du programme se trouve directement. Ici, il faut prendre un peu de recul et expliquer le principe de la programmation en LabView. Un petit exemple. Il est d'usage de commencer à travailler sur le programme avec la conception de l'interface, puis la mise en œuvre de l'algorithme de travail sur le schéma fonctionnel. Faisons le programme le plus simple pour multiplier deux nombres. Pour ce faire, nous allons placer sur la face avant en faisant glisser trois contrôles, disons les éléments Knob et Numeric Indicator pour afficher le résultat.

Ok, maintenant nous devons implémenter la multiplication réelle. Allez dans le panneau du diagramme de blocs et voyez que pour chacun de nos contrôles, une icône correspondante a été créée. Il est préférable de changer immédiatement le mode d'affichage sous forme de terminaux. Le diagramme ne sera pas si encombré. En outre dans les terminaux on voit le type des données avec lesquelles n'importe quel kontrol agit. Pour ce faire, faites un clic droit sur l'icône et décochez Afficher en tant qu'icône. En haut de l'écran, la commande se présente sous la forme d'un terminal, en bas et à droite sous la forme d'une icône. Afin de configurer la vue sur le schéma fonctionnel en tant que terminaux par défaut, vous devez sélectionner l'élément de menu Outils->Options, sélectionner Schéma fonctionnel à gauche et décocher Placer les terminaux du panneau avant sous forme d'icônes. Très utile pour afficher l'aide contextuelle. Vous pouvez l'afficher avec la combinaison Ctrl + H. Cette fenêtre affiche des informations sur l'objet sur lequel le curseur est actuellement superposé. Objet méga pratique.

Le concept le plus important dans la programmation LabView est le concept DataFlow. L'essentiel est le suivant : contrairement aux langages de programmation impératifs, où les instructions sont exécutées dans un ordre séquentiel, dans LabView, les fonctions ne fonctionnent que s'il existe des informations sur toutes les entrées de fonction (chaque fonction a des valeurs d'entrée et de sortie). Ce n'est qu'alors que la fonction implémente son algorithme et que le résultat est envoyé à une sortie pouvant être utilisée par une autre fonction. Ainsi, au sein d'un même VI, les fonctions peuvent fonctionner indépendamment les unes des autres.

Maintenant, afin de relancer notre exemple, nous devons suivre ce concept et donner à l'entrée de la fonction les valeurs numériques que nous avons définies pour les contrôles, et obtenir le résultat de la sortie et l'afficher.

Pour connecter des éléments sur un diagramme, utilisez l'outil Connecter un fil du panneau Outils. Sélectionnez-le et dessinez nos connexions.

Comme vous pouvez le voir, il semble n'y avoir rien de compliqué. Mais en même temps, LabView vous permet de résoudre des problèmes de toute complexité ! Ept, le système de contrôle TANK est fait dessus ! Pour que.

Eh bien, faisons maintenant des choses plus intéressantes, à savoir, nous allons fabriquer notre voltmètre le plus simple, dont j'ai parlé au tout début.

Alors que devons-nous faire. Vous devez d'abord configurer et initialiser le port série. Démarrer une boucle sans fin. Dans la boucle, nous utilisons la fonction pour lire depuis le port et recevoir des informations. Convertissons les informations à afficher sur le graphique, recalculons le code ADC en valeur de tension en volts. A la sortie de la boucle, on ferme le port.
Donc, dans l'interface de notre programme, il n'y aura pas d'éléments de contrôle autres que le bouton Stop, mais il n'y aura qu'un affichage du résultat, nous allons faire ceci : nous allons d'abord créer un schéma fonctionnel, puis ajouter les éléments manquants à le panneau avant. Même s'il faut faire le contraire ! Mais dans ce cas, c'est plus pratique.

Sur le panneau du diagramme, nous plaçons l'élément While Loop de la palette Structures, c'est notre boucle infinie. Nous encerclons la zone avec un cadre de cycle, suffisant pour tenir à l'intérieur de l'algorithme. Il y a un point rouge dans le coin inférieur droit, faites un clic droit dessus et sélectionnez Créer un contrôle. Le bouton Stop apparaîtra immédiatement sur le panneau avant. Lorsque vous cliquez dessus, notre programme se termine.

Vous devez créer des contrôles pour la fonction d'initialisation du port. Deux nous suffisent - la vitesse du port et le nom du port. De la même manière que nous avons créé une constante pour la fonction read, nous créons des contrôles. RMB sur les entrées requises de la fonction et de l'élément d'initialisation

Créer->Contrôle.

Créer->Contrôle.

Nous sommes intéressés par deux entrées : Nom de la ressource Visa et Débit en bauds(9600 par défaut). Passons maintenant au panneau avant et ajoutons les composants nécessaires, à savoir l'écran de dessin graphique et les étiquettes pour afficher le code ADC et la tension en volts.
Par conséquent, il s'agit d'éléments Waveform Chart de la palette Graph et de deux éléments Numeric Indicator de la palette Numeric.

Revenons au schéma fonctionnel et déplaçons les éléments qui sont apparus à l'intérieur de la boucle. Nous approchons de la fin ! La seule chose est que nous devons encore convertir la chaîne de caractères provenant de la sortie de la fonction Read dans un format que nos indicateurs assimileront. Et aussi pour mettre en œuvre les mathématiques les plus simples pour traduire le code ADC en volts. Vous trouverez ci-dessous des captures d'écran du panneau avant et du schéma fonctionnel à ce stade :



Pour convertir une chaîne, nous utiliserons la fonction Scan from string de la palette String. Nous l'avons mis à l'intérieur de la boucle. Mathématiques maintenant. Afin de convertir le code ADC en une valeur de tension en volts, vous devez multiplier le code par la valeur de la tension de référence (dans mon cas, c'est cinq volts) et diviser la valeur résultante par 1023 (puisque l'ADC a un capacité de 10 bits). Les fonctions nécessaires de multiplication et de division, ainsi que les constantes (5 et 1023) seront mises en boucle. Je ne ferai pas de captures d'écran de chaque connexion, car il existe déjà des images dofiga. Je vais donner l'écran final de toutes les connexions. Tout y est extrêmement simple.


Je pense que tout est clair, si vous avez des questions posez les dans les commentaires. Découvrons-le ensemble :-))) En attendant, le programme est prêt.

Passons à notre interface et peaufinons un peu le graphique. Sélectionnez la valeur inférieure sur l'axe Y et réglez-la sur 0. Sélectionnez la valeur supérieure et réglez-la sur 5. Ainsi, notre échelle sur l'axe Y se situe dans la plage de 0 à 5 volts. Eh bien, nous sélectionnons le port COM, saisissons le taux de change, lançons notre programme à l'aide du bouton avec la flèche et tordons violemment la résistance sur la carte, tout en observant le résultat de notre travail à l'écran. Cliquez sur le bouton Arrêter pour arrêter le programme.

Et vous pouvez également combiner des pièces en blocs fonctionnels afin qu'elles n'encombrent pas le circuit.



NI LabVIEW est un environnement de programmation graphique en continu. Lors de l'écriture d'un programme dans LabVIEW, l'utilisateur spécifie la séquence d'opérations de transformation d'un flux de données à l'aide d'un schéma fonctionnel. Les images sont placées sur le schéma fonctionnel nœuds fonctionnels, reliés par des conducteurs, par lesquels passe le flux de données d'un nœud à l'autre. De plus, LabVIEW dispose d'un certain nombre d'outils révolutionnaires programmation en continu, cependant, permettant d'étendre considérablement les fonctionnalités des applications qui y sont développées.

Qu'est-ce qu'une technique de programmation

Le terme "technique de programmation" englobe une sélection de différents langages de programmation, modèles de calcul, niveaux d'abstraction, méthodes de travail avec le code et algorithmes de représentation. Au fil des ans, National Instruments a fait évoluer les fonctionnalités de LabVIEW pour prendre en charge davantage de techniques de programmation.


Vous pouvez présenter du code écrit à l'aide de diverses techniques sur le diagramme, ainsi que du code G en continu, et LabVIEW compilera les instructions pour les périphériques cibles appropriés (PC de bureau normaux, plates-formes RTOS, FPGA, appareils mobiles, appareils embarqués basés sur ARM)

Fig. 1. Large éventail de plates-formes et de techniques de programmation dans LabVIEW



Le transfert de données entre des sections de code écrites à l'aide de différentes approches est organisé très simplement dans LabVIEW - le flux de données est un lien entre différents modèles de calcul et langages. En langage G, l'entrée/sortie d'informations s'effectue à l'aide d'une interface utilisateur spécialisée (panneau avant), d'interfaces réseau, de bibliothèques d'analyse, de bases de données et d'autres outils.

Programmation G
L'avènement de la programmation en continu en 1986 était vraiment novateur. La séquence d'exécution des opérations avec des données en langage G n'est pas déterminée par l'ordre dans lequel elles apparaissent, mais par la présence de données aux entrées de ces nœuds. Les instructions qui ne sont pas reliées par un flux de données sont exécutées en parallèle dans un ordre arbitraire.

Les nœuds de diagramme sont de simples instructions ou leurs ensembles - fonctions, instruments virtuels (VI). L'exécution des instructions de nœud ne se produit qu'après l'apparition des données sur toutes les bornes d'entrée du nœud. Après exécution des instructions, son résultat est transmis par les bornes de sortie du nœud aux entrées des nœuds suivants.


Fig.2. Dans cet exemple, A et B sont additionnés, la somme résultante est multipliée par C et le résultat s'affiche


La figure 2 montre un exemple d'expression mathématique en langage G. Le diagramme se compose de deux nœuds (addition et multiplication) et de trois entrées (A, B et C). A et B sont additionnés en premier. Le code du nœud de multiplication n'est pas exécuté tant que ses deux bornes d'entrée n'ont pas reçu de données, et il attend donc le résultat du nœud d'addition. Dès que le résultat de l'addition arrivera à la première entrée du nœud de multiplication, son code (A+B)*C sera exécuté.

Bien que le langage G vous permette de spécifier explicitement le type de données, l'une des différences significatives de ce langage par rapport aux autres est la présence de conducteurs qui remplissent les fonctions de variables. Au lieu de transmettre des variables entre les fonctions, le transfert de données est défini par des connexions filaires. D'autre part, le langage G a également des constructions standard pour d'autres langages, telles que des boucles conditionnelles, des boucles de compteur, des structures de choix, des rappels et des fonctions booléennes.

Configuration interactive comme base de programmation
En 2003, National Instruments a lancé NI LabVIEW 7 Express, pionnier de la technologie Express VI, une technologie conçue pour simplifier davantage le processus de développement d'algorithmes d'application. Contrairement aux VIs classiques, les VIs Express sont des structures de langage abstraites qui implémentent une technique de programmation basée sur configuration interactive Composants.


Fig.3. Palette VI Express, placement du VI Express sur le diagramme et affichage du VI Express en mode miniature


Vous pouvez distinguer le VP express du VP régulier par la grande icône bleue. Lorsque vous placez un VI Express sur un diagramme pour la première fois, la boîte de dialogue de configuration correspondante apparaît. Une fois la personnalisation terminée, LabVIEW génère automatiquement du code basé sur la configuration du VI Express générée. Vous pouvez afficher et modifier ce code ou modifier les paramètres du VI Express en rouvrant la boîte de dialogue en double-cliquant sur l'icône du VI Express.

À titre d'exemple, considérons la tâche de saisie des données pour leur mise en œuvre. analyse de programme. LabVIEW facilite l'interaction avec divers matériels, car il inclut des pilotes pour des milliers de périphériques. La tâche de collecte de données peut être mise en œuvre non seulement par une conception de plusieurs VIs, mais aussi par plus options simples- express-VP.

Spécifiez simplement les voies de lecture/écriture dans les paramètres du VI Express Assistance DAQ et configurez les paramètres tels que la fréquence d'échantillonnage, la mise à l'échelle, la synchronisation et les déclencheurs. De plus, le VI Express offre la possibilité de pré-collecter des données à partir de l'appareil pour vérifier que les paramètres de collecte de données sélectionnés sont corrects.


Fig.4. Le VI Express Assistant DAQ simplifie grandement la configuration des paramètres de temporisation de déclenchement et de voie



Fig.5. Code G équivalent au VI Express Assistant DAQ


Malgré tous leurs avantages, les VIs Express ne fournissent pas de contrôle et de configuration de bas niveau du mode de fonctionnement du périphérique, qui est implémenté à l'aide de VIs conventionnels. Les nouveaux utilisateurs de LabVIEW peuvent utiliser une fonction intégrée qui convertit un VI Express précédemment configuré en une séquence de VIs normaux. Cela peut aider les débutants à apprendre le code de bas niveau. Il suffit de sélectionner la ligne Open Front Panel dans menu contextuel express VI sur le diagramme. Notez que n'importe quel VI Express peut être remplacé par une combinaison de plusieurs VIs normaux, et l'édition LabVIEW Professional Development System vous permet de créer vos propres VIs Express.

Fichiers de support de script.m
Avec le module LabVIEW MathScript RT, vous pouvez importer, éditer et exécuter des scripts de fichier *.m traditionnellement utilisés dans la modélisation et l'analyse mathématiques, le traitement du signal et les calculs mathématiques complexes. Vous pouvez les utiliser avec du code G pour créer des applications autonomes pour le matériel de bureau ou en temps réel.

Il existe plusieurs façons de travailler avec MathScript dans LabVIEW. Pour travailler avec des scripts de manière interactive, utilisez la fenêtre MathScript illustrée à la Fig. 6


Fig.6. Développement interactif algorithmes de texte dans la fenêtre MathScript


Pour utiliser des scripts *.m dans une application LabVIEW et combiner la puissance de la programmation textuelle et graphique, utilisez le nœud MathScript illustré à la figure 7. L'utilisation du noeud MathScript vous permet d'intégrer des algorithmes de texte dans le code VI et d'utiliser capacités graphiques interface de gestion des paramètres du scénario (boutons, curseurs, contrôleurs, graphiques et autres éléments).


Fig.7. Le nœud MathScript facilite l'utilisation de scripts.m en code G


Le module LabVIEW MathScript RT possède son propre moteur de script *.m et ne nécessite pas l'installation d'un logiciel tiers Logiciel. L'utilisation du nœud MathScript vous permet de combiner les avantages des algorithmes de texte, le degré élevé d'intégration de LabVIEW avec le matériel, l'interface utilisateur interactive et d'autres techniques de programmation abordées dans cet article dans une seule application.

Programmation orientée objet
La programmation orientée objet est l'un des types de programmation les plus populaires. Cette approche vous permet de combiner de nombreux composants disparates dans un programme en classes d'objets uniques. Une définition de classe contient les caractéristiques d'un objet et une description des actions qu'un objet peut effectuer, communément appelées propriétés et méthodes. Les classes peuvent avoir des enfants qui héritent des propriétés et des méthodes et peuvent les remplacer ou en ajouter de nouvelles.


Fig.8. L'approche orientée objet est basée sur les classes (exemple dans l'image) et les propriétés et fonctions associées du VI


L'utilisation de la POO dans LabVIEW est possible depuis la version 8.2

Les principaux avantages de cette approche sont :

  • . Encapsulation : l'encapsulation est la combinaison de données et de méthodes dans une classe afin qu'elles ne soient accessibles que via des VIs membres de la classe. Cette approche vous permet d'isoler des sections de code et de vous assurer que leur modification n'affecte pas le code du reste du programme.
  • . Héritage : L'héritage permet aux classes existantes d'être utilisées comme base pour décrire de nouvelles classes. Lorsqu'une nouvelle classe est créée, elle hérite des types de données et des membres de VI de la classe et implémente ainsi les propriétés et les méthodes de la classe parent. Il est également possible d'ajouter des VIs personnalisés pour modifier les fonctionnalités d'une classe.
  • . Distribution dynamique : les méthodes peuvent être définies à l'aide de plusieurs VIs du même nom dans la hiérarchie des classes. Cette méthode est appelée répartition dynamique, car la décision concernant le VI qui sera appelé est prise au moment de l'exécution du programme.
Ces fonctionnalités POO vous permettent de rendre le code plus compréhensible et évolutif, ainsi que, si nécessaire, de restreindre l'accès au VI.

Modélisation et simulation
Modélisation et simulation systèmes physiques- une approche populaire dans le développement de systèmes décrits par des équations différentielles. L'étude du modèle permet de révéler les caractéristiques des systèmes dynamiques et de développer une unité de contrôle avec le comportement requis.

La figure 9 montre la boucle de contrôle et de simulation, qui résout une équation différentielle à l'aide des algorithmes intégrés à LabVIEW en temps réel sur une certaine période de temps. Cette approche de programmation est également basée sur le flux de données, comme le langage G, mais est communément appelée flux de signaux. Comme le montre la figure 9, vous pouvez combiner des techniques de modélisation mathématique avec d'autres techniques telles que les flux de données G et le nœud MathScript.


Riz. neuf. Le diagramme de simulation montre la propagation du signal, le matériel d'E/S et un nœud MathScript.


La boucle de contrôle et de simulation prend en charge les fonctions utilisées pour implémenter des modèles de système stationnaire linéaire sur des appareils avec un système d'exploitation en temps réel installé. Vous pouvez utiliser ces fonctions pour définir des modèles discrets en spécifiant une fonction de transfert, un diagramme pôle-zéro et un système d'équations différentielles. Les outils d'analyse des domaines temporel et fréquentiel tels que la réponse temporelle ou les fonctions de diagramme de Bode vous permettent d'analyser de manière interactive le comportement des boucles de contrôle/simulation ouvertes et fermées. Vous pouvez également utiliser les outils de conversion de modèle intégrés développés dans l'environnement de programmation The MathWorks, Inc. Simulink®, ce qui permettra de les utiliser dans l'environnement LabVIEW. Ces systèmes dynamiques peuvent être installés sur des appareils dotés d'un système d'exploitation temps réel sans passer par diverses étapes de conversion de programme grâce à la fonctionnalité de la bibliothèque de modules LabVIEW Real-Time, idéale pour développer des prototypes de systèmes de contrôle et des applications de simulation.

Diagrammes d'état
Le module NI LabVIEW Statechart permet au développeur de décrire les fonctionnalités du système de la manière la plus abstraite possible à l'aide d'états-transitions. L'intégration de code LabVIEW dans des états de diagramme vous permet de créer une spécification de travail virtuelle pour votre application. Le module NI LabVIEW Statechart ajoute une imbrication hiérarchique et une exécution parallèle aux fonctionnalités classiques des diagrammes d'états. Il convient de noter que les diagrammes d'état vous permettent de décrire la réaction du système aux événements, ce qui en fait un outil très pratique pour développer des systèmes réactifs, tels que des dispositifs embarqués, des systèmes de contrôle et des interfaces utilisateur complexes.


Riz. dix. Le module LabVIEW Statechart décrit un système basé sur un diagramme d'états.


Très souvent, les diagrammes d'états sont utilisés pour diviser une application en sous-systèmes, tels que l'acquisition de données, la sortie de données, les communications réseau, l'enregistrement de données et la gestion de l'interface utilisateur. Dans ce cas, les diagrammes d'état déterminent quelles informations sont transférées entre les états (sous-systèmes) et dans quel ordre ils fonctionnent.

Une architecture d'application basée sur des diagrammes d'états permet un développement plus efficace de systèmes logiciels complexes, en particulier de systèmes pilotés par des événements tels que des contrôleurs de système dynamiques, des interfaces utilisateur complexes et des protocoles de communication numériques.

VHDL pour FPGA
Le module LabVIEW FPGA vous permet d'utiliser le langage G pour écrire du code pour les FPGA. Cependant, comme avec d'autres techniques de développement, vous pouvez utiliser du code pré-écrit ou simplement choisir la manière dont le programme est implémenté. La plupart des FPGA sont programmés à l'aide du langage de programmation de flux textuel VHDL. Au lieu de réécrire les blocs G IP existants, vous pouvez importer du code VHDL à l'aide du nœud CLIP (Component-Level IP). Habituellement, vous avez besoin d'un fichier XML CLIP pour configurer l'interface entre les éléments du diagramme, mais LabVIEW fournit un Assistant d'importation CLIP pour le faire automatiquement. Il répertorie les entrées et les sorties du bloc IP, qui peuvent être glissées avec la souris sur le schéma fonctionnel et utilisées dans l'application, comme illustré à la Fig. Onze.


Riz. Onze. Nœud CLIP.


Étant donné que NI utilise le FPGA Xilinix et le toolkit logiciel Xilinx dans le module LabVIEW FPGA, vous pouvez utiliser le Xilinx Core Generator pour créer un cœur compatible. Vous pouvez également utiliser le kit de développement intégré Xilinx pour créer n'importe quel microprocesseur logiciel. Et enfin, beaucoup développeurs tiers apporter différents types Blocs IP pour la gestion du bus, le traitement du signal et des cœurs spécifiques.

Intégration de code de type C
Vous pouvez utiliser du code de texte séquentiel dans vos VIs de diagramme de plusieurs manières. La première méthode est le nœud de formule, qui prend en charge une syntaxe de type C, avec des définitions de variables et des points-virgules à la fin des lignes.

Le nœud C en ligne est similaire au nœud de formule et fournit caractéristiques supplémentaires programmation de bas niveau et prise en charge des fichiers d'en-tête sans la surcharge des appels de procédure. Vous pouvez utiliser le nœud C en ligne pour incorporer n'importe quel code C, y compris les instructions #defines qui sont syntaxiquement entre parenthèses dans le code C.

Interaction avec les fichiers exécutables
Lors de la programmation dans l'environnement LabVIEW, il est souvent nécessaire d'accéder à des fichiers compilés et à des bibliothèques à partir d'une application écrite dans l'environnement LabVIEW afin de réutiliser des algorithmes précédemment développés dans d'autres environnements. Aussi, lors de la création d'un projet, il est nécessaire d'accéder à des applications écrites dans le langage LabVIEW à partir d'autres applications.

Pour résoudre ces problèmes, LabVIEW fournit une large gamme d'outils différents. Tout d'abord, LabVIEW peut appeler des fonctions DLL ainsi qu'utiliser les interfaces ActiveX et .NET.

Deuxièmement, une application écrite dans le langage LabVIEW peut fournir ses fonctionnalités à une autre application sous forme de DLL ou à l'aide d'outils ActiveX.

Si vous avez du code source C que vous souhaitez utiliser dans votre application LabVIEW, vous pouvez compiler DLL et connectez-le à l'aide du nœud Call Library Function. Par exemple, vous pouvez organiser traitement en parallèle en utilisant des algorithmes écrits en C, tandis qu'un programme écrit en LabVIEW gérera les threads en cours d'exécution parallèles. Pour simplifier le travail avec les bibliothèques externes, LabVIEW dispose d'un Assistant d'importation de bibliothèque partagée qui vous permet de créer ou de mettre à jour automatiquement un wrapper pour appeler les bibliothèques appropriées (Windows . fichier dll, fichier .framework Mac OS ou fichier .so Linux).

En outre, à l'aide de System Exec.vi, vous pouvez utiliser l'interface ligne de commande système opérateur.

La combinaison de plusieurs techniques de programmation dans un même environnement de développement permet de réutiliser des algorithmes développés dans d'autres langages. De plus, le développeur peut combiner des opérations de haut niveau et de bas niveau dans une seule application, ce qui rend le code plus flexible et visuel. Différents niveaux d'abstraction permettent de visualiser des algorithmes complexes tout en maintenant un contrôle de bas niveau des applications et du matériel. Avec une intégration matérielle étroite, vous pouvez utiliser les deux approches pour le traitement du signal sur des plates-formes avec des processeurs multicœurs, des FPGA et des processeurs intégrés.

Les problèmes ont généralement plusieurs solutions et l'environnement de programmation LabVIEW est suffisamment flexible pour vous permettre de choisir la méthode de résolution qui vous convient le mieux.

Simulink® est une marque déposée de The MathWorks, Inc.

ARM, Keil et µVision sont des marques commerciales et des marques déposées d'ARM Ltd ou de ses filiales.