Valores da Watch List Congelados

Bom dia.
A SITUAÇÂO: Criamos um Data Source, as três telas de testes retornam resultados. A PESQUISA DE NÓS encontra 1 já nos 1% de pesquisa. A LEITURA DE DADOS MODBUS retornam 4 registradores um embaixo do outro. O TESTE DE LOCALIZADOR DE PONTO retorna resultado 0.
O PROBLEMA: fazemos os testes de conexão, quando clicamos para habilitar o Data Source aparece a mensagem “Timer Already Canceled”, o ícone para habilitar continua vermelho, “pisca” e habilita, MAS quando Vamos na WatchList, os Valores estão congelados, Não atualiza nem os valores e nem o tempo.
O CÓDIGO DO ARDUINO:
//Inclusãodas Bibliotecas
#include <SimpleModbusSlave.h>
#include <Ultrasonic.h>
//-----------------
//Defines do projeto
#define trig 8
#define echo 9
#define Pi_aprox 3.1415927
#define Num_Medidas_distanc 100
#define CIRCULO
#define CIRCULO_RAIO 0.069 //[m]
#define Tank_A 0.2065 //[m]
#define Tank_Raio_Menor 0.054 //[m]
//-------------
//Definicção de ponteiros para comunicação ScadaBR
enum
{
VOLUME_RESTANTE,
VOLUME_REDUZIDO,
VAZAO_A,
VAZAO_B,
HOLDING_REGS_SIZE
};
//------------------
//Variáveis,objetos e funções
unsigned int holdingRegs[HOLDING_REGS_SIZE]; //Comunicação c/ScadaBR
Ultrasonic ultrasom(trig,echo); //Objeto do tipo Ultrason
float AreaPerfilReservatorio; //Area do Circulo da parte de cima
float VolumeTotalRetirado; // Volume descrescido do recipiente
float VolumeRestante; // Volume restante no recipiente
long tempoinicio = 0; //Variavel para trabalhar com tempo no substituto do delay()
long intervalo = 1000; // Variavel para trabalhar com tempo no substituto do delay()
unsigned long tempoatual; //Variavel para trabalhar com tempo no substituto do delay()
unsigned long cloopTime; //Variavel para trabalhar com sensores de fluxo de vazao;
volatile int frequencia_fluxoA; //Variavel para trabalhar com sensores de fluxo de vazao;
volatile int frequencia_fluxoB; //Variavel para trabalhar com sensores de fluxo de vazao;
unsigned char medefrequenciaA = 2; //Pinos conectado ao Sensor de fluxo de Vazão A
unsigned char medefrequenciaB = 3; //Pinos conectado ao Sensor de fluxo de Vazão A
unsigned int litrosPminutoA;
unsigned int litrosPminutoB;
float distanciaT1;
float distanciaT2;
float VariacaoVazao;
float VariacaoDistancia;
float VolumeEmLitros;
float CalculaAreaPerfilReservatorio(void);
float MedeDistanciaEmMetros(void);
float MediaDistancias(void);
//---------------------

//Calcula a Area do topo do reservatório
float CalculaAreaPerfilReservatorio(void)
{
    float AreaCalc;

    AreaCalc = Pi_aprox * pow(CIRCULO_RAIO,2);

    return AreaCalc;
}
//------------------------
//Calcula a Média entre as diferentes distancias medidas
float MediaDistancias(void)
{
    int i;
    float SomaMedidas;
    float Media;

    SomaMedidas = 0.0;
    for(i=0;i<Num_Medidas_distanc;i++)
    {
        SomaMedidas = SomaMedidas + MedeDistanciaEmMetros();

        Media = (SomaMedidas/Num_Medidas_distanc);
        return Media;
    }
}
//---------
//Sensor Ultrasonico mede a distancia até a superficie da água
float MedeDistanciaEmMetros(void)
{
    float cmMsec,DistMetros;
    long microsec = ultrasom.timing();

    cmMsec = ultrasom.convert(microsec,Ultrasonic::CM);

    DistMetros = (cmMsec / 100.0);
    return DistMetros;
}

void flow()
{
    frequencia_fluxoA++;
    frequencia_fluxoB++;  
}

void setup() 
{
    modbus_configure(&Serial,9600,SERIAL_8N1,1,2,HOLDING_REGS_SIZE,holdingRegs);
    modbus_update_comms(9600,SERIAL_8N1,1);
    AreaPerfilReservatorio = CalculaAreaPerfilReservatorio();
    VolumeTotalRetirado = 0.0;
    pinMode(medefrequenciaA,INPUT);
    pinMode(medefrequenciaB,INPUT);
    attachInterrupt(0,flow,RISING); // Configura a interrupção
    attachInterrupt(1,flow,RISING);
    sei(); // Habilita a Interrupção
    tempoatual = millis();
    cloopTime = tempoatual;
    
}
void loop() 
{
    modbus_update();
    holdingRegs[VOLUME_RESTANTE] = VolumeRestante;
    holdingRegs[VOLUME_REDUZIDO] = VolumeEmLitros;
    holdingRegs[VAZAO_A] = litrosPminutoA;
    holdingRegs[VAZAO_B] = litrosPminutoB;
    tempoatual = millis();
    
    distanciaT1 = MediaDistancias();
    if(tempoatual - tempoinicio > intervalo) // Substituto do delay()
    {
        distanciaT2 = MediaDistancias();
        tempoinicio = tempoatual;
    }
    VariacaoDistancia = ((distanciaT1 - distanciaT2)/100); //[m]
    VariacaoVazao = (AreaPerfilReservatorio * VariacaoDistancia); //[m]
    VolumeTotalRetirado = VolumeTotalRetirado + VariacaoVazao; //[m]
    VolumeEmLitros = (VolumeTotalRetirado * 1000.0); //Volume em litros que diminuiu o recipiente
    
    //Mede o volume restante no recipiente
    VolumeRestante = ((Pi_aprox*(Tank_A - MedeDistanciaEmMetros()))/3)*((pow(Tank_Raio_Menor,2)+ Tank_Raio_Menor * CIRCULO_RAIO + pow(CIRCULO_RAIO,2)));
   
    //Fluxo de Vazão Sensores YF-S201 <-----------
    if(tempoatual>=(cloopTime+1000))
    {
        cloopTime = tempoatual;
        litrosPminutoA = (frequencia_fluxoA/ 7.5);
        frequencia_fluxoA = 0;
        cloopTime = tempoatual;
        litrosPminutoB = ( frequencia_fluxoB/7.5);
        frequencia_fluxoB = 0;
    }
}

Alguém tem a SOLUÇÃO?

Olá @Diego_F! Conseguiu resolver?