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:
-
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.
-
Atribua ao seu Limelight um endereço IP estático
-
Conecte seu Limelight a uma rede modbus.
Especificação de Registradores Modbus
Registradores de Entrada / Somente Leitura
| Registrador | Chave | Tipo | Descrição |
|---|---|---|---|
| 0 | hb | int | Valor de heartbeat. Aumenta uma vez por frame |
| 1 | pipelineIndex | int | Índice do pipeline ativo atual (0 .. 9). |
| 2 | validTarget | int | 1 se existe um alvo válido, 0 caso contrário. |
| 3 | resultsCount | int | Contagem total de resultados. Inclui todas as detecções de fiduciais, detecções neurais, etc |
| 4 | ID | int | ID / Número da Equipe |
| 5 | modbusMode | int | Modo de Saída do Servidor Modbus. |
| 6 | cpuTemp | int | Temperatura da CPU em Celsius. |
| 7 | cpuUsage | int | Porcentagem de uso da CPU. |
| 8 | ramUsage | int | Porcentagem de uso de RAM. |
| 9 | currentFPS | int | Frames por segundo atuais. |
| 10 | captureLatency | int | Latência de captura. (milissegundos) |
| 11 | targetLatency | int | Latência de processamento. (milissegundos) |
| 12-15 | reservado | int |
Se o Modo de Saída estiver definido como 0:
| Registrador | Chave | Tipo | Descrição |
|---|---|---|---|
| 16,17 | tx | float32 | Deslocamento angular horizontal para o alvo em graus |
| 18,19 | ty | float32 | Deslocamento angular vertical para o alvo em graus |
| 20,21 | txnc | float32 | Deslocamento angular horizontal para o alvo (relativo ao pixel principal) em graus |
| 22,23 | tync | float32 | Deslocamento angular vertical para o alvo (relativo ao pixel principal) em graus |
| 24,25 | ta | float32 (0-1) | Área do alvo como porcentagem do tamanho da imagem |
| 26 | fiducialID | int | ID atual do AprilTag |
| 27 | classifierClass | int | Índice de Classe da saída do pipeline de classificador atual. -1 se não houver resultados do Classificador |
| 28 | detectorClass | int | Índice de Classe da saída do pipeline de detector atual. -1 se não houver resultados do Detector |
| 29 | reservado | int | |
| 30,31 | python[0] | float32 | Array de saída python personalizado [0] |
| 32,33 | python[1] | float32 | Array de saída python personalizado [1] |
| 34,35 | python[2] | float32 | Array de saída python personalizado [2] |
| 36,37 | python[3] | float32 | Array de saída python personalizado [3] |
| 38,39 | python[4] | float32 | Array de saída python personalizado [4] |
| 40,41 | python[5] | float32 | Array de saída python personalizado [5] |
| 42,43 | python[6] | float32 | Array de saída python personalizado [6] |
| 44,45 | python[7] | float32 | Array de saída python personalizado [7] |
Registradores de Retenção / Somente Escrita
| Registrador | Chave | Tipo | Descrição |
|---|---|---|---|
| 0 | unlocked | int | Desbloqueia o pipeline. Defina como 1 para habilitar a troca de pipeline e dados de entrada personalizados |
| 1 | pipeIndex | int | Define o índice do pipeline se "unlocked" estiver definido como 1 |
| 2 | outputMode | int | Define o modo de saída. 0 - padrão, 1 - rawtargets (Em desenvolvimento) |
| 3 | reservado | int | |
| 4 | reservado | int | |
| 5 | reservado | int | |
| 6 | reservado | int | |
| 7 | reservado | int | |
| 8 | pythonInput[0] | int | Array de entrada python personalizado [0] |
| 9 | pythonInput[1] | int | Array de entrada python personalizado [1] |
| 10 | pythonInput[2] | int | Array de entrada python personalizado [2] |
| 11 | pythonInput[3] | int | Array de entrada python personalizado [3] |
| 12 | pythonInput[4] | int | Array de entrada python personalizado [4] |
| 13 | pythonInput[5] | int | Array de entrada python personalizado [5] |
| 14 | pythonInput[6] | int | Array de entrada python personalizado [6] |
| 15 | pythonInput[7] | int | Array de entrada python personalizado [7] |
| 16,17 | pythonInput[8] | float32 | Array de entrada python personalizado [8] |
| 18,19 | pythonInput[9] | float32 | Array de entrada python personalizado [9] |
| 20,21 | pythonInput[10] | float32 | Array de entrada python personalizado [10] |
| 22,23 | pythonInput[11] | float32 | Array de entrada python personalizado [11] |
| 24,25 | pythonInput[12] | float32 | Array de entrada python personalizado [12] |
| 26,27 | pythonInput[13] | float32 | Array de entrada python personalizado [13] |
| 28,29 | pythonInput[14] | float32 | Array de entrada python personalizado [14] |
| 30,31 | pythonInput[15] | float32 | Array de entrada python personalizado [15] |