Olá Maicon,Veja este estes vídeos:
Tutorial no canal do SCADABR
Tutorial de minha autoria de como ligar o Arduino ao SCADABR em uma rede RS485 e protocolo MODBUS RTU.
Abraço.
Adicionado por Wiechert ao 20:59 em 25 outubro 2012
tware de monitoramento. Ai fizemos uma rede RS-485 para conectar escravos, sendo eles arduinos, que monitoram corrente e tensão e calculam a potência. Eu comprei umas células e montei paineis de 65W, são três, resultando aproximadamente 180W. Essa rede RS-485 se conecta com um micro que é nosso servidor web, e eu acesso todo o histórico por uma conta do no-ip. Minha concessionária não é a Copel e sim a CELG. Eles são muito parados no tempo mas como minha geração ainda não passou do meu consumo ainda não troquei o relógio medidor. Eu até queria comprar paineis prontos mas a distância inviabiliza. Eu queria colocar em minha casa toda e na minha chácara. Ah, também carrego uma bateria através de um carregador para emergências. Tenho umas lâmpadas de 12v para iluminação. Cara, tudo foi tão natural que desenvolvemos muito. De protocolo modbus até servidor de internet tomcat. Mas pra quem gosta isso é uma maravilha.…
rio ,(eu talvez ao querer passar muita informação nao fui talvez muito claro ) , mas independente da cumplicidade que vou ou nao "acrecentar" ao meu projecto, .... Basicamente tenho este sketch/programa muito simples no arduino :
// COMUNICAÇAO SIMPLES SERIALconst int buttonPin = 2; String mensagem1= " teste de comunicaçao modbus --scada " ; int buttonState = 0; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT); }void loop(){ buttonState = digitalRead(buttonPin);if (buttonState == 1) { Serial.println(mensagem1); } }
ou seja : quando carrego no botao e for a tools e abrir o "serial monitor " (no software do arduino ) consigo ver a mensagem .......
<<<<<<EU PRETENDO , ver essa mensagem num display em elipse scada >>>>>>>>>>>
Obrigado
abraço
valdemar aparicio
…
eguinte:
Quando uso o somente a placa MEGA2560 tudo funciona bem (verifico pelo monitor serial).
Quando adiciono a placa W5100 para utilizar o protocolo modbus TCP, acontece o seguinte, as entradas analógicas A0 e A1 estão super estáveis e muito seletivas. As entradas A02 a A11 estão completamente instáveis... variando muito.
Os pinos definidos como entradas digitais estão funcionando OK.
Não consigo acionar as saídas digitais... (o código pode estar equivocado nessa parte).
Já cogitou-se de instabilidade dos 5Vcc após o regulador da placa 2560, mas isso não se verificou, a tensão é de 4,91Vcc estável naquele ponto.
O código está no arquivo anexo.
Alguém pode me dar uma luz sobre o que está acontecendo nas entradas analógicas ?
SDS
Daltro
…
nuindo com o aumento da temperatura. Estou usando a biblioteca que baixei aqui do laboratorio de garagem ( e usei no skecth modbus. Segue abaixo parte do code.
#include <Thermistor.h> Thermistor temp (A6); Thermistor temp1 (A7); Thermistor temp2 (A8);
temperature_R = temp.getTemp() * 10; //temperature_R1 = temperature_R * 100; temperature_S = temp1.getTemp() * 10 ; //temperature_S1 = temperature_S *100; temperature_T = temp2.getTemp() * 10 ; //temperature_T1 = temperature_T * 100;
regs[MB_A15] = temperature_R; regs[MB_A16] = temperature_S; regs[MB_A17] = temperature_T;
Lendo sobre o termistor NTC, vi que a resistencia dimininui com o aumento da temperatura. Tambem tem em um site( http://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/ ) pessoas que tiveram o mesmo problema, mas não tem a solução.…
que estará a 20 ou 30 metros de distância.
Estes conjunto (Sensores, ATtiny e conversor) ficarão um próximo do outro, mas o Arduino UNO que será o master, ficará longe. Por isso estou optando por usar 485. Estou lendo muito sobre MODBUS, mas ainda estou engatinhando no assunto. Se fosse I2C não teria problemas, porque a biblioteca Wire cuida de tudo, mas RS-485...Não posso usar I2C por causa da distância.
Já comprei os conversores os ATtiny que deverão chegar na próxima quarta feira. Os sensores e o UNO eu já tenho aqui.
Alguém tem alguma dica de material? Achei alguma coisa na Internet mas a maioria tratando de apenas um Master e um Slave, mas quando se trata de um Master e vários Slaves, não tem muita coisa. Pelo menos não estou achando.
Agradeço qualquer ajuda.
Zé Roberto…
ters */ enum { MB_REG0, MB_CTRL, /* Led control on, off or blink */ MB_CTRL1, /* Led control on, off or blink */ MB_CTRL2, /* Led control on, off or blink */ MB_TIME, /* blink time in milliseconds */ MB_CNT, /* count the number of blinks */ MB_REGS /* total number of registers on slave */ }; float temperatura = 0; int regs[MB_REGS]; int ledPin = 13; int ledPin1 = 4;int ledPin2 = 5;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(ledPin, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(2, INPUT); } void loop() { temperatura=analogRead(1); //porta 1 analogica temperatura = (temperatura * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D) temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius regs[MB_REG0]=temperatura; if(regs[MB_CTRL]==0){ digitalWrite(ledPin, LOW); } else { digitalWrite(ledPin, HIGH);} if(regs[MB_CTRL1]==0){ digitalWrite(ledPin1, LOW);} else { digitalWrite(ledPin1, HIGH);} if(regs[MB_CTRL2]==0){ digitalWrite(ledPin2, LOW);} else { digitalWrite(ledPin2, HIGH);} /* Third and las step MBS: update in loop*/ mbs.update(regs, MB_REGS); }
E os leds não funcionam para piscar pelo scadabr apesar da temperatura aparecer. Os números no watch ficam piscando mas os leds não. Se eu colocar os leds dentro de um case ficam ligados, se for um if ficam desligados.
…
1 - Um conversor USB/RS485 ligado ao PC. Este é o mestre da rede e é onde está rodando o SCADABR.
2 - Cada escravo obrigatoriamente tem que ter um conversor TTL/RS485. No video vemos 3 escravos, dois arduino UNO e um MEGA, e que cada arduino está ligado a um conversor TTL/RS485.
3 - Cada conversor, seja ele TTL, USB, ou RS232 tem dois bornes para ligar no barramento RS485, chamados "A" e "B" alem do GND ou terra comum.
4 - Este barramento na verdade é apenas um par de fios trançados que interliga todos os conversores sempre ligando A com A, B com B e GND com GND.
A figura abaixo mostra esta topologia.
Dei pra voce perceber que vai precisar dos dois tipos de conversores? O TTL/RS485 para os arduinos e o USB/RS485 para o PC.
Abraço.…
rme o protocolo utilizado.
No caso de se escolher o protocolo modbus para a comunicação temos a opção de lermos vários registros de um mesmo tipo do escravo de uma só vez, então voce terá um "pacote" com os valores dos holding registers onde estão seu sensor ultrassônico e os estados das suas válvulas.
O que normalmente ocorre é que a atualização dos registros no arduino (leitura das entradas no loop do programa no arduino) são muito mais rápidos que as leituras do mestre (polling do scadabr).
Agora, dependendo do seu processo, se a decisão de abrir ou fechar a válvula for feita em um script dentro do scadabr, pode acontecer problemas, devido aos tempos de pooling ou se ocorrer falhas de comunicação. Em aplicações industriais, normalmente se faz esse controle no programa do CLP (no nosso caso o sketch do arduino) e o scada opera como "supervisório" habilitando o funcionamento do processo, alterando os setpoints das variáveis e recebendo os estados de funcionamento e armazenando dados para histórico e gráficos.
Abraço.
…
o (tensao de 3 ou 5v), derivado da velha ideia das redes a cabo coaxial com terminador e tal, mas que com baixa velocidade nao precisaria ser coaxial. Tb pensei num protocolo bobinho em texto com comandos de 1 letra e 3 numeros.
Mas fazendo logo com uma coisa mais profissional e testada como o RS485+MODBUS fica bem melhor.
Tambem nao iria querer ficar dependendo de um PC pra que as coisas funcionem, muito menos internet.. Estando dentro de casa tudo precisa funcionar só com o wifi ligado. A minha ideia seria comandar via pagina html para poder acessar do celular ou PC. Obvio sem internet sem acesso externo. Mas acesso externo é para uso eventual.
Acho que esse área precisa ter flexibilidade de implementaçao para que cada um possa montar do jeito que quer. Nessa poderiamos ter mais de uma placa com mais ou menos recursos.
Minha ideia tb seria fazer de forma aberta, pq nao tenho interesse de lucrar com isso, so queria fazer pra usar..…