частотник через rs485 к малинке

Тема в разделе "Raspberry Pi", создана пользователем User9000, 5 июн 2018.

  1. User9000

    User9000 Нуб

    Добрый день!

    Заранее прошу прощения за нубский вопрос.

    Подскажите, есть частотник поддержкой протокола rs 485. Как его можно подключить к Raspberry PI для получения данных по данному протоколу?
     
  2. Daniil

    Daniil Гуру

    а в чем проблема?
     
  3. User9000

    User9000 Нуб

    Проблема. том, что слабо представляю как это сделать - брать расширение для машины? Или можно подключить как-то напрямую?
     
  4. Daniil

    Daniil Гуру

    У малинки есть UART - это "почти" RS485/232/422. Вам нужен преобразователь интерфейсов uart - rs485. Для начала посмотрите на max485 - как обычный и примитивный преобразователь он должен вас удовлетворить, да и в китае есть готовые модули, но потом, когда всё заработает, рекомендую поискать микросхему с развязкой.
    И вот полезная статья.
     
    Igor68 и arkadyf нравится это.
  5. Igor68

    Igor68 Гуру

    Если умеете программировать... при этом купив USB-RS485 (у меня на дебиане, не помню тип устройства... даже установку дров не попромил)... и протокол Modbus RTU то ничего сложного в этом нет. На малине ведь Debian/Raspbian. Тем более, что с последовательным портом умеете работать.
    Как пример:
    Код (C++):

    //команда 6 - запись в один регистр
    int MRTU_CMD_6(U8 Dev, U16 Addr, U16 Reg)
    {
       U16     crc;
       int      wcount;
       int      rcount;
       txbuf[0]   = Dev;   //адрес
       txbuf[1]   = 6;   //команда
       txbuf[2]   = (U8)((Addr & 0xFF00) >> 8);
       txbuf[3]   = (U8)(Addr & 0xFF);
       txbuf[4]   = (U8)((Reg & 0xFF00) >> 8);
       txbuf[5]   = (U8)(Reg & 0xFF);
       //
       crc      = MRTU_CRC(&txbuf[0], 6);
       txbuf[7]   = (U8)((crc >> 8) & 0xFF);
       txbuf[6]   = (U8)(crc & 0xFF);
       (*(U16*)(&txbuf[6]))   = crc;
       wcount = write(fd, &txbuf[0], 8);
         if (wcount < 0) {
         perror("Write");
         return -1;
         }
       usleep(75000);
       memset(&rxbuf[0], 0, _szbuf);
       rcount = read(fd, &rxbuf[0], _szbuf);
         if (rcount < 0) {
         perror("Read");
         return -1;
         }
       return 0;
    }
     
    Этим запишете значение в регистр частотника(скорость, реверс и т.п.). Обратите внимание, что управление(приём-передача) с USB-RS485 не требуется. Довольно удобно.
     
    Последнее редактирование: 6 июн 2018
  6. parovoZZ

    parovoZZ Гуру

    Это НЕ ПРОТОКОЛ. Это всего лишь интерфейс. В этом интерфейсе (о, боже!) даже скорости не стандартизированы.
    Тогда не лезь.