Aller au contenu principal

API Modbus

Le système d'exploitation Limelight dispose d'un serveur Modbus TCP fonctionnant sur (adresse_ip):502

  • Entiers : Les entiers sont SIGNÉS et encodés en utilisant le complément à deux. Cette méthode est universellement reconnue et assure une interprétation correcte du signe.

  • Nombres à virgule flottante : Les flottants sont encodés selon la norme IEEE 754. Pour se conformer à la limitation des registres 16 bits du protocole Modbus, les nombres à virgule flottante sont divisés en deux parties :

    • Les 16 bits de poids fort sont stockés dans le deuxième registre, et les 16 bits de poids faible dans le premier registre.
    • Le format little-endian assure la compatibilité avec la spécification Modbus.

Les Limelights USB et Ethernet peuvent être testés avec ModbusTool

Modbus permet de prendre en charge les cas d'utilisation d'inspection de pièces et d'automatisation industrielle. Pour commencer avec Modbus, vous devez faire ce qui suit :

  1. Connectez-vous à votre Limelight via Ethernet ou USB-C et configurez un pipeline.

    • Bien que tous les pipelines produisent des résultats via Modbus, nos pipelines python snapscript sont extrêmement polyvalents pour les cas d'utilisation industriels car ils prennent en charge des données d'entrée/sortie personnalisées.
  2. Attribuez une adresse IP statique à votre Limelight

  3. Connectez votre Limelight à un réseau Modbus.

Spécification des registres Modbus

Registres d'entrée / en lecture seule

RegistreCléTypeDescription
0hbintValeur de pulsation. Augmente une fois par image
1pipelineIndexintIndex du pipeline actif actuel (0 .. 9).
2validTargetint1 si une cible valide existe, 0 sinon.
3resultsCountintNombre total de résultats. Inclut toutes les détections de fiduciaires, détections neurales, etc.
4IDintID / Numéro d'équipe
5modbusModeintMode de sortie du serveur Modbus.
6cpuTempintTempérature du CPU en Celsius.
7cpuUsageintPourcentage d'utilisation du CPU.
8ramUsageintPourcentage d'utilisation de la RAM.
9currentFPSintImages par seconde actuelles.
10captureLatencyintLatence de capture. (millisecondes)
11targetLatencyintLatence de traitement. (millisecondes)
12-15réservéint

Si le mode de sortie est réglé sur 0 :

RegistreCléTypeDescription
16,17txfloat32Décalage angulaire horizontal par rapport à la cible en degrés
18,19tyfloat32Décalage angulaire vertical par rapport à la cible en degrés
20,21txncfloat32Décalage angulaire horizontal par rapport à la cible (relatif au pixel principal) en degrés
22,23tyncfloat32Décalage angulaire vertical par rapport à la cible (relatif au pixel principal) en degrés
24,25tafloat32 (0-1)Surface de la cible en pourcentage de la taille de l'image
26fiducialIDintID AprilTag actuel
27classifierClassintIndex de classe de la sortie du pipeline de classification actuel. -1 si pas de résultats de classification
28detectorClassintIndex de classe de la sortie du pipeline de détection actuel. -1 si pas de résultats de détection
29réservéint
30,31python[0]float32Tableau de sortie python personnalisé [0]
32,33python[1]float32Tableau de sortie python personnalisé [1]
34,35python[2]float32Tableau de sortie python personnalisé [2]
36,37python[3]float32Tableau de sortie python personnalisé [3]
38,39python[4]float32Tableau de sortie python personnalisé [4]
40,41python[5]float32Tableau de sortie python personnalisé [5]
42,43python[6]float32Tableau de sortie python personnalisé [6]
44,45python[7]float32Tableau de sortie python personnalisé [7]

Registres de maintien / en écriture seule

RegistreCléTypeDescription
0unlockedintDéverrouille le pipeline. Réglez sur 1 pour activer le changement de pipeline et les données d'entrée personnalisées
1pipeIndexintDéfinit l'index du pipeline si "unlocked" est réglé sur 1
2outputModeintDéfinit le mode de sortie. 0 - standard, 1 - rawtargets (En cours)
3réservéint
4réservéint
5réservéint
6réservéint
7réservéint
8pythonInput[0]intTableau d'entrée python personnalisé [0]
9pythonInput[1]intTableau d'entrée python personnalisé [1]
10pythonInput[2]intTableau d'entrée python personnalisé [2]
11pythonInput[3]intTableau d'entrée python personnalisé [3]
12pythonInput[4]intTableau d'entrée python personnalisé [4]
13pythonInput[5]intTableau d'entrée python personnalisé [5]
14pythonInput[6]intTableau d'entrée python personnalisé [6]
15pythonInput[7]intTableau d'entrée python personnalisé [7]
16,17pythonInput[8]float32Tableau d'entrée python personnalisé [8]
18,19pythonInput[9]float32Tableau d'entrée python personnalisé [9]
20,21pythonInput[10]float32Tableau d'entrée python personnalisé [10]
22,23pythonInput[11]float32Tableau d'entrée python personnalisé [11]
24,25pythonInput[12]float32Tableau d'entrée python personnalisé [12]
26,27pythonInput[13]float32Tableau d'entrée python personnalisé [13]
28,29pythonInput[14]float32Tableau d'entrée python personnalisé [14]
30,31pythonInput[15]float32Tableau d'entrée python personnalisé [15]