Alguém conhece o scadabr e sabe como usa-lo, caso conheça por favor entre em contato pois preciso de algumas informações.

Uma delas é o protocolo modbus pois queria saber como comunicar um sensor,atuador,etc como o supervisor por meio de um microcontrolador ou coisa paracida, me parece que para poder acionar ou receber informações o supervisorio precisa de um clp (que é caro) ou por um microcontrolador?

se alguém tiver informações sobre como usar e implementar ou pelo menos mostrar o caminho das pedras já agradeço.

adriano

Exibições: 97581

Responder esta

Respostas a este tópico

po eu usei a jpmzometa tambem no meu projeto. Não é complicado configurar não cara. Se vc colocar só o Xbee creio que nao mude em nada. Se eles usarem o mesmos TX/RX que o seu arduino usa atualmente, acho que basta configurar os rádios.(Chutando = mode on)

Creio que esse sketch te ajude Sidney. Ele é baseado no jpmzometa. Bem fácil configurar no scadabr. Tente entender o que foi feito. Qualquer duvida me pergunte.

#include <ModbusSlave.h>

/* First step MBS: create an instance */
ModbusSlave mbs;

/* slave registers */
enum {
MB_REG0, /* ADICIONE DATAPOINTS COM PARAMETRO "OFFSET" = 0,1,2 PARA SELECIONAR MB_REG0, MB_REG1, MB_REG2 E ASSIM POR DIANTE...*/
MB_REG1,
MB_REG2,
MB_REG3,
};

int regs[MB_REGS];
int led1 = 13;
int led2 = 12;
int led3 = 11;

void setup()
{

/* the Modbus slave configuration parameters */
const unsigned char SLAVE = 1;
const long BAUD = 9600;
const char PARITY = 'n';
const char TXENPIN = 1;

/* Second step MBS: configure */
mbs.configure(SLAVE,BAUD,PARITY,TXENPIN);

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(3, INPUT_PULLUP); // IMPORTANTE USAR O PULLUP INTERNO PARA INPUT DIGITAL, EVITA INTERFERENCIAS;
}

void loop()
{

int status=digitalRead(3);
regs[MB_REG0]=status;

/* Third and las step MBS: update in loop*/
mbs.update(regs, MB_REGS);

if(regs[MB_REG0]==1) //COM O SKETCH SE BASEANDO NO STATUS DO REGISTRADOR, SE EU COLOCAR "1" MANUALMENTE NO SCADABR, O LED ACENDE. SE APERTAR O BOTAO LIGADO AO PINO 3, TAMBEM ACENDE.
digitalWrite(led1,0); //QUANDO PULLUP ATIVADO, SE TEM 5V NA PORTA, ENTÃO DEVE-SE FAZER A LÓGICA INVERTIDA 5V = OFF, 0V = ON
else
digitalWrite(led1,1);

}

Fernando,

Que maravilha estarmos discutindo isso. Hoje, depois de quebrar muito a cabeça é mais claro para mim ler este código.

Então vou fazer o seguinte. Vou colocar o código como abaixo e deixar o arduino funcionando. Vou instalar Xbee, configurando o radio e o receptor. Depois vou no scadabr e vou tentar criar um datasource. Minha dúvida é qual o tipo de datasource que tenho que criar por essa via do leitor do Xbee? será que é um serial?

Se eu não for usar o scadabr estou pensando em usar um outro arduino ligado ao xbee e um LCD touchscreen para controlar a bomba a distância dentro da casa. Acho que tem modulos desses que funcionam a um a distância de 1,6km.

Queria ter uma ideia maior do seu projeto. Vc não fez nenhum video? ou fotografia ilustrativa?

Sidney, eu até tenho mas preciso procurar aqui nos meus arquivos os vídeos que gravei. O datasource continua sendo MODBUS Serial...já que o xbee usa o tx/rx para se comunicar...creio que resolva... Quanto a dúvida do Relri, eu cheguei a conseguir fazer o led piscar, vc pode tentar usar o [MB_REG?] no lugar do Led1 dentro do digitalWrite ex: digitalWrite([MB_REG],1);

como MB_REG é uma variável não vejo impedimentos para fazer isso dentro do sketch...Esse erro que vc comentou de "valor no ponto pode nao ser confiavel".. esse erro geralmente comigo era comunicação e me obrigava a reiniciar o scadabr e o tomcat...foi um erro MUUUITO chato, mas ele pode acontecer tb se vc não configurar corretamente os data points... tenha certeza do offset correspondente a cada váriável e do tipo (no caso do led, Binário). Acho que é mais ou menos isso...nao sei se respondi tudo!

deixa eu perguntar...vc montou o sketch de forma que o blink roda automaticamente e vc seta um bit 0 pra ele parar? ou vc seta 1 pra ele piscar e 0 pra parar? só pra entender melhor o problema. E o led tb...é um led físico ou na tela ?

