Implementando Modbus RTU no Arduino

Поделиться
HTML-код
  • Опубликовано: 14 окт 2024

Комментарии • 55

  • @phoenyx51
    @phoenyx51 3 года назад +4

    Primeiro tutorial que vi do protocolo Modbus com arduino. Realmente muito bem explicado, claro que o protocolo é vasto mas ficou ótimo.

    • @MundoProjetado
      @MundoProjetado  3 года назад +1

      Olá, Cassiano. Fico feliz que tenha curtido o tutorial! Espero trazer mais conteúdos úteis como esse então.

  • @amilsonmartinsdarosajunior3271
    @amilsonmartinsdarosajunior3271 4 года назад +3

    Parabéns pelo vídeo, muito boa a didática e com muitos detalhes. E obrigado pelo formato com primeiro a explicação e depois funcionando.

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Muito bom saber que o formato funcionou bem. Muito obrigado pelo comentário, Amilson!

  • @alfredoppj
    @alfredoppj 3 года назад +1

    Difícil de achar um vídeo sobre Modbus bem explicado, tô tonto ainda, mas parabéns pelo conteúdo.

    • @MundoProjetado
      @MundoProjetado  3 года назад

      Kkk muito obrigado. O conteúdo é um pouco denso mesmo, tanto que levei uma semana para entender ele corretamente.

  • @MrAndrews300
    @MrAndrews300 2 года назад +1

    Excelente vídeo, me deu uma boa visão sobre o assunto

    • @MundoProjetado
      @MundoProjetado  2 года назад +2

      Que ótimo, Andrews! Brigadão pelo comentário!

  • @brunoalvesribeiro1424
    @brunoalvesribeiro1424 7 месяцев назад

    Excelente seu vídeo, obrigado.

  • @heliocastro8120
    @heliocastro8120 3 года назад +1

    Ótima apresentação 👏👏

  • @thpaulino
    @thpaulino 4 года назад +1

    Parabéns pelo vídeo. Muito boa a explicação. É possível escrever no monitor serial a informação recebida na Simulando requisição (código 6)??

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Muito obrigado, Thiago!! É possível sim, mas vale lembrar que, no caso do vídeo e da biblioteca que desenvolvi, os pinos da comunicação serial (0 e 1) do Arduino estão sendo utilizados para lidar com a comunicação do Modbus. Então, não seria possível utilizar o simulador ao mesmo tempo em que você abrisse o monitor serial (a porta COM só pode ser aberta uma vez).

  • @jmaguilarr
    @jmaguilarr 4 года назад +1

    Muy bueno, me aclaro mucho el tema de modbus con arduino, gracias

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Genial mi amigo. ¡Gracias por el comentario!

  • @DavidFlores-uu6dy
    @DavidFlores-uu6dy 3 года назад +1

    olá excelente vídeo, conforme comunicado com um plc fx1n ou fx3u e arduino

  • @wlpassos
    @wlpassos 4 года назад +1

    Parabéns pelo vídeo, muito esclarecedor. Gostaria apenas de tirar uma dúvida: você deu exemplo de leitura e escrita analógicas usando registros e digitais usando coil, mas gostaria de saber como seria a escrita em dados digitais. Desde já, agradeço.

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Muito obrigado, Wilton! Neste caso, conforme comentei, a biblioteca que desenvolvi não suporta este comando. Para isto, você teria que utilizar uma outra biblioteca, até mesmo a do próprio Arduino. Se quiser olhar mais a fundo, os comandos de escrita digital são os códigos 5 e 15. Sendo que o código 5 é escrita em um único coil e o código 15 é escrita em múltiplos coils. Referência: www.simplymodbus.ca/FC05.htm e www.simplymodbus.ca/FC15.htm

  • @AStrasser1
    @AStrasser1 Год назад

    Ótimo vídeo, poderias fazer um exemplo onde através do plc o arduino aciona alguns reles e lê sensores?

    • @MundoProjetado
      @MundoProjetado  Год назад

      Valeu, Alex. Infelizmente não vou conseguir, pois não tenho um PLC e, como formei, perdi acesso aos recursos da faculdade.

  • @carlitoargenta7490
    @carlitoargenta7490 Год назад

    olá adorei a tua palestra, mas gostaria de umas dicas, pois trabalho com manutenção de indicadores de peso de balanças, e eles transmitem o peso por uma rede 485 modbus RTU, e não estou conseguindo algum aplicativo e gostaria de utilizar um arduino para fazer esses teste de comunicação ou se posso utilizar o osciloscópio.?

    • @MundoProjetado
      @MundoProjetado  Год назад

      Olá. Muito obrigado! É possível utilizar um osciloscópio sim. Se ele tiver decodificador de Modbus embutido, vai facilitar mais ainda. Se não, você vai ter que decodificar os sinais "na unha", o que pode consumir um tempo considerável.
      Usar o Arduino é uma possibilidade interessante que talvez vai ser menos trabalhosa que o osciloscópio. Porém, outra possibilidade mais fácil ainda é usar um conversor USB para RS-485 ligado no PC para ler as mensagens diretamente. Esses conversores são baratos e por meio deles você pode usar um software para decodificar os dados que estão sendo recebidos.

    • @carlitoargenta7490
      @carlitoargenta7490 Год назад

      @@MundoProjetado ja usei varios e não tenho sucesso , pois os indicadores transmitem por rtu 485, e não to conseguindo um kit bom pra essa leitura, vc teria algum para sugerir

    • @MundoProjetado
      @MundoProjetado  Год назад

      @@carlitoargenta7490 infelizmente não, pois só usei em uma empresa que trabalhei e não me lembro do nome do conversor. De todo modo, o importante é o conversor ser de USB pra RS-485 (e vice-versa), porque ele ser RTU ou ASCII vai influenciar apenas na interpretação dos dados que são lidos e não na conversão. Ou seja, ser RTU ou ASCII vai depender de qual simulador você está usando para decodificar os dados lidos pelo conversor.

  • @brendarayanesantos3764
    @brendarayanesantos3764 3 года назад

    Muito bom o vídeo, didática muito boa. Consegui aplicar perfeitamente o código. Eu só fiquei com dificuldades para conseguir um código para o arduíno master. Eu estou tentando implementar 2 slaves e 1 master, porém ainda não conseguir encontrar um código para o master. Você já conseguiu realizar esse tipo de implementação e, se conseguiu, poderia compartilhar comigo como foi que conseguiu? Desde já muito obrigada pelo vídeo e pela atenção.

    • @MundoProjetado
      @MundoProjetado  3 года назад

      Bacana demais então, muito obrigado Brenda! Já faz um tempo que não mexo com o Modbus, então estou desatualizado das bibliotecas. Você chegou a tentar a ModbusMaster (www.arduino.cc/reference/en/libraries/modbusmaster/)? Ela parece ok.

  • @andremedeirosdasilva6768
    @andremedeirosdasilva6768 3 года назад

    muito bom

  • @alyssoncervantes
    @alyssoncervantes 3 года назад

    Parabéns pelo video, estou tentando enviar dados de temperatura e umidade para IHM Op320a chinesa, não consegui o arduino esta como Slave e IHM como master mas não consegui ler a comunicacao. Pelo programa modbus pool ela conforme exibição do video, mas não consegui enviar os dados pela placa mas485 para IHM. Tenho que transformar o Arduino em Master e IHM em Slave ?

    • @MundoProjetado
      @MundoProjetado  3 года назад

      Valeu, Alysson. Boa pergunta. Tentei dar uma olhada aqui no manual dessa IHM, mas não entendi ao certo se ela é um dispositivo master ou slave. Entendi que ela seria um master. Se este for o caso, o código do Arduino deveria funcionar. Um dos motivos para não estar funcionando talvez seja porque a comunicação da OP320 utilize um bit de paridade impar ou par (depende do caso). Para resolver isso, você pode tentar modificar a função 'modbus_init' da biblioteca alterando o Serial.begin para: Serial.begin(baudrate, SERIAL_8E1) -> paridade par ou Serial.begin(baudrate, SERIAL_8O1) -> paridade impar.

  • @valmirqueiroz9336
    @valmirqueiroz9336 4 года назад +1

    parabéns vídeo muito bem explicado mas, como faço enviar uma informação que seria exibida na serial.print?

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Valeu, Valmir! Não entendi muito bem sua ideia. Seria printar algo no monitor serial ou enviar algo do monitor serial via "modbus"?

    • @valmirqueiroz9336
      @valmirqueiroz9336 4 года назад

      @@MundoProjetado ao invés de printar na serial ou no lcd, queria enviar um texo ou um valor de uma variável qualquer na modbus

    • @MundoProjetado
      @MundoProjetado  4 года назад +1

      @@valmirqueiroz9336 Entendi. Ao longo do vídeo eu mostro como o Arduino envia os dados de um variável de 'booleana' e de uma variável de 16 bits, mas isto só ocorre quando o mestre da comunicação (o computador) requisita os dados. Se o seu objetivo é fazer o Arduino enviar os dados de forma "espontânea" (em qualquer momento desejado), você precisa transformar ele em mestre da comunicação. Com isto, ele irá escrever nos registradores do dispositivo escravo (que agora seria o computador). A biblioteca que mostrei funciona só como escravo, portanto, sugiro dar uma olhada nas outras bibliotecas disponíveis para alcançar seu objetivo.

    • @valmirqueiroz9336
      @valmirqueiroz9336 4 года назад

      @@MundoProjetado obrigado!

    • @MundoProjetado
      @MundoProjetado  4 года назад

      @@valmirqueiroz9336 Sem problemas. Espero ter ajudado!

  • @caiocezar7199
    @caiocezar7199 4 месяца назад

    Poxa vida muito top mesmo o conteudo
    Porem nao consegui incluir a biblioteca no arduino
    Ele apresenta um erro durante a execução do codigo

    • @MundoProjetado
      @MundoProjetado  3 месяца назад

      Olá, Caio. Qual erro está ocorrendo? Qualquer coisa me mande um print por email (mundoprojetado@gmail.com)

  • @robertomagri5187
    @robertomagri5187 11 месяцев назад

    Boa tarde, amigo estou tentando utilizar sua lib mas está gerando muito erro, como consigo utilizar? tem algum macete?

    • @MundoProjetado
      @MundoProjetado  10 месяцев назад

      Bom dia. Que tipo de erro está sendo gerado? Erro de compilação ou erro de comunicação de pacotes sendo perdidos ou coisa do tipo?

  • @metalzugmetalurgia
    @metalzugmetalurgia Год назад

    preciso ler os dados de um display mypin lm8, com saída serial rs485

    • @MundoProjetado
      @MundoProjetado  Год назад

      Dê uma olhada no site da mypinchina que vc vai encontrar o manual do lm8 com os endereços dos parâmetros que podem ser lidos do display usando Modbus.

  • @thpaulino
    @thpaulino 4 года назад +1

    Olá, estou tentando rodar um programa com a sua Biblioteca e tenho o seguinte retorno de erro:
    Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Placa:"Arduino Uno"
    C:\Users\Notebook\AppData\Local\Temp\ccIC1lOd.ltrans0.ltrans.o: In function `setup':
    D:\THIAGO\ARDUINO\Modbus-RTU-slave-master\Modbus_read_write/Modbus_read_write.ino:9: undefined reference to `modbus_init(unsigned int, unsigned char, unsigned char)'
    D:\THIAGO\ARDUINO\Modbus-RTU-slave-master\Modbus_read_write/Modbus_read_write.ino:10: undefined reference to `modbus_update_coil(unsigned char, unsigned char)'
    D:\THIAGO\ARDUINO\Modbus-RTU-slave-master\Modbus_read_write/Modbus_read_write.ino:11: undefined reference to `modbus_update_holding(unsigned char, unsigned int)'
    C:\Users\Notebook\AppData\Local\Temp\ccIC1lOd.ltrans0.ltrans.o: In function `loop':
    D:\THIAGO\ARDUINO\Modbus-RTU-slave-master\Modbus_read_write/Modbus_read_write.ino:16: undefined reference to `modbus_check()'
    collect2.exe: error: ld returned 1 exit status
    exit status 1
    Erro compilando para a placa Arduino Uno
    O que pode estar errado?

    • @MundoProjetado
      @MundoProjetado  4 года назад

      Olá, Thiago. Parece que o código não está encontrando as funções da biblioteca. Por acaso os arquivos da biblioteca (modbus_rtu_slave.h e modbus_rtu_slave.ino) estão na mesma pasta que o seu código principal (Modbus_read_write.ino)? Se este não for o caso, só colocar tudo na mesma pasta que deve resolver.

    • @thpaulino
      @thpaulino 4 года назад +1

      @@MundoProjetado Olá, era esse o problema. Muito obrigado!

    • @MundoProjetado
      @MundoProjetado  4 года назад

      @@thpaulino Show de bola então!

    • @thpaulino
      @thpaulino 4 года назад

      @@MundoProjetado Como que eu posso usar os valores recebidos em alguma condição? Por exemplo se modbus_update_coil(1, 1 );
      Acenda um Led.
      Desculpa as perguntas mas é q essa sua biblioteca caiu como uma luva para um projeto meu.

    • @MundoProjetado
      @MundoProjetado  4 года назад

      ​@@thpaulino Sem problemas, Thiago. Então, a única forma de se fazer isto com esta biblioteca é com o código 6, que é o código em que o PLC escreve em um registrador holding. Atualmente a biblioteca não tem suporte para escrita dos coils. Porém, tinha esquecido de adicionar comandos para ler os registradores. Agora, atualizei a biblioteca e adicionei os comandos: modbus_read_coil(endeço relativo) e modbus_read_holding(endereço relativo), então baixe a versão mais nova dos arquivos lá no Github. Depois é só fazer algo como if(modbus_read_holding() == valor).

  • @engsrnlord
    @engsrnlord 2 года назад

    Meu caro, seu site está fora do ar, você tem algum e-mail ou outro tipo de contato pessoal que possa compartilhar ?

    • @MundoProjetado
      @MundoProjetado  2 года назад

      Olá, Aleff. Só fui ver agora que o site tinha caído. Resolvi o problema e tá tudo ok no momento. De toda forma, pode mandar mensagem no mundoprojetado@gmail.com

  • @8ZER08
    @8ZER08 3 года назад +1

    Que osciloscópio é esse?