Salve galera, venho pedir a ajuda de vocês para fazer com que meu sistema de controle de nível utilizando lógica Fuzzy possa ser supervisionado pelo SCADABR, atualmente, o  Adriano Alcantara e Sidney aqui mesmo do fórum do Ldg vêm me dando uma força, mas ainda não avançamos muito.

Abaixo segue um vídeo sobre o protótipo em questão.

https://www.youtube.com/watch?v=ynFCOOkMrvI

https://www.youtube.com/watch?v=ynFCOOkMrvI

O sistema funciona da seguinte forma, é digitado no serial monitor do Arduíno o nível desejado, a partir disso, o arduino aciona o motor via saída PWM com uma específica potência,  o sistema enche de água até o sensor ultrassonico indicar que é o ponto desejado, o tanque possui uma perturbação ( um furo ) que é compensada pelo sistema de forma autônoma, mantendo assim  o nível com um bom grau de controle. Utilizo no código uma biblioteca fuzzy desenvolvida por uns alunos do Piaui (quem quiser um material sobre é só pedir que eu envio).

O desafio é adaptar o código (no código do jpmzometa ou qualquer outro) trazendo a possibilidade de monitoramento do sistema e envio de comandos via SCADABR. Preciso bastante de ajuda pra isso.

Quaisquer dúvidas sobre o sistema, estou aqui.

Exibições: 893

Responder esta

Respostas a este tópico

primeiro vc tem que adicionar uma lib modbus rtu no arduino. sugiro testar comunicação primeiro com um soft modbus master (vc acha na net). depois que conseguir comunicar com o arduino ai vc passa pro scadabr, quando estabeler comunicação. aí adiciona a parte de controle. acho que tem artigo aqui no lab que possa te ajudar. lembrando que o arduino tem que esta como um escravo modbus.

Muio agradecido pelo conselho, farei isso, mas não tenho a lib modbus rtu para colocar no programa, teria como enviar ? A comunicação via soft modbus master é feita do sistema físico para um programa tendo como comunicação o protocolo modbus né. Farei isso o mais breve possível. Valeu pela ajuda

O que o Jonas falou, é o principal. Teste antes tudo off, pra depois pensar em jogar no ScadaBR ou um Elipse da vida. Sugiro que saiba quais registradores vc vai trabalhar, para o modbus rtu, ele reconhece as memórias como registradores. Em 2012 fiz um projeto com o Elipse Scada, usando o Arduino como escravo, lendo e escrevendo. O meu projeto tinha um conceito parecido, controle do fluxo de águas pluviais, em um reservatório dedicado. O Scada era a IHM do projeto.

Ha massa, mas para comunicação entre o seu protótipo e o elipse SCADA utilizou o protocolo Modbus rtu ? Se sim precisou de uma codificação "específica" como no caso do SCADAbr necessitamos da integração com o código do jpmzometa ?
Poderia depois me enviar algo sobre o projeto, é sempre bom, Valeu.

maxvictorglima@gmail.com

Max,

fico feliz de ter começado o post. Temos muito a ajudar.

Ainda não assisti os vídeos, mas assim que fizer já vou postar os comentários.

Parabens pela iniciativa. Quero aprender mais sobre esse fuzzy, e vc será meu professor.


Sidney, como ainda não consegui tempo, de repente vc pode testar pra mim algumas soluções para o problema do MAX:

no Geral a lib Fuzzy pode ser colocada no lib do arduino sem problemas, mas se usamos uma IDE 0.23 pode acontecer de nao ter compatiblidade, pois parece que a lib Fuzzy foi feita numa versao mais atualizada que a 0.23.

Idéia de solução:

utilizar outra lib modbus para arduino como modbus IP, modbus RTU(que não seja jpzometa), temos uma publicação do povo da MCA (nos tempos em que eles apareciam com um apoio aqui pra gente) de modbus via ASCII, publicado aqui mesmo no nosso post scadabr (só procurar,baixar e testar), tb há algum tempo atrás tinha visto um cara que publicou um post aqui no LDG dizendo que ele tinha atualizado o codigo do jpzometa é procurar esse post e ver se pode ser utilizado.

