Le Raspberry Pi se propulse vers LabVIEW 2019 (et 2020) !

Cette année, National Instruments a annoncé la sortie d’une version communautaire du célèbre environnement de développement LabVIEW. A cette occasion, le toolkit LINX devrait être porté en LabVIEW 2020 et maintenu officiellement pas NI. En effet, la version pouvant être installée en autonomie sur un Raspberry Pi était cantonnée à LabVIEW 2014. En cherchant sur le dépôt d’installation de digilent, on observe trois versions du paquet d’installation:

  • lvrt-schroot : pour LabVIEW 2014, la version initiale
  • lvrt20-schroot : pour la future LabVIEW 2020 ?
  • lvrt19-schroot : pour LabVIEW 2019 ?

Si l’on essayait ensemble d’installer lvrt19-schroot sur un Raspberry Pi 4 tout neuf ?

Introduction

Avant de commencer, il nous faut un Raspberry Pi (>2) fonctionnel avec la dernière version de Raspbian (Buster à l’heure où ce test a été mené). Pour ma part, je profite de la sortie du Raspberry Pi 4 pour le prendre en main et profité de la connexion WiFi (enfin!).

Installation de LINX 3 pour LabVIEW 2019

Nous sommes prêts? Allons-y !

Tout se passe en ligne de commande. Ouvrez un terminal SSH et connectez-vous sur le Raspberry Pi.

Commençons par mettre à jour notre installation:

  • sudo apt-get update
  • sudo apt-get dist-upgrade -y

Ensuite activons les modules i2c et spi:

  • sudo raspi-config nonint do_i2c 0
  • sudo raspi-config nonint do_spi 0

Ajoutons le dépôt d’installation de LINX:

  • sudo sh -c ‘echo « deb [trusted=yes] http://feeds.labviewmakerhub.com/debian/ binary/ » >> /etc/apt/sources.list’
  • sudo apt-get update

A ce stade, la magie n’a pas encore opéré. Installons donc le paquet lvrt19 (tuto extrait du forum NI, modifié pour LabVIEW 2019) :

  • sudo apt-get install -y lvrt19-schroot
  • sudo mv /etc/systemd/system/multi-user.target.wants/nisysserver.service /lib/systemd/system
  • sudo mv /etc/systemd/system/multi-user.target.wants/labview.service /lib/systemd/system
  • sudo schroot -c labview -d /usr/lib — ln -s liblinxdevice_rpi2.so liblinxdevice.so
  • sudo systemctl enable nisysserver.service
  • sudo systemctl enable labview.service
  • sudo systemctl start nisysserver.service
  • sudo systemctl start labview.service

Vérification de l’installation avec LabVIEW 2019

Avant d’aller plus loin, nous allons vérifier la bonne installation du runtime 2019 sur le Raspberry Pi.

Créons un nouveau projet LabVIEW vide et ajoutons une cible temps réelle compatible (cRIO 9039 au hasard) en spécifiant l’adresse IP du Raspberry Pi.

Ensuite, nous connectons le projet à la cible: clic droit sur la cible -> Connect.

LabVIEW déploie le projet et vérifie la connexion à la cible.

Comme nous avons défini la cible comme étant un compact RIO, LabVIEW cherche automatiquement à détecter les modules d’acquisitions présents dans el châssis. Nous avons un Raspberry Pi, donc LabVIEW échoue à détecter les modules, mais pas de panique, tout est normal.On continue la procédure en écrivant un petit code de test qui renvoie la version de LabVIEW et la version du système :

Confirmation du fonctionnement (ctrl + R), après déploiement et exécution, nous voyons la version 2019 et la version de l’OS (ici Linux raspberry 1.19.97) :

Vous trouverez le projet de test ici : test.zip

Ajout de la cible Raspberry Pi dans LabVIEW 2019

Pour ajouter le Raspberry Pi comme cible de déploiement dans LabVIEW, il faut ajouter des Providers. Ils sont fournis dans le paquet d’installation VIPM de LINX. Il est possible de récupérer l’archive zip intéressante en décompressant le fichier .vip ou en la téléchargeant ici : InstallProviders.zip

Quittez LabVIEW, décompressez cette archive et lancez la commande suivante :

  • UpdateLinxProvider.bat « C:\Program Files (x86)\National Instruments\LabVIEW 2019 »

Une fois installé, le Raspberry Pi apparait dans la liste des cibles disponibles :

Conclusion

En attendant la sortie officielle de LabVIEW 2020 avec le support LINX inclus, il est possible de profiter d’un runtime 2019 sur un Raspberry Pi. Pour preuve, voici un pilotage moteur en CanOpen utilisant CanOpenSocket:

Laisser un commentaire