Bom dia pessoal.

Estou com um novo desafio. Arduino e ScadaBR.

Estou usando um protocolo Serial Modbus para esta comunicação, via cabo USB mesmo. Já com o código pronto, estou no loop colocando as funções para execução dentro do programa.

A ideia é o acionamento de um contator através do sinal enviado ao relé, e após o acionamento do mesmo um sinal de confirmação, vindo do contator.

Chamados de:

regs[MB_REG18] - o botão escrita dentro do scada, que acionará esse motor em específico;

regs[MB_REG0] - fará leitura do sinal de confirmação;

pinMode (22, OUTPUT) - porta utilizada no arduino para enviar sinal ao relé;

pinMode (23, INPUT) - porta utilizada no arduino para receber sinal do contator;

Estou utilizando:

if (regs[MB_REG18] == 1) {
digitalWrite(22, LOW);
delay(100);
} else {
digitalWrite(22, HIGH);
}

regs[MB_REG0] = digitalRead(23);
if (regs[MB_REG0] == 0) {
digitalWrite(22, HIGH);
regs[MB_REG18] = 0;
}

Está funcionando corretamente, porém ao inserir mais comandos como este, para outros contatores, ele tem um período de verificação muito longo, fazendo com que um toque não desligue, mas sim dois ou até mais clicks.

Imagens anexas.

Exibições: 270

Anexos

Responder esta

Respostas a este tópico

Boa tarde DM, imagino que seu problema seja por conta do delay onde enquanto ele esta fazendo a contagem do delay ele não pode executar nada, mais os comandos restantes ficam num buff da serial, o que acontece é que como voce esta usando mais de um relé e consequentemente usando o modelo de código acima ele vai dar vários delay ate terminar sua execução e partir para o próximo comando, minha sugestão é usar um delay menor ou mudar o modelo de código para que se adapte com millis() e assim ele poderá executar vários comandos ao mesmo tempo, outra coisa que achei estranho foi usar delay no comando do scada(que faz acionamento via software e não tem interferências) em vez do sinal de confirmação(que é um sinal mecânico e pode sofrer bouncing).

certo... e qual sua sugestão de novo modelo de código?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço