Olá Pessoal,

Estou desenvolvendo meu TCC utilizando um arduino comunicando via Modbus serial com o ScadaBR. Basicamentem estou lendo um valor de tensão e um valor de tensão e um valor de corrente e calculando o valor da potência elétrica. Preciso ler este valor de potência elétrica no ScadaBR. Porém, o ScadaBR só atualiza o valor uma única vez e o datapoint fica com o seguinte erro: Illegal data adress.

O código abaixo é só um exemplo onde eu quero ler o valor3. Alguém pode me ajudar?

Alguém já passou por isso?????

Segue parte do código:


 
void configure_mb_slave(long baud, char parity, char txenpin);

int update_mb_slave(unsigned char slave, int *regs,
unsigned int regs_size);

enum {
        COMM_BPS = 9600, /* baud rate */
        MB_SLAVE = 1,     /* endereço do escravo modbus */
        PARITY = 'n'     /* paridade */
};


enum {        
        MB_PINO_3,     /* Controle do Led no pino  3 (desliga=0 liga=1) */      
        MB_A0,         /* Leitura da entrada analógica 0 (0 a 1023) */
        MB_REGS           /* número total de registros do escravo */
};

int regs[MB_REGS];
int valor1 = 0;
int valor2 = 200;
int valor3 = 0;
unsigned long wdog = 0;          /* watchdog */
unsigned long tprev = 0;         /* tempo anterior do último comando*/
unsigned long tanalogprev = 0;   /* tempo anterior da leitura dos pinos analogicos*/

void setup()
{
        /* configura cominicação modbus
         * 9600 bps, 8N1, RS485 network */
        configure_mb_slave(COMM_BPS, PARITY, 2);
        
                
}


void loop()
{
        /* verifica se há solicitações do mestre */
        if(update_mb_slave(MB_SLAVE, regs, MB_REGS))
                wdog = millis();
                
        
        
        if ((millis() - tanalogprev) > 1000)  {      /* atualiza as entradas analogica a cada 1 segundo */
                
                regs[MB_A0] = analogRead(1);    /* ler entrada analógica 0 */             
                valor1 = regs[MB_A0];
                valor3 = valor1 - valor2;
                regs[MB_PINO_3] = valor3;
                tanalogprev = millis();
        }        

        /* os valores dos registros são definidos pelo mestre modbus (SCADA) */
        
                
                
                   
}

Exibições: 2598

Responder esta

Respostas a este tópico

Diego,

estava lendo o seu código e tentando entender o que você quer mas não bate com a descrição que fez anteriormente.

Esse é o código que está usando?

Vc quer que o arduino calcule a potencia ou o Scadabr faça isso?

Se for o arduino vc tem que fazer todos os calculos e depois salvar nos registradores.

Se for o scadabr vc terá que criar o script.

Explica melhor o que vc quer fazer que poderemos ajudar mais.

Olá Sidney,

 

De fato este não é o código da descrição... É somente um exemplo onde eu quero enviar o "valor3" para o ScadaBR. Os cálculos serão feitos no arduino e só os resultados dos calculos serão enviados para o ScadaBR.

Descosiderar os comentários das linhas de programação.

Diego, dou uma sugestão.

Coloca essa parte do código que vc tem aqui que olho e podemos fazer as correções. Dai vc fica com tudo pronto.

Falar uma teoria sem trabalhar no material que vc já tem é meio demorado e poderiamos ajudar mais rápido.

Se puder me ajudar mano... =]

OK

Aew jovem, eu estou desenvolvendo meu TCC com esse mesmo propósito... Não sei como fazer a comunicação do Scadabr com o Arduino... sinceramente, estou penando nessa parada. Vou incrementar com algumas coisas, mas basicamente é a mesma coisa que você. 

Estou usando um transformador de corrente e um transformador de tensão, foto-acoplador para injetar nos analógicos do Arduino. Preciso comunicar com o scadabr e gerar planilhas de dados colhidos de tempo em tempo. 

Também não sei se é melhor só colher os dados dos sensores e encaminhar ao scadabr ou se já coloco o próprio arduino para calcular tb.

Enfim galera, dá um help ae por favor!!!! Meu TCC é pra mês que vém e eu estou muito enrolado. Mandem mensagem ou algumas dicas, qualquer coisa tá valendo!!!

Cara,

Pra fazer a comunicação já tem códigos prontos. Dá uma olhada neste tutorial aqui. Eu estou colocando o arduino para fazer os cálculos e encaminhando as respostas para o Scada

Anexos

blz mano!!! Estou vendo aqui.

Mas me diga uma coisa, vou ter que ter o tal RS485 - Usb mesmo??? Só queria mesmo era pegar os dados que já são supervisionados pelo próprio sftware do arduino e jogar no scadabr. Tem como fazer via usb direto ou tem que ter o bendito do conversor?

Tem como fazer com o usb. Não precisa de RS485.

OPA, MANDA PRA MIM AE O ESQUEMA... TEM COMO?

Puxa meu amigo, me ajudou muito!!!

Se puder me mandar um email do seu trabalho, eu ficarei agradecido e tenha ciência que seu nome será citado em meu TCC como fonte de pesquisa =]

eloilima@live.estacio.br

aqui tem nuita informaçao:

http://labdegaragem.com/forum/topics/scadabr

pode ser feita tranquilamente com usb, que por sinal é mais facil

aqui tem alguns videos resumidos

http://dino01.brinkster.net/teste2.htm (este link tem limite de acesso por ser gratuito)

aqui mais informaçoes detalhadas com exemplos

http://labdegaragem.com/forum/topics/comunica-o-entre-scadabr-e-ard...

aqui produtos feitos para ambiente scdabr:

http://www.labdegaragem.org/loja/index.php/31-shields/shield-rs485....

http://labdegaragem.com/forum/topics/m-dulo-para-automa-o-residenci...

estes produtos ja estao sendo comercializados para plataforma scadabr

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço