Olá. Gostaria de saber como posso enviar os comandos modbus de um mestre para escrevo e pegar os registros de acordo com a função necessária
A forma mais fácil para entender o funcionamento é começar usando um adaptador USB serial conectado na serial de comandos do rádio mestre (rádio LoRaMESH configurado com o endereço zero) e o software disponibilizado pela Radioenge para configuração do módulo. No SW já existem alguns comandos prontos.
Para enviar uma mensagem do mestre para um escravo bastar usar a seguinte estrutura:
Id-lsb | id-msb | comando | mensagem n bytes … | CRC-LSB | CRC-MSB
O verificador de integridade (CRC) tem a função importante de evitar a transmissão de dados corrompidos pelos circuitos das interfaces seriais.
Sendo assim, para enviar uma “pergunta” para um escravo basta endereçar o “pacote” com o endereço (ID) do escravo e enviar na serial de comandos do rádio com endereço 0 (zero) que é o mestre. Por exemplo:
Hexadecimal: 07 00 D5 00 00 00 1A 7B
Decimal: 007 000 213 000 000 000 026 123
Este é o envio do pedido de nível de recepção (0xD5) para o rádio escravo com endereço 7 (0x07 0x00).
O rádio escravo com ID 0x07 0x00 deve responder via LoRa e o mestre entregará na serial algo como:
0x07 0x00 0xD5 0x00 0x00 0x75 0x89 0x06 0x06 CRC CRC
0x75 = decimal 117 = -117dBm
Mais detalhes sobre o comando 0xD5 na página 21 do manual.
obs.: a serial do LoRaMESH trabalha com os valores absolutos dos bytes (Hexadecimal ou Decimal) e não com os caracteres ASCII.
No exemplo usando o ESP32 tem o código usado para enviar e receber dados sem usar bibliotecas.
http://download.radioenge.com.br/iot/LoRaMESH+ESP8266.zip
Obrigado, Fabio. Eu até tinha conseguido enviar dados entre um e outro de forma manual baseado no código do ESP32.
Eu só não entendi ainda se há ou não a possibilidade de enviar requisição MODBUS para que o mestre pega os registros referentes as funções do modbus para o escravo.
O protocolo do módulo é baseado no ModBus, mas tem uma peculiaridade… que é o uso de 2 bytes no endereçamento.
Então…teria que usar a interface transparente no lado do escravo (serial 2) e o comando transparente no lado do mestre.
Exemplo: 254 000 028 077 101 110 115 097 103 101 109 239 152 (para enviar na serial de comandos do mestre).
recebido no escravo id 254: 077 101 110 115 097 103 101 109 (Mensagem).
Pode usar a aba Mensagem deste software para testar.
http://download.radioenge.com.br/iot/SW_LoRaMESH_6R12.zip
Use o comando transparente configurado no seu rádio (o padrão é 28).
Obrigado, Fabio.
E no caso de o mestre envia para o escravo e quando o escravo receba, ele logo manda uma mensagem de volta para o mestre. Tem algum comando ou procedimento especifico para isso?
O escravo somente responde se for um comando interno do tipo pergunta (leitura de sinal RSSI, temperatura, trace route …).