• Tratamento de dados lidos em Profibus pelo PLC Pacsystem

    Posted by joaovilela on 11/01/2023 at 10:28

    Bom dia Senhores, tudo bem? Feliz Ano Novo para todos!

    Um dispositivo gera valores em REAL e os transmite pela Profibus para um PLC Pacsystem Rx3i. Na tabela de dados do plc, um dado do dispositivo ocupa duas words, 4 bytes cada dado Quando leio pela RS-485 utilizando o Modbus Poll, descobri que o valor que preciso ler está em formato “32 Bits Float big Endian”. Alguém saberia me orientar em como pegar esses dados no PacSystem e converter para este formato final?

    [Comentário postado no fórum do iToT Hub: Hub Automação em nome de Moisés]

    Octavio replied 1 year, 10 months ago 1 Member · 5 Replies
  • 5 Replies
  • joaovilela

    Member
    11/01/2023 at 10:30
    0 Itotcoins

    Não conheço nada sobre PacSystem, mas no Control Expert, geralmente movemos cada byte para uma Double Word (corrigindo qualquer swap necessário) e ao final, uma conversão de Word para Real

    Talvez o conceito possa ser aplicado tb. Achei um vídeo que mostra um exemplo:

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

    [Comentário postado no fórum do iToT Hub: Hub Automação em nome de Fernando Rodrigues]

    • PH.

      Member
      11/01/2023 at 10:32

      Grato pelo retorno. Eu assisti ao vídeo e já tinha feito tudo isso. Mas o resultado não ficou correto. Creio que é a ordem dos bytes que não está de acordo. Mas deu pra ver que estou no caminho certo! Muito obrigado, por enquanto!

      [Comentário postado no fórum do iToT Hub: Hub Automação em nome de Moisés]

  • Roger

    Member
    11/01/2023 at 10:33

    Bacana @Moisés

    Eu uso bastante essa calculadora de Float/IEE754 para testar esse tipo de conversão

    https://www.h-schmidt.net/FloatConverter/IEEE754.html

    Simulo alguns valores, pego o hexa

    [Comentário postado no fórum do iToT Hub: Hub Automação em nome de Fernando Rodrigues]

    • Bazarin

      Member
      11/01/2023 at 10:35
      0 Itotcoins

      Show!

      @Moisés eu já fiz uma conversão de float 64 para 32 pegando bit a bit e jogando fora os menos significativos, simplesmente pq o plc não tinha nada para fazer a conversão. Estava lendo um medidor de vazão e o acumulador era em float64 E era um m340. Em ultimo caso é algo a se pensar.

      Agora falando de endianness, Big endian são os bytes mais significativos “a esquerda” 0xFFEE1100 nesse caso FFEE? Em little endian o mesmo valor seria 0x110OFFEE. E ainda em cima disso tem o swap bytes.

      Big swapped = 0xEEFF0011. Little swap = 0x0011EEFF

      [Comentário postado no fórum do iToT Hub: Hub Automação em nome de Moisés]

Log in to reply.