[Модуль] ModBus (modbus)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пт июл 11, 2014 9:17 am

Наверное есть. не знаю, я не искал. ибо спаять быстрее чем искать )
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Пт июл 18, 2014 6:06 pm

А можно немного подробностей про сам протокол?
Правильно ли я понимаю, что основная процедура это чтение-запись данных из регистров на удалённых машинах?
Т.е. нет какой-то определённой структуры данных, а есть числовые регистры, с которыми уже делаешь то, что тебе нужно, так?

Ещё, немного запутался -- нам нужно чтобы в МЖД был master или slave? В чём принципиальная разница между этими понятиями?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пт июл 18, 2014 9:39 pm

На низком уровне как и любой протокол он имеет определенный формат, поля и тайминги, так же есть 2 вида ASCII и RTU.
Если использовать библиотеку которую я приводил в начале, то да, все сводится к чтению или записи регистров по определенному адресу.
Есть несколько функций внутри самого протокола.. чтение регистра, запись регистра, чтение группы регистров, запись группы регистров, чтение и запись...

МДМ я думаю должна быть мастером, хотя бы для начала. Вот заказал себе 2х канальный диммер на DIN-рейку в китае с управлением по Modbus. Довольно интересная штука
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Пн июл 21, 2014 4:14 pm

Geban писал(а):На низком уровне как и любой протокол он имеет определенный формат, поля и тайминги, так же есть 2 вида ASCII и RTU.
Если использовать библиотеку которую я приводил в начале, то да, все сводится к чтению или записи регистров по определенному адресу.
Есть несколько функций внутри самого протокола.. чтение регистра, запись регистра, чтение группы регистров, запись группы регистров, чтение и запись...
МДМ я думаю должна быть мастером, хотя бы для начала.
Я всё пытаюсь представить, каким лучше делать интерфейс этого модуля. Скажем так:
1. Создаётся запись, в которой прописывается IP-адрес устройства
2. В ней прописываем диапазон регистров для чтения ("от" и "до" или "от" и "кол-во")
3. Поле период опроса (секунд)
4. Поле "связанный" Объект.Свойство, куда будет сохраняться прочитанная последовательность (в каком виде лучше? через запятую?)

Нужно ли делать настройку типа данных в регистрах (если она может быть разной)?
Нужно ли делать обратную связь как в других модулях, когда изменение связанного свойства означает отправку данных по указанному диапазону регистров? Или же возможность записи или чтения должно задаваться при создании modbus-единицы по шагам 1-4?

Подскажите, как лучше? :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Ср июл 23, 2014 3:22 pm

Ещё пару вопросов:

Подкиньте ссылок на бытовые устройства на ModBus? А то что-то я нахожу только какие-то промышленные контроллеры...

Можно ли организовать работу с Modbus не по принципу опроса, а по принципу реакции? Т.е. как обычно устроены связки устройств, когда одно реагирует на изменение данных на другом? Надо что-бы одно было обязательно в slave-режиме и где-то было прописано отправлять ему уведомления? Или можно слушать сеть на общей шине и настраивать реакцию?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Ср июл 23, 2014 10:28 pm

Протокол сам по себе ориентирован на Master-Slave. Т.е пока мастер не спросит, слэйвы молчат в тряпочку.Есть системы с несколькими мастерами.. я просто только начал втягиваться в пром автоматику, поэтому пока не шибко разбираюсь.
По поводу устройств.. ну вот например http://ru.aliexpress.com/item/Dimming-m ... rue#extend
двух канальный диммер RS485 Modbus RTU и не беда совсем что нет езернета.
Или вот http://ru.aliexpress.com/premium/modbus ... isrefine=y
А вообще протокол довольно простой и надежный. Для связи устройств мне кажется подходит гораздо лучше чем http.

Я всё пытаюсь представить, каким лучше делать интерфейс этого модуля. Скажем так:
1. Создаётся запись, в которой прописывается IP-адрес устройства
2. В ней прописываем диапазон регистров для чтения ("от" и "до" или "от" и "кол-во")
3. Поле период опроса (секунд)
4. Поле "связанный" Объект.Свойство, куда будет сохраняться прочитанная последовательность (в каком виде лучше? через запятую?)

