Modbus, update, timeout e retries

em Modbus serial tenho a seguinte configuração:

  1. 57600 bps
  2. 8 data bits
  3. Even parity
  4. 1 stop bit
  5. rtu
Slave 1 tem os seguintes parâmetros:
  1. 10 input register
  2. 5 holding register
  3. 2 coil status
  4. 1 input status
polling na rede da seguinte forma:
  • update = 1s timeout =  500ms retries = 2
Assim esta funcionando ok, e recebo leituras atualizadas em  1 segundo, então criei o slave 2 com apenas 1 holding register, mas não tenho o slave 2 conectado a rede. Observei que a taxa de leitura(novos valores) no slave 1 aumentou para 4 segundos em media. 
Considerei a seguinte hipótese; como não há slave 2 conectado na rede o poolling leva: 
  • retries(2) * timeout (500ms) = 1 segundo, assim poderia esperar um valor um pouco maior que 1 segundo, mas recebo 4 segundos.
Diminui o update para 100ms e após varias tentativas, testes através de Modbus read data , consegui diminuir o timeout para 300ms, novamente para o slave 1 tudo funciona OK, mas quando ativo o slave 2(o unico holding register), a taxa do slave 1 aumenta para 4 segundos.
Posso considerar o polling da rede igual ao produto do  numero de slaves pelo update(todos slaves conectados e habilitados)?
Minha hipótese esta correta? Por que a discrepância, quando um slave não responde?
Meu objetivo é fazer o polling da rede completa em 1 segundo, se algum slave da rede por algum motivo perde a conexão a taxa de varredura vai para 4 segundos degradando em muito o tempo de scan desejado. Alguma ideia para contornar isso?
 
Agradeço qualquer ajuda.
 

Oi Vicente,

Preciso analisar isso com nossa equipe de desenvolvimento.

Num sistema eficiente, as tarefas de aquisição de dados em devices diferentes são executadas em threads separadas, mas aparentemente não está desta forma. Da forma que analiso:

DS1 - (2timouts de 500ms) + intervalo de aquisição = 2s;

DS2 - (2timouts de 500ms) + intervalo de aquisição = 2s;

Total 4s;

O ideal é que ele faça paralelamente estas requisições do Modbus. Vou verificar isso e te respondo em breve sobre isso. Abraços