#include <ModbusSlave.h>

ModbusSlave mbs;

enum { 
MB_REG0, 
};

Relri, o início de seu código está desta forma?? Eu pelo menos sempre usei desta forma pois acredito que a biblioteca necessite dessa "enum" para identificar o registro pelo offset configurado no datapoint. Claro q a não ser que estejamos utilizando bibliotecas diferentes (o que considero mais provável)  até porque nossos comandos de configuração e atualização se diferenciam.

Seu Código

configure_mb_slave(115200, 'n', 0);

update_mb_slave(MB_SLAVE, regs, MB_REGS);

Meu Código

mbs.configure(SLAVE,BAUD,PARITY,TXENPIN);

mbs.update(regs, MB_REGS);

 


Você está usando a jpmzometa? Se não,talvez tenhamos que procurar outro jeito de referenciar os registros , pois quando eu uso MB_REG0, MB_REG1, eu declaro previamente dentro do "enum". E no seu caso vc apenas criou a array de registros regs[MB_REGS]. Se vc estiver usando a jpmzometa, creio que basta inserir estes comandos que citei no inicio do texto, e substituir os comandos de config e update.

Relri eu usei estes exemplos como base

https://sites.google.com/site/jpmzometa/arduino-mbrt/examples

ele contém um "mbslave_pde_example" e um "mbslave_lib_example"

Eu acabo de me lembrar que não tive sucesso utilizando o primeiro exemplo , que é no qual seu código está baseado (isso não quer dizer que não funcione). Acabei por utilizar o lib example, que necessita que vc baixe a biblioteca ModBusSlave e adicione no seu arduino. Além de ter sido a que funcionou comigo, achei mais fácil de manipular.

Pode ser o datapoint tb...o ruim é que não estou com o scadabr instalado ¬¬ 

Eu me lembro que só mudei 2 parametros , o tipo e o offset, que no caso o tipo é binario ou registrador holding, e o offset depende da posição do seu registrador dentro no enum.

Olá pessoal,

Sei que esse tópico é voltado para o SCADABR, mas preciso fazer um trabalho onde tenho que usar o Elipse SCADA, onde tenho que utilizar a TAG DDE para poder se comunicar com um arquivo do excel para pegar alguns dados do meu supervisório.

Queria saber se tem alguém que saiba mexer com as configurações dessa TAG DDE no Elipse SCADA.

Obrigado.

Fala Relri,

cara eu baixei os arquivos , e importei para as bibliotecas do arduino. Entao peguei o lib_example e modifiquei para adaptar ao meu projeto...se quiser vc pode usar este tópico como referência

 

http://mango.serotoninsoftware.com/forum/posts/list/567.page

 

Você pode copiar o exemplo do jose francisco, é só descer um pouco a página, tá bem simples e objetivo e usa como base o lib_example tb...qq coisa grita ai cara...bati MUUUUITA cabeça pra fazer funcionar isso tb hein rsrs

Relri vou postar as configs que usei no meu,

Essa era a minha tela de controle. Monitorava rpm e temperatura do motor

Minha tela do Datasource ficou assim:

Atente para configurações de baud rate, eu deixei tudo padrão aqui, só mudei o nome para "Arduino" e o período de atualização se não me engano. Só tem que prestar atenção se os parametros batem com os parametros de config. Serial do seu sketch

A dos data points ficaram assim:

Atente para o Escravo = 1 que é o Arduino, os tipos de dados(Binário para on/off, numérico para valores inteiros), a faixa (utilizei só registradores holding que é um dos 3 tipos de registradores implementados nesta biblioteca e foi o que funfou pra mim) e o offset (que é a posição do seu registrador naquele enum{ MB_REG0, MB_REG1...} onde 0 é o primeiro, 1 segundo,2 o terceiro e assim por diante. No meu está 5 e 4 pq eu criei uns no sketch do arduino que não utilizei e preferi não mexer para nao parar de funcionar kkkkk

Bem acho que isso da mais uma ajudinha, caso seja configs do scadabr. Posso te dizer q foi mais facil configurar ele do que montar o programa no arduino, pelo menos pra mim rsrs

Abraços

Fernando,

ficou maravilhoso seu trabalho. Também tive muita dificuldade em colocar para funcionar o sistema. Hoje tenho ele funcionando e estou preparando uma aplicação.

Gostaria de saber qual o meio vc usou para medir a temperatura do motor. Qual foi o sensor? Eu tenho uns LM35, será que funcionaria? E o RPM, qual foi o método de monitoramento?

Pergunto isso pois passado a fase de configuração do arduino e do Scadabr chego na utilização de sensores. Estou preparando uma estufa e já sei que tenho que monitorar algumas coisas como temperatura, umidade e luz. Já tenho alguns sensores mas gostaria de saber quais vc usou.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço