Registro de Dispositivos MODBUS RTU em Banco MS SQL em Tempo Real
Um guia completo para consultar dispositivos seriais MODBUS RTU e exportar os dados dos registradores diretamente para um banco de dados MsSQL com sua estrutura de banco.
1. Configuração do protocolo: MODBUS RTU
Tipo de comunicação: Interrogação ativa (Mestre/Escravo sobre RS485/COM)
Como o MODBUS transmite dados em binário, o analisador deve extrair registradores de retenção específicos (ex.: 40001) ou registradores de entrada. Se o seu sensor usar números de ponto flutuante de 32 bits, configure o analisador para ler dois registradores adjacentes de 16 bits e aplicar a troca de bytes (endianness) correta para reconstruir o valor float.
Aplique esta configuração base para a conexão serial:
{
"port": "COM3",
"baud_rate": 9600,
"data_bits": 8,
"stop_bits": 1,
"parity": "none",
"protocol": "modbus_rtu_serial",
"poll_interval_ms": 1000
}
Seleção do plugin MODBUS RTU para consultar e analisar dados.

Fila de consultas MODBUS RTU: configuração personalizada para ler diferentes registradores.
Pronto para conectar MODBUS RTU ao Microsoft SQL Server?
2. Configuração do banco de dados: Microsoft SQL Server
Use o SQL Server Native Client integrado ou o provedor OLE DB no módulo de exportação ODBC do Data Logger. A autenticação do Windows é suportada perfeitamente se a conta de serviço do logger tiver acesso ao banco de dados.
Use o script SQL a seguir para criar sua tabela de destino. Use DATETIME2 em vez de DATETIME para maior precisão de carimbo de data/hora, o que é fundamental para o registro serial industrial de alta frequência.
CREATE TABLE SerialData ( RecordID INT IDENTITY(1,1) PRIMARY KEY, LogTime DATETIME2 DEFAULT SYSUTCDATETIME(), PortID NVARCHAR(20), SensorReading FLOAT );

Conector do Microsoft SQL Server em nosso logger.

Configurações de conexão do banco de dados SQLServer. Por exemplo, SQL Express.

Fila SQL.
3. Solução de problemas específicos do protocolo
- Erros de timeout ou CRC: Diferente do TCP, o MODBUS RTU serial depende de temporização rigorosa. Verifique se os fios RS485 A/B não estão invertidos e se a taxa de transmissão e o ID do dispositivo no software correspondem exatamente ao dispositivo escravo.
- O dispositivo retorna o código de erro ‘Illegal address’: Tente usar a função nº 3 em vez da função nº 4 na sua requisição MODBUS. Caso contrário, verifique se está usando o endereço de registrador correto. Tente especificar um offset absoluto (não um endereço lógico como 40001).
- Tenho vários valores que desejo exportar em uma única linha de dados. Atualmente, o registrador escreve um valor por linha: Você precisa habilitar a opção ‘Exportar todos os dados de uma vez’ nas configurações do plugin MODBUS.
4. Solução de problemas específicos do banco de dados
- Falha no login do usuário / Acesso negado: Se estiver executando o RS232 Data Logger como um serviço do Windows em segundo plano, certifique-se de que o serviço esteja sendo executado em uma conta de domínio com funções db_datawriter, em vez da conta padrão 'Sistema Local'. Ou crie um usuário separado com o método de autenticação 'SQL Server'.
- E se meu banco de dados estiver offline? Perderei meus dados?: Use o plugin SQL Database Pro. Ele pode gravar dados em um arquivo temporário enquanto seu banco de dados estiver offline e restaurá-los posteriormente.
- O código só funciona quando você envia números. Quando tento enviar uma letra, não funciona.: 1. Você deve declarar a variável do analisador como string. 2. Sua tabela deve conter a coluna com o tipo 'VARCHAR' ou 'NVARCHAR'. O tamanho desta coluna deve ser suficiente para seus dados. 3. Você deve selecionar o tipo de dados 'string' para a coluna correspondente no plugin de exportação de dados na página 'Binding'.