Interfaçage avec Profi-Cassy programmer en Delphi(période d'échantionnage)

Signaler
Messages postés
6
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
16 mai 2009
-
Messages postés
6
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
16 mai 2009
-
Bon jour à tous,
Je travail sur un projet de commande numérique d'un moteur asynchrone (1,5KW) en temps réel dont le temps de réponse est de 0.24s d'ou la nécessité d'une période d'échantionnage Te de l'ordre de 20ms.
En programment avec delphi, j'ai réussi à avoir une période de 0.1s qui est à diminuer.
J’utilise une carte d’interfaçage Profi-Cassy (port USB).
Existe-t-il un moyen de diminuer cette période?
Je suis débutante en programmation sur Delphi
Mercie pour votre aide.

6 réponses

Messages postés
6
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
16 mai 2009

Bon soir,

Mercie pour votre réponse,je veut une aquisition et traitement de donnés avec une haute fréquence de l'ordre de f=100Hz ==> Te=10ms au moin.
Je ne pense pas atteindre, en utilisant Delphi, la période d’échantionnage que mon système à commander exige puisque la programmation à l’aide de ce langage se fait sur Windows (période de l’ordre de 0.1 ms).Je vais essayer de programmer à l’aide du langage C sur Dos.
Si vous avez quelque suggestion, n’hésitez pas à m’informer.
Mercie pour tout information
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Sous un vrai DOS ?

Parce que l'invite de commande sous Windows est sujette au même problème que Windows en ce qui concerne le "temps réel". Tu n'y gagnerais strictement rien.

Concernant les perfs Delphi vs C, si on code de la même manière, les perfs sont tout à fait équivalentes.
Messages postés
6
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
16 mai 2009

Je me sens perdue et je ne saie pas quoi faire, c'est juste une idée qu'en ma proposé …
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Si tu tiens vraiment à tenir une fréquence avec un PC, il faut que tu te tournes vers ce qu'on appel le "temps réel".

Windows n'est pas un système d'exploitation temps réel. Windows fait du multitâche préemptif. Ce qui tourne sous windows, c'est un ensemble de processus composé d'un ensemble de threads.
Sur un PC équipé d'un processeur disposant d'un seul coeur, à un instant t, un seul thread peut être en cours d'exécution. Ce thread a la sensation d'être tout seul avec dans le PC et a le processeur pour lui tout seul.

Mais tous les x temps, un timer hardware (Le PIT) envoie un signal au processeur, ce qui déclenche ce qu'on appelle une interruption. L'exécution du thread courant s'interrompt, et le code lié à l'interruption est exécuté. Le code en question est celui de l'ordonnanceur de windows. Cette ordonnanceur va sélectionner le prochain thread à exécuter, en fonction des priorité, de la dernière fois que du temps a été alloué au thread, etc...

Bilan on a aucun moyen de dire à windows de n'exécuter que notre propre thread. Bilan on a aucun moyen d'exécuter une portion de code à fréquence fixe avec une grande précision.

Il faut plutôt s'orienter vers d'autre OS. Windows CE ou rtlinux par exemple.

Cela dit pour une période de 10 millisecondes, windows ne s'en sort quand même pas trop mal (Si on est pas en train de lire de la vidéo, de surfer, d'encoder... en même temps).
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Messages postés
6
Date d'inscription
mercredi 6 mai 2009
Statut
Membre
Dernière intervention
16 mai 2009

Mercie pour vos informations,je vais chercher dans ce
sens.