Bom dia
Estou fazendo uma aplicação de scadabr e arduino, onde o arduino é o escravo e faz a leitura de temperatura na porta A0,e uma chave na porta 7 que liga um led na porta 3.
A temperatura estou lendo no scada sem problemas.
O meu problema esta em fazer a chave do pino 7 ligar o led, tanto pela chave quanto pelo scadabr, e quando for ligada pela chave atualizar no scada, não consegui fazer esse integração, acredito que seja no loop do meu sketch.
É a primeira aplicação que faço usando o scadabr, podem me passar algum exemplo que faça isso ou alguma sugestão, segue parte do meu sketch.
Obrigado.
enum {
MB_PINO_3, /* Controle do Led no pino 3 (desliga=0 liga=1) */
MB_PINO_7,
MB_A0,
MB_REGS /* número total de registros do escravo */
};
int regs[MB_REGS];
int ledPin3 = 3;
int chave7 = 7;
unsigned long tprev = 0; /* tempo anterior do último comando*/
unsigned long tanalogprev = 0; /* tempo anterior da leitura dos pinos analógicos*/
unsigned long wdog = 0; /* watchdog */
void setup()
{
/* configura cominicação modbus
* 9600 bps, 8N1, RS485 network */
configure_mb_slave(COMM_BPS, PARITY, 2);
pinMode(ledPin3, OUTPUT);
pinMode(chave7, INPUT);
digitalWrite(chave7,HIGH);
}
void loop()
{
/* verifica se há solicitações do mestre */
update_mb_slave(MB_SLAVE, regs, MB_REGS);
/* os valores dos registros são definidos pelo mestre modbus (SCADA) */
wdog = millis();
if ((millis() - tanalogprev) > 1000) { /* atualiza as entradas analogica a cada 1 segundo */
regs[MB_A0] = (analogRead(0)*500) /100; /* ler entrada analógica 0 e salva valor no registro
modbus*/
tanalogprev = millis();
}
switch(regs[MB_PINO_3]) {
case 1:
if(digitalRead(chave7)==LOW){
digitalWrite(ledPin3, HIGH);
break;
default: /* apagado */
digitalWrite(ledPin3, LOW);
}
}
}
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por