Modbus для Arduino

Тема в разделе "Arduino & Shields", создана пользователем Igor_Pavlov, 4 янв 2013.

  1. Igor_Pavlov

    Igor_Pavlov Нуб

    Доброго времени суток!
    Может кто-нибудь подсказать мне: возможно ли реализовать работу arduino с GPRS shield через протокол Modbus в режиме TCP? (я имею в виду не принципиальную возможность написания протокола с нуля, а реальное наличие соответствующих библиотек, другими словами - были ли прецеденты?)
    Нужно для того, чтобы заставить arduino обмениваться данными с каким-нибудь сервером Modbus, установленным на компьютере, ну например Lectus Modbus server посредством интернета, т.е. через TCP-соединение.
    При этом сам arduino будет modbus-master, будет писать и читать данные, а компьютер - modbus-slave и будет соответственно иметь постоянный ip.
    Я знаю, что есть библиотека modbus rtu https://sites.google.com/site/jpmzometa/arduino-mbrt
    Но подходит ли она для таких целей? Ведь фактически нужен modbus tcp - по крайней мере на сервере именно эта реализация, там нет физического уровня serial, но arduino использует serial соединение с gprs shield вместо tcp на физическом уровне, поэтому я вот пытаюсь понять годен ли modbus rtu для такого соединения, ну, например, использовать вместо обычного сообщения modbus сообщение типа 'AT + CIPSTART = "TCP","IP-сервера","порт-сервера" ' (установка TCP соединения с заданным сервером MODBUS через GPRS) и затем 'AT + CIPSEND <sent data message> ' (посылка данных), где вместо <sent data message> будет само сообщение modbus. Т.е. я имею в виду - в заданные временные интервалы посылаем обычным println AT команды для установки соединения и AT + CIPSEND затем ждем 100 ms для усвоения команды и после вызываем метод записи modbus rtu из библиотеки, который запишет в порт нужные данные, упакованные по MODBUS для обычного serial режима.
    Вот мне нужно понять насколько это бредово. И если возможно для реализации, то сколько времени это может занять. Потому что если на это могут уйти месяцы, то для меня это не вариант, я буду пробовать поднимать web-сервер на arduino и через http передавать данные на компьютер, а там уже обрабатывать их на php и т.д.
     
  2. hibiki

    hibiki Гик

    по идее, RTU некритичен к паузам между "словами". если научить библиотечку писать в grps-шилд, то может получиться
     
  3. Yuriy

    Yuriy Нуб

    Здравствуйте!
    Такая же проблема. Serial ModBus Slave для Arduino попробовал - коечто получается. В качестве мастера использовал OPC сервер.
    Tакже LABvIEW попробовал через I/O Server DSC модуля. Вижу нормально 5 аналоговых входов, а вот светодиод на 13 ноге зажечь не могу. Также не вижу пин настроенный на цифровой вход. Какаято непонятка с адресацией пространства ардуины и описания адресов в LV.
    Вижу в LV модбасовские библиотеки, но как имаи пользоваться пока не пойму, да и не понятно зачем если все можно делать через глобальные переменные LV.?

    Клиентом через OPC сервер доступны 5 аналоговых, и 13 пин светодиод. Буду разбираться с МодБасом-до этого дела не имел.
    Может кто знает, как получить доступ не к физическим входам-выходам Ардуины, а к переменным?

    Ну и главный вопрос-Можно ли перенаправить Modbus Serial RTU в Ethernet Shild?
    Или может есть библиотека для Modbus через Ethernet для Arduino?

    Буду рад любым свежим идеям...