Pular para o conteúdo principal

API Modbus

O Limelight OS possui um servidor Modbus TCP executando em (endereçoip):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 registradores 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 registrador, e os 16 bits de ordem inferior no primeiro registrador.
    • 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 casos de uso de inspeção de peças e automação industrial. Para começar com 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 produzam resultados via modbus, nossos pipelines python snapscript são extremamente versáteis para casos de uso industriais, pois suportam dados de entrada e saída personalizados.
  2. Atribua ao seu Limelight um endereço IP estático

  3. Conecte seu Limelight a uma rede modbus.

Especificação de Registradores Modbus

Registradores de Entrada / Somente Leitura

RegistradorChaveTipoDescrição
0hbintValor de heartbeat. Aumenta uma vez por frame
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 de 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 de RAM.
9currentFPSintFrames 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:

RegistradorChaveTipoDescriçã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 do pipeline de classificador atual. -1 se não houver resultados do Classificador
28detectorClassintÍndice de Classe da saída do pipeline de detector atual. -1 se não houver resultados do Detector
29reservadoint
30,31python[0]float32Array de saída python personalizado [0]
32,33python[1]float32Array de saída python personalizado [1]
34,35python[2]float32Array de saída python personalizado [2]
36,37python[3]float32Array de saída python personalizado [3]
38,39python[4]float32Array de saída python personalizado [4]
40,41python[5]float32Array de saída python personalizado [5]
42,43python[6]float32Array de saída python personalizado [6]
44,45python[7]float32Array de saída python personalizado [7]

Registradores de Retenção / Somente Escrita

RegistradorChaveTipoDescriçã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 - rawtargets (Em desenvolvimento)
3reservadoint
4reservadoint
5reservadoint
6reservadoint
7reservadoint
8pythonInput[0]intArray de entrada python personalizado [0]
9pythonInput[1]intArray de entrada python personalizado [1]
10pythonInput[2]intArray de entrada python personalizado [2]
11pythonInput[3]intArray de entrada python personalizado [3]
12pythonInput[4]intArray de entrada python personalizado [4]
13pythonInput[5]intArray de entrada python personalizado [5]
14pythonInput[6]intArray de entrada python personalizado [6]
15pythonInput[7]intArray de entrada python personalizado [7]
16,17pythonInput[8]float32Array de entrada python personalizado [8]
18,19pythonInput[9]float32Array de entrada python personalizado [9]
20,21pythonInput[10]float32Array de entrada python personalizado [10]
22,23pythonInput[11]float32Array de entrada python personalizado [11]
24,25pythonInput[12]float32Array de entrada python personalizado [12]
26,27pythonInput[13]float32Array de entrada python personalizado [13]
28,29pythonInput[14]float32Array de entrada python personalizado [14]
30,31pythonInput[15]float32Array de entrada python personalizado [15]