le 06-04-2019 08:30 AM
Bonjour,
je cherche à asservir un système qui est le suivant :
je créé deux sinusoïdes d'amplitude V et Vref qui sont appliquées à une carte analogique à l'aide d'une carte NI 6212, à cause de la carte analogique l'amplitude des deux sinusoïdes est modifiée (A*V et B*Vref), en sortie de la carte j'ai une mesure que je lis avec DAQmx représentant la différence qui est elle même amplifiée ( soit C*(A*V-B*Vref), avec du traitement du signal je récupère cette valeur que j'ajoute ou soustrait afin que C*(A*V-B*Vref)= 0 V. Jusque là l'asservissement fonctionne correctement : le problème est qu'il est lent, le système répond dans l'ordre de la seconde.
Le but étant d'avoir un système capable d'asservir lorsque V subit des variations d'amplitude, pour des variations de 500Hz mon système doit aller plus rapidement que cette variation c'est à dire s’exécuter en moins de 1/500 soit en moins de 2 ms. Je joint mon VI, je travaille en LabVIEW 2012, le problème est que mes boucles s'exécute trop lentement la génération et le traitement de mes signaux prend beaucoup de temps. Quelqu'un a-t-il un moyen de considérablement augmenter la vitesse d'exécution du programme/d'optimisation ?
PS : je ne sais pas comment joindre le VI pour des versions récentes de LabVIEW.
le 06-04-2019 09:40 AM
Je viens d'essayer de moduler V et comme je le pensais le système n'arrive pas à asservir a delà de 1Hz environ comme vous pouvez le voir sur l'image joint du diagramme de Bode du système.
le 06-05-2019 07:45 AM
Bonjour Nicolas_Cn,
Quelle est la configuration de votre ordinateur (OS, Processeur, RAM)?
Par ailleurs quelle version de DAQmx utilisez-vous?
Quelle horloge utilisez-vous pour vos tâches de Génération/Acquisition?
Retrouvez-vous les résultats observés si vous benchmarkez vos boucles comme suit?
Belle journée,
ArmandoF
le 06-05-2019 09:07 AM
le 06-05-2019 09:33 AM
Nicolas_Cn,
Les performances de votre PC ne sont effectivement pas extrêmement hautes.
Votre modèle dont vous avez besoin correspond tout à fait à celui de Producteur/Consommateur qui est sensé garantir une conservation de la fréquence des Boucles While afin que la plus lente ne retarde pas la plus rapide.
Voici une documentation concernant ce modèle:
http://www.ni.com/tutorial/3023/en/
Vous pouvez aussi vous inspirer du Projet Exemple "Gestionnaire de messages dans une file d'attente" disponible lors dela création d'un nouveau projet.
Bonne journée à vous,
Armando
le 06-05-2019 09:54 AM
Merci de la réponse,
j'irais voir ça dès demain, j'ai d'ailleurs ajouté la mesure des durées de mes boucles et dans le pire des cas je trouve 4 ms pour l'une et 2ms pour l'autre, ce qui est bizarre vu que mon asservissement que je vois directement à l'aide d'un oscilloscope virtuel et des sondes prend au moins 500 ms à se faire la preuve j'arrive encore à le voir à l’œil nu comme si il fallait énormément d'itérations au programme pour trouver la bonne valeur d'asservissement alors que pourtant je règle le gain de mon système pour avoir un système qui répond rapidement avec le moins de dépassements possibles, cela reste inexpliqué
Le modèle consommateur / producteur ne pose t il pas de problème vu que les données produites (écrites) sont consommées par l'acquisition et le traitement mais elles doivent être en plus ramenées au producteur afin de l'asservir, de simples nœuds de propriété comme j'utilise actuellement suffiraient pour asservir le producteur dans ce modèle ?