ModBus Master

Тема в разделе "Arduino & Shields", создана пользователем DLS74, 2 июн 2019.

  1. parovoZZ

    parovoZZ Гуру

    но это не modbus
     
    Daniil нравится это.
  2. parovoZZ

    parovoZZ Гуру

    нет.
     
    Daniil нравится это.
  3. znamen

    znamen Guest

    У каждого аппаратного серийного порта должно быть два сигнальных вывода tx и rx. На твоей нане я вижу
    только один порт. Контакт-это не порт. 2 контакта-это порт.
     
  4. znamen

    znamen Guest

    Ну хорошо-не модбас,в классическом понимании. Ну пусть будет-"ардуиновский модбас"
     
  5. DLS74

    DLS74 Гик

    Я подключаю к 0 - Tx, к 1 - Rx.....
     

    Вложения:

  6. znamen

    znamen Guest

    Ну все правильно. На плате контакты TX и RX. Это есть один серийный порт. Это есть Serial без всякой
    единички
     
  7. DLS74

    DLS74 Гик

    Тогда как будет различаться команды : отправить данные по RS-485 от вывода на экран?
    Serial.print(data_in); это в цикле отправляет данные на температурный датчик
    Serial.print(data_in,HEX); это параллельно выводит на экран.
     
  8. SergeiL

    SergeiL Оракул Модератор

    А вы документацию не читаете? Ссылка
    NanoPro.png NanoPro_1.png
     
    Daniil нравится это.
  9. DLS74

    DLS74 Гик

    Спасибо за подсказку.....переключу на 11 пин и 12.... может поэтому не работает....
     
  10. parovoZZ

    parovoZZ Гуру

    не забудь в библиотеке модбаса uart переключить. Ну или проверить, через какой uart данные гонятся.
     
  11. znamen

    znamen Guest

    При чем здесь библиотеки? Просто при инициализации порта указать Serial1, а библиотеки по этому индексу
    сами разберуться. И ещё в тех документации действительно сказано,что ,что использовать Serial не рекомендуется. Но нигде не сказано,что запрещается. Я лично использовал. И ничего. Все работает. Так,что
    если у человека заработает-буду удивлён.,что причина крылась в этом.
     
  12. parovoZZ

    parovoZZ Гуру

    Это в каком даташите написано? Или апноут есть какой?

    В приведенном выше коде это в какой строчке прописывается?
     
    znamen нравится это.
  13. znamen

    znamen Guest

    Паровоз. Ссылка на даташит в посте 48 этой темы.

    Ответ на 2 вопрос. В строке там ,где Бегин сериал. Так ото там номер сериала ставится. А процедура
    называется-инициализация порта. И ещё я тебе нечаянно нажал на мне нравится. Потому,что эта клавиша
    рядом с клавишей ответить. Так,что ты мне должен.
     
  14. parovoZZ

    parovoZZ Гуру

    ссылка на даташит чего?

    Прекрасно. Как модбас библиотеке сказать, чтобы она села именно на этот порт, а не на какой-либо ещё? Я вот в коде этой инструкции не вижу.
     
  15. znamen

    znamen Guest

    Паровоз не доставай. Библиотеке говорить ничего не надо. Она сама прочитает строку "Бегин сериал1"
    И сядет на порт1,что в строке указано.
     
  16. parovoZZ

    parovoZZ Гуру

    Да, да, да))) А для вывода данных в порт мы рядышком инициализируем просто сериал. И?
     
  17. znamen

    znamen Guest

    Нет ,рядышком ничего инициализировать не надо. Тупо выводить в тот порт,что раннее Инициализировали и фсе. Перед тем,как выводить в порт функция вывода посмотрит,какой там порт в бегине
    указан, оттуда и выведет. Паровоз,ну,что ты дурачка валяешь? Просто соскучился за мной и разговор
    поддерживаешь ни о чем? Я тоже рад с тобой пообщаться. Но ни о таком же фуфле.
     
  18. znamen

    znamen Guest

    Мне интересно. Переключил DLS74 на 1 порт и чего? Заработало?
     
  19. DLS74

    DLS74 Гик

    Переключил.... но результат тот же....
    Может как-то по особому нужно данные передавать в порт?
    У меня это обычный цикл for.... правильно?
    Код (C++):
         for(i=0; i<8; i++)
          {
           Serial1.print(data_in[i]);
           Serial.print(data_in[i],HEX);
           Serial.print(" ");
          }
          Serial.println();
          Status = 0;
       }
      digitalWrite(9, LOW); // Режим чтения данных
    Еще возник вопрос про CRC.... нашел online калькулятор, тот дает мне вообще другую цифру...
    Для комбинации 010300000002 CRC=0x0BC4.... может еще кто-нибудь проверить?
     
  20. znamen

    znamen Guest

    По отправке данных и по их прему напишите ту программу,что я Вам выслал. Без всяких форов.
    Теперь по поводу CRC. Я Вам его посчитал по стандартной виндосовской технологии. Это технология
    Применяется фирмой Овен. И практически всеми мировыми брендами. Но есть специфические
    фирмы ,которые с этим не согласны. И высчитывают по другому. Алгоритм остаётся как у всех,но поли
    ном,как аргумент может быть другим. Чтобы исключить эту неразбериху. Вам необходимо сделать
    следующий шаг. Узнать у производителя либо этот полином,по которому высчитывается контрольная
    сумма и я высчитаю её по их полинома,либо взять у них полностью команду считывания температуры
    С контрольной суммой. Другого пути нет