1. 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.

La latence correspond au temps pris par le PC pour stopper ce qui est en cours et répondre à une requête externe. Dans notre cas, la requête est l’horloge qui sert au cadencement des impulsions de pas. Plus basse est la latence, plus rapide pourra être l’horloge, plus rapides et plus douces seront les impulsions de pas.

La latence est de loin plus importante que la vitesse du CPU. Un vieux Pentium III qui répond aux interruptions avec 10 microsecondes entre chacune, peut donner de meilleurs résultats que le dernier modèle de µP ultra rapide.

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.

La seule façon de découvrir ce qu’il en est sur un PC est d’exécuter le test de latence de HAL. Pour exécuter ce test, ouvrir une fenêtre de terminal à partir de Applications → Accessoires → Terminal et exécuter la commande suivante:

latency-test

Une fenêtre comme ci-dessous devrait s’ouvrir:

../config/images/latency.png
Figure 1. Test de latence de HAL

Alors que le test est en cours d’exécution, il faut charger l’ordinateur au maximum. Déplacer les fenêtres sur l'écran. Surfer 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 maximale.

Note
Ne pas exécuter LinuxCNC 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-dessus donne 9075. Ce qui représente 9075 nanosecondes, soit 9.075 microsecondes. Noter ce nombre et l’entrer dans Stepconf quand il sera demandé.

Dans cet exemple de test de latence il n’a fallu que quelques secondes pour afficher cette valeur. Il est toutefois préférable de le laisser tourner 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.

Alors, comment interpréter les résultats? Si le résultat de Max Jitter est en dessous d’environ 15-20 µs (15000-20000 nanosecondes), l’ordinateur pourra donner d’excellents résultats pour la génération logicielle des pas. Si le temps de latence est à plus de 30-50 microsecondes, de bons résultats seront obtenus, mais la vitesse maximum sera un peu faible, spécialement si des micropas sont utilisés ou si le pas de la 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 LinuxCNC, en utilisant des micropas ou pas.

Note
Si une latence élevée est obtenue, 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 d’occasion à $5US a résolu le problème. LinuxCNC n’exige pas de matériel de pointe.

2. 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. LinuxCNC 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 l’installation des cartes PCI de la machine est modifiée, ne pas oublier de vérifier leurs adresses avant de lancer LinuxCNC.