Нужно ли делать настройку типа данных в регистрах (если она может быть разной)?
Нужно ли делать обратную связь как в других модулях, когда изменение связанного свойства означает отправку данных по указанному диапазону регистров? Или же возможность записи или чтения должно задаваться при создании modbus-единицы по шагам 1-4?
ммм тут надо подумать..но в целом.. от и до для чтения.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Вт июл 29, 2014 2:36 pm

Добавил в последние обновления модуль ModBus.

Возможности:
* Подключение к устройствам ModBus по протоколам TCP/UDP
* Операции чтения данных: FC1, FC2, FC3, FC4 (реле, входы, регистры)
* Выбор функции преобразования прочитанных данных (float, integer, string и т.п.)
* Операции записи данных: FC5, FC6, FC15, FC16 (реле и регистры)

Присутствует возможность установки связанного объекта (свойства) -- для операций чтения в объект будут переносится прочитанные данные, для операций записи изменение свойства автоматически отправит данные на устройство.

Для операций чтения надо выставлять время опроса (в секундах), для операций записи не обязательно, точнее лучше его делать очень большим (запись через связанные свойства будет осуществляться мгновенно и даже без запуска цикла опроса ModBus)

Пример экрана настройки устройства:

Изображение

После добавления первого устройства надо перезапустить систему, т.к. цикл опроса ModBus-устройств запустится только если есть хоть одно устройство.
За это сообщение автора sergejey поблагодарил:
Geban (Вт июл 29, 2014 11:41 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Чт июл 31, 2014 9:40 am

Спасибо Сергей, модель живой, рабочий. Единственно что хотелось бы это функцию 23. чтение с последующей записью.
alexval2007
Сообщения: 9
Зарегистрирован: Чт фев 27, 2014 5:04 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: модуль modbus

Сообщение alexval2007 » Ср сен 17, 2014 2:16 pm

Обычно в сети один мастер и 247слейвов.
Протокол Modbus предполагает, что только одно ведущее устройство (контроллер) и до 247 ведомых (модулей ввода-вывода) могут быть объединены в промышленную сеть. Обмен данными всегда инициируется ведущим. Ведомые устройства никогда не начинают передачу данных, пока не получат запрос от ведущего. Ведомые устройства также не могут обмениваться данными друг с другом. Поэтому в любой момент времени в сети Modbus может происходить только один акт обмена.

Адреса с 1 по 247 являются адресами Modbus устройств в сети, а с 248 по 255 зарезервированы. Ведущее устройство не должно иметь адреса и в сети не должно быть двух устройств с одинаковыми адресами.

Ведущее устройство может посылать запросы всем устройствам одновременно ("широковещательный режим") или только одному. Для широковещательного режима зарезервирован адрес "0" (при использовании в команде этого адреса она принимается всеми устройствами сети).
Еще хотелось бы modbas по RS485 это интересней TCP. Я сейчас вожусь с сетью на ардуинках по 485 с modbus rtu и мастером TP Link mr3020

Для RS485 Modbus-устройство обязательно должно поддерживать скорости обмена 9600 бит/с и 19200 бит/с, из них 19200 бит/с устанавливается "по умолчанию". Допускаются также скорости 1200, 2400, 4800,...,38400 бит/с, 65 кбит/с, 115 кбит/с,... .
За это сообщение автора alexval2007 поблагодарил:
sergejey (Ср сен 17, 2014 3:10 pm)
Рейтинг: 1.16%
alexval2007
Сообщения: 9
Зарегистрирован: Чт фев 27, 2014 5:04 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: модуль modbus

Сообщение alexval2007 » Чт сен 18, 2014 5:21 pm

В продолжение темы библиотеки для ардуино
Modbus Master http://simple-modbus.googlecode.com/fil ... terV10.zip
Modbus Slave http://simple-modbus.googlecode.com/fil ... laveV8.zip
Схема подключения для RS485 http://simple-modbus.googlecode.com/fil ... ematic.pdf
Примеры в библиотеках есть. Ну и как закончу свои изыскания возможно выложу несколько устройств работающих по модбас например я ковыряюсь сейчас димером для управления освещением, можно еще термометр склепать на DS18B20 да много еще чего повесить в сеть модбас.
Ответить