Modbus RTU

Modbus por um barramento serial, com a linha física modelada explicitamente e compartilhada pelos dispositivos endereçados por unidade.

Ver como Markdown

O driver Modbus RTU conversa com dispositivos Modbus num barramento serial: RS-485 ou RS-232, alcançado por uma porta COM física, um adaptador USB ou uma porta virtual ou redirecionada. Como o barramento é fisicamente compartilhado, a topologia é Driver → Linha → Dispositivo → Tag: a linha é dona de tudo que é elétrico (porta, baud, formato, tempos), e cada dispositivo nela é dono apenas do seu endereço de unidade, da sua leitura cíclica e das suas tags.

Linha serial

Campo Significado Padrão
Nome Nome amigável do barramento. Editável a qualquer momento. obrigatório
Porta serial A porta do sistema operacional, por exemplo COM3. O campo é texto livre (portas físicas, virtuais e redirecionadas funcionam todas) e a seta ao lado dele oferece as portas que o Windows detecta no momento (com um Atualizar para adaptadores conectados a quente); a lista detectada é uma conveniência, nunca uma lista de permissão. COM1
Baud Taxa de bits compartilhada por todo dispositivo do barramento. 9600
Formato serial Escolha fechada entre 8N1, 8N2, 8E1, 8E2, 8O1, 8O2: o dígito são os bits de dados, a letra é a paridade (N nenhuma, E par, O ímpar), o último dígito são os bits de parada. Outras larguras, paridade mark/space e 1,5 bit de parada não são suportados. 8E1
Timeout de resposta (ms) Espera máxima pela resposta de uma unidade, de 100 a 60.000. Timeouts maiores acomodam equipamento lento, mas tornam mais demorado identificar unidades ausentes e concluir a descoberta. 1000
Intervalo mínimo entre transações (ms) Ritmo de compatibilidade para a linha inteira, de 0 a 1000. Zero mantém só o silêncio automático do protocolo; um valor positivo pode elevá-lo, nunca reduzi-lo. 0

O próprio protocolo exige silêncio entre quadros, e a linha sempre o impõe: em 19.200 baud ou abaixo, o silêncio automático é de 3,5 tempos de caractere, calculados a partir do formato configurado; acima de 19.200 baud, é o 1,75 ms fixo que a especificação recomenda. O silêncio efetivo é o maior entre esse piso automático e o intervalo configurado, nunca a soma dos dois, e o painel mostra os dois valores. Elevar o intervalo desacelera deliberadamente toda unidade da linha; ele é um recurso de compatibilidade, não um conserto para fiação, terminação, aterramento ou ruído.

Uma linha nova nasce desabilitada, para que as definições físicas dela possam ser configuradas primeiro. Cada porta física pertence a no máximo uma linha, comparada sem diferenciar maiúsculas de minúsculas e mesmo enquanto as linhas estão desabilitadas. O nome e o intervalo entre transações continuam editáveis enquanto a linha roda (uma edição de tempo vale sem ciclar a porta); a porta, o baud, o formato e o timeout de resposta ficam travados enquanto a linha está habilitada: desabilite-a e salve primeiro. Desabilitar uma linha interrompe a comunicação de todos os dispositivos dela sem alterar as escolhas individuais de Habilitado deles.

A linha reporta o transporte físico separadamente dos dispositivos dela: Desligado, Ocioso (nenhum dispositivo habilitado), Conectando, Conectado ou Falha na porta, com um diagnóstico. Excluir uma linha vazia remove só a linha; excluir uma que contém dispositivos pede confirmação explícita e exclui também esses dispositivos e as tags deles.

Dispositivo

Campo Significado Padrão
Linha serial Fixa: um dispositivo é criado sob a linha dele e herda a tupla física, mostrada somente leitura no painel. Adicione o dispositivo sob a linha pretendida. não se aplica
Unit ID O endereço Modbus do dispositivo no barramento, de 1 a 247, único dentro da linha (dispositivos desabilitados incluídos). 1
Intervalo de leitura (ms) Taxa de leitura padrão para as tags que não a sobrepõem. 1000

O endereço interno do runtime é modbus+rtu://<line-id>/<port>/<baud>/<format>/<timeout>/<unitId>/<interval>: ele carrega a identidade estável da linha e as definições físicas completas, nunca o nome amigável dela.

Comportamento da linha compartilhada

O driver abre uma sessão serial por linha e serializa toda requisição de todo dispositivo por um único despachante, então leituras e escritas nunca se sobrepõem no barramento. Uma escrita pendente toma a próxima vez livre com prioridade limitada: escritas são atendidas rápido, mas escrever sem parar não consegue matar a leitura cíclica de fome. Os timeouts de cada unidade são isolados, com recuo progressivo, então um dispositivo silencioso desacelera só a si mesmo. Uma exceção Modbus com CRC válido é um erro por requisição naquela tag: a linha continua saudável. Só uma falha física de entrada e saída (a porta sumindo, o adaptador desconectado) invalida a sessão compartilhada e inicia uma reabertura coordenada para a linha inteira. O último dispositivo liberado fecha a porta.

Endereçamento da tag

O endereçamento de tag é idêntico ao do Modbus TCP: uma Classe de registrador (HoldingRegister, InputRegister, Coil, DiscreteInput, derivada por padrão do tipo e do acesso da tag), um Número do registrador em base 0, uma Quantidade automática (Boolean 1 registrador, Int32 e Float 2, String 4; a caixa é desenhada só em tags String, porque toda outra largura é fixa) e as duas caixas independentes de ordem, ambas com o mais significativo primeiro por padrão. Os tipos de valor suportados são os mesmos quatro (Boolean, Int32, Float e String), e os códigos de função de leitura e escrita e os quatro arranjos de barramento estão documentados na página Modbus TCP e valem aqui sem mudança.

Descoberta

A descoberta sonda uma faixa de unit ids por uma linha existente e vive no painel daquela linha:

Campo Significado Padrão
Unit ID inicial Primeiro unit id a sondar, de 1 a 247. 1
Unit ID final Último unit id, crescente a partir do inicial. 32

A varredura recarrega as definições físicas salvas da linha, abre a porta uma vez e sonda a faixa sequencialmente com a Read Basic Device Identification (função 43/14), ritmando cada sondagem com o silêncio entre quadros efetivo da linha. Ela nunca tenta combinações de definições e nunca lê registradores. Uma exceção Modbus com CRC válido prova que uma unidade está presente sem afirmar a identidade dela; um timeout ou um quadro inválido não prova.

Uma linha em uso nunca é interrompida nem chaveada automaticamente: desabilite-a antes de varrer e reabilite-a você mesmo depois. Cancelar fecha a sessão serial e deixa os resultados já mostrados como candidatos transitórios até você adicioná-los explicitamente. Um unit id já configurado é marcado como tal e abre o dispositivo existente em vez de criar uma duplicata; os resultados não carregam tags: os registradores são configurados depois do Adicionar.

A descoberta e a configuração da linha compartilham uma reserva de falha imediata por porta física, então uma varredura e uma mudança de definições não podem brigar pela porta: quem perde é avisado de qual operação a está segurando.

Limites que vale conhecer

  • Os quatro tipos de valor são todo o vocabulário do codec de barramento; inteiros largos e Double não são oferecidos.
  • A vazão é uma propriedade do barramento: todo dispositivo da linha compartilha um único fluxo de requisições, ritmado pelo silêncio entre quadros efetivo, então muitos dispositivos ou um intervalo elevado alongam todo ciclo de leitura.