Série de prototypage fonctionnel : Ingénierie algorithmique

Aperçu

La série sur le prototypage fonctionnel est un ensemble d'articles qui vous guident tout au long des processus de prototypage. Découvrez les concepts clés, les avantages du prototypage, les discussions sur le choix des produits et des ressources techniques supplémentaires.

Contenu

Ingénierie algorithmique

L’ingénierie algorithmique est un terme inventé pour désigner la conception appliquée d’algorithmes. Elle désigne le processus de transformation d’un algorithme de type « papier-crayon » en une implémentation robuste, bien testée et simple. L’implémentation d’un algorithme pour obtenir la fonctionnalité souhaitée dans un prototype peut être la partie la plus difficile du cycle de développement du produit, mais aussi la plus intéressante. En appliquant des E/S du monde réel, vous pouvez voir les fonctionnalités de votre algorithme prendre vie sous vos yeux. 

Cet article examine certains des écueils qu’un développeur peut rencontrer lors de la conception d’algorithmes ainsi que les avantages de l’utilisation de la conception graphique de systèmes pour surmonter ces défis.

Les défis de l'ingénierie algorithmique 

L’implémentation d’algorithmes dans un prototype fonctionnel peut être difficile pour diverses raisons :

Limites de programmation.

Souvent, les systèmes de contrôle ou les processeurs choisis pour leurs capacités d'E/S, tels que les FPGA (Field-Programmable Gate Arrays), impliquent des limitations de programmation pour un développeur. La programmation pour différentes plates-formes nécessite généralement des connaissances en programmation que peu de concepteurs de systèmes maîtrisent suffisamment.

Implémentation de l'algorithme de base.

Implémenter des algorithmes de bas niveau pour des fonctionnalités basiques prend du temps. La rapidité est primordiale dans le prototypage. Les concepteurs peuvent rarement se permettre de s’enliser dans l’implémentation d’un algorithme bien connu à partir de zéro, faute de code existant.

Remaniement des algorithmes pour plusieurs plates-formes.

Au fur et à mesure que le prototype fonctionnel évolue, les algorithmes doivent souvent être revus pour être portés sur un autre type de système. Le code est rarement fonctionnel entre différents environnements d’exécution, ce qui complique la mise à l’échelle d’une application, du prototypage au déploiement.

Test et vérification.

Il est difficile de savoir avec certitude si un système peut répondre aux exigences fonctionnelles jusque tard dans la partie, et recommencer à zéro s’avère coûteux. Par exemple, le processeur risque de ne pas être en mesure d’effectuer le nombre requis de tâches parallèles assez rapidement. Il se peut qu’il ne soit pas en mesure d’atteindre un temps de cycle adéquat. Il se peut également qu’il ne soit pas en mesure de gérer l’analyse en temps réel, qui exige d’importantes ressources processeur.

Avantages de la conception graphique de systèmes pour l’ingénierie algorithmique

La conception graphique de systèmes permet d’éviter et d’atténuer bon nombre des écueils potentiels liés à la conception d’algorithmes pour un prototype fonctionnel. La conception graphique de systèmes est une approche de la résolution des problèmes de conception qui allie programmation graphique intuitive et matériel flexible et commercial prêt à l’emploi (COTS). Grâce à cette approche, vous pouvez utiliser un seul environnement à toutes les étapes de la conception. Examinons maintenant plus en profondeur comment cette approche répond spécifiquement aux défis soulevés ci-dessus.

Plusieurs modèles de calcul

L’un des avantages de la conception graphique de systèmes est qu’elle permet aux programmeurs de créer leurs algorithmes quel que soit le modèle de calcul (MoC) avec lequel ils sont implémentés. Alors que la complexité du code pour les algorithmes ne cesse de croître, les programmeurs doivent utiliser différents MoC pour étendre leurs capacités de codage. Voici quelques modèles de calcul que vous pouvez utiliser avec la conception graphique de systèmes :

Flux de données

Le flux de données est le MoC le plus souvent associé au logiciel NI LabVIEW. Avec le flux de données, les opérations nécessitent que le développeur insère des données dans toutes les entrées avant qu’elles ne soient exécutées. Le flux de données est une structure de codage intuitive qui facilite la mise en œuvre d’applications telles que les processus parallèles.

Mathématiques textuelles

Les mathématiques textuelles sont un autre outil qui facilite la création de fonctions complexes. Les mathématiques textuelles sont une implémentation lisible par l’homme d’algorithmes souvent complexes et plus faciles à écrire sous forme de description de script. La boîte de calcul et le nœud de script MATLAB sont des exemples de mathématiques textuelles. Avec LabVIEW, vous pouvez choisir la syntaxe la plus efficace pour le développement d’algorithmes, que ce soit pour développer des algorithmes, explorer les principes de base du traitement du signal ou analyser des résultats.

Code C

Parfois, l'algorithme que vous utilisez a été créé à l'origine en C ou C++. Dans ce cas, vous n’avez plus besoin de supprimer le travail précédent. Vous pouvez plutôt utiliser le nœud C inline ou le nœud Appeler une fonction d’une DLL pour appeler directement votre code précédent dans LabVIEW. Utilisez le nœud C inline pour le code C préexistant ou l’implémentation d’un petit algorithme numérique ou de tableau et utilisez le nœud Appeler une fonction d’une DLL pour accéder au code C dans les DLL ou les bibliothèques partagées.

En savoir plus sur l'utilisation de Python, du logiciel MathWorks®MATLAB® et du C/C++ avec LabVIEW

Architecture logicielle ouverte

