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
Tags:
Primeiro, quero comentar, vc tem aula com o Prof. André?
Ai que inveja.
Seu eu pego ele de conversa eram uns 7 dias sem calar a boca.
Aproveite e aprenda bastante.
Resolva a compatibilidade do pino enable. No codigo está 2, se usar o shield do LDG lembre se que é o 6.
No código a porta 8 e 9 são entradas não é? mas no switch do código vc deixou as duas como saída e ainda manda apagar.
A incompatibilidade está ai.
Dá mais uma arrumada que chegamos no resultado.
Sidney, tentei mudar para entrada mas continua o problema, vou ver hj na aula, quero fazer usando a biblioteca do André é mais fácil.
Eu tenho aula com ele sim, ele dá aula de redes industriais e sistemas supervisórios na Estácio. É um excelente professor, já tive aula com ele também de interfaces e periféricos.
Olá Sidney, agora estou usando a biblioteca do André, os erros acabaram, está rodando perfeito, mas agora estou apanhando para criar um acionamento, estou lendo o readme da biblioteca mas ainda não consigo.
Criei duas saídas digitais que consigo acionar pela interface gráfica sem problema;
Criei uma entrada digital que está funcionando quando mudo o estado dela corresponde no scada;
Agora preciso que quando a entrada ficar alta, uma saída digital também fique alta, ou seja, a saída tem que acompanhar o estado da entrada.
Não estou conseguindo acertar a sintaxe pra fazer isso no arduino, veja no código as linhas comentadas são as sintaxes que já tentei mas não funcionou:
#include <Modbus.h>
#include <ModbusSerial.h>// Modbus Registers Offsets (0-9999)
const int ESTENDER = 100;
const int RECOLHER = 101;
const int CHUVA = 102;
// Used Pins
const int MotorEstende = 12;
const int MotorRecolher = 11;
const int SensorChuva = 10;// ModbusSerial object
ModbusSerial mb;void setup() {
// Config Modbus Serial (port, speed, byte format)
mb.config(&Serial, 38400, SERIAL_8N1);
// Set the Slave ID (1-247) FUNÇÃO DE ESCRITA
mb.setSlaveId(10);// Set ledPin mode
pinMode(MotorEstende, OUTPUT);
mb.addCoil(ESTENDER);pinMode(MotorRecolher, OUTPUT);
mb.addCoil(RECOLHER);pinMode(SensorChuva, INPUT);
mb.addIsts(CHUVA);
}void loop() {
mb.task();
digitalWrite(MotorEstende, mb.Coil(ESTENDER));
digitalWrite(MotorRecolher, mb.Coil(RECOLHER));mb.Ists(CHUVA, digitalRead(SensorChuva));
if (CHUVA==HIGH){
digitalWrite(MotorEstende, HIGH);// digitalWrite(ESTENDER, HIGH);
// digitalWrite(MotorEstende, mb.Coil(HIGH));
// digitalWrite(mb.Coil(MotorEstende, HIGH)); não compila
// mb.addCoil(MotorEstende, HIGH);
// mb.addCoil(ESTENDER, HIGH);
// bool Coil(word offset, bool value)
}
}
Oi Alan, você está comparando o offset e não o valor do pino do sensor de chuva, o offset é apenas um número (registro) que o supervisório (Scada) usa para referenciar as entradas/saídas no escravo.
Estou colocando abaixo o código corrigido, no entanto eu não faria dessa forma. Pensando no escravo como uma RTU (Remote Terminal Unit) a lógica de acionamento (em resumo, seu if) deveria ficar no SCADA e não no escravo. No ScadaBR você cria um evento relacionado ao Sensor de chuva. Este evento detectará uma variação no sensor de chuva de 0 para 1 e enviará uma mensagem para o escravo para ligar o datapoint ESTENDER. Assim você tira o if do escravo e transfere para o Scada a lógica de controle.
void loop( ) {
mb.task();
digitalWrite(MotorEstende, mb.Coil(ESTENDER));
digitalWrite(MotorRecolher, mb.Coil(RECOLHER)); // Talvez precise disso na sua logica
int chovendo = digitalRead(SensorChuva);
mb.Ists(CHUVA, chovendo);
if (chovendo == HIGH) {
mb.Coil(ESTENDER, HIGH);
mb.Coil(RECOLHER, LOW);
}
}
Ok, obrigado professor, então pelo que entendi eu devo criar no sketch apenas as entradas e saídas, toda a lógica de como as saídas respondem a entrada deve ficar no scada, correto?
alan,
nem deu tempo de ler e ja teve o socorro. Mas foi bem isso.
Temos que conversar bastante sobre a divisão de tarefas entre mestre e escravo. Nesse ponto existe uma complexidade muito grande. Envolve alguns tempos, amarrações, etc.
Mas estou contente que está caminhando. Estou aqui para ajudar e aprender mais.
Eu vi, vai nesse caminho mesmo. Para a logica ficar no scadabr precisamos de mais tempo para te explicar como programar lá.
Segue nessa parte primeiro.
Pessoal, eu postei um tópico novo que é de interesse de quem está acompanhando esta discussão,
fica o convite para ler e discutir...
http://labdegaragem.com/forum/topics/convite-para-melhorias-do-scad...
grande abraço
Esse código foi feito especificamente para o ESP8266? Queria entender mais detalhes do que vc está tentando fazer. Acho que posso ajudar.
Obrigado pela sua atenção, meu caro.
Esse é basicamente o exemplo da biblioteca do andre sarmento. Só adicionei a parte so serial2 pra monitorar o que está acontecendo no esp...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por