01-14-2016 04:48 AM
Bonjour,
J’aimerai augmenter la vitesse de ma boucle d’acquisition. J’ai fait différents tests qui ne sont pas concluants.
Dans un programme complet, les données d’acquisition sont mises à jour vers des variables globales qui sont ensuite traitées dans d’autre vi.
En pièce jointe mon vi. Le socle est un 9174 avec 9476 + 9205 + 9211 + 9263
Je pense que la lecture de température doit ralentir les autres ! Est-ce que je peux créer deux vi en parallèle ? Un pour la lecture à 1 seconde de la température, et une acquisition plus rapide pour le 9476 9205 et 9263 ?
Merci
01-14-2016 07:31 AM
Bonjour,
Tu peux définitivement créer des boucles en parallèle pour les entrées/sorties qui ont des taux d'échantillonnage différents, et mettre ensemble ceux qui ont des taux d'échantillonnage semblables. Pour les entrées/sorties avec des taux d'échantillonnage semblables tu peux exécuter les VIs en parallèle à l'intérieur de ta boucle, contrairement à ton code qui séquence l'appel des VIs. Il est généralement recommandé de ne pas utiliser des varialbes globales dans le cas d'application avec des temps critiques de cycle, préférer plutôt des "Functional Global Variable", voir le lien ici.
Présentement, la vitesse de ta boucle est limitée au taux d'échantillonnage du plus lent des quatres + le temps de traitement (lecture des variables globales...).
Tu peux aussi optimiser la manipulation de tes données en utilisant des "array" ou des "cluster". Voici un petit example à partir de ton code:
Un des équivalents de ce bout de code en utilisant des "array" peut être:
Il y a amplement place à optimisation.
N'hésite pas si tu as des questions.
Michel