Outro problema encontrado é que o código do fuzzy usa delay no seu codigo e já vimos que a jpzomenta tem problemas com delay no codigo:

idéia de solução:

uitlizar o código em outra lib modbus para arduino como escrita anteriormente, ou analisar o codigo e ver se dar para retirar os delays e implementa-los no scadabr.

Ourtro fato importante é saber quais são as variaveis que devem ser colocadas no resgistrador, isso não parece ser tao dificil, deveria apenas ler o codigo e verificar o que é necessario que o scada leia, o codigo é pequeno e o video que ele postou deve ajudar. 

Bem esse são os caminhos que eu pude verificar nesse tempo maluco que to tendo, pois to com quatro projetos de implementação de redes corporativas pra entregar em menos de um mês. Qualquer coisa posta ai, se eu resolver tudo aqui antes eu pego a parada pra resolver. 

grande abraço a todos os guerreiros do ScadaBR

Adriano,

O problema com delays não é em função da library jpzometa e sim do modbus RTU. O protocolo modbus RTU tem um frame que exige que as ações sejam executadas dentro de tempos exatos (veja as especificações do protocolo) e se o programa do arduino ficar retido em outra parte do código acontecerá erros de comunicação. 

Uma saída seria usar o protocolo modbus ASCII, onde a as marcações de início e término das palavras não são mais em função de tempos mas com o uso de caracteres reservados.

Neste caso, usar uma library modbus ASCII pode resolver o problema de conflitos com outras tarefas, o Vitor da MCA postou uma library ASCII em dos posts do forum do scadabr aqui do LDG, o link está aqui

Outra saída seria depurar o código das outras librarys usadas de forma a não usarem delays.

No manual do kit RS485 tem o código baseado no jpzometa já atualizado para a IDE 1.0.X. 

Show Wiechert essas informações são preciosas, se eu conseguir tempo por aqui eu mesmo faço os testes. 

grande abraço a todos.

Max, recomendo você dar uma olhada no post do scadabr nolink abaixo:

http://labdegaragem.com/forum/topics/scadabr?id=6223006%3ATopic%3A1...

Leia os assuntos referente a registradores, como vc tem que fazer  para associar uma variavel do seu codigo ao scadaBR.

Outra, procure baixar essa Lib do Modbus ASCII que o Wiechert postou na mensagem anterior e insira seu codigo no codigo modbus e veja o que dá. conforme for, vc vai postando as duvidas que seguem.

O Sidney apontou no comentário do vídeo no youtube sabiamente as variáveis a serem colocadas nos registradores, {Valor da medida do sensor ultrassonico (inteiro) de 0 a 1023, valor de setagem (altura) como um inteiro de 0 a 1023, saída PWM, também um inteiro, variando de 0 a 255}. O problema em uma delas ( no caso a entrada colocado como setagem)  seria também como eu poderia enviar esta através do Scadabr, que não faço a mínima ideia.
A respeito do problema das versões, eu desconhecia até você citá-los, de fato a utilização da via ASC II parece interessante, como Wiechert ja indicou a postagem do Vitor ensinando sobre, vou tentar realizar essa adaptação nesse fim de semana, fico agradecido por toda a ajuda disponibilizada, e retorno com comentários quando eu avançar nesse fim de semana no projeto. Disponibilizo o código pra quem quiser dar uma olhada e um artigo dos desenvolvedores da biblioteca ensinando sobre Fuzzy e mostrando a aplicação da biblioteca no arduino pra quem quiser entender. Valeu pessoal.

Anexos

Max,

o JPMZOMETA realmente tem problema com o delay.

Mas existe outra biblioteca modbus slave que dá para testar. Só tem um incoveniente, só funciona um slave. A biblioteca não está preparada para trabalhar vários slaves na mesma rede. Mas como parece que vc quer um controlador dedicado, talvez seja legal.

Vai ser o início do trabalho.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço