IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Temps réel sous windows


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Temps réel sous windows
    bonjour,

    Je suppose que ce genre de question à déjà été postée des milliers de fois....

    Je développe une application d'acquisition de donnée gérant aussi la génération de signaux.

    J'utilise un thread cadencé par un WaitForMultipleObject et un autre utilisant les fonctions QueryPerformanceCounter ainsi que timeSetEvent.

    Mon pb est que soit que je consomme trop de temps CPU soit je n'ai pas suffisament de précision.

    Je n'arrive pas à tenir une période de 1ms.

    Est-il possible d'écrire un bout de code étant éxécuté au niveau noyau, un genre de driver ou autre ne pouvant être interrompu et ayant une priorité supérieure ?
    Est-il possible de récupérér les IT timer du processeur ?

    Merçi de votre aide.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Windows n'est pas temps réel

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Il y a forcemment un moyen car un outil concurrent au notre respecte largement ces performances sans cosommer de ressource.

    Je sais qu'il existe des libraires temps réel pour windows mais je sais pas si elles fonctionnent vraiment.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je ne suis pas spécialiste, mais les spécialiste m'ont dit que y'avait pas de solution fiable. Des drivers (son...) arrivent à descendre en dessous de la ms, mais toujours pareil, c'est dans des conditions optimales. Aucune garantie. Il suffit que le système soit un poil sollicité et tout s'effondre.
    Après y'a des espèces de softs payants qui rendent Windows plus ou moins temps réel, mais j'y connais rien.
    Déjà en mode user si tu as une précision constante et répétable inférieure à 10 ms, estime toi content. Voici néanmoins un vieux lien sur le sujet:
    http://psylon.free.fr/dev/temps_reel/index.html

  5. #5
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Dans le domaine de l'acquisition de données et la génération de signaux, ne connais pas de solutions native Windows qui soit fiable.

    Les meilleures approximations que j'ai pu rencontrer faisaient appel :
    • - soit à du matériel d'acquisition/génération autonome, externe, et programmable depuis windows,
      - soit à une base de temps externe, récupérable sous windows par un gestionnaire d'interruptions fourni par une API liée au matériel d'acquisition/génération


    Il me semble que la suite d'acquisition/génération Labview, fournie par National Instrument avec ses produits permet les deux approches, selon le matériel disponible, mais il y a longtemps que je ne l'ai plus pratiquée.

    Il existe d'ailleurs un module RealTime pour Labview sous Windows.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  6. #6
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    Bonjour,

    Comme dit precedement, il est impossible via Windows de tenir la ms.
    Il suffit de deporter le pb: la carte d'acquisition gere le timing et te retourne des points datés. Pour la generation, tu créé des parties de courbes que tu envoies periodiquement a la carte.
    Ton appli n'a pas besoin d'etre extremement precise.

    Une des solutions est d'utiliser les systemes National Instrument:
    Ils fournissent des cartes et des drivers ( NIDAQ et NIDAQMX).

    A la base, ils sont utilisables en direct sous Labview ( tres bon langage graphique 8) ) et sous CVI ( C ).

    Ces drivers sont utilisables en API aussi sous Visual ( basic et C ), certainement aussi ailleurs.

    Personnelement, je fait des acquisitions à 10 kHz ( 0.1 ms) et je genere a 1 khz ( 1ms) sans probleme. J'ai meme le temps de faire un tas de truc en meme temps.

    Scyrius.
    L'urgent est fait, l'impossible est en cours, pour les miracles, prévoir un délai et un bon thermos.
    Quant aux MP techniques, autant les poster sur le forum approprié car, là, ils auront des réponses.

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Windows peut-etre temps réel...
    Bonjour,

    Le premier message n'est pas récent, mais mieux vaut tard que jamais.
    Il existe des extensions temps réels à Windows. Ce sont des solutions commerciales qui s'adressent aux professionnels.
    Pour ma part, j’ai utilisé RTX sur un banc de tests avec du Windows XP, et on a facilement remplacé notre ancien système Temps Réel avec des performances vraiment temps réels (Cycle complet à 500 micro). En fait, c’est les IOs et notre bus de terrain qui ne suivaient plus. Le plus est que le développement se faisait avec Visual Studio …ce qui nous changeait à l’époque.
    On avait choisi cette solution car RTX était déjà largement déployé dans des systèmes d’automates Siemens, et était un peu le standard dans le groupe pour lequel je travaillais à l’époque.
    Je viens de faire une recherche sur Internet, et c’est monté en puissance maintenant, RTX support les multi-cœurs et tourne sur du 64 Bits…l’éditeur est IntervalZero. Je me souvenais de VenturCom, ils ont dû changer de nom ou se faire racheter.
    Cordialement,

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par xela Voir le message
    bonjour,
    Je développe une application d'acquisition de donnée gérant aussi la génération de signaux.
    J'utilise un thread cadencé par un WaitForMultipleObject et un autre utilisant les fonctions QueryPerformanceCounter ainsi que timeSetEvent.
    Mon pb est que soit que je consomme trop de temps CPU soit je n'ai pas suffisament de précision.
    Je n'arrive pas à tenir une période de 1ms.
    .
    bonjour utiliser ces API n'apportera rien pour la simple raison que le noyau de Windows ( le Kernel si je ne me trompe pas ),effectue un ordonnancement des tâches..donc à chaque processus,tâche,thread il alloue un certain temps d'exécution..
    QueryPerformanceCounter cela sert juste à des mesures chronologiques et même si en appelant des API on essaie de forcer l'exécution d'un thread de manière optimale,le Kernel ,de mon point de vue,ne le fera pas.
    donc il faut descendre "plus bas" en écrivant un Device Driver ou utiliser des extensions comme mentionné par mon prédecesseur

Discussions similaires

  1. Temps réel sous XP
    Par kerpoint dans le forum x86 32-bits / 64-bits
    Réponses: 11
    Dernier message: 07/02/2014, 13h41
  2. Acquisition de données USB temps réel sous Linux Xenomai
    Par nourryan dans le forum Matériel
    Réponses: 1
    Dernier message: 03/05/2012, 14h45
  3. Sécuriser une appli temps réel sous Swing
    Par Colargole dans le forum EDT/SwingWorker
    Réponses: 7
    Dernier message: 30/11/2009, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo