Modbus Slave TCP/IP
- Войдите на сайт для отправки комментариев
Вс, 22/04/2012 - 11:56
Доброго времени суток!
Есть у кого-нибудь рабочий пример Modbus Slave TCP/IP для arduino+ethernet_shield?
Доброго времени суток!
Есть у кого-нибудь рабочий пример Modbus Slave TCP/IP для arduino+ethernet_shield?
Доброго времени суток!
Есть у кого-нибудь рабочий пример Modbus Slave TCP/IP для arduino+ethernet_shield?
Есть ли новости по теме????
Очень актуальный вопрос...
Да, все нашел и работает с WinCC flexible
Найдена рабочая библиотека. коммуникация с LabView на ПК налажена. Сейчас мучаю PDA Module
Друзья, а не поможите примерчиком, или хотя бы именем библиотеки?
andy-k, куда примерчики-то кидать?
на cyberfrag@mail.ru заранее благодарен ;)
а не подскажет ли кто чайнику по Modbus есть ли возможность обратиться не к физическим входам выходам, а к переменным ардуины?
из ардуины достаю по сети все аналоговые входы.
На ББ пользую LabView
Ну так код покажите.
если это ко мне ....
то показывать то нечего.
В ардуине вот такой скетч
Вставка программного кода в тему/комментарий
Так в чем проблема? 7 и 8 выводы вы видите у себя? Или нет?
Если нет, то по какой-то причине у вас в программе не видно массива Mb.C[128]. Но зато видно массив Mb.R[125] , попробуйте через него:
Спасибо.
Переменные а,b,c достал.
Думаю что и цифровые входы выходы также через
увижу.
только вот переменная для чтения Mb.R[х] обьявлена как int16, и чтото мне подсказывает что не совсем правильно читать бинарные значения через неё.
Буду разбираться как прочитать Mb.C[x]
Как я понял R - Registr, C - Coils - читаю дальше про ModBus....
В ардуине нет битового формата данных. digitalRead() возвращает BYTE, так что было бы корректно использовать int8
Вы о чем? Причем тут битовые форматы?
Чем в данном случае корректнее использовать char вместо byte.
У меня есть arduino UNO и ethernet шилд.
Хочу читать с второго контакта на ардуино два подключенных датчика температуры DS1B20. И управлять выходом 3.
Получать данные с двух датчиков DS18B20 я научился, и по адресам датчиков распределять полученные ответы с порта.
Бибилиотеку нашел, код вроде простой в примере... Хочу подключиться к ардуине с OPC сервера modbus.
Помимо ip и порта я указал:
адрес устройства 1 dec.
Функция чтения 03 dec.
Функция записи 16 dec.
Вроде все просто. Рано панику поднял...
Но вопрос все же есть... Я читаю значения без проблем на opc сервере типданных WORD, но у меня значения с датчика идут в формате float. Я их и хочу получать... Чтобы значения с сотыми были... И вот если указываю в OPC сервере читать float могу только single float и double float. Значения на выходе совсем не совпадают...
Подскажите как правильно вывести полученные значения в opc сервер.
1
[quote=ypo]
отправьте пожалуйста пример и библиотеку на m0ps1k93@gmail.com
если не составит труда, отправьте мне тоже
arsbond@gmail.com
спасибо заранее
нашел пример в интернете но пишет следующее при компиляции
если не составит труда, отправьте мне тоже
arsbond@gmail.com
спасибо заранее
нашел пример в интернете но пишет следующее при компиляции
я разобрался
1. скачиваем отсюда https://code.google.com/p/mudbus/downloads/list архив Modbus 1_0
2. копируем папку Modbus из архива в \arduino-1.0.5-r2\libraries
3. запускаем arduino-1.0.5-r2.exe идем Файл >> Примеры >> Modbus >> Mb
Вуаля открывается пример с модбасом компилим заливаем юзаем.
Но обнаружилась нехорошая особенность шилда ETHERNET.
При длительном опросе 1 раз в секунду длиной 10 минут нагревается микроконтроллер на шилде и перестает нормально работать связь по ethernet. я покупал его из китая может в этом дело. выход нашел следующий приклеил на термоклей небольшой радиатор.
Но обнаружилась нехорошая особенность шилда ETHERNET.
При длительном опросе 1 раз в секунду длиной 10 минут нагревается микроконтроллер на шилде и перестает нормально работать связь по ethernet. я покупал его из китая может в этом дело. выход нашел следующий приклеил на термоклей небольшой радиатор.
какая модель шилда?
быть можт они хотели продать вам до кучи кулер с неоновой подстветкой?
Шилд вот такой Ethernet Shield W5100 For Arduino 2009 UNO Mega 1280 2560 high quality GOOD
Я думаю такие штуки не стоит использовать скажем на атомных станциях, а для бытовых нужд в вполне нормалек.
Подскажите, пожалуйста, каким образом вы идентифицируете OneWire датчики со стороны ModBus мастера?
Адреса DS18B20 у вас в коде мк прописаны?
Скиньте пожалуйста на kaspiysk@bk.ru библиотеки и рабочий пример с выводом внутренних переменных.
Все ссылки устарели. Спасибо.
Если не сложно, скиньте пожалуйста на cmp@ua.fm библиотеки и рабочий пример с выводом внутренних переменных. Ссылки действительно устарели.
Друзья жду вашего совета. Работает такая связка: Уно+Ethernet+modbus opc+opc клиент(пробовал разные). Все это крутиться в локалке предприятия. Шлюзы и днс прописаны. Проблема в том что все нормально только если дуина и комп с сервером и клиентом подключены в один свитч. Ставлю сервер с клиентом на другую машину в той же сети только далеко, получаю тугое чтение сервером дуины. Пингуется все нормально. Временами даже читает, но уж больно туго...иногда обновляется по 40 секунд. Взялся за модббас тк со связкой ArduinoOpc при разнесении сервера и железа за пределы одного свитча такая же проблема.
Чувствую что где-то что-то с таймаутами или сетевыми настройками. Что именно понять не могу.....help my please...
Ps. Кстати вместо дуины ставил модбас эмулятор на пк..так вот с ним все нормально опс сервер читает нормально без задержек. А клиент естественно видит сервер нормально. Те делаю вывод что дело в железе. Пробовал и Уно и мегу. Результат тот же.шилд менять нечем. Да и нужно ли? В одном свитче все работает сказочно.....
Работает такая связка: Уно+Ethernet+modbus opc+opc клиент(пробовал разные). Все это крутиться в локалке предприятия.
Ух....заработало с другим сервером...
Fastwel Modbus OPC... Может подскажете сервера не жадные еще...)))
Скиньте пожалуйста на kaspiysk@bk.ru библиотеки и рабочий пример с выводом внутренних переменных.
Все ссылки устарели. Спасибо.
Ух....заработало с другим сервером...
Может кому пригодитья....готового решения не нашел.
Накодил две функции для сборки 2х 16битных слов из флоат переменной для отправки мастеру.
Для примера вызов функций...и расстановка по регистрам. Теперь пересылаются 32 битные FloatЫ))
Мастером пока стоят OPC серевер, и WinCCFlex с настроеным каналом коммуникации по модбас.
В примере выше был вопрос, в котором не шли на сервер данные с дискретных входов:
Действительно не идут данные. Не получается получить-отправить на сервер.
Кто-нибудь решил вопрос с отправкой дискретных данных на сервер? Может библиотека не рабочая?
Аналоговые идут отлично.
Надо помнить, что в модбасе дискретные данные имеют размерность 1 бит, а в ардуине 1 байт! То есть нужно применять конструкцию
Аналогично обратно через bitRead()
Благодарю за совет, но заработало именно по моему варианту. Ваш оказался не рабочим. Добавил в код дублирование данных, посылаемых сервером на дискретные каналы, чтобы видеть их в сканере CAS Modbus TCP. Таким образом проверкой различного кода убедился, когда данные приходят. Изначально OPC сервер не посылал данные по моей причине записи не в ту колонку.
У меня работало именно через битовые операции, был только нюанс, что в модбасе дискретные входа и выхода имеют сквозную нумерацию, поэтому нужно следить, когда вычитать 16 из номера канала.
Всем доброго времени суток!
Прошу прощения, что задаю вопрос в разных темах. За неделю поисков не нашел на просторах интернета на него даже намека на ответ.
Такой вопрос. Кто-нибудь использовал протокол передачи ModbusTCP в связке с шилдом SIM900 + Mega2560?
Подскажите рабочие библиотеки, которые можно использовать для такой связки. SIM900 соединяю с сервером без библиотек, через команды AT, даже могу опять же в ручном режиме закинуть заранее сформированный пакет ModbusTCP и сервер его обработает, но получить данные с сервера никак не получается. Например запрос по состоянию дискретных переменных на сервере присылает непонятную кучу непонятной длины байт, всегда разную, хотя тот же запрос через Ethernet выдает правильный, понятный ответ. Возможно, это какая-то информация из SIM900, или шилд трансформирует присылаемые данные каким-то образом, понять логику пока не представляется возможным. Возможно в буфере находятся какие-либо данные (хотя перед каждым запросом я "чищу" буфер).
Возможно, использование библиотеки для шилда SIM900 поможет в фильтрации ненужной информации из буфера SIM900. Или есть библиотека ModbusTCP для шилда SIM900, как в примере вверху темы, для Ethernet.
Возможно, надо учесть какие-либо нюансы, танцы с бубном, для корректного приема ответа с сервера через SIM900, как-то подготовить шилд? Может кто работал с шилдом SIM900 в формате ModbusTCP?
Кто в курсе?
p/s/
Все, вопрос решил. Все написал без библиотек, нюансов море, понимаю, почему молчали. Примеров и подсказок на просторах интернета не нашел. Вопрос закрыт.
SIR, приветствую!
Тоже столкнулся с такой проблемой, что тема применения Modbus TCP на базе устройств с GPRS модулями почти не освещена. Был бы премного благодарен, если бы вы поделились опытом, прислав какие-нибудь примеры на адресс exor246@gmail.com