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);
}
}
}

Exibições: 170

Responder esta

Respostas a este tópico

coloque a leitura da tecla fora do switch, e para acionar o pino tente utilizar outra função. FUNÇÃO 5 >>WRITE_SINGLE_COIL.
Propria para escrita de bits.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço