:lang: fr :toc: Test des capacités temps réel ============================= [[sec:Test-de-latence-IM]] == Test de latence Ce test est le premier test qui doit être effectué sur un PC pour savoir si celui-ci est capable de piloter une machine CNC. Le temps de latence est le temps nécessaire au PC, pour arrêter ce qu'il est en train de faire pour répondre à une requête externe. Dans notre cas, la requête est l'horloge qui sert de référence pour les impulsions de pas. Plus la latence est faible, plus l'horloge pourra être rapide et donc, plus rapides seront les impulsions et plus doux seront les pas des moteurs. Le temps de latence est beaucoup plus important que la vitesse du processeur. Un vieux Pentium III qui répond aux interruptions avec 10 microsecondes entre chacune, peut donner de meilleurs résultats qu'un rapide P4 en Hyperthreading. Le CPU n'est pas le seul facteur déterminant le temps de latence. Les cartes mères, les cartes vidéo, les ports USB et de nombreuses autres choses peuvent détériorer le temps de latence. La meilleure façon de savoir si le matériel envisagé est apte, c'est d'exécuter *un test de latence*. Faire générer les impulsions de pas au logiciel présente un grand avantage, c'est gratuit. Quasiment chaque PC dispose d'un port parallèle capable de sortir sur ses broches les signaux de pas générés par le logiciel. Cependant, les générateurs d'impulsions logiciels ont aussi quelques inconvénients: - Leur fréquence maximum est limitée - Les trains d'impulsions générés sont irréguliers - Ils chargent le processeur La seule façon de découvrir ce qu'il en est sur votre PC est d'exécuter le test de latence de HAL. Pour exécuter ce test, ouvrez une fenêtre de terminal à partir de *Applications -> Accessoires -> Terminal* et exécutez la commande suivante: *+latency-test+* Vous devriez voir quelque chose comme ceci: image::../config/images/latency.png[] Alors que le test est en cours d'exécution, vous devriez «abuser» de l'ordinateur. Déplacer les fenêtres sur l'écran. Surfez sur le Web. Écouter de la musique. Exécuter un programme OpenGL comme glxgears. L'idée est de charger le PC au maximum pour que le temps de latence soit mesuré dans le cas le plus défavorable et donc, connaitre la latence la plus grande. [NOTE] Ne pas exécuter *EMC2* ou *Stepconf* pendant que *latency-test* est en cours d'exécution. La colonne 'max jitter' et la ligne 'Base Thread' de l'exemple ci-dessous donne 9075. Ce qui représente 9075 nanosecondes, soit 9.075 microsecondes. Notez bien ce nombre et entrez le dans Stepconf quand il le demande. Dans cet exemple de test de latence il n'a fallu que quelques secondes pour afficher cette valeur. Vous devrez peut être lancer le test pendant plusieurs minutes. Parfois même, dans le pire des cas, rien ne provoque de latence ou seulement des actions particulières. Par exemple, une carte mère Intel marchait très bien la plupart du temps, mais toutes les 64 secondes elle avait une très mauvaise latence de 300µs. Heureusement, il existe un correctif (voir http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?FixingDapperSMIIssues[Fixing Dapper SMI Issues]) Alors, que signifient les résultats? Si le résultat de votre Max Jitter est en dessous d'environ 15-20 microsecondes (15000-20000 nanosecondes), l'ordinateur pourra donner d'excellents résultats avec la génération logicielle des pas. Si le temps de latence est à plus de 30-50 microsecondes, vous aurez de bons résultats, mais la vitesse maximum sera un peu faible, spécialement si vous utilisez des micropas ou si le pas de votre vis est fin. Si les résultats sont de 100µS ou plus (100,000 nanosecondes), alors le PC n'est pas un bon candidat à la génération des pas. Les résultats supérieurs à 1 milliseconde (1,000,000 nanosecondes) éliminent, dans tous les cas, ce PC pour faire tourner EMC, en utilisant des micropas ou pas. Notez que si vous obtenez une latence élevée, il peut être possible de l'améliorer. Un PC avait une très mauvaise latence (plusieurs millisecondes) en utilisant la carte graphique interne. Un carte graphique Matrox d'occasion à $5US a résolu le problème. EMC n'exige pas de matériel de pointe. == Adresses des ports Pour ceux qui construisent leur matériel, il est facile et économique d'augmenter le nombre d'entrées sorties d'un PC en lui ajoutant une carte PCI fournissant un ou deux ports parallèles supplémentaires. Faire suivre ces ports d'une couche d'opto-isolation est utile pour éviter les courts circuits pouvant détruire la carte, voir même toute la carte mère. EMC2 supporte un maximum de 8 ports parallèles. Certaines parmi les bonnes cartes parallèles sont à base de chipset Netmos. Elles fournissent un signal +5V bien propre, elles fournissent un ou deux ports parallèles. Pour trouver les adresses d'entrées/sorties de ces cartes, ouvrir une console et utiliser la commande en ligne: *+lspci -v+* Rechercher ensuite dans la liste de matériel fourni, le nom du chipset de la nouvelle carte, dans cette exemple c'est l'entrée NetMos Technology pour une carte à deux ports: ---- 0000:01:0a.0 Communication controller: \ Netmos Technology PCI 9815 Multi-I/O Controller (rev 01) Subsystem: LSI Losgic / Symbios Logic 2POS (2 port parallel adapter) Flags: medium devsel, IRQ 5 I/O ports at b800 [size=8] I/O ports at bc00 [size=8] I/O ports at c000 [size=8] I/O ports at c400 [size=8] I/O ports at c800 [size=8] I/O ports at cc00 [size=16] ---- Après expérimentation, il se trouve que le premier port (incorporé à la carte) utilise la troisième adresse de la liste (c000) et le deuxième port (raccordé par une nappe) utilise la première adresse (b800). Il est alors possible d'ouvrir dans l'éditeur le fichier .hal de la machine et d'insérer l'adresse trouvée à l'endroit approprié. *+loadrt hal\_parport cfg="0x378 0xc000"+* Noter la présence des guillemets "" encadrant les deux adresses, ils sont obligatoires dès qu'il y a plus d'une carte. Il est nécessaire également d'ajouter les fonctions de lecture (read) et d'écriture (write) pour la nouvelle carte. Par exemple, *+addf parport.1.read base-thread 1+* *+addf parport.1.write base-thread -1+* Noter que les valeurs peuvent être différentes de celles de cet exemple. Les cartes Netmos sont Plug-N-Play, elles peuvent donc changer leur adressage selon le connecteur PCI dans lequel elles sont placées. Si vous modifiez l'installation des cartes PCI de votre machine, n'oubliez pas de vérifier leurs adresses avant de lancer EMC. // vim: set syntax=asciidoc: