Pular para o conteúdo principal

API Modbus

O Limelight OS possui um servidor Modbus TCP rodando em (endereço_ip):502

  • Inteiros: Os inteiros são ASSINADOS e codificados usando complemento de dois. Este método é universalmente reconhecido e garante a interpretação correta do sinal.

  • Números de Ponto Flutuante: Os floats são codificados usando o padrão IEEE 754. Para cumprir a limitação de registro de 16 bits do protocolo Modbus, os números de ponto flutuante são divididos em duas partes:

    • Os 16 bits de ordem superior são armazenados no segundo registro, e os 16 bits de ordem inferior no primeiro registro.
    • O formato little-endian garante compatibilidade com a especificação Modbus.

Limelights USB e Ethernet podem ser testados com ModbusTool

O Modbus permite suporte para inspeção de peças e casos de uso de automação industrial. Para começar com o Modbus, você precisa fazer o seguinte:

  1. Conecte-se ao seu Limelight via Ethernet ou USB-C e configure um pipeline.

    • Embora todos os pipelines enviem resultados via modbus, nossos pipelines de snapscript em python são extremamente versáteis para casos de uso industrial, pois suportam dados de entrada e saída personalizados.
  2. Dê ao seu Limelight um endereço IP estático

  3. Conecte seu Limelight a uma rede modbus.

Especificação de Registros Modbus

Registros de Entrada / Somente Leitura

RegistroChaveTipoDescrição
0hbintValor de heartbeat. Aumenta uma vez por quadro
1pipelineIndexintÍndice do pipeline ativo atual (0 .. 9).
2validTargetint1 se existe um alvo válido, 0 caso contrário.
3resultsCountintContagem total de resultados. Inclui todas as detecções fiduciais, detecções neurais, etc
4IDintID / Número da Equipe
5modbusModeintModo de Saída do Servidor Modbus.
6cpuTempintTemperatura da CPU em Celsius.
7cpuUsageintPorcentagem de uso da CPU.
8ramUsageintPorcentagem de uso da RAM.
9currentFPSintQuadros por segundo atuais.
10captureLatencyintLatência de captura. (milissegundos)
11targetLatencyintLatência de processamento. (milissegundos)
12-15reservadoint

Se o Modo de Saída estiver definido como 0:

RegistroChaveTipoDescrição
16,17txfloat32Deslocamento angular horizontal para o alvo em graus
18,19tyfloat32Deslocamento angular vertical para o alvo em graus
20,21txncfloat32Deslocamento angular horizontal para o alvo (relativo ao pixel principal) em graus
22,23tyncfloat32Deslocamento angular vertical para o alvo (relativo ao pixel principal) em graus
24,25tafloat32 (0-1)Área do alvo como porcentagem do tamanho da imagem
26fiducialIDintID atual do AprilTag
27classifierClassintÍndice de classe da saída atual do pipeline classificador. -1 se não houver resultados do Classificador
28detectorClassintÍndice de classe da saída atual do pipeline detector. -1 se não houver resultados do Detector
29reservadoint
30,31python[0]float32Array de saída personalizada do python [0]
32,33python[1]float32Array de saída personalizada do python [1]
34,35python[2]float32Array de saída personalizada do python [2]
36,37python[3]float32Array de saída personalizada do python [3]
38,39python[4]float32Array de saída personalizada do python [4]
40,41python[5]float32Array de saída personalizada do python [5]
42,43python[6]float32Array de saída personalizada do python [6]
44,45python[7]float32Array de saída personalizada do python [7]

Registros de Retenção / Somente Escrita

RegistroChaveTipoDescrição
0unlockedintDesbloqueia o pipeline. Defina como 1 para habilitar a troca de pipeline e dados de entrada personalizados
1pipeIndexintDefine o índice do pipeline se "unlocked" estiver definido como 1
2outputModeintDefine o modo de saída. 0 - padrão, 1 - alvos brutos (Em desenvolvimento)
3reservadoint
4reservadoint
5reservadoint
6reservadoint
7reservadoint
8pythonInput[0]intArray de entrada personalizada do python [0]
9pythonInput[1]intArray de entrada personalizada do python [1]
10pythonInput[2]intArray de entrada personalizada do python [2]
11pythonInput[3]intArray de entrada personalizada do python [3]
12pythonInput[4]intArray de entrada personalizada do python [4]
13pythonInput[5]intArray de entrada personalizada do python [5]
14pythonInput[6]intArray de entrada personalizada do python [6]
15pythonInput[7]intArray de entrada personalizada do python [7]
16,17pythonInput[8]float32Array de entrada personalizada do python [8]
18,19pythonInput[9]float32Array de entrada personalizada do python [9]
20,21pythonInput[10]float32Array de entrada personalizada do python [10]
22,23pythonInput[11]float32Array de entrada personalizada do python [11]
24,25pythonInput[12]float32Array de entrada personalizada do python [12]
26,27pythonInput[13]float32Array de entrada personalizada do python [13]
28,29pythonInput[14]float32Array de entrada personalizada do python [14]
30,31pythonInput[15]float32Array de entrada personalizada do python [15]