A taxa de atualização de dados do Modbus depende de vários parâmetros não óbvios. No estágio de design, surge o problema de como avaliar a velocidade de uma futura linha de interface. Neste artigo, consideraremos os fatores que afetam a velocidade de atualização dos dados no Modbus RTU, faremos vários cálculos típicos e, no final do artigo, haverá um link para a calculadora da velocidade da linha Modbus RTU.O Modbus ainda é o protocolo de comunicação mais utilizado para equipamentos industriais. Uma descrição do protocolo e os motivos de sua prevalência podem ser encontrados em muitos artigos, por exemplo, aqui . Entende-se ainda que você está familiarizado com o básico de como o protocolo funciona.Consideraremos o Modbus RTU, mas os resultados serão parcialmente aplicáveis ao Modbus TCP.Para calcular a velocidade, começamos considerando o protocolo físico (1º nível do modelo OSI). O Modbus RTU usa a interface física RS-485, RS-422 ou RS-232 (o último praticamente não é usado para o Modbus). Para transmissão de sinal, essas interfaces usam UART (Universal Asynchronous Receiver-Transmitter). Você pode ler mais sobre o UART aqui .Um pacote UART padrão consiste em:- bit inicial () 1 bit
- dados úteis (data) 7-8 bits
- bit de paridade (parity_bit) 0-1 bit
- bit de parada (stop_bit) 1-2 bit
Ou seja, para cada 7-8 bits de dados úteis, 2-4 bits auxiliares são transmitidos. Taxa de carga útil (Vdata) será menor que a velocidade da interface (Vuart) CalcularVdata pode estar de acordo com a fórmula:Vdata=Vuart∗datastart_bit+data+parity_bit+stop_bit
Em seguida, você precisa entender como o mestre Modbus se comunica com os escravos na camada de enlace de dados (nível 2 do modelo OSI). Devido às peculiaridades da interface física do dispositivo, conectado à linha transmitem dados sequencialmente, ou seja, apenas um dispositivo em um determinado momento pode enviar dados. Por esse motivo, o assistente se comunica com os escravos ciclicamente, sequencialmente, lendo e gravando registros para os escravos. O ciclo completo de registros de leitura do escravo terá a seguinte aparência:- atraso (mínimo de 3,5 caracteres = 28 bits, contagem abaixo em segundos)
- transmissão de solicitação de leitura (8 bytes)
- atraso na resposta do dispositivo escravo (pelo menos 28 bits, geralmente dezenas de milissegundos para formar uma mensagem de resposta)
- transmissão escrava de uma mensagem de resposta (máximo de 256 bytes para Modbus RTU).
Alguns engenheiros escolhem uma versão de quatro fios da interface, esperando uma transmissão mais rápida (implicando uma transferência paralela de dados para receber e transmitir). Obviamente, esta solução não funciona. A sequência de envio de dados será a mesma para as linhas de fio 2x e 4x.Nós calcular o tempo gasto em um ciclo de leitura integral de 125 registos das explorações (o número máximo para Modbus RTU) com os seguintes parâmetros de linha:formato de quadro: 8N1 (8 bits de dados, nenhum bit de paridade, 1 bit de parada)Velocidade uart:Vuart= 19200 bit / sTaxa de transferência de carga útil:Vdata= 15360 bit / sAtraso principal:master_silence = 28 bits / Vuart(este é o atraso mínimo permitido, geralmente mais)Atraso na resposta do escravo:slave_silence= 0,04 s (o valor depende do dispositivo escravo)Enviando uma solicitação com 125 registros de retenção: 8 bytes ou 64 bitsResposta com 125 registros de retenção: 256 bytes ou 2048 bitsFórmula para calcular o tempo do ciclo de leitura:Tcycle=silence_master+64bit/Vdata+slave_silence+2048bit/Vdata=0.179s
A sequência para gravar registros é quase idêntica. O tamanho do pacote do mestre será maior, porque Inclui informações sobre registros graváveis. A confirmação de uma gravação bem-sucedida do escravo será de 8 bytes.De acordo com a especificação Modbus, 32 escravos podem ser conectados à linha RS-485/422. A interrogação de escravos também é realizada seqüencialmente, geralmente em círculo. Para entender a rapidez com que os dados serão atualizados a partir deN os escravos precisam se multiplicar Tcycleno NChame de tempo de atualização completo. Tfull.Alguns cálculosTfull(leia e escreva o número máximo de registros de retenção) para vários parâmetros de comunicação:Formato de quadro: 8N1,Vuart = 19200 bits / s, número de escravos, N= 16Tfull= 5,727 sFormato do quadro: 8N1,Vuart = 9600 bit / s, Número de escravos, N= 16Tfull= 10,173 sFormato do quadro: 7E1,Vuart = 19200 bits / s, número de escravos, N= 16Tfull= 6,355 sFormato do quadro: 8N1,Vuart = 19200 bits / s, número de escravos, N= 2Tfull= 0,716 sComo você pode ver, o formato do quadro afeta o tempo de atualização dos dados, mas não muito. A velocidade da transferência de dados afeta significativamente, mas em nosso exemplo transferimos o número máximo de registros, em projetos reais esse fator pode não ser tão significativo. Acima de tudo, o número de escravos afeta a taxa de atualização de dados.Para simplificar os cálculos, fizemos uma aplicação web para estimar o tempo para atualização de dados via Modbus