Au fil des ans, la plate-forme LabVIEW a été adoptée à grande échelle dans de nombreuses disciplines de conception, d'où la nécessité d'incorporer des données avec différents outils de conception et de simulation. LabVIEW assure cette intercompatibilité grâce à de nombreux outils d’intégration, bibliothèques et formats de fichiers. LabVIEW offre également une intégration standard avec un large éventail d’autres outils logiciels et ressources pour les mesures, notamment :

  • DLL, bibliothèques partagées
  • ActiveX, COM et .NET (Microsoft)
  • DDE, TCP/IP, UDP, Ethernet, Bluetooth
  • CAN, DeviceNet, Modbus, OPC
  • USB, IEEE 1394, RS232/485, GPIB
  • Bases de données (ADO, SQL, etc.)

Grâce à ces outils, l’intégration de données provenant de presque tous les types de matériels de mesure et de contrôle est possible. En associant LabVIEW à des normes générales de communication matérielle, les développeurs pourront garantir la compatibilité et l’évolutivité pendant de nombreuses années.

L’approche LabVIEW

Les centaines de fonctions de LabVIEW, qui couvrent une grande variété d’algorithmes traditionnels de mathématiques, de traitement du signal, de probabilité et de contrôle, constituent des composantes essentielles pour les algorithmes personnalisés. Ces fonctions allègent le fardeau de l’écriture de code de bas niveau et donnent aux ingénieurs le temps de se concentrer sur une solution plutôt que sur l’implémentation.

L’utilisation de LabVIEW facilitant l’acquisition de données du monde réel, les utilisateurs estiment qu’il est utile de tester leurs algorithmes avec des données réelles dans le cadre d’une approche itérative pour les mettre au point. Grâce à cette approche de test interactive, vous pouvez tester différentes fonctions pour voir si elles fournissent le résultat escompté. Par exemple, lorsque vous traitez un signal avec un filtre, vous pouvez choisir parmi une grande variété de solutions, acquérir le signal réel dont vous avez besoin et examiner les résultats dans un graphe ou un fichier. Si les résultats ne conviennent pas à l’application, vous pouvez choisir un autre filtre. Il est souvent plus facile d’acquérir le signal réel à appliquer à un algorithme, puis de prendre le temps de le simuler sur un logiciel.

 

Matériel standard du commerce

Non seulement le matériel standard du commerce constitue un moyen peu coûteux de démarrer rapidement le prototypage mais, grâce à la conception de système graphique, il facilite aussi l'implémentation d'algorithmes natifs sur un grand nombre de cibles différentes avec des E/S intégrées. Utilisez des processeurs temps réel comme ceux des plates-formes NI CompactRIO et PXI pour intégrer les E/S avec un contrôle déterministe afin d'augmenter la fiabilité. Ceci est critique dans les cas, tels que les applications HIL (hardware-in-the-loop), où vous devez intégrer étroitement le matériel et le logiciel pour simuler de manière dynamique l'environnement que les algorithmes de contrôle essaient de contrôler.

Outre l'utilisation de processeurs temps réel avec des FPGA, vous pouvez incorporer LabVIEW dans votre application pour transporter le code d'un type de matériel standard du commerce à un autre. Par exemple, vous pouvez transporter le code qui analyse un signal sur un ordinateur de bureau pour les E/S du monde réel et l'utiliser dans des formats comme des modules PXI ou des processeurs embarqués sans avoir à le réécrire considérablement. En fait, commencer par concevoir et vérifier un prototype sur un ordinateur de bureau puis le transférer sur un processeur 32 bits pour le déployer sur un système embarqué peut considérablement réduire la durée du développement et éviter un travail supplémentaire coûteux causé par des contraintes de conception manquées.

Outils pour la conception de simulation et de contrôle

Comme LabVIEW est une plate-forme ouverte, vous pouvez associer vos données de mesure aux résultats simulés. Vous pouvez même échanger des données simulées et physiques pour la modélisation comportementale. De plus, vous pouvez effectuer des tests physiques avec des stimuli simulés afin de bénéficier d’un environnement de test robuste.

Utilisez la simulation avec LabVIEW pour vérifier et prévoir les performances des critères de conception. Vous pouvez importer des conceptions dans des outils de simulation distincts pour une évaluation précoce de la conception. L'étape suivante consiste à automatiser la disposition ou la formation du modèle et l'outillage pour automatiser le processus de construction. L'enregistrement des informations sur l'état du système et des signaux de sortie, le cas échéant, vous aide à mettre au point les applications et à établir des spécifications pour les performances de l'application.

Utilisez des diagrammes de contrôle tels que ceux du LabVIEW Control Design and Simulation Module pour concevoir un système de contrôle linéaire, non linéaire, discret ou continu. Ce style de programmation abstrait vous permet de programmer avec des concepts de contrôle traditionnels tels que les blocs de fonction de transfert, les intégrateurs, les différenciateurs et les boucles de rétroaction. Ce diagramme de haut niveau vous permet de développer des solutions à partir du niveau conceptuel, et ainsi de tirer parti de votre expérience et de vos connaissances antérieures sur un système.

Figure 1. Contrôle PID avec conception de contrôle et simulation

 Étapes suivantes

La conception des algorithmes qui implémentent la fonctionnalité de votre prototype peut s’avérer difficile. La conception graphique de systèmes est une approche qui tire parti de l'intégration étroite entre le logiciel graphique intuitif et le matériel COTS afin de vous aider à relever les défis associés à l'ingénierie algorithmique pour rendre votre prototype opérationnel rapidement à moindre coût.

Pour en savoir plus sur les aspects techniques de la transition d'une conception papier à une conception logicielle, consultez les ressources associées ci-dessous.

Étapes suivantes